This is an automated email from the ASF dual-hosted git repository. jgallimore pushed a commit to branch tomee-1.7.x in repository https://gitbox.apache.org/repos/asf/tomee.git
commit b808558c447eb8da3ce35e6af3070716df1d296e Author: Jonathan Gallimore <[email protected]> AuthorDate: Tue Feb 26 00:47:23 2019 +0000 Fix compilation issues and backport changes to EJBRequest and InstanceOf for isRemote() --- .../openejb/assembler/classic/JndiEncBuilder.java | 4 +++- .../main/java/org/apache/openejb/client/EJBRequest.java | 4 +--- .../java/org/apache/openejb/client/JNDIContext.java | 7 ++++++- .../org/apache/openejb/client/corba/InstanceOf.java | 17 +++++++++++++++-- 4 files changed, 25 insertions(+), 7 deletions(-) diff --git a/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/JndiEncBuilder.java b/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/JndiEncBuilder.java index 10dad68..5f64835 100644 --- a/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/JndiEncBuilder.java +++ b/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/JndiEncBuilder.java @@ -547,7 +547,9 @@ public class JndiEncBuilder { try { bindings.put("comp/ORB", new SystemComponentReference(ParentClassLoaderFinder.Helper.get().loadClass("org.omg.CORBA.ORB"))); - } catch (final NoClassDefFoundError | ClassNotFoundException e) { + } catch (final NoClassDefFoundError e) { + // no corba, who does recall what it is today anyway :D + } catch (final ClassNotFoundException e) { // no corba, who does recall what it is today anyway :D } bindings.put("comp/HandleDelegate", new SystemComponentReference(HandleDelegate.class)); diff --git a/server/openejb-client/src/main/java/org/apache/openejb/client/EJBRequest.java b/server/openejb-client/src/main/java/org/apache/openejb/client/EJBRequest.java index 42df723..01b088a 100644 --- a/server/openejb-client/src/main/java/org/apache/openejb/client/EJBRequest.java +++ b/server/openejb-client/src/main/java/org/apache/openejb/client/EJBRequest.java @@ -21,12 +21,10 @@ import org.apache.openejb.client.corba.InstanceOf; import org.apache.openejb.client.serializer.EJBDSerializer; import org.apache.openejb.client.serializer.SerializationWrapper; -import javax.rmi.PortableRemoteObject; import java.io.IOException; import java.io.ObjectInput; import java.io.ObjectOutput; import java.lang.reflect.Method; -import java.rmi.Remote; import java.util.Arrays; public class EJBRequest implements ClusterableRequest { @@ -553,7 +551,7 @@ public class EJBRequest implements ClusterableRequest { throw new IOException("Unkown primitive type: " + clazz); } } else { - if (PortableRemoteObject.class.isInstance(obj) && Remote.class.isInstance(obj)) { + if (InstanceOf.isRemote(obj)) { obj = Corbas.toStub(obj); } out.write(OBJECT); diff --git a/server/openejb-client/src/main/java/org/apache/openejb/client/JNDIContext.java b/server/openejb-client/src/main/java/org/apache/openejb/client/JNDIContext.java index c08346f..9ba843e 100644 --- a/server/openejb-client/src/main/java/org/apache/openejb/client/JNDIContext.java +++ b/server/openejb-client/src/main/java/org/apache/openejb/client/JNDIContext.java @@ -39,6 +39,7 @@ import javax.naming.spi.NamingManager; import javax.sql.DataSource; import java.io.Serializable; import java.lang.reflect.Constructor; +import java.lang.reflect.InvocationTargetException; import java.net.ConnectException; import java.net.URI; import java.net.URISyntaxException; @@ -570,7 +571,11 @@ public class JNDIContext implements InitialContextFactory, Context { private Object getDefaultOrb() { try { return Thread.currentThread().getContextClassLoader().loadClass("org.omg.CORBA.ORB").getMethod("init").invoke(null); - } catch (final ClassNotFoundException | IllegalAccessException | NoSuchMethodException e) { + } catch (final ClassNotFoundException e) { + throw new IllegalStateException("No CORBA available", e); + } catch (final IllegalAccessException e) { + throw new IllegalStateException("No CORBA available", e); + } catch (final NoSuchMethodException e) { throw new IllegalStateException("No CORBA available", e); } catch (final InvocationTargetException e) { throw new IllegalStateException("No CORBA available", e.getCause()); diff --git a/server/openejb-client/src/main/java/org/apache/openejb/client/corba/InstanceOf.java b/server/openejb-client/src/main/java/org/apache/openejb/client/corba/InstanceOf.java index 80c76c2..a14f99a 100644 --- a/server/openejb-client/src/main/java/org/apache/openejb/client/corba/InstanceOf.java +++ b/server/openejb-client/src/main/java/org/apache/openejb/client/corba/InstanceOf.java @@ -18,15 +18,24 @@ package org.apache.openejb.client.corba; public final class InstanceOf { private static final Class<?> STUB; + private static final Class<?> PORTABLE_REMOTE_OBJECT; + private static final Class<?> REMOTE; static { Class<?> stub = null; + Class<?> pro = null; + Class<?> remote = null; try { - stub = Thread.currentThread().getContextClassLoader().loadClass("javax.rmi.CORBA.Stub"); - } catch (ClassNotFoundException e) { + final ClassLoader loader = Thread.currentThread().getContextClassLoader(); + stub = loader.loadClass("javax.rmi.CORBA.Stub"); + pro = loader.loadClass("javax.rmi.PortableRemoteObject"); + remote = loader.loadClass("java.rmi.Remote"); + } catch (final ClassNotFoundException e) { // no-op } STUB = stub; + PORTABLE_REMOTE_OBJECT = pro; + REMOTE = remote; } private InstanceOf() { @@ -36,4 +45,8 @@ public final class InstanceOf { public static boolean isStub(final Object instance) { return STUB != null && STUB.isInstance(instance); } + + public static boolean isRemote(final Object obj) { + return REMOTE != null && PORTABLE_REMOTE_OBJECT != null && REMOTE.isInstance(obj) && PORTABLE_REMOTE_OBJECT.isInstance(obj); + } }
