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


Reply via email to