diff options
author | Eike Stepper | 2012-09-12 10:01:30 +0000 |
---|---|---|
committer | Eike Stepper | 2012-09-12 10:01:30 +0000 |
commit | e96cae89427e0e8008319204d3d9dc6b158a3357 (patch) | |
tree | ea5cc86a5e7ac11737430ebe2c4c2897529c0fbe /plugins/org.eclipse.emf.cdo.releng.version | |
parent | ac9823aab836b302ea94cf8c1b8c536d97ae8680 (diff) | |
download | cdo-e96cae89427e0e8008319204d3d9dc6b158a3357.tar.gz cdo-e96cae89427e0e8008319204d3d9dc6b158a3357.tar.xz cdo-e96cae89427e0e8008319204d3d9dc6b158a3357.zip |
Don't complain about omni version removal or addition.
Diffstat (limited to 'plugins/org.eclipse.emf.cdo.releng.version')
3 files changed, 87 insertions, 55 deletions
diff --git a/plugins/org.eclipse.emf.cdo.releng.version/src/org/eclipse/emf/cdo/releng/internal/version/Element.java b/plugins/org.eclipse.emf.cdo.releng.version/src/org/eclipse/emf/cdo/releng/internal/version/Element.java index f0e8050efc..a6326296f5 100644 --- a/plugins/org.eclipse.emf.cdo.releng.version/src/org/eclipse/emf/cdo/releng/internal/version/Element.java +++ b/plugins/org.eclipse.emf.cdo.releng.version/src/org/eclipse/emf/cdo/releng/internal/version/Element.java @@ -95,21 +95,21 @@ public class Element implements IElement return children; } - public Set<IElement> getAllChildren(IElementResolver resolver) + public Set<IElement> getAllChildren(IElementResolver resolver, IElementResolver otherResolver) { if (allChildren == null) { allChildren = new HashSet<IElement>(); for (IElement child : children) { - recurseChildren(resolver, child); + recurseChildren(resolver, otherResolver, child); } } return allChildren; } - private void recurseChildren(IElementResolver resolver, IElement element) + private void recurseChildren(IElementResolver resolver, IElementResolver otherResolver, IElement element) { if (allChildren.add(element)) { @@ -125,19 +125,36 @@ public class Element implements IElement } } + IElement otherTopElement = otherResolver.resolveElement(element); + if (otherTopElement == null) + { + // If we fail to find it with an exact version, we try it with an omni version and use that for the children. + // + otherTopElement = resolver.resolveElement(element.trimVersion()); + if (otherTopElement == null) + { + return; + } + } + + if (otherTopElement.isVersionUnresolved()) + { + return; + } + for (IElement child : topElement.getChildren()) { if (!child.isLicenseFeature()) { - recurseChildren(resolver, child); + recurseChildren(resolver, otherResolver, child); } } } } - public IElement getChild(IElementResolver resolver, IElement key) + public IElement getChild(IElementResolver resolver, IElementResolver otherResolver, IElement key) { - Set<IElement> allChildren = getAllChildren(resolver); + Set<IElement> allChildren = getAllChildren(resolver, otherResolver); for (IElement child : allChildren) { if (child.equals(key)) diff --git a/plugins/org.eclipse.emf.cdo.releng.version/src/org/eclipse/emf/cdo/releng/internal/version/VersionBuilder.java b/plugins/org.eclipse.emf.cdo.releng.version/src/org/eclipse/emf/cdo/releng/internal/version/VersionBuilder.java index 0871aa4326..d055cbee31 100644 --- a/plugins/org.eclipse.emf.cdo.releng.version/src/org/eclipse/emf/cdo/releng/internal/version/VersionBuilder.java +++ b/plugins/org.eclipse.emf.cdo.releng.version/src/org/eclipse/emf/cdo/releng/internal/version/VersionBuilder.java @@ -231,6 +231,7 @@ public class VersionBuilder extends IncrementalProjectBuilder implements IElemen try { IModel componentModel = VersionUtil.getComponentModel(project); + IFile componentModelFile = (IFile)componentModel.getUnderlyingResource(); /* * Determine release data to validate against @@ -289,24 +290,9 @@ public class VersionBuilder extends IncrementalProjectBuilder implements IElemen return; } - /* - * Determine if a validation is needed or if the version has already been increased properly - */ - - IElement element = IReleaseManager.INSTANCE.createElement(componentModel, true, false); - for (IElement child : element.getAllChildren(this)) - { - IProject childProject = getProject(child); - if (childProject != null) - { - buildDpependencies.add(childProject); - } - } - IFile propertiesFile = VersionUtil.getFile(releasePath, "properties"); long propertiesTimeStamp = propertiesFile.getLocalTimeStamp(); boolean formerDeviations = buildState.isDeviations(); - IFile componentModelFile = (IFile)componentModel.getUnderlyingResource(); if (buildState.getPropertiesTimeStamp() != propertiesTimeStamp) { if (initReleaseProperties(propertiesFile)) @@ -331,7 +317,29 @@ public class VersionBuilder extends IncrementalProjectBuilder implements IElemen rootProjects = buildState.getRootProjects(); } - Markers.deleteAllMarkers(componentModel.getUnderlyingResource(), Markers.UNREFERENCED_ELEMENT_PROBLEM); + IPath componentModelPath = componentModelFile.getProjectRelativePath(); + boolean checkComponentModel = delta == null || delta.findMember(componentModelPath) != null; + + IElement element = IReleaseManager.INSTANCE.createElement(componentModel, true, false); + for (IElement child : element.getAllChildren(this, release)) + { + IProject childProject = getProject(child); + if (childProject != null) + { + buildDpependencies.add(childProject); + if (checkComponentModel) + { + IModel childProjectComponentModel = VersionUtil.getComponentModel(childProject); + if (childProjectComponentModel != null) + { + IResource underlyingResource = childProjectComponentModel.getUnderlyingResource(); + Markers.deleteAllMarkers(underlyingResource, Markers.UNREFERENCED_ELEMENT_PROBLEM); + } + } + } + } + + Markers.deleteAllMarkers(componentModelFile, Markers.UNREFERENCED_ELEMENT_PROBLEM); if (!rootProjects.contains(project.getName())) { Set<IElement> elementReference = resolveReferences(element); @@ -341,9 +349,6 @@ public class VersionBuilder extends IncrementalProjectBuilder implements IElemen } } - IPath componentModelPath = componentModelFile.getProjectRelativePath(); - boolean checkComponentModel = delta == null || delta.findMember(componentModelPath) != null; - if (componentModel instanceof IPluginModelBase) { if (!arguments.isIgnoreSchemaBuilder()) @@ -426,7 +431,7 @@ public class VersionBuilder extends IncrementalProjectBuilder implements IElemen } else if (!oldVersionBuilderArguments.isIgnoreMalformedVersions()) { - Markers.deleteAllMarkers(componentModel.getUnderlyingResource(), Markers.MALFORMED_VERSION_PROBLEM); + Markers.deleteAllMarkers(componentModelFile, Markers.MALFORMED_VERSION_PROBLEM); } IElement releaseElement = release.getElements().get(element.trimVersion()); @@ -783,7 +788,7 @@ public class VersionBuilder extends IncrementalProjectBuilder implements IElemen featureChild = resolveElement(featureChild); if (featureChild != null) { - Set<IElement> allChildren = featureChild.getAllChildren(this); + Set<IElement> allChildren = featureChild.getAllChildren(this, release); if (allChildren.contains(pluginChild)) { try @@ -813,19 +818,24 @@ public class VersionBuilder extends IncrementalProjectBuilder implements IElemen List<Problem> problems) { ComponentReferenceType biggestChange = ComponentReferenceType.UNCHANGED; - Set<IElement> allChildren = element.getAllChildren(this); + Set<IElement> allChildren = element.getAllChildren(this, release); for (IElement child : allChildren) { ComponentReferenceType change = checkFeatureContentChanges(element, releasedElement, child, problems); biggestChange = ComponentReferenceType.values()[Math.max(biggestChange.ordinal(), change.ordinal())]; } - for (IElement releasedElementsChild : releasedElement.getAllChildren(release)) + for (IElement releasedElementsChild : releasedElement.getAllChildren(release, this)) { - if (!allChildren.contains(releasedElementsChild.trimVersion())) + IElement trimmedVersion = releasedElementsChild.trimVersion(); + if (!allChildren.contains(trimmedVersion)) { - addProblem(releasedElementsChild, IMarker.SEVERITY_WARNING, ComponentReferenceType.REMOVED, null, problems); - biggestChange = ComponentReferenceType.REMOVED; + IElement resolvedElement = resolveElement(trimmedVersion); + if (resolvedElement != null && !resolvedElement.isVersionUnresolved()) + { + addProblem(releasedElementsChild, IMarker.SEVERITY_WARNING, ComponentReferenceType.REMOVED, null, problems); + biggestChange = ComponentReferenceType.REMOVED; + } } } @@ -835,12 +845,12 @@ public class VersionBuilder extends IncrementalProjectBuilder implements IElemen private ComponentReferenceType checkFeatureContentChanges(IElement element, IElement releasedElement, IElement childElement, List<Problem> problems) { - IElement releasedElementsChild = releasedElement.getChild(release, childElement); + IElement releasedElementsChild = releasedElement.getChild(release, this, childElement); if (releasedElementsChild == null) { // Don't consider it added if it was present with a different version. // - releasedElementsChild = releasedElement.getChild(release, childElement.trimVersion()); + releasedElementsChild = releasedElement.getChild(release, this, childElement.trimVersion()); if (releasedElementsChild == null) { addProblem(childElement, IMarker.SEVERITY_WARNING, ComponentReferenceType.ADDED, null, problems); @@ -858,28 +868,33 @@ public class VersionBuilder extends IncrementalProjectBuilder implements IElemen } } - Version releasedVersion = childsReleasedElement.getVersion(); - Version version = childElement.trimVersion().getResolvedVersion(); - - if (version.getMajor() != releasedVersion.getMajor()) + if (!childsReleasedElement.isVersionUnresolved()) { - addProblem(childsReleasedElement, IMarker.SEVERITY_WARNING, ComponentReferenceType.MAJOR_CHANGED, version, - problems); - return ComponentReferenceType.MAJOR_CHANGED; - } + Version releasedVersion = childsReleasedElement.getVersion(); + Version version = childElement.trimVersion().getResolvedVersion(); + if (!version.equals(Version.emptyVersion)) + { + if (version.getMajor() != releasedVersion.getMajor()) + { + addProblem(childsReleasedElement, IMarker.SEVERITY_WARNING, ComponentReferenceType.MAJOR_CHANGED, version, + problems); + return ComponentReferenceType.MAJOR_CHANGED; + } - if (version.getMinor() != releasedVersion.getMinor()) - { - addProblem(childsReleasedElement, IMarker.SEVERITY_WARNING, ComponentReferenceType.MINOR_CHANGED, version, - problems); - return ComponentReferenceType.MINOR_CHANGED; - } + if (version.getMinor() != releasedVersion.getMinor()) + { + addProblem(childsReleasedElement, IMarker.SEVERITY_WARNING, ComponentReferenceType.MINOR_CHANGED, version, + problems); + return ComponentReferenceType.MINOR_CHANGED; + } - if (version.getMicro() != releasedVersion.getMicro()) - { - addProblem(childsReleasedElement, IMarker.SEVERITY_WARNING, ComponentReferenceType.MICRO_CHANGED, version, - problems); - return ComponentReferenceType.MICRO_CHANGED; + if (version.getMicro() != releasedVersion.getMicro()) + { + addProblem(childsReleasedElement, IMarker.SEVERITY_WARNING, ComponentReferenceType.MICRO_CHANGED, version, + problems); + return ComponentReferenceType.MICRO_CHANGED; + } + } } return ComponentReferenceType.UNCHANGED; diff --git a/plugins/org.eclipse.emf.cdo.releng.version/src/org/eclipse/emf/cdo/releng/version/IElement.java b/plugins/org.eclipse.emf.cdo.releng.version/src/org/eclipse/emf/cdo/releng/version/IElement.java index 5906e046da..14e541e12c 100644 --- a/plugins/org.eclipse.emf.cdo.releng.version/src/org/eclipse/emf/cdo/releng/version/IElement.java +++ b/plugins/org.eclipse.emf.cdo.releng.version/src/org/eclipse/emf/cdo/releng/version/IElement.java @@ -38,9 +38,9 @@ public interface IElement public List<IElement> getChildren(); - public Set<IElement> getAllChildren(IElementResolver resolver); + public Set<IElement> getAllChildren(IElementResolver resolver, IElementResolver otherResolver); - public IElement getChild(IElementResolver resolver, IElement key); + public IElement getChild(IElementResolver resolver, IElementResolver otherResolver, IElement key); public IElement trimVersion(); |