//only interested in content changes
if ((delta.getFlags() & IResourceDelta.CONTENT) == 0)
return true;
Package oldPackage = ForceStartup.getManifestCache().get(resource);
Package newPackage = getPackage(resource);
if (!isEqual(oldPackage, newPackage)) {
changed.add(resource);
}
return true;
}
};
try {
rootDelta.accept(visitor);
if (!Utils.isEmpty(changed)) {
for (final IResource resource : changed) {
final IProject project = resource.getProject();
if (project.hasNature(DefaultNature.NATURE_ID)) {
final Package newPackage = getPackage(resource);
Display.getDefault().asyncExec(new Runnable() {
public void run() {
try {
// remove ourself so that we don't receive new events while processing old ones
// (RefreshResourceAction will touch package.xml causing an infinite dialog loop)
// TODO investigate whether new events should be combined with old events
ForceStartup.removePackageManifestChangeListener();
final Package oldPackage = ForceStartup.getManifestCache().get(resource);
if (!isEqual(oldPackage, newPackage)) {
ForceStartup.getManifestCache().put(resource, newPackage);
if (logger.isDebugEnabled()) {