From ca000ab6f53865b439bb59f8377f57654ae7a5bc Mon Sep 17 00:00:00 2001 From: Alain Magloire Date: Sun, 17 Dec 2006 19:20:56 +0000 Subject: [PATCH] PR 166772, suppress error when from the binary parser when the project is close. --- .../internal/core/model/ArchiveContainer.java | 2 +- .../core/model/ArchiveContainerInfo.java | 2 +- .../internal/core/model/BinaryContainer.java | 2 +- .../core/model/BinaryContainerInfo.java | 2 +- .../cdt/internal/core/model/BinaryRunner.java | 27 +++++++++++-------- .../internal/core/model/CModelManager.java | 6 ++--- 6 files changed, 22 insertions(+), 19 deletions(-) diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/ArchiveContainer.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/ArchiveContainer.java index cc5ead50d17..ed1c39e1693 100644 --- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/ArchiveContainer.java +++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/ArchiveContainer.java @@ -44,7 +44,7 @@ public class ArchiveContainer extends Openable implements IArchiveContainer { protected boolean buildStructure(OpenableInfo info, IProgressMonitor pm, Map newElements, IResource underlyingResource) throws CModelException { // this will bootstrap/start the runner for the project. - CModelManager.getDefault().getBinaryRunner(getCProject(), true); + CModelManager.getDefault().getBinaryRunner(getCProject()); return true; } diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/ArchiveContainerInfo.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/ArchiveContainerInfo.java index 8814c2ebc54..d3760779b6d 100644 --- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/ArchiveContainerInfo.java +++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/ArchiveContainerInfo.java @@ -25,7 +25,7 @@ public class ArchiveContainerInfo extends OpenableInfo { } synchronized void sync() { - BinaryRunner runner = CModelManager.getDefault().getBinaryRunner(getElement().getCProject(), true); + BinaryRunner runner = CModelManager.getDefault().getBinaryRunner(getElement().getCProject()); if (runner != null) { runner.waitIfRunning(); } diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/BinaryContainer.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/BinaryContainer.java index 30bb2264487..b5a990423a1 100644 --- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/BinaryContainer.java +++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/BinaryContainer.java @@ -54,7 +54,7 @@ public class BinaryContainer extends Openable implements IBinaryContainer { protected boolean buildStructure(OpenableInfo info, IProgressMonitor pm, Map newElements, IResource underlyingResource) throws CModelException { // this will bootstrap/start the runner for the project. - CModelManager.getDefault().getBinaryRunner(getCProject(), true); + CModelManager.getDefault().getBinaryRunner(getCProject()); return true; } diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/BinaryContainerInfo.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/BinaryContainerInfo.java index 9fe3fd40e96..8ab2c9b3949 100644 --- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/BinaryContainerInfo.java +++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/BinaryContainerInfo.java @@ -26,7 +26,7 @@ public class BinaryContainerInfo extends OpenableInfo { } synchronized void sync() { - BinaryRunner runner = CModelManager.getDefault().getBinaryRunner(getElement().getCProject(), true); + BinaryRunner runner = CModelManager.getDefault().getBinaryRunner(getElement().getCProject()); if (runner != null) { runner.waitIfRunning(); } diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/BinaryRunner.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/BinaryRunner.java index 5aabac2c3df..ea046e5719e 100644 --- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/BinaryRunner.java +++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/BinaryRunner.java @@ -93,10 +93,10 @@ public class BinaryRunner { */ protected IStatus run(IProgressMonitor monitor) { IStatus status = Status.OK_STATUS; - if (cproject == null || monitor.isCanceled()) { - status = Status.CANCEL_STATUS; - } else { - try { + try { + if (cproject == null || monitor.isCanceled()) { + status = Status.CANCEL_STATUS; + } else { monitor.beginTask(getName(), IProgressMonitor.UNKNOWN); BinaryContainer vbin = (BinaryContainer) cproject.getBinaryContainer(); @@ -110,16 +110,20 @@ public class BinaryRunner { CModelOperation op = new BinaryRunnerOperation(cproject); op.runOperation(monitor); - } catch (CoreException e) { - status = e.getStatus(); } + } catch (CoreException e) { + // Ignore the error and just cancel the binary thread + //status = e.getStatus(); + status = Status.CANCEL_STATUS; + } finally { + monitor.done(); } - monitor.done(); + System.out.println("DONE " + cproject.getElementName()+ " :"+ status); return status; } }; + runner.setPriority(Job.LONG); runner.schedule(); - } /** @@ -162,7 +166,10 @@ public class BinaryRunner { return false; } vMonitor.worked(1); - + // give a hint to the user of what we are doing + String name = proxy.getName(); + vMonitor.subTask(name); + // Attempt to speed things up by rejecting up front // Things we know should not be Binary files. @@ -173,8 +180,6 @@ public class BinaryRunner { } // check against known content types - String name = proxy.getName(); - vMonitor.subTask(name); // give a hint to the user of what we are doing IContentType contentType = CCorePlugin.getContentType(project, name); if (contentType != null && textContentType != null) { diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CModelManager.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CModelManager.java index 115dd47f9af..2959e314314 100644 --- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CModelManager.java +++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CModelManager.java @@ -654,7 +654,7 @@ public class CModelManager implements IResourceChangeListener, ICDescriptorListe } } - public BinaryRunner getBinaryRunner(ICProject cproject, boolean start) { + public BinaryRunner getBinaryRunner(ICProject cproject) { BinaryRunner runner = null; synchronized (binaryRunners) { IProject project = cproject.getProject(); @@ -662,9 +662,7 @@ public class CModelManager implements IResourceChangeListener, ICDescriptorListe if (runner == null) { runner = new BinaryRunner(project); binaryRunners.put(project, runner); - if (start) { - runner.start(); - } + runner.start(); } } return runner;