Author: snjeza
Date: 2009-01-26 19:38:54 -0500 (Mon, 26 Jan 2009)
New Revision: 13284
Modified:
trunk/archives/plugins/org.jboss.ide.eclipse.archives.core/src/eclipse/org/jboss/ide/eclipse/archives/core/WorkspaceChangeListener.java
trunk/archives/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/ArchivesCoreMessages.java
trunk/archives/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/ArchivesCoreMessages.properties
trunk/archives/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/build/ModelChangeListener.java
Log:
JBIDE-3572 Problem with archives when deleting project
Modified:
trunk/archives/plugins/org.jboss.ide.eclipse.archives.core/src/eclipse/org/jboss/ide/eclipse/archives/core/WorkspaceChangeListener.java
===================================================================
---
trunk/archives/plugins/org.jboss.ide.eclipse.archives.core/src/eclipse/org/jboss/ide/eclipse/archives/core/WorkspaceChangeListener.java 2009-01-27
00:38:45 UTC (rev 13283)
+++
trunk/archives/plugins/org.jboss.ide.eclipse.archives.core/src/eclipse/org/jboss/ide/eclipse/archives/core/WorkspaceChangeListener.java 2009-01-27
00:38:54 UTC (rev 13284)
@@ -32,6 +32,7 @@
import org.eclipse.core.resources.IResourceChangeListener;
import org.eclipse.core.resources.IResourceDelta;
import org.eclipse.core.resources.IResourceDeltaVisitor;
+import org.eclipse.core.resources.WorkspaceJob;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
@@ -59,8 +60,28 @@
return 0;
}
};
+ if (event.getType() == IResourceChangeEvent.PRE_DELETE || event.getType() ==
IResourceChangeEvent.PRE_CLOSE) {
+ IResource resource = event.getResource();
+ if (resource instanceof IProject) {
+ final IProject project = (IProject) resource;
+ IResource packages = project.findMember(IArchiveModel.DEFAULT_PACKAGES_FILE);
+ if (ArchivesModel.instance().isProjectRegistered(project.getLocation()) || packages
!= null) {
+ WorkspaceJob job = new WorkspaceJob(ArchivesCoreMessages.UnregisterProject) {
+
+ @Override
+ public IStatus runInWorkspace(IProgressMonitor monitor)
+ throws CoreException {
+ ArchivesModel.instance().unregisterProject(project.getLocation(), new
NullProgressMonitor());
+ return Status.OK_STATUS;
+ }
+
+ };
+ job.schedule();
+ }
+ }
+ }
+
final Set<IProject> projects = new TreeSet<IProject>(c);
-
IResourceDelta delta = event.getDelta();
try {
if(delta!=null) {
@@ -78,31 +99,39 @@
}
} catch( CoreException ce ) {
}
- Iterator<IProject> i = projects.iterator();
- while(i.hasNext()) {
- final IProject p = i.next();
- try {
- if( p.getSessionProperty(new QualifiedName(ArchivesCorePlugin.PLUGIN_ID,
"localname")) == null ) { //$NON-NLS-1$
- try {
- ArchivesModel.instance().registerProject(p.getLocation(), new
NullProgressMonitor());
- new Job(ArchivesCore.bind(ArchivesCoreMessages.RefreshProject, p.getName())) {
+ if (event.getType() == IResourceChangeEvent.PRE_DELETE || event.getType() ==
IResourceChangeEvent.PRE_CLOSE) {
+ Iterator<IProject> i = projects.iterator();
+ while(i.hasNext()) {
+ final IProject p = i.next();
+ ArchivesModel.instance().unregisterProject(p.getLocation(), new
NullProgressMonitor());
+ }
+ } else {
+ Iterator<IProject> i = projects.iterator();
+ while(i.hasNext()) {
+ final IProject p = i.next();
+ try {
+ if( p.getSessionProperty(new QualifiedName(ArchivesCorePlugin.PLUGIN_ID,
"localname")) == null ) { //$NON-NLS-1$
+ try {
+ ArchivesModel.instance().registerProject(p.getLocation(), new
NullProgressMonitor());
+ new Job(ArchivesCore.bind(ArchivesCoreMessages.RefreshProject, p.getName())) {
protected IStatus run(IProgressMonitor monitor) {
try {
p.refreshLocal(IResource.DEPTH_INFINITE, new NullProgressMonitor());
- } catch( CoreException e ) {
- IStatus status = new Status(IStatus.WARNING, ArchivesCorePlugin.PLUGIN_ID,
+ } catch( CoreException e ) {
+ IStatus status = new Status(IStatus.WARNING, ArchivesCorePlugin.PLUGIN_ID,
ArchivesCore.bind(ArchivesCoreMessages.RefreshProjectFailed, p.getName()),e);
- return status;
+ return status;
+ }
+ return Status.OK_STATUS;
}
- return Status.OK_STATUS;
- }
- }.schedule();
- } catch( ArchivesModelException ame ) {
+ }.schedule();
+ } catch( ArchivesModelException ame ) {
ArchivesCore.getInstance().getLogger().log(IStatus.ERROR,
ArchivesCore.bind(ArchivesCoreMessages.RegisterProjectFailed, p.getName()),
ame);
+ }
}
+ } catch( CoreException ce ) {
}
- } catch( CoreException ce ) {
}
}
}
Modified:
trunk/archives/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/ArchivesCoreMessages.java
===================================================================
---
trunk/archives/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/ArchivesCoreMessages.java 2009-01-27
00:38:45 UTC (rev 13283)
+++
trunk/archives/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/ArchivesCoreMessages.java 2009-01-27
00:38:54 UTC (rev 13284)
@@ -3,6 +3,7 @@
public class ArchivesCoreMessages {
+ public static String UnregisterProject;
public static String CleanedArchiveTrace;
public static String CleanedProjectTrace;
public static String FileRemovedTrace;
Modified:
trunk/archives/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/ArchivesCoreMessages.properties
===================================================================
---
trunk/archives/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/ArchivesCoreMessages.properties 2009-01-27
00:38:45 UTC (rev 13283)
+++
trunk/archives/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/ArchivesCoreMessages.properties 2009-01-27
00:38:54 UTC (rev 13284)
@@ -46,6 +46,7 @@
RefreshProjectFailed=Could not refresh project {0}
RegisterProjectFailed=Could not register project {0}
RegisterProject=Register Project
+UnregisterProject=Unregister Project
SaveArchivesJob=Save archives job
ErrorPreSave=Problem executing pre-save runnable
CreatingDefaultJarConfig=Creating default JAR configuration for java project
"{0}"
\ No newline at end of file
Modified:
trunk/archives/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/build/ModelChangeListener.java
===================================================================
---
trunk/archives/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/build/ModelChangeListener.java 2009-01-27
00:38:45 UTC (rev 13283)
+++
trunk/archives/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/build/ModelChangeListener.java 2009-01-27
00:38:54 UTC (rev 13284)
@@ -63,6 +63,9 @@
*/
public void modelChanged(IArchiveNodeDelta delta) {
// if we're not building, get out
+ if (delta == null || delta.getPostNode() == null) {
+ return;
+ }
if(
!ArchivesCore.getInstance().getPreferenceManager().isBuilderEnabled(delta.getPostNode().getProjectPath()))
return;
Show replies by date