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/25 18:57:32 UTC

svn commit: r1235852 - in /openejb/trunk/openejb: container/openejb-core/src/main/java/org/apache/openejb/assembler/ container/openejb-loader/src/main/java/org/apache/openejb/loader/ tomee/tomee-loader/src/main/java/org/apache/tomee/loader/ utils/opene...

Author: rmannibucau
Date: Wed Jan 25 17:57:31 2012
New Revision: 1235852

URL: http://svn.apache.org/viewvc?rev=1235852&view=rev
Log:
small refactoring to be able to manage http provisioning in a single class

Added:
    openejb/trunk/openejb/container/openejb-loader/src/main/java/org/apache/openejb/loader/LocationResolver.java
      - copied, changed from r1235539, openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/LocationResolver.java
    openejb/trunk/openejb/container/openejb-loader/src/main/java/org/apache/openejb/loader/ProvisioningUtil.java
Removed:
    openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/LocationResolver.java
    openejb/trunk/openejb/utils/openejb-provisionning/src/main/java/org/apache/openejb/resolver/http/
Modified:
    openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/DeployerEjb.java
    openejb/trunk/openejb/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/TomcatHook.java
    openejb/trunk/openejb/utils/openejb-provisionning/src/main/java/org/apache/openejb/resolver/Resolver.java

Modified: openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/DeployerEjb.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/DeployerEjb.java?rev=1235852&r1=1235851&r2=1235852&view=diff
==============================================================================
--- openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/DeployerEjb.java (original)
+++ openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/DeployerEjb.java Wed Jan 25 17:57:31 2012
@@ -50,6 +50,7 @@ import java.util.TreeMap;
 
 import static javax.ejb.TransactionManagementType.BEAN;
 import static org.apache.openejb.config.ConfigurationFactory.ADDITIONAL_DEPLOYMENTS;
+import static org.apache.openejb.loader.ProvisioningUtil.realLocation;
 
 @Stateless(name = "openejb/Deployer")
 @Remote(Deployer.class)
@@ -237,17 +238,6 @@ public class DeployerEjb implements Depl
         }
     }
 
-    private String realLocation(String rawLocation) throws Exception {
-        final Class<?> clazz;
-        try {
-            clazz = DeployerEjb.class.getClassLoader().loadClass("org.apache.openejb.resolver.Resolver");
-            final LocationResolver instance = (LocationResolver) clazz.newInstance();
-            return instance.resolve(rawLocation);
-        } catch (ClassNotFoundException e) {
-            return rawLocation;
-        }
-    }
-
     public void undeploy(String moduleId) throws UndeployException, NoSuchApplicationException {
         try {
             assembler.destroyApplication(moduleId);

Copied: openejb/trunk/openejb/container/openejb-loader/src/main/java/org/apache/openejb/loader/LocationResolver.java (from r1235539, openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/LocationResolver.java)
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-loader/src/main/java/org/apache/openejb/loader/LocationResolver.java?p2=openejb/trunk/openejb/container/openejb-loader/src/main/java/org/apache/openejb/loader/LocationResolver.java&p1=openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/LocationResolver.java&r1=1235539&r2=1235852&rev=1235852&view=diff
==============================================================================
--- openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/LocationResolver.java (original)
+++ openejb/trunk/openejb/container/openejb-loader/src/main/java/org/apache/openejb/loader/LocationResolver.java Wed Jan 25 17:57:31 2012
@@ -1,4 +1,4 @@
-package org.apache.openejb.assembler;
+package org.apache.openejb.loader;
 
 public interface LocationResolver {
     String resolve(final String rawLocation) throws Exception;

Added: openejb/trunk/openejb/container/openejb-loader/src/main/java/org/apache/openejb/loader/ProvisioningUtil.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-loader/src/main/java/org/apache/openejb/loader/ProvisioningUtil.java?rev=1235852&view=auto
==============================================================================
--- openejb/trunk/openejb/container/openejb-loader/src/main/java/org/apache/openejb/loader/ProvisioningUtil.java (added)
+++ openejb/trunk/openejb/container/openejb-loader/src/main/java/org/apache/openejb/loader/ProvisioningUtil.java Wed Jan 25 17:57:31 2012
@@ -0,0 +1,99 @@
+/*
+ * 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.openejb.loader;
+
+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;
+
+public class ProvisioningUtil {
+    public static final String OPENEJB_DEPLOYER_CACHE_FOLDER = "openejb.deployer.cache.folder";
+    public static final String HTTP_PREFIX = "http";
+    private static final int CONNECT_TIMEOUT = 10000;
+
+    private ProvisioningUtil() {
+        // no-op
+    }
+
+    public static String cache() {
+        return System.getProperty(OPENEJB_DEPLOYER_CACHE_FOLDER, "temp");
+    }
+
+    public static File cacheFile(final String path) {
+        return new File(SystemInstance.get().getBase().getDirectory(),
+                cache() + File.separator + path);
+    }
+
+    public static String copyTryingProxies(final URI source, final File destination) throws Exception {
+        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);
+            return destination.getAbsolutePath();
+        }
+        return null;
+    }
+
+    public static String lastPart(final String location) {
+        final int idx = location.lastIndexOf('/');
+        if (idx <= 0) {
+            return location;
+        }
+        return location.substring(idx + 1, location.length());
+    }
+
+    public static String realLocation(String rawLocation) {
+        if (rawLocation.startsWith(HTTP_PREFIX)) {
+            final File file = cacheFile(lastPart(rawLocation));
+
+            String path = null;
+            try {
+                path = copyTryingProxies(new URI(rawLocation), file);
+            } catch (Exception e1) {
+                // ignored
+            }
+
+            if (path != null) {
+                return path;
+            }
+        }
+        try {
+            final Class<?> clazz = ProvisioningUtil.class.getClassLoader().loadClass("org.apache.openejb.resolver.Resolver");
+            final LocationResolver instance = (LocationResolver) clazz.newInstance();
+            return instance.resolve(rawLocation);
+        } catch (Exception e) {
+            return rawLocation;
+        }
+    }
+}

Modified: openejb/trunk/openejb/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/TomcatHook.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/TomcatHook.java?rev=1235852&r1=1235851&r2=1235852&view=diff
==============================================================================
--- openejb/trunk/openejb/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/TomcatHook.java (original)
+++ openejb/trunk/openejb/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/TomcatHook.java Wed Jan 25 17:57:31 2012
@@ -17,22 +17,14 @@
  */
 package org.apache.tomee.loader;
 
-import org.apache.openejb.assembler.LocationResolver;
 import org.apache.openejb.loader.Embedder;
-import org.apache.openejb.loader.FileUtils;
 import org.apache.openejb.loader.SystemInstance;
 
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.FileOutputStream;
 import java.io.IOException;
-import java.io.InputStream;
 import java.io.OutputStream;
-import java.net.Proxy;
-import java.net.ProxySelector;
-import java.net.URI;
-import java.net.URL;
-import java.net.URLConnection;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
@@ -41,6 +33,8 @@ import java.util.Properties;
 import java.util.zip.ZipEntry;
 import java.util.zip.ZipInputStream;
 
+import static org.apache.openejb.loader.ProvisioningUtil.realLocation;
+
 /**
  * This class should only be loadded and used via reflection from TomcatEmbedder.
  *
@@ -290,64 +284,6 @@ class TomcatHook {
         return libs;
     }
 
-    // this part is mainly copied from other files because here it is difficult to factorize code
-    // since we don't know how openejb is installed and which classes are available
-
-    private static String realLocation(String rawLocation) {
-        final Class<?> clazz;
-        try {
-            clazz = TomcatHook.class.getClassLoader().loadClass("org.apache.openejb.resolver.Resolver");
-            final LocationResolver instance = (LocationResolver) clazz.newInstance();
-            return instance.resolve(rawLocation);
-        } catch (Exception e) {
-            if (rawLocation.startsWith("http")) { // copied from resolver
-                final File file = new File(SystemInstance.get().getBase().getDirectory(),
-                        TEMP_DIR + File.separator + lastPart(rawLocation));
-
-                String path = null;
-                try {
-                    path = copyTryingProxies(new URI(rawLocation), file);
-                } catch (Exception e1) {
-                    // ignored
-                }
-
-                if (path == null) {
-                    return rawLocation;
-                }
-                return path;
-            }
-            return rawLocation;
-        }
-    }
-
-    private static String lastPart(final String location) {
-        final int idx = location.lastIndexOf('/');
-        if (idx <= 0) {
-            return location;
-        }
-        return location.substring(idx + 1, location.length());
-    }
-
-    public static String copyTryingProxies(final URI source, final File destination) throws Exception {
-        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(10000);
-                is = urlConnection.getInputStream();
-            } catch (IOException e) {
-                continue;
-            }
-
-            FileUtils.copy(new FileOutputStream(destination), is);
-            return destination.getAbsolutePath();
-        }
-        return null;
-    }
-
     public static void unzip(final File source, final File targetDirectory) throws IOException {
         OutputStream os = null;
         ZipInputStream is = null;

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=1235852&r1=1235851&r2=1235852&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 Wed Jan 25 17:57:31 2012
@@ -16,31 +16,26 @@
  */
 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.loader.LocationResolver;
 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;
 
+import static org.apache.openejb.loader.ProvisioningUtil.cacheFile;
+
 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 info = rawLocation.substring(MVN_PREFIX.length());
             final Parser parser = new Parser(info);
-            final File file = new File(SystemInstance.get().getBase().getDirectory(),
-                    cache + File.separator + parser.getArtifactPath());
+            final File file = cacheFile(parser.getArtifactPath());
             if (!file.exists()) {
                 try {
                     final URL url = new URL(MVN_PREFIX.substring(MVN_PREFIX.length() - 1), "localhost", -1, info, new Handler());
@@ -56,28 +51,7 @@ 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());
-    }
 }