You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@aries.apache.org by no...@apache.org on 2009/11/26 17:49:45 UTC

svn commit: r884638 - /incubator/aries/trunk/application/application-utils/src/main/java/org/apache/aries/application/impl/VersionRangeImpl.java

Author: not
Date: Thu Nov 26 16:49:45 2009
New Revision: 884638

URL: http://svn.apache.org/viewvc?rev=884638&view=rev
Log:
ARIES-55 implement the matches method and some fixes for test failures

Modified:
    incubator/aries/trunk/application/application-utils/src/main/java/org/apache/aries/application/impl/VersionRangeImpl.java

Modified: incubator/aries/trunk/application/application-utils/src/main/java/org/apache/aries/application/impl/VersionRangeImpl.java
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/application/application-utils/src/main/java/org/apache/aries/application/impl/VersionRangeImpl.java?rev=884638&r1=884637&r2=884638&view=diff
==============================================================================
--- incubator/aries/trunk/application/application-utils/src/main/java/org/apache/aries/application/impl/VersionRangeImpl.java (original)
+++ incubator/aries/trunk/application/application-utils/src/main/java/org/apache/aries/application/impl/VersionRangeImpl.java Thu Nov 26 16:49:45 2009
@@ -36,8 +36,6 @@
   private boolean minimumExclusive;
   /** True if the match is exclusive of the maximum version */
   private boolean maximumExclusive;
-  /** exact version */
-  private boolean exactVersion;
   /** A regexp to select the version */
   private static final Pattern versionCapture = Pattern.compile("\"?(.*?)\"?$");
   
@@ -47,7 +45,6 @@
    */
   public VersionRangeImpl(String version) {
     this.version = version;
-    this.exactVersion = false;
     processVersionAttribute(this.version);
   }
   
@@ -56,9 +53,8 @@
    * @param version             version for the verioninfo
    * @param exactVersion        whether this is an exact version
    */
-  public VersionRangeImpl(String version, boolean exactVersion) {
+  public VersionRangeImpl(String version, boolean exactVersion) {;
     this.version = version;
-    this.exactVersion = exactVersion;
     if (exactVersion) {
       processExactVersionAttribute(this.version);
     } else {
@@ -79,7 +75,7 @@
  */
   public Version getExactVersion() {
     Version v = null;
-    if (this.exactVersion) {
+    if (isExactVersion()) {
       v = getMinimumVersion();
     } 
     return v;
@@ -138,10 +134,15 @@
     if (maximumVersion == null) {
       maximumVersion = minimumVersion;
     }
+
     if (!minimumVersion.equals(maximumVersion)) {
       throw new IllegalArgumentException("Failed to parse " + version + " for the exact version. Could not parse " + version);
     }
-    
+
+    if (!!!isExactVersion()) {
+      throw new IllegalArgumentException("Failed to parse " + version + " for the exact version.");
+    }
+
     return success;
   }
   /**
@@ -179,7 +180,8 @@
         }
       } else {
         try {
-          minimumVersion = new Version(versions.trim());
+          if (versions.trim().length() == 0) minimumVersion = new Version(0,0,0);
+          else minimumVersion = new Version(versions.trim());
           success = true;
         } catch (NumberFormatException nfe) {
           throw new IllegalArgumentException("Failed to parse " + version + ". Could not parse " + versions, nfe);
@@ -191,11 +193,26 @@
     
     return success;
   }
-  
+
+  public boolean matches(Version version)
+  {
+    boolean result;
+    if (this.getMaximumVersion() == null) {
+      result = this.getMinimumVersion().compareTo(version) <= 0;
+    } else {
+      int minN = this.isMinimumExclusive() ? 0 : 1;
+      int maxN = this.isMaximumExclusive() ? 0 : 1;
+      
+      result = (this.getMinimumVersion().compareTo(version) < minN) &&
+               (version.compareTo(this.getMaximumVersion()) < maxN);
+    }
+    return result;
+  }
+
   /* (non-Javadoc)
  * @see org.apache.aries.application.impl.VersionRange#isExactVersion()
  */
   public boolean isExactVersion() {
-    return this.exactVersion;
+    return minimumVersion.equals(maximumVersion) && minimumExclusive == maximumExclusive && !!!minimumExclusive;
   }
 }