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