Author: rmannibucau
Date: Fri Jul 20 10:01:25 2012
New Revision: 1363702

URL: http://svn.apache.org/viewvc?rev=1363702&view=rev
Log:
TOMEE-333 tomcat 7 version can now be resolved from aether

Added:
    
openejb/trunk/openejb/utils/openejb-provisionning/src/main/java/org/apache/openejb/resolver/maven/ConfigHelper.java
    
openejb/trunk/openejb/utils/openejb-provisionning/src/main/java/org/apache/openejb/resolver/maven/VersionResolver.java
Modified:
    
openejb/trunk/openejb/arquillian/arquillian-tomee-webapp-remote/src/main/java/org/apache/tomee/arquillian/webapp/TomEEWebappConfiguration.java
    
openejb/trunk/openejb/utils/openejb-provisionning/src/main/java/org/apache/openejb/resolver/maven/AetherBasedResolver.java
    
openejb/trunk/openejb/utils/openejb-provisionning/src/main/java/org/apache/openejb/resolver/maven/Handler.java

Modified: 
openejb/trunk/openejb/arquillian/arquillian-tomee-webapp-remote/src/main/java/org/apache/tomee/arquillian/webapp/TomEEWebappConfiguration.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/arquillian/arquillian-tomee-webapp-remote/src/main/java/org/apache/tomee/arquillian/webapp/TomEEWebappConfiguration.java?rev=1363702&r1=1363701&r2=1363702&view=diff
==============================================================================
--- 
openejb/trunk/openejb/arquillian/arquillian-tomee-webapp-remote/src/main/java/org/apache/tomee/arquillian/webapp/TomEEWebappConfiguration.java
 (original)
+++ 
openejb/trunk/openejb/arquillian/arquillian-tomee-webapp-remote/src/main/java/org/apache/tomee/arquillian/webapp/TomEEWebappConfiguration.java
 Fri Jul 20 10:01:25 2012
@@ -18,14 +18,18 @@ package org.apache.tomee.arquillian.weba
 
 import org.apache.openejb.arquillian.common.Prefixes;
 import org.apache.openejb.arquillian.common.TomEEConfiguration;
+import org.apache.openejb.resolver.maven.VersionResolver;
 
 /**
  * @version $Rev$ $Date$
  */
 @Prefixes({"tomee", "tomee.webapp"})
 public class TomEEWebappConfiguration extends TomEEConfiguration {
+    private static final String TOMCAT_REFERENCE_ARTIFACT = 
"org.apache.tomcat:tomcat-catalina";
+    private static final String TOMCAT_VERSION_PREFIX = "7.";
+    private static final String DEFAULT_TOMCAT_VERSION = TOMCAT_VERSION_PREFIX 
+ "0.29";
 
-    private String tomcatVersion = "7.0.29";
+    private String tomcatVersion = null;
     private String groupId = "org.apache.openejb";
     private String artifactId = "tomee-webapp";
     private String version = "LATEST";
@@ -72,6 +76,9 @@ public class TomEEWebappConfiguration ex
     }
 
     public String getTomcatVersion() {
+        if (tomcatVersion == null || "LATEST".equals(tomcatVersion)) {
+            tomcatVersion = 
VersionResolver.higestVersion(TOMCAT_REFERENCE_ARTIFACT, TOMCAT_VERSION_PREFIX, 
DEFAULT_TOMCAT_VERSION);
+        }
         return tomcatVersion;
     }
 
@@ -94,5 +101,4 @@ public class TomEEWebappConfiguration ex
     public void setAjpPort(int ajpPort) {
         this.ajpPort = ajpPort;
     }
-
 }

Modified: 
openejb/trunk/openejb/utils/openejb-provisionning/src/main/java/org/apache/openejb/resolver/maven/AetherBasedResolver.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/utils/openejb-provisionning/src/main/java/org/apache/openejb/resolver/maven/AetherBasedResolver.java?rev=1363702&r1=1363701&r2=1363702&view=diff
==============================================================================
--- 
openejb/trunk/openejb/utils/openejb-provisionning/src/main/java/org/apache/openejb/resolver/maven/AetherBasedResolver.java
 (original)
+++ 
openejb/trunk/openejb/utils/openejb-provisionning/src/main/java/org/apache/openejb/resolver/maven/AetherBasedResolver.java
 Fri Jul 20 10:01:25 2012
@@ -65,11 +65,11 @@ import org.sonatype.aether.util.reposito
 import org.sonatype.aether.version.Version;
 
 import java.io.File;
-import java.io.FileInputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.net.MalformedURLException;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -213,6 +213,22 @@ public class AetherBasedResolver {
         return IO.read(resolved);
     }
 
+    public VersionRangeResult resolveVersions(String groupId, String 
artifactId, String classifier, String extension, String version) {
+        final RepositorySystemSession session = newSession();
+        Artifact artifact = new DefaultArtifact(groupId, artifactId, 
classifier, extension, version);
+        if (artifact.getVersion().equals("LATEST")) {
+            artifact = artifact.setVersion(LATEST_VERSION_RANGE);
+        }
+        final VersionRangeRequest request = new VersionRangeRequest(artifact, 
m_remoteRepos, null);
+        try {
+            return m_repoSystem.resolveVersionRange(session, request);
+        } catch (VersionRangeResolutionException e) {
+            final VersionRangeResult result = new VersionRangeResult(request);
+            result.setVersions(Arrays.asList((Version) new 
VersionImpl(version)));
+            return result;
+        }
+    }
+
     private File resolve(RepositorySystemSession session, Artifact artifact)
             throws IOException {
         try {
@@ -305,4 +321,23 @@ public class AetherBasedResolver {
 
         return locator.getService(RepositorySystem.class);
     }
+
+    private static class VersionImpl implements Version {
+        private final String version;
+
+        private VersionImpl(String version) {
+            this.version = version;
+        }
+
+        @Override
+        public String toString() {
+            return version;
+        }
+
+        @Override
+        public int compareTo(final Version v) {
+            return 0;
+        }
+    }
+
 }

Added: 
openejb/trunk/openejb/utils/openejb-provisionning/src/main/java/org/apache/openejb/resolver/maven/ConfigHelper.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/utils/openejb-provisionning/src/main/java/org/apache/openejb/resolver/maven/ConfigHelper.java?rev=1363702&view=auto
==============================================================================
--- 
openejb/trunk/openejb/utils/openejb-provisionning/src/main/java/org/apache/openejb/resolver/maven/ConfigHelper.java
 (added)
+++ 
openejb/trunk/openejb/utils/openejb-provisionning/src/main/java/org/apache/openejb/resolver/maven/ConfigHelper.java
 Fri Jul 20 10:01:25 2012
@@ -0,0 +1,19 @@
+package org.apache.openejb.resolver.maven;
+
+import org.ops4j.pax.url.maven.commons.MavenConfigurationImpl;
+import org.ops4j.pax.url.maven.commons.MavenSettingsImpl;
+import org.ops4j.util.property.PropertiesPropertyResolver;
+
+public final class ConfigHelper {
+    private ConfigHelper() {
+        // no-op
+    }
+
+    public static MavenConfigurationImpl createConfig() {
+        final MavenConfigurationImpl config = new MavenConfigurationImpl(
+                new PropertiesPropertyResolver( System.getProperties() ), 
"org.ops4j.pax.url.mvn");
+
+        config.setSettings( new MavenSettingsImpl( 
config.getSettingsFileUrl(), config.useFallbackRepositories() ) );
+        return config;
+    }
+}

Modified: 
openejb/trunk/openejb/utils/openejb-provisionning/src/main/java/org/apache/openejb/resolver/maven/Handler.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/utils/openejb-provisionning/src/main/java/org/apache/openejb/resolver/maven/Handler.java?rev=1363702&r1=1363701&r2=1363702&view=diff
==============================================================================
--- 
openejb/trunk/openejb/utils/openejb-provisionning/src/main/java/org/apache/openejb/resolver/maven/Handler.java
 (original)
+++ 
openejb/trunk/openejb/utils/openejb-provisionning/src/main/java/org/apache/openejb/resolver/maven/Handler.java
 Fri Jul 20 10:01:25 2012
@@ -28,10 +28,6 @@ import java.net.URLStreamHandler;
 public class Handler extends URLStreamHandler  {
     @Override
     protected URLConnection openConnection( final URL url ) throws IOException 
{
-        final MavenConfigurationImpl config = new MavenConfigurationImpl(
-                new PropertiesPropertyResolver( System.getProperties() ), 
"org.ops4j.pax.url.mvn");
-
-        config.setSettings( new MavenSettingsImpl( 
config.getSettingsFileUrl(), config.useFallbackRepositories() ) );
-        return new Connection( url, config );
+        return new Connection( url, ConfigHelper.createConfig() );
     }
 }

Added: 
openejb/trunk/openejb/utils/openejb-provisionning/src/main/java/org/apache/openejb/resolver/maven/VersionResolver.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/utils/openejb-provisionning/src/main/java/org/apache/openejb/resolver/maven/VersionResolver.java?rev=1363702&view=auto
==============================================================================
--- 
openejb/trunk/openejb/utils/openejb-provisionning/src/main/java/org/apache/openejb/resolver/maven/VersionResolver.java
 (added)
+++ 
openejb/trunk/openejb/utils/openejb-provisionning/src/main/java/org/apache/openejb/resolver/maven/VersionResolver.java
 Fri Jul 20 10:01:25 2012
@@ -0,0 +1,46 @@
+package org.apache.openejb.resolver.maven;
+
+import org.ops4j.pax.url.maven.commons.MavenConfigurationImpl;
+import org.sonatype.aether.resolution.VersionRangeResult;
+import org.sonatype.aether.version.Version;
+
+import java.io.IOException;
+import java.net.MalformedURLException;
+import java.util.Collections;
+import java.util.List;
+
+public final class VersionResolver {
+    private VersionResolver() {
+        // no-op
+    }
+
+    public static VersionRangeResult versions(final String info, final String 
defaultVersion) {
+        final MavenConfigurationImpl config = ConfigHelper.createConfig();
+        try {
+            final Parser parser = new Parser(info);
+            final AetherBasedResolver resolver = new 
AetherBasedResolver(config, parser.getRepositoryURL());
+            return resolver.resolveVersions(parser.getGroup(), 
parser.getArtifact(), parser.getClassifier(), parser.getType(), 
parser.getVersion());
+        } catch (MalformedURLException e) {
+            return null;
+        }
+    }
+
+    public static String higestVersion(final String info, final String prefix, 
final String defaultVersion) {
+        final VersionRangeResult result = VersionResolver.versions(info, 
defaultVersion);
+        if (result == null) {
+            return defaultVersion;
+        }
+        final List<Version> versions = result.getVersions();
+        Collections.sort(versions); // Version impl comparable so we just need 
to call it :)
+        Version usedVersion = null;
+        for (Version current : versions) {
+            if (current.toString().startsWith(prefix)) {
+                usedVersion = current;
+            }
+        }
+        if (usedVersion != null) {
+            return usedVersion.toString();
+        }
+        return defaultVersion;
+    }
+}


Reply via email to