You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by rm...@apache.org on 2012/01/19 18:55:06 UTC
svn commit: r1233502 - in
/openejb/trunk/openejb/utils/openejb-provisionning/src/main/java/org/apache/openejb/resolver:
Resolver.java http/ http/Helper.java
Author: rmannibucau
Date: Thu Jan 19 17:55:05 2012
New Revision: 1233502
URL: http://svn.apache.org/viewvc?rev=1233502&view=rev
Log:
managing http urls in openejb-provisionning
Added:
openejb/trunk/openejb/utils/openejb-provisionning/src/main/java/org/apache/openejb/resolver/http/
openejb/trunk/openejb/utils/openejb-provisionning/src/main/java/org/apache/openejb/resolver/http/Helper.java
Modified:
openejb/trunk/openejb/utils/openejb-provisionning/src/main/java/org/apache/openejb/resolver/Resolver.java
Modified: openejb/trunk/openejb/utils/openejb-provisionning/src/main/java/org/apache/openejb/resolver/Resolver.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/utils/openejb-provisionning/src/main/java/org/apache/openejb/resolver/Resolver.java?rev=1233502&r1=1233501&r2=1233502&view=diff
==============================================================================
--- openejb/trunk/openejb/utils/openejb-provisionning/src/main/java/org/apache/openejb/resolver/Resolver.java (original)
+++ openejb/trunk/openejb/utils/openejb-provisionning/src/main/java/org/apache/openejb/resolver/Resolver.java Thu Jan 19 17:55:05 2012
@@ -19,20 +19,23 @@ package org.apache.openejb.resolver;
import org.apache.openejb.assembler.LocationResolver;
import org.apache.openejb.loader.FileUtils;
import org.apache.openejb.loader.SystemInstance;
+import org.apache.openejb.resolver.http.Helper;
import org.apache.openejb.resolver.maven.Handler;
import org.apache.openejb.resolver.maven.Parser;
import java.io.File;
import java.io.FileOutputStream;
+import java.net.URI;
import java.net.URL;
public class Resolver implements LocationResolver {
public static final String MVN_PREFIX = "mvn:";
public static final String OPENEJB_DEPLOYER_CACHE_FOLDER = "openejb.deployer.cache.folder";
+ public static final String HTTP_PREFIX = "http";
public String resolve(final String rawLocation) throws Exception {
+ final String cache = System.getProperty(OPENEJB_DEPLOYER_CACHE_FOLDER, "temp");
if (rawLocation.startsWith(MVN_PREFIX) && rawLocation.length() > MVN_PREFIX.length()) {
- final String cache = System.getProperty(OPENEJB_DEPLOYER_CACHE_FOLDER, "temp");
final String info = rawLocation.substring(MVN_PREFIX.length());
final Parser parser = new Parser(info);
@@ -53,7 +56,28 @@ public class Resolver implements Locatio
}
}
return file.getPath();
+ } else if (rawLocation.startsWith(HTTP_PREFIX)) {
+ final File file = new File(SystemInstance.get().getBase().getDirectory(),
+ cache + File.separator + lastPart(rawLocation));
+ final URI uri = new URI(rawLocation);
+ Helper.copyTryingProxies(uri, file);
+ return file.getAbsolutePath();
}
return rawLocation;
}
+
+ /**
+ * location looks like xxxx/X/x/X/Y.
+ * we suppose location doesn't end with a /
+ *
+ * @param location input
+ * @return Y
+ */
+ private String lastPart(final String location) {
+ final int idx = location.lastIndexOf('/');
+ if (idx <= 0) {
+ return location;
+ }
+ return location.substring(idx + 1, location.length());
+ }
}
Added: openejb/trunk/openejb/utils/openejb-provisionning/src/main/java/org/apache/openejb/resolver/http/Helper.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/utils/openejb-provisionning/src/main/java/org/apache/openejb/resolver/http/Helper.java?rev=1233502&view=auto
==============================================================================
--- openejb/trunk/openejb/utils/openejb-provisionning/src/main/java/org/apache/openejb/resolver/http/Helper.java (added)
+++ openejb/trunk/openejb/utils/openejb-provisionning/src/main/java/org/apache/openejb/resolver/http/Helper.java Thu Jan 19 17:55:05 2012
@@ -0,0 +1,43 @@
+package org.apache.openejb.resolver.http;
+
+import org.apache.openejb.loader.FileUtils;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.Proxy;
+import java.net.ProxySelector;
+import java.net.URI;
+import java.net.URL;
+import java.net.URLConnection;
+import java.util.List;
+
+public class Helper {
+ private static final int CONNECT_TIMEOUT = 10000;
+
+ private Helper() {
+ // no-op
+ }
+
+ public static void copyTryingProxies(final URI source, final File destination) throws Exception {
+ final List<Proxy> proxies = ProxySelector.getDefault().select(source);
+ final URL url = source.toURL();
+ for (Proxy proxy : ProxySelector.getDefault().select(source)) {
+ InputStream is;
+
+ // try to connect
+ try {
+ URLConnection urlConnection = url.openConnection(proxy);
+ urlConnection.setConnectTimeout(CONNECT_TIMEOUT);
+ is = urlConnection.getInputStream();
+ } catch (IOException e) {
+ continue;
+ }
+
+ // parse
+ FileUtils.copy(new FileOutputStream(destination), is);
+ break;
+ }
+ }
+}