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());
- }
}