From 501881c071a8dec3c997f8a62b326830b1bbf276 Mon Sep 17 00:00:00 2001 From: Eike Stepper Date: Tue, 24 Jul 2012 14:42:58 +0200 Subject: Automate digest creation --- .../version/digest/ui/CreateDigestAction.java | 126 +-------------- .../cdo/releng/version/digest/DigestValidator.java | 134 +++++++++++++++- .../BuckyValidator.java | 142 ----------------- .../META-INF/MANIFEST.MF | 3 +- .../prototypes/BuckyValidator.java | 142 +++++++++++++++++ .../prototypes/TestResourceChangeListener.java | 171 +++++++++++++++++++++ .../emf/cdo/releng/version/VersionBuilder.java | 1 - .../version/test/TestResourceChangeListener.java | 171 --------------------- 8 files changed, 450 insertions(+), 440 deletions(-) delete mode 100644 plugins/org.eclipse.emf.cdo.releng.version/BuckyValidator.java create mode 100644 plugins/org.eclipse.emf.cdo.releng.version/prototypes/BuckyValidator.java create mode 100644 plugins/org.eclipse.emf.cdo.releng.version/prototypes/TestResourceChangeListener.java delete mode 100644 plugins/org.eclipse.emf.cdo.releng.version/src/org/eclipse/emf/cdo/releng/version/test/TestResourceChangeListener.java (limited to 'plugins') diff --git a/plugins/org.eclipse.emf.cdo.releng.version.digest.ui/src/org/eclipse/emf/cdo/releng/version/digest/ui/CreateDigestAction.java b/plugins/org.eclipse.emf.cdo.releng.version.digest.ui/src/org/eclipse/emf/cdo/releng/version/digest/ui/CreateDigestAction.java index 13e05a476a..095217264a 100644 --- a/plugins/org.eclipse.emf.cdo.releng.version.digest.ui/src/org/eclipse/emf/cdo/releng/version/digest/ui/CreateDigestAction.java +++ b/plugins/org.eclipse.emf.cdo.releng.version.digest.ui/src/org/eclipse/emf/cdo/releng/version/digest/ui/CreateDigestAction.java @@ -10,40 +10,26 @@ */ package org.eclipse.emf.cdo.releng.version.digest.ui; -import org.eclipse.emf.cdo.releng.version.Element; import org.eclipse.emf.cdo.releng.version.Release; import org.eclipse.emf.cdo.releng.version.ReleaseManager; -import org.eclipse.emf.cdo.releng.version.VersionBuilder; import org.eclipse.emf.cdo.releng.version.digest.DigestValidator; -import org.eclipse.emf.cdo.releng.version.digest.DigestValidatorState; import org.eclipse.core.resources.IFile; -import org.eclipse.core.resources.IResource; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.IStatus; -import org.eclipse.core.runtime.NullProgressMonitor; import org.eclipse.core.runtime.Status; import org.eclipse.core.runtime.jobs.Job; import org.eclipse.jface.action.IAction; import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.viewers.IStructuredSelection; -import org.eclipse.pde.core.IModel; import org.eclipse.swt.widgets.Shell; import org.eclipse.ui.IObjectActionDelegate; import org.eclipse.ui.IWorkbenchPart; -import org.osgi.framework.Version; - -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.io.ObjectOutputStream; import java.util.ArrayList; -import java.util.HashMap; import java.util.List; -import java.util.Map; -import java.util.Map.Entry; /** * @author Eike Stepper @@ -83,7 +69,12 @@ public class CreateDigestAction implements IObjectActionDelegate { try { - List warnings = createDigest(release, target, monitor); + // TODO Determine validator class from .project + DigestValidator validator = new DigestValidator.BuildModel(); + + List warnings = new ArrayList(); + DigestValidator.createDigest(validator, release, target, warnings, monitor); + if (!warnings.isEmpty()) { final StringBuilder builder = new StringBuilder("The following problems occured:\n"); @@ -119,109 +110,4 @@ public class CreateDigestAction implements IObjectActionDelegate } } - private List createDigest(Release release, IFile target, IProgressMonitor monitor) throws CoreException - { - monitor.beginTask(null, release.getSize() + 1); - List warnings = new ArrayList(); - - try - { - Map result = new HashMap(); - for (Entry entry : release.getElements().entrySet()) - { - String name = entry.getKey().getName(); - monitor.subTask(name); - - try - { - try - { - Element element = entry.getValue(); - if (element.getName().endsWith(".source")) - { - continue; - } - - IModel componentModel = ReleaseManager.INSTANCE.getComponentModel(element); - if (componentModel == null) - { - warnings.add(name + ": Component not found"); - continue; - } - - IResource resource = componentModel.getUnderlyingResource(); - if (resource == null) - { - warnings.add(name + ": Component is not in workspace"); - continue; - } - - Version version = VersionBuilder.getComponentVersion(componentModel); - - if (!element.getVersion().equals(version)) - { - warnings.add(name + ": Plugin version is not " + element.getVersion()); - } - - // TODO Determine validator class from .project - DigestValidator validator = new DigestValidator.BuildModel(); - validator.beforeValidation(null, componentModel); - DigestValidatorState state = validator.validateFull(resource.getProject(), null, componentModel, - new NullProgressMonitor()); - validator.afterValidation(state); - result.put(state.getName(), state.getDigest()); - } - finally - { - monitor.worked(1); - } - } - catch (Exception ex) - { - ex.printStackTrace(); - warnings.add(name + ": " + Activator.getStatus(ex).getMessage()); - } - } - - ByteArrayOutputStream baos = new ByteArrayOutputStream(); - ObjectOutputStream oos = new ObjectOutputStream(baos); - oos.writeObject(result); - oos.close(); - - ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray()); - if (target.exists()) - { - int i = 1; - for (;;) - { - try - { - target.move(target.getFullPath().addFileExtension("bak" + i), true, monitor); - break; - } - catch (Exception ex) - { - ++i; - } - } - } - - target.create(bais, true, monitor); - monitor.worked(1); - } - catch (CoreException ex) - { - throw ex; - } - catch (Exception ex) - { - throw new CoreException(Activator.getStatus(ex)); - } - finally - { - monitor.done(); - } - - return warnings; - } } diff --git a/plugins/org.eclipse.emf.cdo.releng.version.digest/src/org/eclipse/emf/cdo/releng/version/digest/DigestValidator.java b/plugins/org.eclipse.emf.cdo.releng.version.digest/src/org/eclipse/emf/cdo/releng/version/digest/DigestValidator.java index 055d11cbe0..9479fedf6a 100644 --- a/plugins/org.eclipse.emf.cdo.releng.version.digest/src/org/eclipse/emf/cdo/releng/version/digest/DigestValidator.java +++ b/plugins/org.eclipse.emf.cdo.releng.version.digest/src/org/eclipse/emf/cdo/releng/version/digest/DigestValidator.java @@ -11,7 +11,9 @@ package org.eclipse.emf.cdo.releng.version.digest; import org.eclipse.emf.cdo.releng.version.BuildState; +import org.eclipse.emf.cdo.releng.version.Element; import org.eclipse.emf.cdo.releng.version.Release; +import org.eclipse.emf.cdo.releng.version.ReleaseManager; import org.eclipse.emf.cdo.releng.version.VersionBuilder; import org.eclipse.emf.cdo.releng.version.VersionValidator; @@ -24,24 +26,34 @@ import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IPath; import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.core.runtime.IStatus; +import org.eclipse.core.runtime.NullProgressMonitor; import org.eclipse.core.runtime.Path; +import org.eclipse.core.runtime.Status; import org.eclipse.pde.core.IModel; import org.eclipse.pde.core.build.IBuild; import org.eclipse.pde.core.build.IBuildEntry; import org.eclipse.pde.core.build.IBuildModel; import org.eclipse.pde.core.plugin.IPluginModelBase; +import org.osgi.framework.Version; + +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.FilterInputStream; import java.io.IOException; import java.io.InputStream; import java.io.ObjectInputStream; +import java.io.ObjectOutputStream; import java.security.MessageDigest; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; +import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; +import java.util.Map.Entry; import java.util.Set; /** @@ -82,7 +94,7 @@ public class DigestValidator extends VersionValidator byte[] validatorDigest = validatorState.getDigest(); VersionBuilder.trace("DIGEST = " + formatDigest(validatorDigest)); - byte[] releaseDigest = getReleaseDigest(releasePath, project.getName()); + byte[] releaseDigest = getReleaseDigest(releasePath, release, project.getName(), monitor); VersionBuilder.trace("RELEASE = " + formatDigest(releaseDigest)); buildState.setChangedSinceRelease(!MessageDigest.isEqual(validatorDigest, releaseDigest)); @@ -217,13 +229,13 @@ public class DigestValidator extends VersionValidator return !resource.isDerived(); } - private byte[] getReleaseDigest(String releasePath, String name) throws IOException, CoreException, - ClassNotFoundException + private byte[] getReleaseDigest(String releasePath, Release release, String name, IProgressMonitor monitor) + throws IOException, CoreException, ClassNotFoundException { IFile file = getDigestFile(new Path(releasePath)); if (!file.exists()) { - throw new IllegalStateException("Digest file not found: " + file.getFullPath()); + return createDigest(this, release, file, null, monitor); } ObjectInputStream stream = null; @@ -371,6 +383,120 @@ public class DigestValidator extends VersionValidator return builder.toString(); } + public static byte[] createDigest(DigestValidator validator, Release release, IFile target, List warnings, + IProgressMonitor monitor) throws CoreException + { + monitor.beginTask(null, release.getSize() + 1); + + try + { + Map result = new HashMap(); + for (Entry entry : release.getElements().entrySet()) + { + String name = entry.getKey().getName(); + monitor.subTask(name); + + try + { + try + { + Element element = entry.getValue(); + if (element.getName().endsWith(".source")) + { + continue; + } + + IModel componentModel = ReleaseManager.INSTANCE.getComponentModel(element); + if (componentModel == null) + { + addWarning(warnings, name + ": Component not found"); + continue; + } + + IResource resource = componentModel.getUnderlyingResource(); + if (resource == null) + { + addWarning(warnings, name + ": Component is not in workspace"); + continue; + } + + Version version = VersionBuilder.getComponentVersion(componentModel); + + if (!element.getVersion().equals(version)) + { + addWarning(warnings, name + ": Plugin version is not " + element.getVersion()); + } + + validator.beforeValidation(null, componentModel); + DigestValidatorState state = validator.validateFull(resource.getProject(), null, componentModel, + new NullProgressMonitor()); + validator.afterValidation(state); + result.put(state.getName(), state.getDigest()); + } + finally + { + monitor.worked(1); + } + } + catch (Exception ex) + { + addWarning(warnings, name + ": " + Activator.getStatus(ex).getMessage()); + } + } + + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + ObjectOutputStream oos = new ObjectOutputStream(baos); + oos.writeObject(result); + oos.close(); + + byte[] digest = baos.toByteArray(); + + ByteArrayInputStream bais = new ByteArrayInputStream(digest); + if (target.exists()) + { + int i = 1; + for (;;) + { + try + { + target.move(target.getFullPath().addFileExtension("bak" + i), true, monitor); + break; + } + catch (Exception ex) + { + ++i; + } + } + } + + target.create(bais, true, monitor); + monitor.worked(1); + + return digest; + } + catch (CoreException ex) + { + throw ex; + } + catch (Exception ex) + { + throw new CoreException(Activator.getStatus(ex)); + } + finally + { + monitor.done(); + } + } + + private static void addWarning(List warnings, String msg) + { + Activator.log(new Status(IStatus.WARNING, Activator.PLUGIN_ID, msg)); + if (warnings != null) + { + warnings.add(msg); + } + } + public static IFile getDigestFile(IPath releasePath) { IFile file = ResourcesPlugin.getWorkspace().getRoot().getFile(releasePath); diff --git a/plugins/org.eclipse.emf.cdo.releng.version/BuckyValidator.java b/plugins/org.eclipse.emf.cdo.releng.version/BuckyValidator.java deleted file mode 100644 index b663026c72..0000000000 --- a/plugins/org.eclipse.emf.cdo.releng.version/BuckyValidator.java +++ /dev/null @@ -1,142 +0,0 @@ -/* - * Copyright (c) 2004 - 2012 Eike Stepper (Berlin, Germany) and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * Eike Stepper - initial API and implementation - */ -package org.eclipse.emf.cdo.releng.version.bucky; - -import org.eclipse.emf.cdo.releng.version.BuildState; -import org.eclipse.emf.cdo.releng.version.Release; -import org.eclipse.emf.cdo.releng.version.VersionBuilder; -import org.eclipse.emf.cdo.releng.version.VersionValidator; - -import org.eclipse.buckminster.cvspkg.internal.CVSSession; -import org.eclipse.buckminster.cvspkg.internal.RepositoryMetaData; -import org.eclipse.core.resources.IProject; -import org.eclipse.core.resources.IResource; -import org.eclipse.core.resources.IResourceDelta; -import org.eclipse.core.resources.IResourceVisitor; -import org.eclipse.core.runtime.CoreException; -import org.eclipse.core.runtime.IProgressMonitor; -import org.eclipse.team.core.RepositoryProvider; -import org.eclipse.team.internal.ccvs.core.CVSTag; -import org.eclipse.team.internal.ccvs.core.CVSTeamProvider; -import org.eclipse.team.internal.ccvs.core.ICVSFolder; -import org.eclipse.team.internal.ccvs.core.ICVSResource; -import org.eclipse.team.internal.ccvs.core.resources.CVSWorkspaceRoot; -import org.eclipse.team.internal.ccvs.core.syncinfo.FolderSyncInfo; - -import java.util.Date; - -/** - * @author Eike Stepper - */ -@SuppressWarnings("restriction") -public class BuckyValidator extends VersionValidator -{ - public BuckyValidator() - { - } - - @Override - public void updateBuildState(BuildState buildState, String releasePath, Release release, IProject project, - IResourceDelta delta, IProgressMonitor monitor) throws Exception - { - if (delta != null) - { - buildState.setChangedSinceRelease(true); - return; - } - - LocalModificationVisitor visitor = new LocalModificationVisitor(monitor); - project.accept(visitor); - if (visitor.isChanged()) - { - buildState.setChangedSinceRelease(true); - return; - } - - CVSTeamProvider provider = (CVSTeamProvider)RepositoryProvider.getProvider(project); - CVSWorkspaceRoot root = provider.getCVSWorkspaceRoot(); - String location = root.getRemoteLocation().getLocation(false); - String module = root.getLocalRoot().getRepositoryRelativePath(); - String repositoryLocation = location + "," + module; - - VersionBuilder.trace("Bucky: Getting release timestamp..."); - CVSTag releaseTag = new CVSTag(release.getTag(), CVSTag.VERSION); - Date releaseModification = getLastModification(repositoryLocation, releaseTag, monitor); - - ICVSFolder cvsProject = CVSWorkspaceRoot.getCVSFolderFor(project); - FolderSyncInfo syncInfo = cvsProject.getFolderSyncInfo(); - CVSTag projectTag = syncInfo.getTag(); - if (projectTag == null) - { - projectTag = new CVSTag(); - } - - VersionBuilder.trace("Bucky: Getting project timestamp..."); - Date projectModification = getLastModification(repositoryLocation, projectTag, monitor); - buildState.setChangedSinceRelease(!releaseModification.equals(projectModification)); - } - - private Date getLastModification(String repositoryLocation, CVSTag tag, IProgressMonitor monitor) - throws CoreException - { - org.eclipse.buckminster.cvspkg.internal.CVSSession session = null; - - try - { - session = new CVSSession(repositoryLocation); - RepositoryMetaData metaData = RepositoryMetaData.getMetaData(session, tag, monitor); - return metaData.getLastModification(); - } - finally - { - if (session != null) - { - session.close(); - } - } - } - - /** - * @author Eike Stepper - */ - private static final class LocalModificationVisitor implements IResourceVisitor - { - private IProgressMonitor monitor; - - private boolean changed; - - private LocalModificationVisitor(IProgressMonitor monitor) - { - this.monitor = monitor; - } - - public boolean isChanged() - { - return changed; - } - - public boolean visit(IResource resource) throws CoreException - { - ICVSResource cvsResource = CVSWorkspaceRoot.getCVSResourceFor(resource); - if (cvsResource.isManaged()) - { - VersionBuilder.trace("Bucky: " + resource.getFullPath()); - if (cvsResource.isModified(monitor)) - { - changed = true; - return false; - } - } - - return true; - } - } -} diff --git a/plugins/org.eclipse.emf.cdo.releng.version/META-INF/MANIFEST.MF b/plugins/org.eclipse.emf.cdo.releng.version/META-INF/MANIFEST.MF index 5868a0f6f1..3578139466 100644 --- a/plugins/org.eclipse.emf.cdo.releng.version/META-INF/MANIFEST.MF +++ b/plugins/org.eclipse.emf.cdo.releng.version/META-INF/MANIFEST.MF @@ -12,6 +12,5 @@ Bundle-ClassPath: . Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.4.0,4.0.0)";visibility:=reexport, org.eclipse.core.resources;bundle-version="[3.4.0,4.0.0)";visibility:=reexport, org.eclipse.pde.core;bundle-version="[3.4.0,4.0.0)";visibility:=reexport -Export-Package: org.eclipse.emf.cdo.releng.version;version="1.0.0", - org.eclipse.emf.cdo.releng.version.test;version="1.0.0" +Export-Package: org.eclipse.emf.cdo.releng.version;version="1.0.0" Eclipse-BuddyPolicy: dependent diff --git a/plugins/org.eclipse.emf.cdo.releng.version/prototypes/BuckyValidator.java b/plugins/org.eclipse.emf.cdo.releng.version/prototypes/BuckyValidator.java new file mode 100644 index 0000000000..b663026c72 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.releng.version/prototypes/BuckyValidator.java @@ -0,0 +1,142 @@ +/* + * Copyright (c) 2004 - 2012 Eike Stepper (Berlin, Germany) and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Eike Stepper - initial API and implementation + */ +package org.eclipse.emf.cdo.releng.version.bucky; + +import org.eclipse.emf.cdo.releng.version.BuildState; +import org.eclipse.emf.cdo.releng.version.Release; +import org.eclipse.emf.cdo.releng.version.VersionBuilder; +import org.eclipse.emf.cdo.releng.version.VersionValidator; + +import org.eclipse.buckminster.cvspkg.internal.CVSSession; +import org.eclipse.buckminster.cvspkg.internal.RepositoryMetaData; +import org.eclipse.core.resources.IProject; +import org.eclipse.core.resources.IResource; +import org.eclipse.core.resources.IResourceDelta; +import org.eclipse.core.resources.IResourceVisitor; +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.team.core.RepositoryProvider; +import org.eclipse.team.internal.ccvs.core.CVSTag; +import org.eclipse.team.internal.ccvs.core.CVSTeamProvider; +import org.eclipse.team.internal.ccvs.core.ICVSFolder; +import org.eclipse.team.internal.ccvs.core.ICVSResource; +import org.eclipse.team.internal.ccvs.core.resources.CVSWorkspaceRoot; +import org.eclipse.team.internal.ccvs.core.syncinfo.FolderSyncInfo; + +import java.util.Date; + +/** + * @author Eike Stepper + */ +@SuppressWarnings("restriction") +public class BuckyValidator extends VersionValidator +{ + public BuckyValidator() + { + } + + @Override + public void updateBuildState(BuildState buildState, String releasePath, Release release, IProject project, + IResourceDelta delta, IProgressMonitor monitor) throws Exception + { + if (delta != null) + { + buildState.setChangedSinceRelease(true); + return; + } + + LocalModificationVisitor visitor = new LocalModificationVisitor(monitor); + project.accept(visitor); + if (visitor.isChanged()) + { + buildState.setChangedSinceRelease(true); + return; + } + + CVSTeamProvider provider = (CVSTeamProvider)RepositoryProvider.getProvider(project); + CVSWorkspaceRoot root = provider.getCVSWorkspaceRoot(); + String location = root.getRemoteLocation().getLocation(false); + String module = root.getLocalRoot().getRepositoryRelativePath(); + String repositoryLocation = location + "," + module; + + VersionBuilder.trace("Bucky: Getting release timestamp..."); + CVSTag releaseTag = new CVSTag(release.getTag(), CVSTag.VERSION); + Date releaseModification = getLastModification(repositoryLocation, releaseTag, monitor); + + ICVSFolder cvsProject = CVSWorkspaceRoot.getCVSFolderFor(project); + FolderSyncInfo syncInfo = cvsProject.getFolderSyncInfo(); + CVSTag projectTag = syncInfo.getTag(); + if (projectTag == null) + { + projectTag = new CVSTag(); + } + + VersionBuilder.trace("Bucky: Getting project timestamp..."); + Date projectModification = getLastModification(repositoryLocation, projectTag, monitor); + buildState.setChangedSinceRelease(!releaseModification.equals(projectModification)); + } + + private Date getLastModification(String repositoryLocation, CVSTag tag, IProgressMonitor monitor) + throws CoreException + { + org.eclipse.buckminster.cvspkg.internal.CVSSession session = null; + + try + { + session = new CVSSession(repositoryLocation); + RepositoryMetaData metaData = RepositoryMetaData.getMetaData(session, tag, monitor); + return metaData.getLastModification(); + } + finally + { + if (session != null) + { + session.close(); + } + } + } + + /** + * @author Eike Stepper + */ + private static final class LocalModificationVisitor implements IResourceVisitor + { + private IProgressMonitor monitor; + + private boolean changed; + + private LocalModificationVisitor(IProgressMonitor monitor) + { + this.monitor = monitor; + } + + public boolean isChanged() + { + return changed; + } + + public boolean visit(IResource resource) throws CoreException + { + ICVSResource cvsResource = CVSWorkspaceRoot.getCVSResourceFor(resource); + if (cvsResource.isManaged()) + { + VersionBuilder.trace("Bucky: " + resource.getFullPath()); + if (cvsResource.isModified(monitor)) + { + changed = true; + return false; + } + } + + return true; + } + } +} diff --git a/plugins/org.eclipse.emf.cdo.releng.version/prototypes/TestResourceChangeListener.java b/plugins/org.eclipse.emf.cdo.releng.version/prototypes/TestResourceChangeListener.java new file mode 100644 index 0000000000..63e895ff7d --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.releng.version/prototypes/TestResourceChangeListener.java @@ -0,0 +1,171 @@ +/* + * Copyright (c) 2004 - 2012 Eike Stepper (Berlin, Germany) and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Eike Stepper - initial API and implementation + */ +package org.eclipse.emf.cdo.releng.version.test; + +import org.eclipse.core.resources.IResourceChangeEvent; +import org.eclipse.core.resources.IResourceChangeListener; +import org.eclipse.core.resources.IResourceDelta; +import org.eclipse.core.resources.IResourceDeltaVisitor; +import org.eclipse.core.runtime.CoreException; + +import java.util.ArrayList; +import java.util.List; + +/** + * @author Eike Stepper + */ +public final class TestResourceChangeListener implements IResourceChangeListener +{ + public void resourceChanged(IResourceChangeEvent event) + { + try + { + System.out.println(getType(event)); + IResourceDelta delta = event.getDelta(); + if (delta != null) + { + delta.accept(new IResourceDeltaVisitor() + { + public boolean visit(IResourceDelta delta) throws CoreException + { + System.out.println(" " + delta.getFullPath() + " --> " + getKind(delta) + " " + getFlags(delta)); + return true; + } + }); + } + } + catch (CoreException ex) + { + ex.printStackTrace(); + } + } + + public static String getType(IResourceChangeEvent event) + { + switch (event.getType()) + { + case IResourceChangeEvent.POST_BUILD: + return "POST_BUILD"; + case IResourceChangeEvent.POST_CHANGE: + return "POST_CHANGE"; + case IResourceChangeEvent.PRE_BUILD: + return "PRE_BUILD"; + case IResourceChangeEvent.PRE_CLOSE: + return "PRE_CLOSE"; + case IResourceChangeEvent.PRE_DELETE: + return "PRE_DELETE"; + case IResourceChangeEvent.PRE_REFRESH: + return "PRE_REFRESH"; + default: + return "Unknown event type: " + event.getType(); + } + } + + public static String getKind(IResourceDelta delta) + { + switch (delta.getKind()) + { + case IResourceDelta.ADDED: + return "ADDED"; + case IResourceDelta.REMOVED: + return "REMOVED"; + case IResourceDelta.CHANGED: + return "CHANGED"; + case IResourceDelta.ADDED_PHANTOM: + return "ADDED_PHANTOM"; + case IResourceDelta.REMOVED_PHANTOM: + return "REMOVED_PHANTOM"; + default: + return "Unknown delta kind: " + delta.getKind(); + } + } + + public static String getFlags(IResourceDelta delta) + { + List list = new ArrayList(); + if (hasFlag(delta, IResourceDelta.CONTENT)) + { + list.add("CONTENT"); + } + + if (hasFlag(delta, IResourceDelta.DERIVED_CHANGED)) + { + list.add("DERIVED_CHANGED"); + } + + if (hasFlag(delta, IResourceDelta.DESCRIPTION)) + { + list.add("DESCRIPTION"); + } + + if (hasFlag(delta, IResourceDelta.ENCODING)) + { + list.add("ENCODING"); + } + + if (hasFlag(delta, IResourceDelta.LOCAL_CHANGED)) + { + list.add("LOCAL_CHANGED"); + } + + if (hasFlag(delta, IResourceDelta.OPEN)) + { + list.add("OPEN"); + } + + if (hasFlag(delta, IResourceDelta.MOVED_TO)) + { + list.add("MOVED_TO"); + } + + if (hasFlag(delta, IResourceDelta.MOVED_FROM)) + { + list.add("MOVED_FROM"); + } + + if (hasFlag(delta, IResourceDelta.COPIED_FROM)) + { + list.add("COPIED_FROM"); + } + + if (hasFlag(delta, IResourceDelta.TYPE)) + { + list.add("TYPE"); + } + + if (hasFlag(delta, IResourceDelta.SYNC)) + { + list.add("SYNC"); + } + + if (hasFlag(delta, IResourceDelta.MARKERS)) + { + list.add("MARKERS"); + } + + if (hasFlag(delta, IResourceDelta.REPLACED)) + { + list.add("REPLACED"); + } + + if (list.isEmpty()) + { + return ""; + } + + return list.toString(); + } + + public static boolean hasFlag(IResourceDelta delta, int flag) + { + return (delta.getFlags() & flag) != 0; + } +} diff --git a/plugins/org.eclipse.emf.cdo.releng.version/src/org/eclipse/emf/cdo/releng/version/VersionBuilder.java b/plugins/org.eclipse.emf.cdo.releng.version/src/org/eclipse/emf/cdo/releng/version/VersionBuilder.java index d691ad1ecd..c907846234 100644 --- a/plugins/org.eclipse.emf.cdo.releng.version/src/org/eclipse/emf/cdo/releng/version/VersionBuilder.java +++ b/plugins/org.eclipse.emf.cdo.releng.version/src/org/eclipse/emf/cdo/releng/version/VersionBuilder.java @@ -182,7 +182,6 @@ public class VersionBuilder extends IncrementalProjectBuilder implements Element } catch (CoreException ex) { - ex.printStackTrace(); String msg = "Problem with release spec: " + releasePath; Markers.addMarker(projectDescription, msg, IMarker.SEVERITY_ERROR, "(" + releasePath.replace(".", "\\.") + ")"); return buildDpependencies.toArray(new IProject[buildDpependencies.size()]); diff --git a/plugins/org.eclipse.emf.cdo.releng.version/src/org/eclipse/emf/cdo/releng/version/test/TestResourceChangeListener.java b/plugins/org.eclipse.emf.cdo.releng.version/src/org/eclipse/emf/cdo/releng/version/test/TestResourceChangeListener.java deleted file mode 100644 index 63e895ff7d..0000000000 --- a/plugins/org.eclipse.emf.cdo.releng.version/src/org/eclipse/emf/cdo/releng/version/test/TestResourceChangeListener.java +++ /dev/null @@ -1,171 +0,0 @@ -/* - * Copyright (c) 2004 - 2012 Eike Stepper (Berlin, Germany) and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * Eike Stepper - initial API and implementation - */ -package org.eclipse.emf.cdo.releng.version.test; - -import org.eclipse.core.resources.IResourceChangeEvent; -import org.eclipse.core.resources.IResourceChangeListener; -import org.eclipse.core.resources.IResourceDelta; -import org.eclipse.core.resources.IResourceDeltaVisitor; -import org.eclipse.core.runtime.CoreException; - -import java.util.ArrayList; -import java.util.List; - -/** - * @author Eike Stepper - */ -public final class TestResourceChangeListener implements IResourceChangeListener -{ - public void resourceChanged(IResourceChangeEvent event) - { - try - { - System.out.println(getType(event)); - IResourceDelta delta = event.getDelta(); - if (delta != null) - { - delta.accept(new IResourceDeltaVisitor() - { - public boolean visit(IResourceDelta delta) throws CoreException - { - System.out.println(" " + delta.getFullPath() + " --> " + getKind(delta) + " " + getFlags(delta)); - return true; - } - }); - } - } - catch (CoreException ex) - { - ex.printStackTrace(); - } - } - - public static String getType(IResourceChangeEvent event) - { - switch (event.getType()) - { - case IResourceChangeEvent.POST_BUILD: - return "POST_BUILD"; - case IResourceChangeEvent.POST_CHANGE: - return "POST_CHANGE"; - case IResourceChangeEvent.PRE_BUILD: - return "PRE_BUILD"; - case IResourceChangeEvent.PRE_CLOSE: - return "PRE_CLOSE"; - case IResourceChangeEvent.PRE_DELETE: - return "PRE_DELETE"; - case IResourceChangeEvent.PRE_REFRESH: - return "PRE_REFRESH"; - default: - return "Unknown event type: " + event.getType(); - } - } - - public static String getKind(IResourceDelta delta) - { - switch (delta.getKind()) - { - case IResourceDelta.ADDED: - return "ADDED"; - case IResourceDelta.REMOVED: - return "REMOVED"; - case IResourceDelta.CHANGED: - return "CHANGED"; - case IResourceDelta.ADDED_PHANTOM: - return "ADDED_PHANTOM"; - case IResourceDelta.REMOVED_PHANTOM: - return "REMOVED_PHANTOM"; - default: - return "Unknown delta kind: " + delta.getKind(); - } - } - - public static String getFlags(IResourceDelta delta) - { - List list = new ArrayList(); - if (hasFlag(delta, IResourceDelta.CONTENT)) - { - list.add("CONTENT"); - } - - if (hasFlag(delta, IResourceDelta.DERIVED_CHANGED)) - { - list.add("DERIVED_CHANGED"); - } - - if (hasFlag(delta, IResourceDelta.DESCRIPTION)) - { - list.add("DESCRIPTION"); - } - - if (hasFlag(delta, IResourceDelta.ENCODING)) - { - list.add("ENCODING"); - } - - if (hasFlag(delta, IResourceDelta.LOCAL_CHANGED)) - { - list.add("LOCAL_CHANGED"); - } - - if (hasFlag(delta, IResourceDelta.OPEN)) - { - list.add("OPEN"); - } - - if (hasFlag(delta, IResourceDelta.MOVED_TO)) - { - list.add("MOVED_TO"); - } - - if (hasFlag(delta, IResourceDelta.MOVED_FROM)) - { - list.add("MOVED_FROM"); - } - - if (hasFlag(delta, IResourceDelta.COPIED_FROM)) - { - list.add("COPIED_FROM"); - } - - if (hasFlag(delta, IResourceDelta.TYPE)) - { - list.add("TYPE"); - } - - if (hasFlag(delta, IResourceDelta.SYNC)) - { - list.add("SYNC"); - } - - if (hasFlag(delta, IResourceDelta.MARKERS)) - { - list.add("MARKERS"); - } - - if (hasFlag(delta, IResourceDelta.REPLACED)) - { - list.add("REPLACED"); - } - - if (list.isEmpty()) - { - return ""; - } - - return list.toString(); - } - - public static boolean hasFlag(IResourceDelta delta, int flag) - { - return (delta.getFlags() & flag) != 0; - } -} -- cgit v1.2.3