You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by an...@apache.org on 2007/07/20 14:52:19 UTC

svn commit: r557986 - in /incubator/tuscany/java/sca/modules/binding-ejb/src/main/java/org/apache/tuscany/sca/binding/ejb/util: EJBHandler.java EJBObjectFactory.java EJBStubHelper.java

Author: antelder
Date: Fri Jul 20 05:52:18 2007
New Revision: 557986

URL: http://svn.apache.org/viewvc?view=rev&rev=557986
Log:
TUSCANY-1467, apply patch from Mark Combellack to support EJB3 in the ejb binding

Modified:
    incubator/tuscany/java/sca/modules/binding-ejb/src/main/java/org/apache/tuscany/sca/binding/ejb/util/EJBHandler.java
    incubator/tuscany/java/sca/modules/binding-ejb/src/main/java/org/apache/tuscany/sca/binding/ejb/util/EJBObjectFactory.java
    incubator/tuscany/java/sca/modules/binding-ejb/src/main/java/org/apache/tuscany/sca/binding/ejb/util/EJBStubHelper.java

Modified: incubator/tuscany/java/sca/modules/binding-ejb/src/main/java/org/apache/tuscany/sca/binding/ejb/util/EJBHandler.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-ejb/src/main/java/org/apache/tuscany/sca/binding/ejb/util/EJBHandler.java?view=diff&rev=557986&r1=557985&r2=557986
==============================================================================
--- incubator/tuscany/java/sca/modules/binding-ejb/src/main/java/org/apache/tuscany/sca/binding/ejb/util/EJBHandler.java (original)
+++ incubator/tuscany/java/sca/modules/binding-ejb/src/main/java/org/apache/tuscany/sca/binding/ejb/util/EJBHandler.java Fri Jul 20 05:52:18 2007
@@ -74,7 +74,7 @@
     // locates the stub
     public EJBHandler(NamingEndpoint namingEndpoint, InterfaceInfo ejbInterface) {
         try {
-            this.ejbStub = EJBStubHelper.lookup(namingEndpoint);
+            this.ejbStub = EJBStubHelper.lookup(namingEndpoint, ejbInterface);
             this.interfaceInfo = ejbInterface;
         } catch (Exception e) {
             throw new ServiceRuntimeException(e);

Modified: incubator/tuscany/java/sca/modules/binding-ejb/src/main/java/org/apache/tuscany/sca/binding/ejb/util/EJBObjectFactory.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-ejb/src/main/java/org/apache/tuscany/sca/binding/ejb/util/EJBObjectFactory.java?view=diff&rev=557986&r1=557985&r2=557986
==============================================================================
--- incubator/tuscany/java/sca/modules/binding-ejb/src/main/java/org/apache/tuscany/sca/binding/ejb/util/EJBObjectFactory.java (original)
+++ incubator/tuscany/java/sca/modules/binding-ejb/src/main/java/org/apache/tuscany/sca/binding/ejb/util/EJBObjectFactory.java Fri Jul 20 05:52:18 2007
@@ -52,7 +52,7 @@
      * of the pregenerated EJB stub classes be avaiable in the classpath.
      * <p>
      */
-    public static Object createStub(NamingEndpoint namingEndpoint) throws NamingException, RemoteException,
+    public static Object createStub(NamingEndpoint namingEndpoint, InterfaceInfo ejbInterface) throws NamingException, RemoteException,
         CreateException {
 
         EJBLocator locator = namingEndpoint.getLocator();
@@ -63,7 +63,7 @@
          * type, otherwise, "org.omg.stub.java.rmi._Remote_Stub" or
          * "org.omg.stub.javax.ejb._EJBHome_Stub"
          */
-        Object stub = getEJBStub(homeObject);
+        Object stub = getEJBStub(homeObject, ejbInterface);
         // Cache dynamic stub only
         return stub;
     }
@@ -74,10 +74,26 @@
      * @return
      * @throws RemoteException
      */
-    protected static Object getEJBStub(Object homeObject) throws RemoteException, CreateException {
+    protected static Object getEJBStub(Object homeObject, InterfaceInfo ejbInterface) throws RemoteException, CreateException {
 
         Object stub = null;
-        if (homeObject instanceof EJBLocalHome) {
+
+        // Get the business interface of the EJB 
+        Class ejbInterfaceClass = null;
+        try
+        {
+            ejbInterfaceClass = Thread.currentThread().getContextClassLoader().loadClass(ejbInterface.getName());
+        }
+        catch (ClassNotFoundException e)
+        {
+            // ignore
+        }
+        
+        if (ejbInterfaceClass != null && ejbInterfaceClass.isInstance(homeObject))
+        {
+            // EJB 3
+            stub = homeObject;
+        } else if (homeObject instanceof EJBLocalHome) {
             // Local EJB
             stub = createEJBLocalObject(homeObject);
         } else {

Modified: incubator/tuscany/java/sca/modules/binding-ejb/src/main/java/org/apache/tuscany/sca/binding/ejb/util/EJBStubHelper.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-ejb/src/main/java/org/apache/tuscany/sca/binding/ejb/util/EJBStubHelper.java?view=diff&rev=557986&r1=557985&r2=557986
==============================================================================
--- incubator/tuscany/java/sca/modules/binding-ejb/src/main/java/org/apache/tuscany/sca/binding/ejb/util/EJBStubHelper.java (original)
+++ incubator/tuscany/java/sca/modules/binding-ejb/src/main/java/org/apache/tuscany/sca/binding/ejb/util/EJBStubHelper.java Fri Jul 20 05:52:18 2007
@@ -40,13 +40,13 @@
      * @return
      */
 
-    public static Object lookup(NamingEndpoint endpoint) {
-        return getStub(endpoint);
+    public static Object lookup(NamingEndpoint endpoint, InterfaceInfo ejbInterface) {
+        return getStub(endpoint, ejbInterface);
     }
 
-    public static Object getStub(NamingEndpoint namingEndpoint) {
+    public static Object getStub(NamingEndpoint namingEndpoint, InterfaceInfo ejbInterface) {
         try {
-            stub = EJBObjectFactory.createStub(namingEndpoint);
+            stub = EJBObjectFactory.createStub(namingEndpoint, ejbInterface);
         } catch (NamingException e) {
             exception = new ServiceUnavailableException(e);
             e.printStackTrace();



---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org