Author: dblevins
Date: Wed Feb 16 06:05:33 2011
New Revision: 1071152
URL: http://svn.apache.org/viewvc?rev=1071152&view=rev
Log:
Temporarily gutted the webapp scanning. The new code is the minimum compliant
code.
We need to get the nice features back in there. (our itests webapp use those
nice features)
Modified:
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentLoader.java
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/FinderFactory.java
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ReportValidationResults.java
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/VmDeploymentManager.java
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/WebModule.java
Modified:
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentLoader.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentLoader.java?rev=1071152&r1=1071151&r2=1071152&view=diff
==============================================================================
---
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentLoader.java
(original)
+++
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentLoader.java
Wed Feb 16 06:05:33 2011
@@ -37,6 +37,7 @@ import org.apache.openejb.jee.TldTaglib;
import org.apache.openejb.jee.WebApp;
import org.apache.openejb.jee.WebserviceDescription;
import org.apache.openejb.jee.Webservices;
+import org.apache.openejb.jee.oejb3.OpenejbJar;
import org.apache.openejb.loader.FileUtils;
import org.apache.openejb.loader.Options;
import org.apache.openejb.loader.SystemInstance;
@@ -46,6 +47,7 @@ import org.apache.openejb.util.LogCatego
import org.apache.openejb.util.Logger;
import org.apache.openejb.util.URLs;
import org.apache.openejb.util.UrlCache;
+import org.apache.xbean.finder.AbstractFinder;
import org.apache.xbean.finder.ResourceFinder;
import org.apache.xbean.finder.UrlSet;
import org.xml.sax.SAXException;
@@ -596,76 +598,29 @@ public class DeploymentLoader implements
appModule.getWebModules().add(webModule);
}
- // get urls in web application
- List<URL> urls = new ArrayList<URL>();
- ClassLoader webClassLoader = webModule.getClassLoader();
-
- // get include/exclude properties from context-param
- List<ParamValue> webAppContextParam = webModule.getWebApp() != null ?
webModule.getWebApp().getContextParam() : Collections.<ParamValue> emptyList();
- Options contextParams = new
Options(getContextParams(webAppContextParam));
-
- String include = contextParams.get(CLASSPATH_INCLUDE, "");
- String exclude = contextParams.get(CLASSPATH_EXCLUDE, "");
- Set<RequireDescriptors> requireDescriptors =
contextParams.getAll(CLASSPATH_REQUIRE_DESCRIPTOR, RequireDescriptors.CLIENT);
- boolean filterDescriptors =
contextParams.get(CLASSPATH_FILTER_DESCRIPTORS, false);
- boolean filterSystemApps =
contextParams.get(CLASSPATH_FILTER_SYSTEMAPPS, true);
-
- contextParams.getProperties().put(webModule.getModuleId(), warPath);
- FileUtils base = new FileUtils(webModule.getModuleId(),
webModule.getModuleId(), contextParams.getProperties());
- DeploymentsResolver.loadFromClasspath(base, urls, webClassLoader,
include, exclude, requireDescriptors, filterDescriptors, filterSystemApps,
ddDir);
-
- // we need to exclude previously deployed modules
- // using a Set instead of a list would be easier ...
- UrlSet urlSet = new UrlSet(urls);
- urlSet = urlSet.exclude(new
UrlSet(appModule.getAdditionalLibraries())); // there should not be modules in
/lib
- for (EjbModule ejbModule : appModule.getEjbModules()) {
- try {
- urlSet = urlSet.exclude(new File(ejbModule.getJarLocation()));
-
- } catch (MalformedURLException ignore) { }
- }
- for (ClientModule clientModule : appModule.getClientModules()) {
- try {
- urlSet = urlSet.exclude(new
File(clientModule.getJarLocation()));
- } catch (MalformedURLException ignore) { }
- }
- // for persistence.xml, there is already a check in addPersistenceUnit
to remove duplicates
- urls = urlSet.getUrls();
-
- // save the filtered list so that it can be used elsewhere
- webModule.setFilteredUrls(urls);
-
- // Check each URL to determine if it is an EJB jar
- for (URL url : urls) {
- try {
- Class moduleType = discoverModuleType(url, webClassLoader,
true);
-
- File file = toFile(url);
- String absolutePath = file.getAbsolutePath();
-
- if (EjbModule.class.isAssignableFrom(moduleType) &&
loadingRequiredModuleTypes.contains(EjbModule.class)) {
- logger.info("Found ejb module " +
moduleType.getSimpleName() + " in war " + contextRoot);
+ // Per the Spec version of the Collapsed EAR there
+ // aren't individual EjbModules inside a war.
+ // The war itself is one big EjbModule if certain
+ // conditions are met. These conditions are different
+ // than an ear file, so the ear-style code we were previously
+ // using doesn't exactly work anymore.
+ //
+
+ EjbModule webEjbModule = new EjbModule(webModule.getClassLoader(),
webModule.getModuleId(), webModule.getJarLocation(), null, null);
+ webEjbModule.getAltDDs().putAll(webModule.getAltDDs());
+ appModule.getEjbModules().add(webEjbModule);
- if (url.getProtocol().equals("file") &&
url.toString().endsWith("WEB-INF/classes/")) {
- //EJB found in /WEB-INF/classes, define the war as EJB
module
- absolutePath = warPath;
- url = warUrl;
- }
-
- EjbModule ejbModule = createEjbModule(url, absolutePath,
webClassLoader, getModuleName());
- appModule.getEjbModules().add(ejbModule);
-
- }
-
- } catch (IOException e) {
- logger.warning("Unable to determine the module type of " +
url.toExternalForm() + ": Exception: " + e.getMessage(), e);
- } catch (UnknownModuleTypeException ignore) {
- }
+ try {
+ // TODO: Put our scanning ehnancements back, here
+ AbstractFinder finder = FinderFactory.createFinder(webModule);
+ webModule.setFinder(finder);
+ webEjbModule.setFinder(finder);
+ } catch (Exception e) {
+ throw new OpenEJBException("Unable to create annotation scanner
for web module " + webModule.getModuleId(), e);
}
- if (loadingRequiredModuleTypes.contains(PersistenceModule.class)) {
- // Persistence Units
- addPersistenceUnits(appModule, urls.toArray(new URL[urls.size()]));
+ if (loadingRequiredModuleTypes.contains(WsModule.class)) {
+ addWebservices(webEjbModule);
}
}
@@ -701,6 +656,7 @@ public class DeploymentLoader implements
// create web module
WebModule webModule = new WebModule(webApp, contextRoot,
warClassLoader, warFile.getAbsolutePath(), moduleName);
+ webModule.setUrls(Arrays.asList(webUrls));
webModule.getAltDDs().putAll(descriptors);
webModule.getWatchedResources().add(warPath);
webModule.getWatchedResources().add(warFile.getAbsolutePath());
Modified:
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/FinderFactory.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/FinderFactory.java?rev=1071152&r1=1071151&r2=1071152&view=diff
==============================================================================
---
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/FinderFactory.java
(original)
+++
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/FinderFactory.java
Wed Feb 16 06:05:33 2011
@@ -24,7 +24,6 @@ import org.apache.openejb.loader.SystemI
import java.io.File;
import java.net.URL;
-import static java.util.Arrays.asList;
public class FinderFactory {
@@ -45,12 +44,7 @@ public class FinderFactory {
if (module instanceof WebModule) {
WebModule webModule = (WebModule) module;
final ClassLoader webClassLoader = webModule.getClassLoader();
- if (webModule.getFilteredUrls() == null) {
- return new ClassFinder(webClassLoader);
-
- } else {
- return new ClassFinder(webClassLoader,
webModule.getFilteredUrls());
- }
+ return new ClassFinder(webClassLoader, webModule.getUrls());
}
if (module.getJarLocation() != null) {
Modified:
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ReportValidationResults.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ReportValidationResults.java?rev=1071152&r1=1071151&r2=1071152&view=diff
==============================================================================
---
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ReportValidationResults.java
(original)
+++
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ReportValidationResults.java
Wed Feb 16 06:05:33 2011
@@ -32,7 +32,7 @@ public class ReportValidationResults imp
private static final Logger logger =
Logger.getInstance(LogCategory.OPENEJB_STARTUP_VALIDATION,
"org.apache.openejb.config.rules");
- private static final String VALIDATION_LEVEL =
"openejb.validation.output.level";
+ public static final String VALIDATION_LEVEL =
"openejb.validation.output.level";
private enum Level {
TERSE,
Modified:
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/VmDeploymentManager.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/VmDeploymentManager.java?rev=1071152&r1=1071151&r2=1071152&view=diff
==============================================================================
---
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/VmDeploymentManager.java
(original)
+++
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/VmDeploymentManager.java
Wed Feb 16 06:05:33 2011
@@ -16,11 +16,13 @@
*/
package org.apache.openejb.config;
+import java.io.ByteArrayOutputStream;
import java.io.Closeable;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
+import java.io.PrintStream;
import java.io.PrintWriter;
import java.io.Serializable;
import java.io.StringWriter;
@@ -330,11 +332,39 @@ public class VmDeploymentManager impleme
TargetModuleID targetModuleId = toTargetModuleId(appInfo, null);
return new ProgressObjectImpl(CommandType.DISTRIBUTE,
Collections.singleton(targetModuleId));
+ } catch (ValidationFailedException e) {
+ String s =
System.getProperty(ReportValidationResults.VALIDATION_LEVEL, "3");
+ int level = Integer.parseInt(s);
+
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ PrintStream out = new PrintStream(baos);
+ out.println(e.getMessage());
+ print(e.getErrors(), out, level);
+ print(e.getFailures(), out, level);
+ print(e.getWarnings(), out, level);
+ out.close();
+ e = new ValidationFailedException(new String(baos.toByteArray()),
e);
+ return new ProgressObjectImpl(CommandType.DISTRIBUTE, e);
} catch (OpenEJBException e) {
return new ProgressObjectImpl(CommandType.DISTRIBUTE, e);
}
}
+ protected void print(ValidationException[] exceptions, PrintStream out,
int level) {
+
+ for (int i = 0; i < exceptions.length; i++) {
+ out.print(" ");
+ out.print(exceptions[i].getPrefix());
+ out.print(" ... ");
+ if (!(exceptions[i] instanceof ValidationError)) {
+ out.print(exceptions[i].getComponentName());
+ out.print(": ");
+ }
+ out.println(exceptions[i].getMessage(level));
+ }
+ }
+
+
private boolean containsDefaultTarget(Target[] targetList) {
for (Target target : targetList) {
if (DEFAULT_TARGET.equals(target)) return true;
Modified:
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/WebModule.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/WebModule.java?rev=1071152&r1=1071151&r2=1071152&view=diff
==============================================================================
---
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/WebModule.java
(original)
+++
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/WebModule.java
Wed Feb 16 06:05:33 2011
@@ -52,7 +52,7 @@ public class WebModule implements WsModu
private AbstractFinder finder;
// keep the list of filtered URL we got after applying include/exclude
pattern (@See DeploymentsResolver.loadFromClasspath)
- private List<URL> filteredUrls;
+ private List<URL> urls;
public WebModule(WebApp webApp, String contextRoot, ClassLoader
classLoader, String jarLocation, String moduleId) {
this.webApp = webApp;
@@ -93,12 +93,12 @@ public class WebModule implements WsModu
validation = new ValidationContext(WebModule.class, jarLocation);
}
- public List<URL> getFilteredUrls() {
- return filteredUrls;
+ public List<URL> getUrls() {
+ return urls;
}
- public void setFilteredUrls(List<URL> filteredUrls) {
- this.filteredUrls = filteredUrls;
+ public void setUrls(List<URL> urls) {
+ this.urls = urls;
}
public AbstractFinder getFinder() {