You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by mk...@apache.org on 2007/10/06 14:16:04 UTC

svn commit: r582484 - in /maven/shared/trunk/maven-toolchain: ./ src/main/java/org/apache/maven/toolchain/ src/test/ src/test/java/ src/test/java/org/ src/test/java/org/apache/ src/test/java/org/apache/maven/ src/test/java/org/apache/maven/toolchain/

Author: mkleint
Date: Sat Oct  6 05:16:03 2007
New Revision: 582484

URL: http://svn.apache.org/viewvc?rev=582484&view=rev
Log:
add VersionRange-based requirement matching impl

Added:
    maven/shared/trunk/maven-toolchain/src/test/
    maven/shared/trunk/maven-toolchain/src/test/java/
    maven/shared/trunk/maven-toolchain/src/test/java/org/
    maven/shared/trunk/maven-toolchain/src/test/java/org/apache/
    maven/shared/trunk/maven-toolchain/src/test/java/org/apache/maven/
    maven/shared/trunk/maven-toolchain/src/test/java/org/apache/maven/toolchain/
    maven/shared/trunk/maven-toolchain/src/test/java/org/apache/maven/toolchain/RequirementMatcherFactoryTest.java
Modified:
    maven/shared/trunk/maven-toolchain/pom.xml
    maven/shared/trunk/maven-toolchain/src/main/java/org/apache/maven/toolchain/RequirementMatcherFactory.java

Modified: maven/shared/trunk/maven-toolchain/pom.xml
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-toolchain/pom.xml?rev=582484&r1=582483&r2=582484&view=diff
==============================================================================
--- maven/shared/trunk/maven-toolchain/pom.xml (original)
+++ maven/shared/trunk/maven-toolchain/pom.xml Sat Oct  6 05:16:03 2007
@@ -22,6 +22,11 @@
             <artifactId>maven-build-context</artifactId>
             <version>2.1-SNAPSHOT</version>
         </dependency>
+        <dependency>
+            <groupId>org.apache.maven.artifact</groupId>
+            <artifactId>maven-artifact</artifactId>
+            <version>3.0-SNAPSHOT</version>
+        </dependency>
     </dependencies>
     <build>
         <plugins>

Modified: maven/shared/trunk/maven-toolchain/src/main/java/org/apache/maven/toolchain/RequirementMatcherFactory.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-toolchain/src/main/java/org/apache/maven/toolchain/RequirementMatcherFactory.java?rev=582484&r1=582483&r2=582484&view=diff
==============================================================================
--- maven/shared/trunk/maven-toolchain/src/main/java/org/apache/maven/toolchain/RequirementMatcherFactory.java (original)
+++ maven/shared/trunk/maven-toolchain/src/main/java/org/apache/maven/toolchain/RequirementMatcherFactory.java Sat Oct  6 05:16:03 2007
@@ -19,6 +19,10 @@
 
 package org.apache.maven.toolchain;
 
+import org.apache.maven.artifact.versioning.DefaultArtifactVersion;
+import org.apache.maven.artifact.versioning.InvalidVersionSpecificationException;
+import org.apache.maven.artifact.versioning.VersionRange;
+
 /**
  *
  * @author mkleint
@@ -61,17 +65,31 @@
         implements RequirementMatcher
     {
 
-        private String version;
+        DefaultArtifactVersion version;
 
         private VersionMatcher( String version )
         {
-            this.version = version;
+            this.version = new DefaultArtifactVersion(version);
+            System.out.println("version=" + version.toString());
         }
 
         public boolean matches( String requirement )
         {
-            //TODO have exact the same version resolution as the enforcer has..
-            return version.equals( requirement );
+            try 
+            {
+                VersionRange range = VersionRange.createFromVersionSpec(requirement);
+                if (range.hasRestrictions()) {
+                    return range.containsVersion(version);
+                } else {
+                    return range.getRecommendedVersion().equals(version);
+                }
+            } 
+            catch (InvalidVersionSpecificationException ex) 
+            {
+                //TODO error reporting
+                ex.printStackTrace();
+                return false;
+            }
         }
     }
 }

Added: maven/shared/trunk/maven-toolchain/src/test/java/org/apache/maven/toolchain/RequirementMatcherFactoryTest.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-toolchain/src/test/java/org/apache/maven/toolchain/RequirementMatcherFactoryTest.java?rev=582484&view=auto
==============================================================================
--- maven/shared/trunk/maven-toolchain/src/test/java/org/apache/maven/toolchain/RequirementMatcherFactoryTest.java (added)
+++ maven/shared/trunk/maven-toolchain/src/test/java/org/apache/maven/toolchain/RequirementMatcherFactoryTest.java Sat Oct  6 05:16:03 2007
@@ -0,0 +1,60 @@
+/*
+ * 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
+ * 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.
+ */
+
+package org.apache.maven.toolchain;
+
+import junit.framework.TestCase;
+
+/**
+ *
+ * @author mkleint
+ */
+public class RequirementMatcherFactoryTest extends TestCase {
+    
+    public RequirementMatcherFactoryTest(String testName) {
+        super(testName);
+    }
+
+    /**
+     * Test of createExactMatcher method, of class RequirementMatcherFactory.
+     */
+    public void testCreateExactMatcher() {
+        RequirementMatcher matcher;
+        matcher = RequirementMatcherFactory.createExactMatcher("foo");
+        assertFalse(matcher.matches("bar"));
+        assertFalse(matcher.matches("foobar"));
+        assertFalse(matcher.matches("foob"));
+        assertTrue(matcher.matches("foo"));
+    }
+
+    /**
+     * Test of createVersionMatcher method, of class RequirementMatcherFactory.
+     */
+    public void testCreateVersionMatcher() {
+        RequirementMatcher matcher;
+        matcher = RequirementMatcherFactory.createVersionMatcher("1.5.2");
+        assertFalse(matcher.matches("1.5"));
+        assertFalse(matcher.matches("[1.4,1.5)"));
+        assertFalse(matcher.matches("[1.5,1.5.2)"));
+        assertFalse(matcher.matches("(1.5.2,1.6)"));
+        assertTrue(matcher.matches("(1.4,1.5.2]"));
+        assertTrue(matcher.matches("(1.5,)"));
+    }
+
+}