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