diff options
3 files changed, 99 insertions, 10 deletions
diff --git a/src/main/java/org/gentoo/java/ebuilder/maven/JavaVersion.java b/src/main/java/org/gentoo/java/ebuilder/maven/JavaVersion.java new file mode 100644 index 0000000..5aa600d --- /dev/null +++ b/src/main/java/org/gentoo/java/ebuilder/maven/JavaVersion.java @@ -0,0 +1,87 @@ +package org.gentoo.java.ebuilder.maven; + +import java.text.MessageFormat; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +/** + * Java versionNumber container. + * + * @author fordfrog + */ +public class JavaVersion { + + /** + * Pattern for parsing Java versionNumber. + */ + private static final Pattern PATTERN_VERSION + = Pattern.compile("^(?:1\\.)(\\d+)$"); + /** + * Java versionNumber number. + */ + private final int versionNumber; + /** + * Java version string. + */ + private final String versionString; + + /** + * Creates new instance of JavaVersion. Parses the version string and uses + * the main Java version. Terminates if the version is not valid. + * + * @param versionString version string + */ + public JavaVersion(final String versionString) { + this.versionString = versionString; + + final Matcher matcher = PATTERN_VERSION.matcher(versionString); + + if (!matcher.matches()) { + throw new IllegalArgumentException(MessageFormat.format( + "Java version \"{0}\" is not valid!", versionString)); + } + + versionNumber = Integer.parseInt(matcher.group(1), 10); + } + + /** + * Compares this JavaVersion to the passed JavaVersion. + * + * @param javaVersion JavaVersion to compare to. + * + * @return -1 if this versionNumber is lower, 1 if this versionNumber is + * higher and 0 if both are equal + */ + public int compareTo(final JavaVersion javaVersion) { + if (javaVersion.getVersionNumber() > versionNumber) { + return -1; + } else if (javaVersion.getVersionNumber() < versionNumber) { + return 1; + } else { + return 0; + } + } + + /** + * Getter for {@link #versionNumber}. + * + * @return {@link #versionNumber} + */ + public int getVersionNumber() { + return versionNumber; + } + + /** + * Getter for {@link #versionString}. + * + * @return {@link #versionString} + */ + public String getVersionString() { + return versionString; + } + + @Override + public String toString() { + return versionString; + } +} diff --git a/src/main/java/org/gentoo/java/ebuilder/maven/MavenParser.java b/src/main/java/org/gentoo/java/ebuilder/maven/MavenParser.java index 942ee27..7c9d162 100644 --- a/src/main/java/org/gentoo/java/ebuilder/maven/MavenParser.java +++ b/src/main/java/org/gentoo/java/ebuilder/maven/MavenParser.java @@ -208,7 +208,7 @@ public class MavenParser { case "source": if ("maven-compiler-plugin".equals(artifactId)) { mavenProject.setSourceVersion( - reader.getElementText()); + new JavaVersion(reader.getElementText())); } else { consumeElement(reader); } @@ -217,7 +217,7 @@ public class MavenParser { case "target": if ("maven-compiler-plugin".equals(artifactId)) { mavenProject.setTargetVersion( - reader.getElementText()); + new JavaVersion(reader.getElementText())); } else { consumeElement(reader); } @@ -572,10 +572,12 @@ public class MavenParser { if (reader.isStartElement()) { switch (reader.getLocalName()) { case "maven.compiler.source": - mavenProject.setSourceVersion(reader.getElementText()); + mavenProject.setSourceVersion( + new JavaVersion(reader.getElementText())); break; case "maven.compiler.target": - mavenProject.setTargetVersion(reader.getElementText()); + mavenProject.setTargetVersion( + new JavaVersion(reader.getElementText())); break; case "project.build.sourceEncoding": mavenProject.setSourceEncoding(reader.getElementText()); diff --git a/src/main/java/org/gentoo/java/ebuilder/maven/MavenProject.java b/src/main/java/org/gentoo/java/ebuilder/maven/MavenProject.java index 6cead37..07fa60e 100644 --- a/src/main/java/org/gentoo/java/ebuilder/maven/MavenProject.java +++ b/src/main/java/org/gentoo/java/ebuilder/maven/MavenProject.java @@ -68,11 +68,11 @@ public class MavenProject { /** * Source compile version. */ - private String sourceVersion = "1.8"; + private JavaVersion sourceVersion = new JavaVersion("1.8"); /** * Target compile version. */ - private String targetVersion = "1.8"; + private JavaVersion targetVersion = new JavaVersion("1.8"); /** * Test resource directories. */ @@ -382,7 +382,7 @@ public class MavenProject { * * @return {@link #sourceVersion} */ - public String getSourceVersion() { + public JavaVersion getSourceVersion() { return sourceVersion; } @@ -391,7 +391,7 @@ public class MavenProject { * * @param sourceVersion {@link #sourceVersion} */ - public void setSourceVersion(final String sourceVersion) { + public void setSourceVersion(final JavaVersion sourceVersion) { this.sourceVersion = sourceVersion; } @@ -400,7 +400,7 @@ public class MavenProject { * * @return {@link #targetVersion} */ - public String getTargetVersion() { + public JavaVersion getTargetVersion() { return targetVersion; } @@ -409,7 +409,7 @@ public class MavenProject { * * @param targetVersion {@link #targetVersion} */ - public void setTargetVersion(final String targetVersion) { + public void setTargetVersion(final JavaVersion targetVersion) { this.targetVersion = targetVersion; } |