You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by rm...@apache.org on 2014/08/07 23:51:49 UTC

svn commit: r1616603 - in /tomee/tomee/trunk/arquillian: arquillian-tck/pom.xml arquillian-tomee-common/src/main/java/org/apache/openejb/arquillian/common/RemoteInitialContextObserver.java

Author: rmannibucau
Date: Thu Aug  7 21:51:49 2014
New Revision: 1616603

URL: http://svn.apache.org/r1616603
Log:
arquillian sucks since its contract is Context but cast it in InitialContext - bug I guess - workaround for it

Modified:
    tomee/tomee/trunk/arquillian/arquillian-tck/pom.xml
    tomee/tomee/trunk/arquillian/arquillian-tomee-common/src/main/java/org/apache/openejb/arquillian/common/RemoteInitialContextObserver.java

Modified: tomee/tomee/trunk/arquillian/arquillian-tck/pom.xml
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/arquillian/arquillian-tck/pom.xml?rev=1616603&r1=1616602&r2=1616603&view=diff
==============================================================================
--- tomee/tomee/trunk/arquillian/arquillian-tck/pom.xml (original)
+++ tomee/tomee/trunk/arquillian/arquillian-tck/pom.xml Thu Aug  7 21:51:49 2014
@@ -94,6 +94,15 @@
           </execution>
         </executions>
       </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-surefire-plugin</artifactId>
+        <version>2.17</version>
+        <configuration>
+          <threadCount>1</threadCount>
+          <reuseForks>true</reuseForks>
+        </configuration>
+      </plugin>
     </plugins>
   </build>
 </project>

Modified: tomee/tomee/trunk/arquillian/arquillian-tomee-common/src/main/java/org/apache/openejb/arquillian/common/RemoteInitialContextObserver.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/arquillian/arquillian-tomee-common/src/main/java/org/apache/openejb/arquillian/common/RemoteInitialContextObserver.java?rev=1616603&r1=1616602&r2=1616603&view=diff
==============================================================================
--- tomee/tomee/trunk/arquillian/arquillian-tomee-common/src/main/java/org/apache/openejb/arquillian/common/RemoteInitialContextObserver.java (original)
+++ tomee/tomee/trunk/arquillian/arquillian-tomee-common/src/main/java/org/apache/openejb/arquillian/common/RemoteInitialContextObserver.java Thu Aug  7 21:51:49 2014
@@ -27,6 +27,7 @@ import org.jboss.arquillian.test.spi.eve
 
 import javax.naming.Context;
 import javax.naming.InitialContext;
+import javax.naming.NamingException;
 import java.lang.reflect.InvocationHandler;
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
@@ -69,8 +70,9 @@ public class RemoteInitialContextObserve
                 // no-op
             }
 
-            context.set((Context) Proxy.newProxyInstance(Thread.currentThread().getContextClassLoader(), new Class<?>[]{ Context.class }, new MultipleContextHandler(props, existing)));
-        } catch (final ClassNotFoundException e) {
+            final Context proxyInstance = (Context) Proxy.newProxyInstance(Thread.currentThread().getContextClassLoader(), new Class<?>[]{Context.class}, new MultipleContextHandler(props, existing));
+            context.set(new InitialContextWrapper(proxyInstance)); // cause ContextProducer of arquillian supports InitialContext
+        } catch (final ClassNotFoundException | NamingException e) {
             // no-op
         }
     }
@@ -88,7 +90,6 @@ public class RemoteInitialContextObserve
         public Object invoke(final Object proxy, final Method method, final Object[] args) throws Throwable {
             Exception err = null;
             for (final Callable<Context> callable : Arrays.asList( // order is important to avoid to start an embedded container for some cases
-
                     new Callable<Context>() { // then try to create a remote context
                         @Override
                         public Context call() throws Exception {
@@ -131,4 +132,18 @@ public class RemoteInitialContextObserve
             return null;
         }
     }
+
+    private static class InitialContextWrapper extends InitialContext {
+        private final Context delegate;
+
+        public InitialContextWrapper(final Context proxyInstance) throws NamingException {
+            super(true);
+            this.delegate = proxyInstance;
+        }
+
+        @Override
+        protected Context getURLOrDefaultInitCtx(final String name) {
+            return delegate;
+        }
+    }
 }