Author: rmannibucau
Date: Sun Jan 6 13:42:36 2013
New Revision: 1429523
URL: http://svn.apache.org/viewvc?rev=1429523&view=rev
Log:
OPENEJB-1982 ability to use jaxrs from arquillian with application
Modified:
openejb/trunk/openejb/arquillian/arquillian-openejb-embedded-4/src/main/java/org/apache/openejb/arquillian/openejb/OpenEJBArchiveProcessor.java
openejb/trunk/openejb/arquillian/arquillian-openejb-embedded-4/src/main/java/org/apache/openejb/arquillian/openejb/OpenEJBDeployableContainer.java
Modified:
openejb/trunk/openejb/arquillian/arquillian-openejb-embedded-4/src/main/java/org/apache/openejb/arquillian/openejb/OpenEJBArchiveProcessor.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/arquillian/arquillian-openejb-embedded-4/src/main/java/org/apache/openejb/arquillian/openejb/OpenEJBArchiveProcessor.java?rev=1429523&r1=1429522&r2=1429523&view=diff
==============================================================================
---
openejb/trunk/openejb/arquillian/arquillian-openejb-embedded-4/src/main/java/org/apache/openejb/arquillian/openejb/OpenEJBArchiveProcessor.java
(original)
+++
openejb/trunk/openejb/arquillian/arquillian-openejb-embedded-4/src/main/java/org/apache/openejb/arquillian/openejb/OpenEJBArchiveProcessor.java
Sun Jan 6 13:42:36 2013
@@ -23,10 +23,12 @@ import org.apache.openejb.config.Deploym
import org.apache.openejb.config.EjbModule;
import org.apache.openejb.config.FinderFactory;
import org.apache.openejb.config.ReadDescriptors;
+import org.apache.openejb.config.WebModule;
import org.apache.openejb.config.WebappAggregatedArchive;
import org.apache.openejb.jee.EjbJar;
import org.apache.openejb.jee.ManagedBean;
import org.apache.openejb.jee.TransactionType;
+import org.apache.openejb.jee.WebApp;
import org.apache.openejb.jee.oejb3.EjbDeployment;
import org.apache.openejb.jee.oejb3.OpenejbJar;
import org.apache.openejb.loader.IO;
@@ -87,7 +89,7 @@ public class OpenEJBArchiveProcessor {
public static AppModule createModule(final Archive<?> archive, final
TestClass testClass) {
final Class<?> javaClass = testClass.getJavaClass();
- final Collection<URL> additionalPaths = new ArrayList<URL>();
+ final List<URL> additionalPaths = new ArrayList<URL>();
final String prefix;
if (WebArchive.class.isInstance(archive)) {
@@ -125,6 +127,11 @@ public class OpenEJBArchiveProcessor {
final AppModule appModule = new AppModule(loader, archive.getName());
if (WEB_INF.equals(prefix)) {
appModule.setDelegateFirst(false);
+ appModule.setStandloneWebModule();
+
+ final WebModule webModule = new WebModule(new WebApp(),
contextRoot(archive.getName()), loader, "", appModule.getModuleId());
+ webModule.setUrls(additionalPaths);
+ appModule.getWebModules().add(webModule);
}
// add the test as a managed bean to be able to inject into it easily
@@ -172,6 +179,9 @@ public class OpenEJBArchiveProcessor {
final org.apache.xbean.finder.archive.Archive finderArchive =
finderArchive(beansXml, archive, appModule.getClassLoader(), additionalPaths);
ejbModule.setFinder(new FinderFactory.ModuleLimitedFinder(new
AnnotationFinder(finderArchive)));
+ if (appModule.isWebapp()) { // war
+
appModule.getWebModules().iterator().next().setFinder(ejbModule.getFinder());
+ }
appModule.getEjbModules().add(ejbModule);
{
@@ -236,11 +246,20 @@ public class OpenEJBArchiveProcessor {
}
}
- appModule.getAdditionalLibraries().addAll(additionalPaths);
+ if (!appModule.isWebapp()) {
+ appModule.getAdditionalLibraries().addAll(additionalPaths);
+ }
return appModule;
}
+ private static String contextRoot(final String name) {
+ if (name.endsWith(".war")) {
+ return name.substring(0, name.length() - ".war".length());
+ }
+ return name;
+ }
+
private static <T> T get(final Class<T> fileClass, final String attr,
final Asset asset) {
try {
final Field field = asset.getClass().getDeclaredField(attr);
Modified:
openejb/trunk/openejb/arquillian/arquillian-openejb-embedded-4/src/main/java/org/apache/openejb/arquillian/openejb/OpenEJBDeployableContainer.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/arquillian/arquillian-openejb-embedded-4/src/main/java/org/apache/openejb/arquillian/openejb/OpenEJBDeployableContainer.java?rev=1429523&r1=1429522&r2=1429523&view=diff
==============================================================================
---
openejb/trunk/openejb/arquillian/arquillian-openejb-embedded-4/src/main/java/org/apache/openejb/arquillian/openejb/OpenEJBDeployableContainer.java
(original)
+++
openejb/trunk/openejb/arquillian/arquillian-openejb-embedded-4/src/main/java/org/apache/openejb/arquillian/openejb/OpenEJBDeployableContainer.java
Sun Jan 6 13:42:36 2013
@@ -22,6 +22,7 @@ import org.apache.openejb.OpenEJBRuntime
import org.apache.openejb.OpenEjbContainer;
import org.apache.openejb.assembler.classic.AppInfo;
import org.apache.openejb.assembler.classic.Assembler;
+import org.apache.openejb.assembler.classic.WebAppBuilder;
import org.apache.openejb.config.AppModule;
import org.apache.openejb.config.ConfigurationFactory;
import org.apache.openejb.config.DeploymentFilterable;
@@ -29,6 +30,7 @@ import org.apache.openejb.core.LocalInit
import org.apache.openejb.core.LocalInitialContextFactory;
import org.apache.openejb.loader.IO;
import org.apache.openejb.loader.SystemInstance;
+import org.apache.openejb.web.LightweightWebAppBuilder;
import org.apache.webbeans.web.lifecycle.test.MockHttpSession;
import org.apache.webbeans.web.lifecycle.test.MockServletContext;
import org.jboss.arquillian.container.spi.client.container.DeployableContainer;
@@ -164,6 +166,12 @@ public class OpenEJBDeployableContainer
assembler = SystemInstance.get().getComponent(Assembler.class);
configurationFactory = new ConfigurationFactory();
+
+ if
("true".equalsIgnoreCase(PROPERTIES.getProperty(OpenEjbContainer.OPENEJB_EMBEDDED_REMOTABLE))
+ && SystemInstance.get().getComponent(WebAppBuilder.class) ==
null) {
+ SystemInstance.get().setComponent(WebAppBuilder.class, new
LightweightWebAppBuilder());
+ }
+
contextProducer.set(initialContext);
}