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

Reply via email to