[163668] refreshing resource maps
diff --git a/plugins/org.eclipse.jst.j2ee/common/org/eclipse/jst/j2ee/internal/common/classpath/J2EEComponentClasspathUpdater.java b/plugins/org.eclipse.jst.j2ee/common/org/eclipse/jst/j2ee/internal/common/classpath/J2EEComponentClasspathUpdater.java index 55faa8b..4ae7df0 100644 --- a/plugins/org.eclipse.jst.j2ee/common/org/eclipse/jst/j2ee/internal/common/classpath/J2EEComponentClasspathUpdater.java +++ b/plugins/org.eclipse.jst.j2ee/common/org/eclipse/jst/j2ee/internal/common/classpath/J2EEComponentClasspathUpdater.java
@@ -53,10 +53,14 @@ import org.eclipse.jst.j2ee.internal.project.J2EEProjectUtilities; import org.eclipse.wst.common.componentcore.ComponentCore; import org.eclipse.wst.common.componentcore.ModuleCoreNature; +import org.eclipse.wst.common.componentcore.internal.StructureEdit; +import org.eclipse.wst.common.componentcore.internal.WorkbenchComponent; +import org.eclipse.wst.common.componentcore.internal.impl.ResourceTreeRootAdapter; import org.eclipse.wst.common.componentcore.internal.impl.WTPModulesResourceFactory; import org.eclipse.wst.common.componentcore.resources.IVirtualComponent; import org.eclipse.wst.common.componentcore.resources.IVirtualFolder; import org.eclipse.wst.common.componentcore.resources.IVirtualReference; +import org.eclipse.wst.common.internal.emf.utilities.ExtendedEcoreUtil; import org.eclipse.wst.common.project.facet.core.FacetedProjectFramework; public class J2EEComponentClasspathUpdater implements IResourceChangeListener, IResourceDeltaVisitor { @@ -453,19 +457,56 @@ case IResourceChangeEvent.POST_CHANGE: scheduleJob = true; event.getDelta().accept(this); + IResourceDelta[] d = event.getDelta().getAffectedChildren(); + findNode(d); + break; } } catch (CoreException e) { J2EEPlugin.getDefault().getLogger().logError(e); - } finally { + } + finally { resumeUpdates(scheduleJob); } } + + + public static void clearResourceTreeRootCache(WorkbenchComponent aModule) { + + ResourceTreeRootAdapter resourceTreeAdapter = (ResourceTreeRootAdapter) ExtendedEcoreUtil + .getAdapter(aModule, aModule.eAdapters(), + ResourceTreeRootAdapter.DEPLOY_ADAPTER_TYPE); + resourceTreeAdapter.setResourceTreeRoot(null); + resourceTreeAdapter = (ResourceTreeRootAdapter) ExtendedEcoreUtil + .getAdapter(aModule, aModule.eAdapters(), + ResourceTreeRootAdapter.SOURCE_ADAPTER_TYPE); + resourceTreeAdapter.setResourceTreeRoot(null); + + } + /* * Needs to notice changes to MANIFEST.MF in any J2EE projects, changes to * .component in any J2EE Projects, and any archive changes in EAR projects */ + + public boolean findNode(IResourceDelta[] delta) { + + for (int i = 0; i < delta.length; i++) { + if (delta[i].toString().indexOf(IJ2EEModuleConstants.COMPONENT_FILE_NAME) != -1) { + StructureEdit core = StructureEdit + .getStructureEditForRead(delta[i].getResource() + .getProject()); + WorkbenchComponent component = core.getComponent(); + clearResourceTreeRootCache(component); + } else { + findNode(delta[i].getAffectedChildren()); + } + } + + return true; + } + public boolean visit(IResourceDelta delta) { IResource resource = delta.getResource(); switch (resource.getType()) {
diff --git a/plugins/org.eclipse.jst.j2ee/j2eeplugin/org/eclipse/jst/j2ee/internal/plugin/IJ2EEModuleConstants.java b/plugins/org.eclipse.jst.j2ee/j2eeplugin/org/eclipse/jst/j2ee/internal/plugin/IJ2EEModuleConstants.java index 5174b5d..6facc62 100644 --- a/plugins/org.eclipse.jst.j2ee/j2eeplugin/org/eclipse/jst/j2ee/internal/plugin/IJ2EEModuleConstants.java +++ b/plugins/org.eclipse.jst.j2ee/j2eeplugin/org/eclipse/jst/j2ee/internal/plugin/IJ2EEModuleConstants.java
@@ -28,4 +28,5 @@ public static final String JST_JCA_TEMPLATE = "template.jst.connector"; //$NON-NLS-1$ public static final String JST_WEB_TEMPLATE = "template.jst.web"; //$NON-NLS-1$ public static final String WST_WEB_TEMPLATE = "template.wst.web"; //$NON-NLS-1$ + public static final String JST_COMPONENT_FILE = "org.eclipse.wst.common.component";//$NON-NLS-1$ }