Author: dblevins
Date: Sun Dec  2 22:29:49 2012
New Revision: 1416279

URL: http://svn.apache.org/viewvc?rev=1416279&view=rev
Log:
Attempting to remove fake <Deployments> creation and usage from 
loadFromClasspath logic
Then going to switch the <Deployments> processing to not be URL based
TOMEE-620

Modified:
    
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentsResolver.java
    
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/URLs.java

Modified: 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentsResolver.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentsResolver.java?rev=1416279&r1=1416278&r2=1416279&view=diff
==============================================================================
--- 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentsResolver.java
 (original)
+++ 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentsResolver.java
 Sun Dec  2 22:29:49 2012
@@ -44,6 +44,7 @@ import java.util.Map;
 import java.util.Set;
 
 import static org.apache.openejb.util.URLs.toFile;
+import static org.apache.openejb.util.URLs.toFileUrl;
 
 /**
  * @version $Rev$ $Date$
@@ -295,7 +296,7 @@ public class DeploymentsResolver impleme
     }
 
     public static void processUrls(final List<URL> urls, final ClassLoader 
classLoader, final Set<RequireDescriptors> requireDescriptors, final FileUtils 
base, final List<URL> jarList) {
-        for (URL url : urls) {
+        for (final URL url : urls) {
 
             final String urlProtocol = url.getProtocol();
             //Currently, we only support jar and file protocol
@@ -305,8 +306,6 @@ public class DeploymentsResolver impleme
                 continue;
             }
 
-            final Deployments deployment;
-            String path = "";
             try {
 
                 final DeploymentLoader deploymentLoader = new 
DeploymentLoader();
@@ -314,30 +313,13 @@ public class DeploymentsResolver impleme
                 final Class<? extends DeploymentModule> moduleType = 
deploymentLoader.discoverModuleType(url, classLoader, requireDescriptors);
                 if (AppModule.class.isAssignableFrom(moduleType) || 
EjbModule.class.isAssignableFrom(moduleType) || 
PersistenceModule.class.isAssignableFrom(moduleType) || 
ConnectorModule.class.isAssignableFrom(moduleType) || 
ClientModule.class.isAssignableFrom(moduleType)) {
 
-                    if (AppModule.class.isAssignableFrom(moduleType) || 
ConnectorModule.class.isAssignableFrom(moduleType)) {
+                    final URL archive = toFileUrl(url);
 
-                        deployment = JaxbOpenejb.createDeployments();
-
-                        if (urlProtocol.equals("jar")) {
-                            url = new URL(url.getFile().replaceFirst("!.*$", 
""));
-                            final File file = toFile(url);
-                            path = file.getAbsolutePath();
-                            deployment.setFile(path);
-                        } else if (urlProtocol.equals("file")) {
-                            final File file = toFile(url);
-                            path = file.getAbsolutePath();
-                            deployment.setDir(path);
-                        }
-
-                        logger.info("Found " + moduleType.getSimpleName() + " 
in classpath: " + path);
-
-                        loadFrom(deployment, base, jarList);
-                    } else {
-                        if (!jarList.contains(url)) {
-                            jarList.add(url);
-                        }
+                    if (!jarList.contains(archive)) {
+                        jarList.add(archive);
+                        final File file = toFile(archive);
+                        logger.info("Found " + moduleType.getSimpleName() + " 
in classpath: " + file.getAbsolutePath());
                     }
-
                 }
             } catch (IOException e) {
                 logger.warning("Unable to determine the module type of " + 
url.toExternalForm() + ": Exception: " + e.getMessage(), e);

Modified: 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/URLs.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/URLs.java?rev=1416279&r1=1416278&r2=1416279&view=diff
==============================================================================
--- 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/URLs.java
 (original)
+++ 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/URLs.java
 Sun Dec  2 22:29:49 2012
@@ -55,6 +55,28 @@ public class URLs {
         }
     }
 
+    public static URL toFileUrl(final URL url) {
+        if ("jar".equals(url.getProtocol())) {
+            try {
+                final String spec = url.getFile();
+
+                int separator = spec.indexOf('!');
+                /*
+                 * REMIND: we don't handle nested JAR URLs
+                 */
+                if (separator == -1) throw new MalformedURLException("no ! 
found in jar url spec:" + spec);
+
+                return new URL(spec.substring(0, separator++));
+            } catch (MalformedURLException e) {
+                throw new IllegalStateException(e);
+            }
+        } else if ("file".equals(url.getProtocol())) {
+            return url;
+        } else {
+            throw new IllegalArgumentException("Unsupported URL scheme: " + 
url.toExternalForm());
+        }
+    }
+
     public static String toFilePath(final URL url) {
         return toFile(url).getAbsolutePath();
     }


Reply via email to