1 |
commit: af344112881d635949535ba6a5fc9e11ad284dc5 |
2 |
Author: Miroslav Šulc <fordfrog <AT> gentoo <DOT> org> |
3 |
AuthorDate: Sun Nov 3 11:26:07 2019 +0000 |
4 |
Commit: Miroslav Šulc <fordfrog <AT> gentoo <DOT> org> |
5 |
CommitDate: Sun Nov 3 11:26:07 2019 +0000 |
6 |
URL: https://gitweb.gentoo.org/proj/java-ebuilder.git/commit/?id=af344112 |
7 |
|
8 |
encapsulated java version in new container |
9 |
|
10 |
Signed-off-by: Miroslav Šulc <fordfrog <AT> gentoo.org> |
11 |
|
12 |
.../gentoo/java/ebuilder/maven/JavaVersion.java | 87 ++++++++++++++++++++++ |
13 |
.../gentoo/java/ebuilder/maven/MavenParser.java | 10 ++- |
14 |
.../gentoo/java/ebuilder/maven/MavenProject.java | 12 +-- |
15 |
3 files changed, 99 insertions(+), 10 deletions(-) |
16 |
|
17 |
diff --git a/src/main/java/org/gentoo/java/ebuilder/maven/JavaVersion.java b/src/main/java/org/gentoo/java/ebuilder/maven/JavaVersion.java |
18 |
new file mode 100644 |
19 |
index 0000000..5aa600d |
20 |
--- /dev/null |
21 |
+++ b/src/main/java/org/gentoo/java/ebuilder/maven/JavaVersion.java |
22 |
@@ -0,0 +1,87 @@ |
23 |
+package org.gentoo.java.ebuilder.maven; |
24 |
+ |
25 |
+import java.text.MessageFormat; |
26 |
+import java.util.regex.Matcher; |
27 |
+import java.util.regex.Pattern; |
28 |
+ |
29 |
+/** |
30 |
+ * Java versionNumber container. |
31 |
+ * |
32 |
+ * @author fordfrog |
33 |
+ */ |
34 |
+public class JavaVersion { |
35 |
+ |
36 |
+ /** |
37 |
+ * Pattern for parsing Java versionNumber. |
38 |
+ */ |
39 |
+ private static final Pattern PATTERN_VERSION |
40 |
+ = Pattern.compile("^(?:1\\.)(\\d+)$"); |
41 |
+ /** |
42 |
+ * Java versionNumber number. |
43 |
+ */ |
44 |
+ private final int versionNumber; |
45 |
+ /** |
46 |
+ * Java version string. |
47 |
+ */ |
48 |
+ private final String versionString; |
49 |
+ |
50 |
+ /** |
51 |
+ * Creates new instance of JavaVersion. Parses the version string and uses |
52 |
+ * the main Java version. Terminates if the version is not valid. |
53 |
+ * |
54 |
+ * @param versionString version string |
55 |
+ */ |
56 |
+ public JavaVersion(final String versionString) { |
57 |
+ this.versionString = versionString; |
58 |
+ |
59 |
+ final Matcher matcher = PATTERN_VERSION.matcher(versionString); |
60 |
+ |
61 |
+ if (!matcher.matches()) { |
62 |
+ throw new IllegalArgumentException(MessageFormat.format( |
63 |
+ "Java version \"{0}\" is not valid!", versionString)); |
64 |
+ } |
65 |
+ |
66 |
+ versionNumber = Integer.parseInt(matcher.group(1), 10); |
67 |
+ } |
68 |
+ |
69 |
+ /** |
70 |
+ * Compares this JavaVersion to the passed JavaVersion. |
71 |
+ * |
72 |
+ * @param javaVersion JavaVersion to compare to. |
73 |
+ * |
74 |
+ * @return -1 if this versionNumber is lower, 1 if this versionNumber is |
75 |
+ * higher and 0 if both are equal |
76 |
+ */ |
77 |
+ public int compareTo(final JavaVersion javaVersion) { |
78 |
+ if (javaVersion.getVersionNumber() > versionNumber) { |
79 |
+ return -1; |
80 |
+ } else if (javaVersion.getVersionNumber() < versionNumber) { |
81 |
+ return 1; |
82 |
+ } else { |
83 |
+ return 0; |
84 |
+ } |
85 |
+ } |
86 |
+ |
87 |
+ /** |
88 |
+ * Getter for {@link #versionNumber}. |
89 |
+ * |
90 |
+ * @return {@link #versionNumber} |
91 |
+ */ |
92 |
+ public int getVersionNumber() { |
93 |
+ return versionNumber; |
94 |
+ } |
95 |
+ |
96 |
+ /** |
97 |
+ * Getter for {@link #versionString}. |
98 |
+ * |
99 |
+ * @return {@link #versionString} |
100 |
+ */ |
101 |
+ public String getVersionString() { |
102 |
+ return versionString; |
103 |
+ } |
104 |
+ |
105 |
+ @Override |
106 |
+ public String toString() { |
107 |
+ return versionString; |
108 |
+ } |
109 |
+} |
110 |
|
111 |
diff --git a/src/main/java/org/gentoo/java/ebuilder/maven/MavenParser.java b/src/main/java/org/gentoo/java/ebuilder/maven/MavenParser.java |
112 |
index 942ee27..7c9d162 100644 |
113 |
--- a/src/main/java/org/gentoo/java/ebuilder/maven/MavenParser.java |
114 |
+++ b/src/main/java/org/gentoo/java/ebuilder/maven/MavenParser.java |
115 |
@@ -208,7 +208,7 @@ public class MavenParser { |
116 |
case "source": |
117 |
if ("maven-compiler-plugin".equals(artifactId)) { |
118 |
mavenProject.setSourceVersion( |
119 |
- reader.getElementText()); |
120 |
+ new JavaVersion(reader.getElementText())); |
121 |
} else { |
122 |
consumeElement(reader); |
123 |
} |
124 |
@@ -217,7 +217,7 @@ public class MavenParser { |
125 |
case "target": |
126 |
if ("maven-compiler-plugin".equals(artifactId)) { |
127 |
mavenProject.setTargetVersion( |
128 |
- reader.getElementText()); |
129 |
+ new JavaVersion(reader.getElementText())); |
130 |
} else { |
131 |
consumeElement(reader); |
132 |
} |
133 |
@@ -572,10 +572,12 @@ public class MavenParser { |
134 |
if (reader.isStartElement()) { |
135 |
switch (reader.getLocalName()) { |
136 |
case "maven.compiler.source": |
137 |
- mavenProject.setSourceVersion(reader.getElementText()); |
138 |
+ mavenProject.setSourceVersion( |
139 |
+ new JavaVersion(reader.getElementText())); |
140 |
break; |
141 |
case "maven.compiler.target": |
142 |
- mavenProject.setTargetVersion(reader.getElementText()); |
143 |
+ mavenProject.setTargetVersion( |
144 |
+ new JavaVersion(reader.getElementText())); |
145 |
break; |
146 |
case "project.build.sourceEncoding": |
147 |
mavenProject.setSourceEncoding(reader.getElementText()); |
148 |
|
149 |
diff --git a/src/main/java/org/gentoo/java/ebuilder/maven/MavenProject.java b/src/main/java/org/gentoo/java/ebuilder/maven/MavenProject.java |
150 |
index 6cead37..07fa60e 100644 |
151 |
--- a/src/main/java/org/gentoo/java/ebuilder/maven/MavenProject.java |
152 |
+++ b/src/main/java/org/gentoo/java/ebuilder/maven/MavenProject.java |
153 |
@@ -68,11 +68,11 @@ public class MavenProject { |
154 |
/** |
155 |
* Source compile version. |
156 |
*/ |
157 |
- private String sourceVersion = "1.8"; |
158 |
+ private JavaVersion sourceVersion = new JavaVersion("1.8"); |
159 |
/** |
160 |
* Target compile version. |
161 |
*/ |
162 |
- private String targetVersion = "1.8"; |
163 |
+ private JavaVersion targetVersion = new JavaVersion("1.8"); |
164 |
/** |
165 |
* Test resource directories. |
166 |
*/ |
167 |
@@ -382,7 +382,7 @@ public class MavenProject { |
168 |
* |
169 |
* @return {@link #sourceVersion} |
170 |
*/ |
171 |
- public String getSourceVersion() { |
172 |
+ public JavaVersion getSourceVersion() { |
173 |
return sourceVersion; |
174 |
} |
175 |
|
176 |
@@ -391,7 +391,7 @@ public class MavenProject { |
177 |
* |
178 |
* @param sourceVersion {@link #sourceVersion} |
179 |
*/ |
180 |
- public void setSourceVersion(final String sourceVersion) { |
181 |
+ public void setSourceVersion(final JavaVersion sourceVersion) { |
182 |
this.sourceVersion = sourceVersion; |
183 |
} |
184 |
|
185 |
@@ -400,7 +400,7 @@ public class MavenProject { |
186 |
* |
187 |
* @return {@link #targetVersion} |
188 |
*/ |
189 |
- public String getTargetVersion() { |
190 |
+ public JavaVersion getTargetVersion() { |
191 |
return targetVersion; |
192 |
} |
193 |
|
194 |
@@ -409,7 +409,7 @@ public class MavenProject { |
195 |
* |
196 |
* @param targetVersion {@link #targetVersion} |
197 |
*/ |
198 |
- public void setTargetVersion(final String targetVersion) { |
199 |
+ public void setTargetVersion(final JavaVersion targetVersion) { |
200 |
this.targetVersion = targetVersion; |
201 |
} |