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;
+ }
+}