Author: rmannibucau
Date: Tue May  7 08:08:42 2013
New Revision: 1479800

URL: http://svn.apache.org/r1479800
Log:
OPENEJB-2019 @ArquillianResource URL in embedded adapter

Added:
    
tomee/tomee/trunk/arquillian/arquillian-openejb-embedded-4/src/main/java/org/apache/openejb/arquillian/openejb/server/
    
tomee/tomee/trunk/arquillian/arquillian-openejb-embedded-4/src/main/java/org/apache/openejb/arquillian/openejb/server/ServiceManagers.java
    
tomee/tomee/trunk/arquillian/arquillian-openejb-embedded-4/src/test/java/org/apache/openejb/arquillian/openejb/ArquillianResourceURLTest.java
      - copied, changed from r1479469, 
tomee/tomee/trunk/arquillian/arquillian-openejb-embedded-4/src/test/java/org/apache/openejb/arquillian/openejb/ArquillianAndMockitoTest.java
Modified:
    tomee/tomee/trunk/arquillian/arquillian-openejb-embedded-4/pom.xml
    
tomee/tomee/trunk/arquillian/arquillian-openejb-embedded-4/src/main/java/org/apache/openejb/arquillian/openejb/OpenEJBDeployableContainer.java

Modified: tomee/tomee/trunk/arquillian/arquillian-openejb-embedded-4/pom.xml
URL: 
http://svn.apache.org/viewvc/tomee/tomee/trunk/arquillian/arquillian-openejb-embedded-4/pom.xml?rev=1479800&r1=1479799&r2=1479800&view=diff
==============================================================================
--- tomee/tomee/trunk/arquillian/arquillian-openejb-embedded-4/pom.xml 
(original)
+++ tomee/tomee/trunk/arquillian/arquillian-openejb-embedded-4/pom.xml Tue May  
7 08:08:42 2013
@@ -113,6 +113,20 @@
       <version>1.1.1</version>
       <scope>provided</scope>
     </dependency>
+
+    <dependency> <!-- shouldn't be a compile/runtime dependency -->
+      <groupId>org.apache.openejb</groupId>
+      <artifactId>openejb-server</artifactId>
+      <version>${project.version}</version>
+      <scope>provided</scope>
+    </dependency>
+
+    <dependency>
+      <groupId>org.apache.openejb</groupId>
+      <artifactId>openejb-cxf-rs</artifactId>
+      <version>${project.version}</version>
+      <scope>test</scope>
+    </dependency>
   </dependencies>
 
   <build>

Modified: 
tomee/tomee/trunk/arquillian/arquillian-openejb-embedded-4/src/main/java/org/apache/openejb/arquillian/openejb/OpenEJBDeployableContainer.java
URL: 
http://svn.apache.org/viewvc/tomee/tomee/trunk/arquillian/arquillian-openejb-embedded-4/src/main/java/org/apache/openejb/arquillian/openejb/OpenEJBDeployableContainer.java?rev=1479800&r1=1479799&r2=1479800&view=diff
==============================================================================
--- 
tomee/tomee/trunk/arquillian/arquillian-openejb-embedded-4/src/main/java/org/apache/openejb/arquillian/openejb/OpenEJBDeployableContainer.java
 (original)
+++ 
tomee/tomee/trunk/arquillian/arquillian-openejb-embedded-4/src/main/java/org/apache/openejb/arquillian/openejb/OpenEJBDeployableContainer.java
 Tue May  7 08:08:42 2013
@@ -21,6 +21,7 @@ import org.apache.openejb.OpenEJB;
 import org.apache.openejb.OpenEJBRuntimeException;
 import org.apache.openejb.OpenEjbContainer;
 import org.apache.openejb.arquillian.common.ArquillianUtil;
+import org.apache.openejb.arquillian.openejb.server.ServiceManagers;
 import org.apache.openejb.assembler.classic.AppInfo;
 import org.apache.openejb.assembler.classic.Assembler;
 import org.apache.openejb.assembler.classic.OpenEjbConfigurationFactory;
@@ -32,6 +33,10 @@ 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.server.ServerService;
+import org.apache.openejb.server.SimpleServiceManager;
+import org.apache.openejb.util.ServiceManagerProxy;
+import org.apache.openejb.util.reflection.Reflections;
 import org.apache.openejb.web.LightweightWebAppBuilder;
 import org.apache.webbeans.web.lifecycle.test.MockHttpSession;
 import org.apache.webbeans.web.lifecycle.test.MockServletContext;
@@ -39,7 +44,9 @@ import org.jboss.arquillian.container.sp
 import org.jboss.arquillian.container.spi.client.container.DeploymentException;
 import org.jboss.arquillian.container.spi.client.container.LifecycleException;
 import org.jboss.arquillian.container.spi.client.protocol.ProtocolDescription;
+import org.jboss.arquillian.container.spi.client.protocol.metadata.HTTPContext;
 import 
org.jboss.arquillian.container.spi.client.protocol.metadata.ProtocolMetaData;
+import org.jboss.arquillian.container.spi.client.protocol.metadata.Servlet;
 import org.jboss.arquillian.container.spi.context.annotation.DeploymentScoped;
 import org.jboss.arquillian.core.api.Instance;
 import org.jboss.arquillian.core.api.InstanceProducer;
@@ -204,6 +211,13 @@ public class OpenEJBDeployableContainer 
             throw new DeploymentException("can't deploy " + archive.getName(), 
e);
         }
 
+        // if service manager is started allow @ArquillianResource URL 
injection
+        if 
(PROPERTIES.containsKey(OpenEjbContainer.OPENEJB_EMBEDDED_REMOTABLE)) {
+            final ProtocolMetaData metaData = 
ServiceManagers.protocolMetaData(appInfoProducer.get());
+            if (metaData != null) {
+                return metaData;
+            }
+        }
         return new ProtocolMetaData();
     }
 

Added: 
tomee/tomee/trunk/arquillian/arquillian-openejb-embedded-4/src/main/java/org/apache/openejb/arquillian/openejb/server/ServiceManagers.java
URL: 
http://svn.apache.org/viewvc/tomee/tomee/trunk/arquillian/arquillian-openejb-embedded-4/src/main/java/org/apache/openejb/arquillian/openejb/server/ServiceManagers.java?rev=1479800&view=auto
==============================================================================
--- 
tomee/tomee/trunk/arquillian/arquillian-openejb-embedded-4/src/main/java/org/apache/openejb/arquillian/openejb/server/ServiceManagers.java
 (added)
+++ 
tomee/tomee/trunk/arquillian/arquillian-openejb-embedded-4/src/main/java/org/apache/openejb/arquillian/openejb/server/ServiceManagers.java
 Tue May  7 08:08:42 2013
@@ -0,0 +1,46 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.openejb.arquillian.openejb.server;
+
+import org.apache.openejb.assembler.classic.AppInfo;
+import org.apache.openejb.server.ServerService;
+import org.apache.openejb.server.SimpleServiceManager;
+import org.jboss.arquillian.container.spi.client.protocol.metadata.HTTPContext;
+import 
org.jboss.arquillian.container.spi.client.protocol.metadata.ProtocolMetaData;
+import org.jboss.arquillian.container.spi.client.protocol.metadata.Servlet;
+
+// only here to not trigger any loadClass of openejb-server if not mandatory
+public final class ServiceManagers {
+    private ServiceManagers() {
+        // no-op
+    }
+
+    public static ProtocolMetaData protocolMetaData(final AppInfo info) {
+        final org.apache.openejb.server.ServiceManager smp = 
org.apache.openejb.server.ServiceManager.get();
+        if (smp != null && SimpleServiceManager.class.isInstance(smp)) {
+            final ServerService[] daemons = 
SimpleServiceManager.class.cast(smp).getDaemons();
+            for (final ServerService ss : daemons) {
+                if ("httpejbd".equals(ss.getName())) {
+                    final HTTPContext httpContext = new 
HTTPContext(ss.getIP(), ss.getPort());
+                    httpContext.add(new Servlet("ArquillianServletRunner", 
info.appId));
+                    return new ProtocolMetaData().addContext(httpContext);
+                }
+            }
+        }
+        return null;
+    }
+}

Copied: 
tomee/tomee/trunk/arquillian/arquillian-openejb-embedded-4/src/test/java/org/apache/openejb/arquillian/openejb/ArquillianResourceURLTest.java
 (from r1479469, 
tomee/tomee/trunk/arquillian/arquillian-openejb-embedded-4/src/test/java/org/apache/openejb/arquillian/openejb/ArquillianAndMockitoTest.java)
URL: 
http://svn.apache.org/viewvc/tomee/tomee/trunk/arquillian/arquillian-openejb-embedded-4/src/test/java/org/apache/openejb/arquillian/openejb/ArquillianResourceURLTest.java?p2=tomee/tomee/trunk/arquillian/arquillian-openejb-embedded-4/src/test/java/org/apache/openejb/arquillian/openejb/ArquillianResourceURLTest.java&p1=tomee/tomee/trunk/arquillian/arquillian-openejb-embedded-4/src/test/java/org/apache/openejb/arquillian/openejb/ArquillianAndMockitoTest.java&r1=1479469&r2=1479800&rev=1479800&view=diff
==============================================================================
--- 
tomee/tomee/trunk/arquillian/arquillian-openejb-embedded-4/src/test/java/org/apache/openejb/arquillian/openejb/ArquillianAndMockitoTest.java
 (original)
+++ 
tomee/tomee/trunk/arquillian/arquillian-openejb-embedded-4/src/test/java/org/apache/openejb/arquillian/openejb/ArquillianResourceURLTest.java
 Tue May  7 08:08:42 2013
@@ -18,49 +18,33 @@ package org.apache.openejb.arquillian.op
 
 import org.jboss.arquillian.container.test.api.Deployment;
 import org.jboss.arquillian.junit.Arquillian;
+import org.jboss.arquillian.test.api.ArquillianResource;
 import org.jboss.shrinkwrap.api.ArchivePaths;
 import org.jboss.shrinkwrap.api.ShrinkWrap;
 import org.jboss.shrinkwrap.api.asset.EmptyAsset;
-import org.jboss.shrinkwrap.api.spec.JavaArchive;
+import org.jboss.shrinkwrap.api.spec.WebArchive;
 import org.junit.Test;
 import org.junit.runner.RunWith;
-import org.mockito.Mock;
 
-import javax.enterprise.inject.Produces;
-import javax.inject.Inject;
+import java.net.URL;
 
+import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
 
 @RunWith(Arquillian.class)
-public class ArquillianAndMockitoTest {
-    @Inject
-    private AFooBean bean;
-
-    @Mock @Produces
-    private static AnInterface mock;
-
-    @Deployment
-    public static JavaArchive archive() {
-        return ShrinkWrap.create(JavaArchive.class, 
ArquillianAndMockitoTest.class.getSimpleName().concat(".jar"))
-                .addClasses(AnInterface.class, AFooBean.class)
+public class ArquillianResourceURLTest {
+    @Deployment(testable = false)
+    public static WebArchive archive() {
+        return ShrinkWrap.create(WebArchive.class, 
ArquillianResourceURLTest.class.getSimpleName().concat(".war"))
                 .addAsManifestResource(EmptyAsset.INSTANCE, 
ArchivePaths.create("beans.xml"));
     }
 
+    @ArquillianResource
+    private URL url;
+
     @Test
     public void mockWorks() {
-        assertNotNull(bean);
-        assertNotNull(mock);
-        assertNotNull(bean.get());
-    }
-
-    public static interface AnInterface {}
-
-    public static class AFooBean {
-        @Inject
-        private AnInterface mock;
-
-        public AnInterface get() {
-            return mock;
-        }
+        assertNotNull(url);
+        assertEquals(4204, url.getPort());
     }
 }


Reply via email to