Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEike Stepper2012-07-26 10:48:03 +0000
committerEike Stepper2012-07-26 10:48:03 +0000
commit29edfe6aa27d1d7118799681432877528c981750 (patch)
tree4b5d0ff3a0627b34fbdfe32a8d07375f21f241ab /plugins/org.eclipse.emf.cdo.releng.version/src/org/eclipse
parent484f99da1a8e32fecb8f0e8dc2995feae6975ae7 (diff)
downloadcdo-29edfe6aa27d1d7118799681432877528c981750.tar.gz
cdo-29edfe6aa27d1d7118799681432877528c981750.tar.xz
cdo-29edfe6aa27d1d7118799681432877528c981750.zip
Check malformed versions.
Diffstat (limited to 'plugins/org.eclipse.emf.cdo.releng.version/src/org/eclipse')
-rw-r--r--plugins/org.eclipse.emf.cdo.releng.version/src/org/eclipse/emf/cdo/releng/version/IVersionBuilderArguments.java2
-rw-r--r--plugins/org.eclipse.emf.cdo.releng.version/src/org/eclipse/emf/cdo/releng/version/Markers.java59
-rw-r--r--plugins/org.eclipse.emf.cdo.releng.version/src/org/eclipse/emf/cdo/releng/version/ReleaseManager.java6
-rw-r--r--plugins/org.eclipse.emf.cdo.releng.version/src/org/eclipse/emf/cdo/releng/version/VersionBuilder.java75
-rw-r--r--plugins/org.eclipse.emf.cdo.releng.version/src/org/eclipse/emf/cdo/releng/version/VersionBuilderArguments.java19
5 files changed, 132 insertions, 29 deletions
diff --git a/plugins/org.eclipse.emf.cdo.releng.version/src/org/eclipse/emf/cdo/releng/version/IVersionBuilderArguments.java b/plugins/org.eclipse.emf.cdo.releng.version/src/org/eclipse/emf/cdo/releng/version/IVersionBuilderArguments.java
index a0c15ee1a8..fd291b1fde 100644
--- a/plugins/org.eclipse.emf.cdo.releng.version/src/org/eclipse/emf/cdo/releng/version/IVersionBuilderArguments.java
+++ b/plugins/org.eclipse.emf.cdo.releng.version/src/org/eclipse/emf/cdo/releng/version/IVersionBuilderArguments.java
@@ -32,5 +32,7 @@ public interface IVersionBuilderArguments extends Map<String, String>
public boolean isIgnoreFeatureContentChanges();
+ public boolean isIgnoreMalformedVersionsButton();
+
public void applyTo(IProject project) throws CoreException;
}
diff --git a/plugins/org.eclipse.emf.cdo.releng.version/src/org/eclipse/emf/cdo/releng/version/Markers.java b/plugins/org.eclipse.emf.cdo.releng.version/src/org/eclipse/emf/cdo/releng/version/Markers.java
index dadc1d4f3b..a4122d68f3 100644
--- a/plugins/org.eclipse.emf.cdo.releng.version/src/org/eclipse/emf/cdo/releng/version/Markers.java
+++ b/plugins/org.eclipse.emf.cdo.releng.version/src/org/eclipse/emf/cdo/releng/version/Markers.java
@@ -98,11 +98,9 @@ public final class Markers
return marker;
}
- public static IMarker addMarker(IFile file, String message, int severity, String regex) throws CoreException,
- IOException
+ public static String getContent(IFile file) throws CoreException, IOException
{
InputStream contents = null;
-
try
{
contents = file.getContents();
@@ -115,30 +113,7 @@ public final class Markers
caw.write(c);
}
- String string = caw.toString();
-
- Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE | Pattern.DOTALL);
- Matcher matcher = pattern.matcher(string);
-
- if (matcher.find())
- {
- int startChar = matcher.start(1);
- int endChar = matcher.end(1);
-
- matcher = NL_PATTERN.matcher(string);
- int line = 0;
- while (matcher.find())
- {
- if (matcher.start(1) > startChar)
- {
- break;
- }
-
- ++line;
- }
-
- return addMarker(file, message, severity, line, startChar, endChar);
- }
+ return caw.toString();
}
finally
{
@@ -153,6 +128,36 @@ public final class Markers
Activator.log(ex);
}
}
+
+ }
+ }
+
+ public static IMarker addMarker(IFile file, String message, int severity, String regex) throws CoreException,
+ IOException
+ {
+ String string = getContent(file);
+
+ Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE | Pattern.DOTALL);
+ Matcher matcher = pattern.matcher(string);
+
+ if (matcher.find())
+ {
+ int startChar = matcher.start(1);
+ int endChar = matcher.end(1);
+
+ matcher = NL_PATTERN.matcher(string);
+ int line = 0;
+ while (matcher.find())
+ {
+ if (matcher.start(1) > startChar)
+ {
+ break;
+ }
+
+ ++line;
+ }
+
+ return addMarker(file, message, severity, line, startChar, endChar);
}
return addMarker(file, message, severity);
diff --git a/plugins/org.eclipse.emf.cdo.releng.version/src/org/eclipse/emf/cdo/releng/version/ReleaseManager.java b/plugins/org.eclipse.emf.cdo.releng.version/src/org/eclipse/emf/cdo/releng/version/ReleaseManager.java
index 800071db40..f92c2923ba 100644
--- a/plugins/org.eclipse.emf.cdo.releng.version/src/org/eclipse/emf/cdo/releng/version/ReleaseManager.java
+++ b/plugins/org.eclipse.emf.cdo.releng.version/src/org/eclipse/emf/cdo/releng/version/ReleaseManager.java
@@ -153,12 +153,16 @@ public class ReleaseManager
return release;
}
- public Element createElement(IModel componentModel, boolean withFeatureContent) throws CoreException
+ public Element createElement(IModel componentModel, boolean withFeatureContent)
{
if (componentModel instanceof IPluginModelBase)
{
IPluginModelBase pluginModel = (IPluginModelBase)componentModel;
BundleDescription description = pluginModel.getBundleDescription();
+ if (description == null)
+ {
+ throw new IllegalStateException("No bundle description for " + pluginModel.getInstallLocation());
+ }
String name = description.getSymbolicName();
Version version = description.getVersion();
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 7b0664ef38..ba67c162cb 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
@@ -39,6 +39,8 @@ import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
/**
* @author Eike Stepper
@@ -47,7 +49,8 @@ public class VersionBuilder extends IncrementalProjectBuilder implements Element
{
public static final String BUILDER_ID = "org.eclipse.emf.cdo.releng.version.VersionBuilder";
- public static final boolean DEBUG = true;
+ public static final boolean DEBUG = Boolean.valueOf(System.getProperty("org.eclipse.emf.cdo.releng.version.debug",
+ "false"));
private static final Path MANIFEST_PATH = new Path("META-INF/MANIFEST.MF");
@@ -207,6 +210,11 @@ public class VersionBuilder extends IncrementalProjectBuilder implements Element
return buildDpependencies.toArray(new IProject[buildDpependencies.size()]);
}
+ if (!arguments.isIgnoreMalformedVersionsButton())
+ {
+ checkMalformedVersions(componentModel);
+ }
+
Version elementVersion = element.getVersion();
Version releaseVersion = releaseElement.getVersion();
Version nextImplementationVersion = getNextImplVersion(releaseVersion);
@@ -559,6 +567,55 @@ public class VersionBuilder extends IncrementalProjectBuilder implements Element
return null;
}
+ private void checkMalformedVersions(IModel componentModel)
+ {
+ IResource underlyingResource = componentModel.getUnderlyingResource();
+ if (underlyingResource != null)
+ {
+ IProject project = underlyingResource.getProject();
+ if (project.isAccessible())
+ {
+ IFile file = null;
+ String regex = null;
+ if (componentModel instanceof IPluginModelBase)
+ {
+ file = project.getFile(MANIFEST_PATH);
+ regex = "Bundle-Version: *(\\d+(\\.\\d+(\\.\\d+(\\.[-_a-zA-Z0-9]+)?)?)?)";
+ }
+ else
+ {
+ file = project.getFile(FEATURE_PATH);
+ regex = "feature.*?version\\s*=\\s*[\"'](\\d+(\\.\\d+(\\.\\d+(\\.[-_a-zA-Z0-9]+)?)?)?)";
+ }
+
+ if (file.exists())
+ {
+ try
+ {
+ String content = Markers.getContent(file);
+ Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE | Pattern.DOTALL);
+ Matcher matcher = pattern.matcher(content);
+ if (matcher.find())
+ {
+ String version = matcher.group(1);
+ if (matcher.groupCount() < 4 || !".qualifier".equals(matcher.group(4)))
+ {
+ Version expectedVersion = new Version(version);
+ addMalformedVersionMarker(file, regex,
+ new Version(expectedVersion.getMajor(), expectedVersion.getMinor(), expectedVersion.getMicro(),
+ "qualifier"));
+ }
+ }
+ }
+ catch (Exception ex)
+ {
+ Activator.log(ex);
+ }
+ }
+ }
+ }
+ }
+
private void checkDependencyRanges(IPluginModelBase pluginModel) throws CoreException, IOException
{
BundleDescription description = pluginModel.getBundleDescription();
@@ -727,6 +784,22 @@ public class VersionBuilder extends IncrementalProjectBuilder implements Element
}
}
+ private void addMalformedVersionMarker(IFile file, String regex, Version version)
+ {
+ try
+ {
+ String versionString = version.toString();
+ IMarker marker = Markers.addMarker(file, "The version should be of the form '" + versionString + "'",
+ IMarker.SEVERITY_ERROR, regex);
+ marker.setAttribute(Markers.QUICK_FIX_PATTERN, regex);
+ marker.setAttribute(Markers.QUICK_FIX_REPLACEMENT, versionString);
+ }
+ catch (Exception ex)
+ {
+ Activator.log(ex);
+ }
+ }
+
private void addVersionMarker(String message, Version version)
{
try
diff --git a/plugins/org.eclipse.emf.cdo.releng.version/src/org/eclipse/emf/cdo/releng/version/VersionBuilderArguments.java b/plugins/org.eclipse.emf.cdo.releng.version/src/org/eclipse/emf/cdo/releng/version/VersionBuilderArguments.java
index 6520393cf0..71a8869584 100644
--- a/plugins/org.eclipse.emf.cdo.releng.version/src/org/eclipse/emf/cdo/releng/version/VersionBuilderArguments.java
+++ b/plugins/org.eclipse.emf.cdo.releng.version/src/org/eclipse/emf/cdo/releng/version/VersionBuilderArguments.java
@@ -42,6 +42,8 @@ public class VersionBuilderArguments extends HashMap<String, String> implements
private static final String IGNORE_CONTENT_CHANGES_ARGUMENT = "ignore.feature.content.changes";
+ private static final String IGNORE_MALFORMED_VERSIONS_ARGUMENT = "ignore.malformed.versions";
+
public VersionBuilderArguments()
{
}
@@ -96,6 +98,11 @@ public class VersionBuilderArguments extends HashMap<String, String> implements
return "true".equals(get(IGNORE_CONTENT_CHANGES_ARGUMENT));
}
+ public boolean isIgnoreMalformedVersionsButton()
+ {
+ return "true".equals(get(IGNORE_MALFORMED_VERSIONS_ARGUMENT));
+ }
+
public void setReleasePath(String value)
{
if (value != null)
@@ -168,6 +175,18 @@ public class VersionBuilderArguments extends HashMap<String, String> implements
}
}
+ public void setIgnoreMalformedVersions(boolean value)
+ {
+ if (value)
+ {
+ put(IGNORE_MALFORMED_VERSIONS_ARGUMENT, Boolean.toString(true));
+ }
+ else
+ {
+ remove(IGNORE_MALFORMED_VERSIONS_ARGUMENT);
+ }
+ }
+
public void applyTo(IProject project) throws CoreException
{
IProjectDescription description = project.getDescription();

Back to the top