diff options
author | rfeng <rfeng@13f79535-47bb-0310-9956-ffa450edef68> | 2009-03-26 18:13:31 +0000 |
---|---|---|
committer | rfeng <rfeng@13f79535-47bb-0310-9956-ffa450edef68> | 2009-03-26 18:13:31 +0000 |
commit | e62a5ee21ef5124d3a50893fa8ee7dce7eefea57 (patch) | |
tree | e83cdd9dd6a3f0b7b35bec117ea6b33ac56c6deb /maven-plugins | |
parent | 6fcc7fb8f40fc01cc37cb99b637c1f7e39d3af07 (diff) |
Minor fix to tolerate - in the maven version id
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@758783 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'maven-plugins')
3 files changed, 451 insertions, 245 deletions
diff --git a/maven-plugins/trunk/maven-bundle-plugin/src/main/java/org/apache/tuscany/maven/bundle/plugin/OSGIArtifactVersion.java b/maven-plugins/trunk/maven-bundle-plugin/src/main/java/org/apache/tuscany/maven/bundle/plugin/OSGIArtifactVersion.java index 7c6e72e049..9d562381c1 100644 --- a/maven-plugins/trunk/maven-bundle-plugin/src/main/java/org/apache/tuscany/maven/bundle/plugin/OSGIArtifactVersion.java +++ b/maven-plugins/trunk/maven-bundle-plugin/src/main/java/org/apache/tuscany/maven/bundle/plugin/OSGIArtifactVersion.java @@ -1,6 +1,5 @@ -package org.apache.tuscany.maven.bundle.plugin;
-
/*
+ * Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
@@ -8,7 +7,7 @@ package org.apache.tuscany.maven.bundle.plugin; * "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
- * http://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
@@ -17,216 +16,204 @@ package org.apache.tuscany.maven.bundle.plugin; * specific language governing permissions and limitations
* under the License.
*/
+package org.apache.tuscany.maven.bundle.plugin;
import java.util.StringTokenizer;
import org.apache.maven.artifact.versioning.ArtifactVersion;
public class OSGIArtifactVersion implements ArtifactVersion {
- private Integer buildNumber;
-
- private Integer incrementalVersion;
-
- private Integer majorVersion;
-
- private Integer minorVersion;
-
- private String qualifier;
-
- private String unparsed;
-
- public OSGIArtifactVersion(String version) {
- parseVersion(version);
- }
-
- public int compareTo(Object o) {
- ArtifactVersion otherVersion = (ArtifactVersion) o;
-
- int result = getMajorVersion() - otherVersion.getMajorVersion();
- if (result == 0) {
- result = getMinorVersion() - otherVersion.getMinorVersion();
- }
- if (result == 0) {
- result = getIncrementalVersion() - otherVersion.getIncrementalVersion();
- }
- if (result == 0) {
- if (this.qualifier != null) {
- String otherQualifier = otherVersion.getQualifier();
-
- if (otherQualifier != null) {
- if ((this.qualifier.length() > otherQualifier.length())
- && this.qualifier.startsWith(otherQualifier)) {
- // here, the longer one that otherwise match is
- // considered older
- result = -1;
- }
- else if ((this.qualifier.length() < otherQualifier.length())
- && otherQualifier.startsWith(this.qualifier)) {
- // here, the longer one that otherwise match is
- // considered older
- result = 1;
- }
- else {
- result = this.qualifier.compareTo(otherQualifier);
- }
- }
- else {
- // otherVersion has no qualifier but we do - that's newer
- result = -1;
- }
- }
- else if (otherVersion.getQualifier() != null) {
- // otherVersion has a qualifier but we don't, we're newer
- result = 1;
- }
- else {
- result = getBuildNumber() - otherVersion.getBuildNumber();
- }
- }
- return result;
- }
-
- @Override
- public boolean equals(Object other) {
- if (this == other) {
- return true;
- }
-
- if (false == (other instanceof ArtifactVersion)) {
- return false;
- }
-
- return 0 == compareTo(other);
- }
-
- public int getBuildNumber() {
- return this.buildNumber != null ? this.buildNumber.intValue() : 0;
- }
-
- public int getIncrementalVersion() {
- return this.incrementalVersion != null ? this.incrementalVersion.intValue() : 0;
- }
-
- public int getMajorVersion() {
- return this.majorVersion != null ? this.majorVersion.intValue() : 0;
- }
-
- public int getMinorVersion() {
- return this.minorVersion != null ? this.minorVersion.intValue() : 0;
- }
-
- public String getQualifier() {
- return this.qualifier;
- }
-
- @Override
- public int hashCode() {
- int result = 1229;
-
- result = 1223 * result + getMajorVersion();
- result = 1223 * result + getMinorVersion();
- result = 1223 * result + getIncrementalVersion();
- result = 1223 * result + getBuildNumber();
-
- if (null != getQualifier()) {
- result = 1223 * result + getQualifier().hashCode();
- }
-
- return result;
- }
-
- public final void parseVersion(String version) {
- this.unparsed = version;
-
- int index = version.indexOf("-");
-
- String part1;
- String part2 = null;
-
- if (index < 0) {
- part1 = version;
- }
- else {
- part1 = version.substring(0, index);
- part2 = version.substring(index + 1);
- }
-
- if (part2 != null) {
- try {
- if ((part2.length() == 1) || !part2.startsWith("0")) {
- this.buildNumber = Integer.valueOf(part2);
- }
- else {
- this.qualifier = part2;
- }
- }
- catch (NumberFormatException e) {
- this.qualifier = part2;
- }
- }
-
- if ((part1.indexOf(".") < 0) && !part1.startsWith("0")) {
- try {
- this.majorVersion = Integer.valueOf(part1);
- }
- catch (NumberFormatException e) {
- // qualifier is the whole version, including "-"
- this.qualifier = version;
- this.buildNumber = null;
- }
- }
- else {
- StringTokenizer tok = new StringTokenizer(part1, ".");
-
- String s;
-
- if (tok.hasMoreTokens()) {
- s = tok.nextToken();
- try {
- this.majorVersion = Integer.valueOf(s);
-
- if (tok.hasMoreTokens()) {
- s = tok.nextToken();
- try {
- this.minorVersion = Integer.valueOf(s);
- if (tok.hasMoreTokens()) {
-
- s = tok.nextToken();
- try {
- this.incrementalVersion = Integer.valueOf(s);
-
- }
- catch (NumberFormatException e) {
- this.qualifier = s;
- }
- }
- }
- catch (NumberFormatException e) {
- this.qualifier = s;
- }
- }
- }
- catch (NumberFormatException e) {
- this.qualifier = s;
- }
- }
-
- if (tok.hasMoreTokens()) {
- StringBuffer qualifier = new StringBuffer(this.qualifier != null ? this.qualifier : "");
- qualifier.append(tok.nextToken());
- while (tok.hasMoreTokens()) {
- qualifier.append("_");
- qualifier.append(tok.nextToken());
- }
-
- this.qualifier = qualifier.toString();
- }
-
- }
- }
-
- @Override
- public String toString() {
- return this.unparsed;
- }
+ private Integer buildNumber;
+
+ private Integer incrementalVersion;
+
+ private Integer majorVersion;
+
+ private Integer minorVersion;
+
+ private String qualifier;
+
+ private String unparsed;
+
+ public OSGIArtifactVersion(String version) {
+ parseVersion(version);
+ }
+
+ public int compareTo(Object o) {
+ ArtifactVersion otherVersion = (ArtifactVersion)o;
+
+ int result = getMajorVersion() - otherVersion.getMajorVersion();
+ if (result == 0) {
+ result = getMinorVersion() - otherVersion.getMinorVersion();
+ }
+ if (result == 0) {
+ result = getIncrementalVersion() - otherVersion.getIncrementalVersion();
+ }
+ if (result == 0) {
+ if (this.qualifier != null) {
+ String otherQualifier = otherVersion.getQualifier();
+
+ if (otherQualifier != null) {
+ if ((this.qualifier.length() > otherQualifier.length()) && this.qualifier
+ .startsWith(otherQualifier)) {
+ // here, the longer one that otherwise match is
+ // considered older
+ result = -1;
+ } else if ((this.qualifier.length() < otherQualifier.length()) && otherQualifier
+ .startsWith(this.qualifier)) {
+ // here, the longer one that otherwise match is
+ // considered older
+ result = 1;
+ } else {
+ result = this.qualifier.compareTo(otherQualifier);
+ }
+ } else {
+ // otherVersion has no qualifier but we do - that's newer
+ result = -1;
+ }
+ } else if (otherVersion.getQualifier() != null) {
+ // otherVersion has a qualifier but we don't, we're newer
+ result = 1;
+ } else {
+ result = getBuildNumber() - otherVersion.getBuildNumber();
+ }
+ }
+ return result;
+ }
+
+ @Override
+ public boolean equals(Object other) {
+ if (this == other) {
+ return true;
+ }
+
+ if (false == (other instanceof ArtifactVersion)) {
+ return false;
+ }
+
+ return 0 == compareTo(other);
+ }
+
+ public int getBuildNumber() {
+ return this.buildNumber != null ? this.buildNumber.intValue() : 0;
+ }
+
+ public int getIncrementalVersion() {
+ return this.incrementalVersion != null ? this.incrementalVersion.intValue() : 0;
+ }
+
+ public int getMajorVersion() {
+ return this.majorVersion != null ? this.majorVersion.intValue() : 0;
+ }
+
+ public int getMinorVersion() {
+ return this.minorVersion != null ? this.minorVersion.intValue() : 0;
+ }
+
+ public String getQualifier() {
+ return this.qualifier;
+ }
+
+ @Override
+ public int hashCode() {
+ int result = 1229;
+
+ result = 1223 * result + getMajorVersion();
+ result = 1223 * result + getMinorVersion();
+ result = 1223 * result + getIncrementalVersion();
+ result = 1223 * result + getBuildNumber();
+
+ if (null != getQualifier()) {
+ result = 1223 * result + getQualifier().hashCode();
+ }
+
+ return result;
+ }
+
+ public final void parseVersion(String version) {
+ this.unparsed = version;
+
+ int index = version.indexOf("-");
+
+ String part1;
+ String part2 = null;
+
+ if (index < 0) {
+ part1 = version;
+ } else {
+ part1 = version.substring(0, index);
+ part2 = version.substring(index + 1);
+ }
+
+ if (part2 != null) {
+ try {
+ if ((part2.length() == 1) || !part2.startsWith("0")) {
+ this.buildNumber = Integer.valueOf(part2);
+ } else {
+ this.qualifier = part2;
+ }
+ } catch (NumberFormatException e) {
+ this.qualifier = part2;
+ }
+ }
+
+ if ((part1.indexOf(".") < 0) && !part1.startsWith("0")) {
+ try {
+ this.majorVersion = Integer.valueOf(part1);
+ } catch (NumberFormatException e) {
+ // qualifier is the whole version, including "-"
+ this.qualifier = version;
+ this.buildNumber = null;
+ }
+ } else {
+ StringTokenizer tok = new StringTokenizer(part1, ".");
+
+ String s;
+
+ if (tok.hasMoreTokens()) {
+ s = tok.nextToken();
+ try {
+ this.majorVersion = Integer.valueOf(s);
+
+ if (tok.hasMoreTokens()) {
+ s = tok.nextToken();
+ try {
+ this.minorVersion = Integer.valueOf(s);
+ if (tok.hasMoreTokens()) {
+
+ s = tok.nextToken();
+ try {
+ this.incrementalVersion = Integer.valueOf(s);
+
+ } catch (NumberFormatException e) {
+ this.qualifier = s;
+ }
+ }
+ } catch (NumberFormatException e) {
+ this.qualifier = s;
+ }
+ }
+ } catch (NumberFormatException e) {
+ this.qualifier = s;
+ }
+ }
+
+ if (tok.hasMoreTokens()) {
+ StringBuffer qualifier = new StringBuffer(this.qualifier != null ? this.qualifier : "");
+ qualifier.append(tok.nextToken());
+ while (tok.hasMoreTokens()) {
+ qualifier.append("_");
+ qualifier.append(tok.nextToken());
+ }
+
+ this.qualifier = qualifier.toString();
+ }
+
+ }
+ }
+
+ @Override
+ public String toString() {
+ return this.unparsed;
+ }
}
diff --git a/maven-plugins/trunk/maven-eclipse-compiler/src/main/java/org/apache/tuscany/maven/compiler/osgi/BundleUtil.java b/maven-plugins/trunk/maven-eclipse-compiler/src/main/java/org/apache/tuscany/maven/compiler/osgi/BundleUtil.java index ea4b3b6dff..c77991041c 100644 --- a/maven-plugins/trunk/maven-eclipse-compiler/src/main/java/org/apache/tuscany/maven/compiler/osgi/BundleUtil.java +++ b/maven-plugins/trunk/maven-eclipse-compiler/src/main/java/org/apache/tuscany/maven/compiler/osgi/BundleUtil.java @@ -6,15 +6,15 @@ * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations - * under the License. + * under the License. */ package org.apache.tuscany.maven.compiler.osgi; @@ -50,7 +50,6 @@ import java.util.zip.ZipEntry; import java.util.zip.ZipInputStream; import org.apache.maven.artifact.versioning.ArtifactVersion; -import org.apache.maven.artifact.versioning.DefaultArtifactVersion; import org.eclipse.osgi.framework.internal.core.Constants; import org.eclipse.osgi.framework.internal.core.FrameworkProperties; import org.eclipse.osgi.util.ManifestElement; @@ -65,7 +64,7 @@ public final class BundleUtil { /** * Returns the name of a bundle, or null if the given file is not a bundle. - * + * * @param file * @return * @throws IOException @@ -129,19 +128,19 @@ public final class BundleUtil { Set<File> jars = new HashSet<File>(); jars.add(file); String name = file.getName(); - manifest = libraryManifest(jars, name, name, jarVersion(name), null); + manifest = libraryManifest(jars, name, name, getOSGiVersion(name), null); } return manifest; } /** * Generate a Bundle manifest for a set of JAR files. - * + * * @param jarFiles * @param name * @param symbolicName * @param version - * @param dir + * @param dir * @return * @throws IllegalStateException */ @@ -211,7 +210,7 @@ public final class BundleUtil { /** * Write a bundle manifest. - * + * * @param manifest * @param out * @throws IOException @@ -233,7 +232,7 @@ public final class BundleUtil { /** * Add packages to be exported out of a JAR file. - * + * * @param jarFile * @param packages * @throws IOException @@ -249,7 +248,7 @@ public final class BundleUtil { /** * Write manifest attributes. - * + * * @param attributes * @param key * @param dos @@ -278,7 +277,7 @@ public final class BundleUtil { /** * Strip an OSGi export, only retain the package name and version. - * + * * @param export * @return */ @@ -303,7 +302,7 @@ public final class BundleUtil { /** * Add all the packages out of a JAR. - * + * * @param jarFile * @param packages * @param version @@ -344,7 +343,7 @@ public final class BundleUtil { /** * Add the packages exported by a bundle. - * + * * @param file * @param packages * @return @@ -409,43 +408,44 @@ public final class BundleUtil { } } } - + /** * starting with -, then some digits, then . or - or _, then some digits again - * + * */ private static Pattern pattern = Pattern.compile("-(\\d)+((\\.|-|_)(\\d)+)*"); /** * Returns the version number to use for the given JAR file. - * + * * @param fileName * @return */ - static String jarVersion(String fileName) { + static String getOSGiVersion(String fileName) { String name = fileName; int index = name.lastIndexOf('.'); if (index != -1) { // Trim the extension name = name.substring(0, index); } - + Matcher matcher = pattern.matcher(name); String version = "0.0.0"; if (matcher.find()) { version = matcher.group(); version = version.substring(1); + } - return version; + return osgiVersion(version); } /** - * Convert the maven version into OSGi version + * Convert the maven version into OSGi version * @param mavenVersion * @return */ static String osgiVersion(String mavenVersion) { - ArtifactVersion ver = new DefaultArtifactVersion(mavenVersion); + ArtifactVersion ver = new OSGIArtifactVersion(mavenVersion); String qualifer = ver.getQualifier(); if (qualifer != null) { StringBuffer buf = new StringBuffer(qualifer); @@ -464,10 +464,10 @@ public final class BundleUtil { String version = osgiVersion.toString(); return version; } - - private static String J2SE = "J2SE-"; - private static String JAVASE = "JavaSE-"; - private static String PROFILE_EXT = ".profile"; + + private static String J2SE = "J2SE-"; + private static String JAVASE = "JavaSE-"; + private static String PROFILE_EXT = ".profile"; public static void loadVMProfile(Properties properties) { Properties profileProps = findVMProfile(properties); @@ -510,26 +510,26 @@ public final class BundleUtil { if (j2meConfig != null && j2meConfig.length() > 0 && j2meProfiles != null && j2meProfiles.length() > 0) { // save the vmProfile based off of the config and profile // use the last profile; assuming that is the highest one - String[] j2meProfileList = ManifestElement.getArrayFromList(j2meProfiles, " "); + String[] j2meProfileList = ManifestElement.getArrayFromList(j2meProfiles, " "); if (j2meProfileList != null && j2meProfileList.length > 0) vmProfile = j2meConfig + '_' + j2meProfileList[j2meProfileList.length - 1]; } else { // No J2ME properties; use J2SE properties // Note that the CDC spec appears not to require VM implementations to set the - // javax.microedition properties!! So we will try to fall back to the + // javax.microedition properties!! So we will try to fall back to the // java.specification.name property, but this is pretty ridiculous!! - String javaSpecVersion = properties.getProperty("java.specification.version"); + String javaSpecVersion = properties.getProperty("java.specification.version"); // set the profile and EE based off of the java.specification.version // TODO We assume J2ME Foundation and J2SE here. need to support other profiles J2EE ... if (javaSpecVersion != null) { - StringTokenizer st = new StringTokenizer(javaSpecVersion, " _-"); + StringTokenizer st = new StringTokenizer(javaSpecVersion, " _-"); javaSpecVersion = st.nextToken(); - String javaSpecName = properties.getProperty("java.specification.name"); - if ("J2ME Foundation Specification".equals(javaSpecName)) + String javaSpecName = properties.getProperty("java.specification.name"); + if ("J2ME Foundation Specification".equals(javaSpecName)) vmProfile = "CDC-" + javaSpecVersion + "_Foundation-" + javaSpecVersion; //$NON-NLS-2$ else { // look for JavaSE if 1.6 or greater; otherwise look for J2SE - Version v16 = new Version("1.6"); + Version v16 = new Version("1.6"); javaEdition = J2SE; try { javaVersion = new Version(javaSpecVersion); @@ -562,7 +562,7 @@ public final class BundleUtil { } if (url == null) // the profile url is still null then use the osgi min profile in OSGi by default - url = findInSystemBundle("OSGi_Minimum-1.1.profile"); + url = findInSystemBundle("OSGi_Minimum-1.1.profile"); if (url != null) { InputStream in = null; try { @@ -585,7 +585,7 @@ public final class BundleUtil { result.put(Constants.OSGI_JAVA_PROFILE_NAME, vmProfile.replace('_', '/')); else // last resort; default to the absolute minimum profile name for the framework - result.put(Constants.OSGI_JAVA_PROFILE_NAME, "OSGi/Minimum-1.1"); + result.put(Constants.OSGI_JAVA_PROFILE_NAME, "OSGi/Minimum-1.1"); return result; } @@ -603,7 +603,7 @@ public final class BundleUtil { URL result = null; int minor = javaVersion.getMinor(); do { - result = findInSystemBundle(javaEdition + javaVersion.getMajor() + "." + minor + PROFILE_EXT); + result = findInSystemBundle(javaEdition + javaVersion.getMajor() + "." + minor + PROFILE_EXT); minor = minor - 1; } while (result == null && minor > 0); return result; diff --git a/maven-plugins/trunk/maven-eclipse-compiler/src/main/java/org/apache/tuscany/maven/compiler/osgi/OSGIArtifactVersion.java b/maven-plugins/trunk/maven-eclipse-compiler/src/main/java/org/apache/tuscany/maven/compiler/osgi/OSGIArtifactVersion.java new file mode 100644 index 0000000000..58b27293f9 --- /dev/null +++ b/maven-plugins/trunk/maven-eclipse-compiler/src/main/java/org/apache/tuscany/maven/compiler/osgi/OSGIArtifactVersion.java @@ -0,0 +1,219 @@ +package org.apache.tuscany.maven.compiler.osgi; + +/* + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import java.util.StringTokenizer; + +import org.apache.maven.artifact.versioning.ArtifactVersion; + +public class OSGIArtifactVersion implements ArtifactVersion { + private Integer buildNumber; + + private Integer incrementalVersion; + + private Integer majorVersion; + + private Integer minorVersion; + + private String qualifier; + + private String unparsed; + + public OSGIArtifactVersion(String version) { + parseVersion(version); + } + + public int compareTo(Object o) { + ArtifactVersion otherVersion = (ArtifactVersion)o; + + int result = getMajorVersion() - otherVersion.getMajorVersion(); + if (result == 0) { + result = getMinorVersion() - otherVersion.getMinorVersion(); + } + if (result == 0) { + result = getIncrementalVersion() - otherVersion.getIncrementalVersion(); + } + if (result == 0) { + if (this.qualifier != null) { + String otherQualifier = otherVersion.getQualifier(); + + if (otherQualifier != null) { + if ((this.qualifier.length() > otherQualifier.length()) && this.qualifier + .startsWith(otherQualifier)) { + // here, the longer one that otherwise match is + // considered older + result = -1; + } else if ((this.qualifier.length() < otherQualifier.length()) && otherQualifier + .startsWith(this.qualifier)) { + // here, the longer one that otherwise match is + // considered older + result = 1; + } else { + result = this.qualifier.compareTo(otherQualifier); + } + } else { + // otherVersion has no qualifier but we do - that's newer + result = -1; + } + } else if (otherVersion.getQualifier() != null) { + // otherVersion has a qualifier but we don't, we're newer + result = 1; + } else { + result = getBuildNumber() - otherVersion.getBuildNumber(); + } + } + return result; + } + + @Override + public boolean equals(Object other) { + if (this == other) { + return true; + } + + if (false == (other instanceof ArtifactVersion)) { + return false; + } + + return 0 == compareTo(other); + } + + public int getBuildNumber() { + return this.buildNumber != null ? this.buildNumber.intValue() : 0; + } + + public int getIncrementalVersion() { + return this.incrementalVersion != null ? this.incrementalVersion.intValue() : 0; + } + + public int getMajorVersion() { + return this.majorVersion != null ? this.majorVersion.intValue() : 0; + } + + public int getMinorVersion() { + return this.minorVersion != null ? this.minorVersion.intValue() : 0; + } + + public String getQualifier() { + return this.qualifier; + } + + @Override + public int hashCode() { + int result = 1229; + + result = 1223 * result + getMajorVersion(); + result = 1223 * result + getMinorVersion(); + result = 1223 * result + getIncrementalVersion(); + result = 1223 * result + getBuildNumber(); + + if (null != getQualifier()) { + result = 1223 * result + getQualifier().hashCode(); + } + + return result; + } + + public final void parseVersion(String version) { + this.unparsed = version; + + int index = version.indexOf("-"); + + String part1; + String part2 = null; + + if (index < 0) { + part1 = version; + } else { + part1 = version.substring(0, index); + part2 = version.substring(index + 1); + } + + if (part2 != null) { + try { + if ((part2.length() == 1) || !part2.startsWith("0")) { + this.buildNumber = Integer.valueOf(part2); + } else { + this.qualifier = part2; + } + } catch (NumberFormatException e) { + this.qualifier = part2; + } + } + + if ((part1.indexOf(".") < 0) && !part1.startsWith("0")) { + try { + this.majorVersion = Integer.valueOf(part1); + } catch (NumberFormatException e) { + // qualifier is the whole version, including "-" + this.qualifier = version; + this.buildNumber = null; + } + } else { + StringTokenizer tok = new StringTokenizer(part1, "."); + + String s; + + if (tok.hasMoreTokens()) { + s = tok.nextToken(); + try { + this.majorVersion = Integer.valueOf(s); + + if (tok.hasMoreTokens()) { + s = tok.nextToken(); + try { + this.minorVersion = Integer.valueOf(s); + if (tok.hasMoreTokens()) { + + s = tok.nextToken(); + try { + this.incrementalVersion = Integer.valueOf(s); + + } catch (NumberFormatException e) { + this.qualifier = s; + } + } + } catch (NumberFormatException e) { + this.qualifier = s; + } + } + } catch (NumberFormatException e) { + this.qualifier = s; + } + } + + if (tok.hasMoreTokens()) { + StringBuffer qualifier = new StringBuffer(this.qualifier != null ? this.qualifier : ""); + qualifier.append(tok.nextToken()); + while (tok.hasMoreTokens()) { + qualifier.append("_"); + qualifier.append(tok.nextToken()); + } + + this.qualifier = qualifier.toString(); + } + + } + } + + @Override + public String toString() { + return this.unparsed; + } +} |