Author: antelder
Date: Tue Mar  3 07:58:21 2009
New Revision: 749558

URL: http://svn.apache.org/viewvc?rev=749558&view=rev
Log:
TUSCANY-2873, add file left out of previous commit, (thanks again Hasan Ceylan 
for the fix)

Added:
    
tuscany/maven-plugins/trunk/maven-bundle-plugin/src/main/java/org/apache/tuscany/maven/bundle/plugin/OSGIArtifactVersion.java

Added: 
tuscany/maven-plugins/trunk/maven-bundle-plugin/src/main/java/org/apache/tuscany/maven/bundle/plugin/OSGIArtifactVersion.java
URL: 
http://svn.apache.org/viewvc/tuscany/maven-plugins/trunk/maven-bundle-plugin/src/main/java/org/apache/tuscany/maven/bundle/plugin/OSGIArtifactVersion.java?rev=749558&view=auto
==============================================================================
--- 
tuscany/maven-plugins/trunk/maven-bundle-plugin/src/main/java/org/apache/tuscany/maven/bundle/plugin/OSGIArtifactVersion.java
 (added)
+++ 
tuscany/maven-plugins/trunk/maven-bundle-plugin/src/main/java/org/apache/tuscany/maven/bundle/plugin/OSGIArtifactVersion.java
 Tue Mar  3 07:58:21 2009
@@ -0,0 +1,232 @@
+package org.apache.tuscany.maven.bundle.plugin;
+
+/*
+ * 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;
+       }
+}


Reply via email to