Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEike Stepper2012-09-12 10:01:30 +0000
committerEike Stepper2012-09-12 10:01:30 +0000
commite96cae89427e0e8008319204d3d9dc6b158a3357 (patch)
treeea5cc86a5e7ac11737430ebe2c4c2897529c0fbe /plugins/org.eclipse.emf.cdo.releng.version
parentac9823aab836b302ea94cf8c1b8c536d97ae8680 (diff)
downloadcdo-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')
-rw-r--r--plugins/org.eclipse.emf.cdo.releng.version/src/org/eclipse/emf/cdo/releng/internal/version/Element.java29
-rw-r--r--plugins/org.eclipse.emf.cdo.releng.version/src/org/eclipse/emf/cdo/releng/internal/version/VersionBuilder.java109
-rw-r--r--plugins/org.eclipse.emf.cdo.releng.version/src/org/eclipse/emf/cdo/releng/version/IElement.java4
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();

Back to the top