Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/org.eclipse.emf.cdo.releng.version/src/org/eclipse/emf/cdo/releng/internal/version/VersionBuilder.java')
-rw-r--r--plugins/org.eclipse.emf.cdo.releng.version/src/org/eclipse/emf/cdo/releng/internal/version/VersionBuilder.java109
1 files changed, 62 insertions, 47 deletions
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;

Back to the top