/** * EARConfigChangeListener -- tracks the changes in the application.xml * in an EAR project. */ public class EARConfigChangeListener implements IResourceChangeListener { /** * Create a new EARConfigChangeListener. */ public EARConfigChangeListener() { super(); } /** * Listen for projects being added or removed and act accordingly. * * @param event org.eclipse.core.resources.IResourceChangeEvent */ public void resourceChanged(IResourceChangeEvent event) { System.out.println("Resource changed: " + event); // Print the stack trace. try { String hello = null; hello.toString(); } catch (Exception e) { e.printStackTrace(); } IResourceDelta delta = event.getDelta(); System.out.println("Resource delta is: " + delta); if (delta == null) return; // search for changes to remote file transfer instance using a visitor try { delta.accept(new IResourceDeltaVisitor() { public boolean visit(IResourceDelta delta2) { IResource resource = delta2.getResource(); if (resource == null) return true; if (EAR_APPLICATION_XML_FILENAME.equals(resource.getName())) { earConfigChanged(resource.getProject()); } else if (resource instanceof IProject) { projectChanged(delta2); return false; } return true; } }); } catch (Exception e) { } } /** * React to a change within a project. * * @param delta org.eclipse.core.resources.IResourceDelta */ protected void projectChanged(IResourceDelta delta) { IResourceDelta[] children = delta.getAffectedChildren(); int size = children.length; for (int i = 0; i < size; i++) { IResourceDelta child = children[i]; // look for server instances and configurations try { delta.accept(new IResourceDeltaVisitor() { public boolean visit(IResourceDelta delta2) { IResource resource = delta2.getResource(); String resourceName = resource.getName(); if (EAR_APPLICATION_XML_FILENAME.equals(resource.getName())) { earConfigChanged(resource.getProject()); return false; } else return true; } }); } catch (Exception e) { } } } }