You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by db...@apache.org on 2006/10/18 11:16:33 UTC

svn commit: r465182 - in /incubator/openejb/trunk/openejb3: container/openejb-core/ container/openejb-core/src/main/java/org/apache/openejb/ container/openejb-core/src/main/java/org/apache/openejb/core/ container/openejb-core/src/main/java/org/apache/o...

Author: dblevins
Date: Wed Oct 18 02:16:32 2006
New Revision: 465182

URL: http://svn.apache.org/viewvc?view=rev&rev=465182
Log:
Added InterfaceType which is now used by ProxyInfo to aid in determining the nature of a proxy

Added:
    incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/BeanType.java
    incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/InterfaceType.java
Modified:
    incubator/openejb/trunk/openejb3/container/openejb-core/pom.xml
    incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/DeploymentInfo.java
    incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/ProxyInfo.java
    incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/CoreContext.java
    incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/CoreDeploymentInfo.java
    incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/entity/EntityContext.java
    incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/entity/EntityEjbHomeHandler.java
    incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/entity/EntityEjbObjectHandler.java
    incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/BaseEjbProxyHandler.java
    incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/EjbHomeProxyHandler.java
    incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/EjbObjectProxyHandler.java
    incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/IntraVmServer.java
    incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateful/StatefulContext.java
    incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateful/StatefulEjbHomeHandler.java
    incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateful/StatefulEjbObjectHandler.java
    incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateless/StatelessContext.java
    incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateless/StatelessEjbHomeHandler.java
    incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateless/StatelessEjbObjectHandler.java
    incubator/openejb/trunk/openejb3/server/openejb-ejbd/src/main/java/org/apache/openejb/server/ejbd/JndiRequestHandler.java

Modified: incubator/openejb/trunk/openejb3/container/openejb-core/pom.xml
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/pom.xml?view=diff&rev=465182&r1=465181&r2=465182
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/pom.xml (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/pom.xml Wed Oct 18 02:16:32 2006
@@ -104,7 +104,7 @@
         <configuration>
           <!--  namespace>http://openejb.org/schemas/core</namespace -->
           <namespace>http://openejb.apache.org/schemas/core</namespace>
-          <excludedClasses>org.apache.openejb.alt.config.ejb,org.apache.openejb.util.io</excludedClasses>
+          <excludedClasses>org.apache.openejb.alt.config.ejb,org.apache.openejb.util.io,org.apache.openejb.InterfaceType</excludedClasses>
         </configuration>
       </plugin>
     </plugins>

Added: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/BeanType.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/BeanType.java?view=auto&rev=465182
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/BeanType.java (added)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/BeanType.java Wed Oct 18 02:16:32 2006
@@ -0,0 +1,24 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+package org.apache.openejb;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public enum BeanType {
+    STATEFUL, STATELESS, BMP_ENTITY, CMP_ENTITY, MESSAGE_DRIVEN;
+}

Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/DeploymentInfo.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/DeploymentInfo.java?view=diff&rev=465182&r1=465181&r2=465182
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/DeploymentInfo.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/DeploymentInfo.java Wed Oct 18 02:16:32 2006
@@ -78,24 +78,13 @@
 
     public boolean isReentrant();
 
+    Class getInterface(InterfaceType interfaceType);
+
     public interface BusinessLocalHome extends javax.ejb.EJBLocalHome {
         Object create();
     }
 
     public interface BusinessRemoteHome extends javax.ejb.EJBHome {
         Object create();
-    }
-
-    public enum InterfaceType {
-        HOME, REMOTE,
-        LOCAL_HOME, LOCAL,
-        BUSINESS_LOCAL,
-        BUSINESS_REMOTE,
-        SERVICE_ENDPOINT
-    }
-
-    // TODO: Use these instead of the constants above
-    public enum BeanType {
-        STATEFUL, STATELESS, BMP_ENTITY, CMP_ENTITY, MESSAGE_DRIVEN
     }
 }

Added: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/InterfaceType.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/InterfaceType.java?view=auto&rev=465182
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/InterfaceType.java (added)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/InterfaceType.java Wed Oct 18 02:16:32 2006
@@ -0,0 +1,33 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+package org.apache.openejb;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public enum InterfaceType {
+    EJB_HOME,
+    EJB_OBJECT,
+    EJB_LOCAL_HOME,
+    EJB_LOCAL,
+    BUSINESS_LOCAL,
+    BUSINESS_LOCAL_HOME,
+    BUSINESS_REMOTE,
+    BUSINESS_REMOTE_HOME,
+    SERVICE_ENDPOINT,
+    UNKNOWN
+}

Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/ProxyInfo.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/ProxyInfo.java?view=diff&rev=465182&r1=465181&r2=465182
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/ProxyInfo.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/ProxyInfo.java Wed Oct 18 02:16:32 2006
@@ -20,28 +20,27 @@
 
     protected DeploymentInfo deploymentInfo;
     protected Object primaryKey;
-    protected Class type;
+    protected Class proxyInterface;
     protected RpcContainer beanContainer;
+    protected InterfaceType interfaceType;
 
     protected ProxyInfo() {
     }
 
-    public ProxyInfo(DeploymentInfo depInfo, Object pk, Class intrfc, RpcContainer container) {
-        deploymentInfo = depInfo;
-        primaryKey = pk;
-        type = intrfc;
-        beanContainer = container;
-    }
-
-    public ProxyInfo(DeploymentInfo depInfo, Object pk, boolean isLocalInterface, RpcContainer container) {
+    public ProxyInfo(DeploymentInfo depInfo, Object pk, Class intrfc, RpcContainer container, InterfaceType proxyType) {
         this.deploymentInfo = depInfo;
         this.primaryKey = pk;
+        this.proxyInterface = intrfc;
+        this.interfaceType = proxyType;
         this.beanContainer = container;
-        if (isLocalInterface) {
-            this.type = deploymentInfo.getLocalInterface();
-        } else {
-            this.type = deploymentInfo.getRemoteInterface();
-        }
+    }
+
+    public ProxyInfo(DeploymentInfo depInfo, Object pk, Class intrfc, RpcContainer container) {
+        this(depInfo, pk, intrfc, container, InterfaceType.UNKNOWN);
+    }
+
+    public InterfaceType getInterfaceType() {
+        return interfaceType;
     }
 
     public DeploymentInfo getDeploymentInfo() {
@@ -53,10 +52,11 @@
     }
 
     public Class getInterface() {
-        return type;
+        return proxyInterface;
     }
 
     public RpcContainer getBeanContainer() {
         return beanContainer;
     }
+
 }

Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/CoreContext.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/CoreContext.java?view=diff&rev=465182&r1=465181&r2=465182
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/CoreContext.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/CoreContext.java Wed Oct 18 02:16:32 2006
@@ -24,6 +24,8 @@
 import javax.transaction.TransactionManager;
 
 import org.apache.openejb.RpcContainer;
+import org.apache.openejb.DeploymentInfo;
+import org.apache.openejb.InterfaceType;
 import org.apache.openejb.spi.SecurityService;
 import org.apache.openejb.core.ivm.EjbObjectProxyHandler;
 import org.apache.openejb.util.proxy.ProxyManager;
@@ -90,7 +92,7 @@
         ThreadContext threadContext = ThreadContext.getThreadContext();
         org.apache.openejb.DeploymentInfo di = threadContext.getDeploymentInfo();
 
-        EjbObjectProxyHandler handler = newEjbObjectHandler((RpcContainer) di.getContainer(), threadContext.getPrimaryKey(), di.getDeploymentID());
+        EjbObjectProxyHandler handler = newEjbObjectHandler((RpcContainer) di.getContainer(), threadContext.getPrimaryKey(), di.getDeploymentID(), InterfaceType.EJB_OBJECT);
         Object newProxy = null;
         try {
             Class[] interfaces = new Class[]{di.getRemoteInterface(), org.apache.openejb.core.ivm.IntraVmProxy.class};
@@ -105,7 +107,7 @@
         ThreadContext threadContext = ThreadContext.getThreadContext();
         org.apache.openejb.DeploymentInfo di = threadContext.getDeploymentInfo();
 
-        EjbObjectProxyHandler handler = newEjbObjectHandler((RpcContainer) di.getContainer(), threadContext.getPrimaryKey(), di.getDeploymentID());
+        EjbObjectProxyHandler handler = newEjbObjectHandler((RpcContainer) di.getContainer(), threadContext.getPrimaryKey(), di.getDeploymentID(), InterfaceType.EJB_LOCAL);
         handler.setLocal(true);
         Object newProxy = null;
         try {
@@ -120,20 +122,25 @@
     public Object getBusinessObject(Class interfce) {
         // TODO: This implementation isn't complete
         ThreadContext threadContext = ThreadContext.getThreadContext();
-        org.apache.openejb.DeploymentInfo di = threadContext.getDeploymentInfo();
+        DeploymentInfo di = threadContext.getDeploymentInfo();
+
+
+        InterfaceType interfaceType;
 
-        EjbObjectProxyHandler handler = newEjbObjectHandler((RpcContainer) di.getContainer(), threadContext.getPrimaryKey(), di.getDeploymentID());
 
         Class businessLocalInterface = di.getBusinessLocalInterface();
         if (businessLocalInterface != null && businessLocalInterface.getName().equals(interfce.getName())){
-            handler.setLocal(true);
-        } else if (di.getBusinessRemoteInterface() == null || !di.getBusinessRemoteInterface().getName().equals(interfce.getName())) {
+            interfaceType = InterfaceType.BUSINESS_LOCAL;
+        } else if (di.getBusinessRemoteInterface() == null && di.getBusinessRemoteInterface().getName().equals(interfce.getName())) {
+            interfaceType = InterfaceType.BUSINESS_REMOTE;
+        } else {
             // TODO: verify if this is the right exception
             throw new RuntimeException("Component has no such interface "+interfce.getName());
         }
 
         Object newProxy = null;
         try {
+            EjbObjectProxyHandler handler = newEjbObjectHandler((RpcContainer) di.getContainer(), threadContext.getPrimaryKey(), di.getDeploymentID(), interfaceType);
             Class[] interfaces = new Class[]{interfce, org.apache.openejb.core.ivm.IntraVmProxy.class};
             newProxy = ProxyManager.newProxyInstance(interfaces, handler);
         } catch (IllegalAccessException iae) {
@@ -233,5 +240,5 @@
         throw new java.lang.UnsupportedOperationException();
     }
 
-    protected abstract EjbObjectProxyHandler newEjbObjectHandler(RpcContainer container, Object pk, Object depID);
+    protected abstract EjbObjectProxyHandler newEjbObjectHandler(RpcContainer container, Object pk, Object depID, InterfaceType interfaceType);
 }

Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/CoreDeploymentInfo.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/CoreDeploymentInfo.java?view=diff&rev=465182&r1=465181&r2=465182
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/CoreDeploymentInfo.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/CoreDeploymentInfo.java Wed Oct 18 02:16:32 2006
@@ -32,6 +32,7 @@
 import org.apache.openejb.RpcContainer;
 import org.apache.openejb.SystemException;
 import org.apache.openejb.ApplicationException;
+import org.apache.openejb.InterfaceType;
 import org.apache.openejb.DeploymentInfo;
 import org.apache.openejb.alt.containers.castor_cmp11.CastorCmpEntityTxPolicy;
 import org.apache.openejb.alt.containers.castor_cmp11.KeyGenerator;
@@ -117,6 +118,7 @@
                 getComponentType(ejbType), null);
     }
 
+
     private static Class loadClass(String name, ClassLoader classLoader) throws SystemException {
         try {
             return classLoader.loadClass(name);
@@ -125,6 +127,20 @@
         }
     }
 
+    public Class getInterface(InterfaceType interfaceType) {
+        switch(interfaceType){
+            case EJB_HOME: return getHomeInterface();
+            case EJB_OBJECT: return getRemoteInterface();
+            case EJB_LOCAL_HOME: return getLocalHomeInterface();
+            case EJB_LOCAL: return getLocalInterface();
+            case BUSINESS_LOCAL: return getBusinessLocalInterface();
+            case BUSINESS_REMOTE: return getBusinessRemoteInterface();
+            case BUSINESS_REMOTE_HOME: return DeploymentInfo.BusinessRemoteHome.class;
+            case BUSINESS_LOCAL_HOME: return DeploymentInfo.BusinessLocalHome.class;
+            default: throw new IllegalStateException("Unexpected enum constant: " + interfaceType);
+        }
+    }
+
     private static byte getComponentType(String name) throws SystemException {
         if ("cmp".equalsIgnoreCase(name)) {
             return CMP_ENTITY;
@@ -466,15 +482,15 @@
 
         switch (getComponentType()) {
             case STATEFUL:
-                handler = new StatefulEjbHomeHandler((RpcContainer) container, null, getDeploymentID());
+                handler = new StatefulEjbHomeHandler((RpcContainer) container, null, getDeploymentID(), InterfaceType.EJB_HOME);
                 break;
 
             case STATELESS:
-                handler = new StatelessEjbHomeHandler((RpcContainer) container, null, getDeploymentID());
+                handler = new StatelessEjbHomeHandler((RpcContainer) container, null, getDeploymentID(), InterfaceType.EJB_HOME);
                 break;
             case CMP_ENTITY:
             case BMP_ENTITY:
-                handler = new EntityEjbHomeHandler((RpcContainer) container, null, getDeploymentID());
+                handler = new EntityEjbHomeHandler((RpcContainer) container, null, getDeploymentID(), InterfaceType.EJB_HOME);
                 break;
         }
 
@@ -497,15 +513,15 @@
 
         switch (getComponentType()) {
             case STATEFUL:
-                handler = new StatefulEjbHomeHandler((RpcContainer) container, null, getDeploymentID());
+                handler = new StatefulEjbHomeHandler((RpcContainer) container, null, getDeploymentID(), InterfaceType.EJB_LOCAL_HOME);
                 break;
 
             case STATELESS:
-                handler = new StatelessEjbHomeHandler((RpcContainer) container, null, getDeploymentID());
+                handler = new StatelessEjbHomeHandler((RpcContainer) container, null, getDeploymentID(), InterfaceType.EJB_LOCAL_HOME);
                 break;
             case CMP_ENTITY:
             case BMP_ENTITY:
-                handler = new EntityEjbHomeHandler((RpcContainer) container, null, getDeploymentID());
+                handler = new EntityEjbHomeHandler((RpcContainer) container, null, getDeploymentID(), InterfaceType.EJB_LOCAL_HOME);
                 break;
         }
         handler.setLocal(true);
@@ -527,11 +543,11 @@
 
         switch (getComponentType()) {
             case STATEFUL:
-                handler = new StatefulEjbHomeHandler((RpcContainer) container, null, getDeploymentID());
+                handler = new StatefulEjbHomeHandler((RpcContainer) container, null, getDeploymentID(), InterfaceType.BUSINESS_LOCAL_HOME);
                 break;
 
             case STATELESS:
-                handler = new StatelessEjbHomeHandler((RpcContainer) container, null, getDeploymentID());
+                handler = new StatelessEjbHomeHandler((RpcContainer) container, null, getDeploymentID(), InterfaceType.BUSINESS_LOCAL_HOME);
                 break;
         }
         handler.setLocal(true);
@@ -550,11 +566,11 @@
 
         switch (getComponentType()) {
             case STATEFUL:
-                handler = new StatefulEjbHomeHandler((RpcContainer) container, null, getDeploymentID());
+                handler = new StatefulEjbHomeHandler((RpcContainer) container, null, getDeploymentID(), InterfaceType.BUSINESS_REMOTE_HOME);
                 break;
 
             case STATELESS:
-                handler = new StatelessEjbHomeHandler((RpcContainer) container, null, getDeploymentID());
+                handler = new StatelessEjbHomeHandler((RpcContainer) container, null, getDeploymentID(), InterfaceType.BUSINESS_REMOTE_HOME);
                 break;
         }
         try {

Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/entity/EntityContext.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/entity/EntityContext.java?view=diff&rev=465182&r1=465181&r2=465182
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/entity/EntityContext.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/entity/EntityContext.java Wed Oct 18 02:16:32 2006
@@ -17,6 +17,7 @@
 package org.apache.openejb.core.entity;
 
 import org.apache.openejb.RpcContainer;
+import org.apache.openejb.InterfaceType;
 import org.apache.openejb.spi.SecurityService;
 import org.apache.openejb.core.Operations;
 import org.apache.openejb.core.ThreadContext;
@@ -128,8 +129,8 @@
 
     }
 
-    protected EjbObjectProxyHandler newEjbObjectHandler(RpcContainer container, Object pk, Object depID) {
-        return new EntityEjbObjectHandler(container, pk, depID);
+    protected EjbObjectProxyHandler newEjbObjectHandler(RpcContainer container, Object pk, Object depID, InterfaceType interfaceType) {
+        return new EntityEjbObjectHandler(container, pk, depID, interfaceType);
     }
 
 }

Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/entity/EntityEjbHomeHandler.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/entity/EntityEjbHomeHandler.java?view=diff&rev=465182&r1=465181&r2=465182
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/entity/EntityEjbHomeHandler.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/entity/EntityEjbHomeHandler.java Wed Oct 18 02:16:32 2006
@@ -1,19 +1,19 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 package org.apache.openejb.core.entity;
 
 import java.lang.reflect.Method;
@@ -21,6 +21,7 @@
 
 import org.apache.openejb.ProxyInfo;
 import org.apache.openejb.RpcContainer;
+import org.apache.openejb.InterfaceType;
 import org.apache.openejb.core.ivm.EjbHomeProxyHandler;
 import org.apache.openejb.core.ivm.EjbObjectProxyHandler;
 import org.apache.openejb.util.proxy.ProxyManager;
@@ -28,8 +29,8 @@
 
 public class EntityEjbHomeHandler extends EjbHomeProxyHandler {
 
-    public EntityEjbHomeHandler(RpcContainer container, Object pk, Object depID) {
-        super(container, pk, depID);
+    public EntityEjbHomeHandler(RpcContainer container, Object pk, Object depID, InterfaceType interfaceType) {
+        super(container, pk, depID, interfaceType);
     }
 
     protected Object createProxy(ProxyInfo proxyInfo) {
@@ -93,8 +94,8 @@
         return null;
     }
 
-    protected EjbObjectProxyHandler newEjbObjectHandler(RpcContainer container, Object pk, Object depID) {
-        return new EntityEjbObjectHandler(container, pk, depID);
+    protected EjbObjectProxyHandler newEjbObjectHandler(RpcContainer container, Object pk, Object depID, InterfaceType interfaceType) {
+        return new EntityEjbObjectHandler(container, pk, depID, interfaceType);
     }
 
 }

Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/entity/EntityEjbObjectHandler.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/entity/EntityEjbObjectHandler.java?view=diff&rev=465182&r1=465181&r2=465182
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/entity/EntityEjbObjectHandler.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/entity/EntityEjbObjectHandler.java Wed Oct 18 02:16:32 2006
@@ -20,6 +20,7 @@
 
 import org.apache.openejb.Container;
 import org.apache.openejb.RpcContainer;
+import org.apache.openejb.InterfaceType;
 import org.apache.openejb.core.ivm.EjbObjectProxyHandler;
 import org.apache.openejb.util.proxy.ProxyManager;
 
@@ -68,8 +69,8 @@
     */
     private Object registryId;
 
-    public EntityEjbObjectHandler(RpcContainer container, Object pk, Object depID) {
-        super(container, pk, depID, null);
+    public EntityEjbObjectHandler(RpcContainer container, Object pk, Object depID, InterfaceType interfaceType) {
+        super(container, pk, depID, null, interfaceType);
     }
 
     /*

Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/BaseEjbProxyHandler.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/BaseEjbProxyHandler.java?view=diff&rev=465182&r1=465181&r2=465182
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/BaseEjbProxyHandler.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/BaseEjbProxyHandler.java Wed Oct 18 02:16:32 2006
@@ -34,6 +34,7 @@
 import javax.ejb.EJBException;
 
 import org.apache.openejb.RpcContainer;
+import org.apache.openejb.InterfaceType;
 import org.apache.openejb.spi.SecurityService;
 import org.apache.openejb.spi.ContainerSystem;
 import org.apache.openejb.loader.SystemInstance;
@@ -72,8 +73,10 @@
     */
     protected boolean doIntraVmCopy;
     private boolean isLocal;
+    protected final InterfaceType interfaceType;
 
-    public BaseEjbProxyHandler(RpcContainer container, Object pk, Object depID) {
+    public BaseEjbProxyHandler(RpcContainer container, Object pk, Object depID, InterfaceType interfaceType) {
+        this.interfaceType = interfaceType;
         this.container = container;
         this.primaryKey = pk;
         this.deploymentID = depID;

Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/EjbHomeProxyHandler.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/EjbHomeProxyHandler.java?view=diff&rev=465182&r1=465181&r2=465182
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/EjbHomeProxyHandler.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/EjbHomeProxyHandler.java Wed Oct 18 02:16:32 2006
@@ -25,6 +25,7 @@
 
 import org.apache.openejb.ProxyInfo;
 import org.apache.openejb.RpcContainer;
+import org.apache.openejb.InterfaceType;
 import org.apache.openejb.loader.SystemInstance;
 import org.apache.openejb.spi.ApplicationServer;
 import org.apache.openejb.core.ThreadContext;
@@ -43,8 +44,8 @@
         dispatchTable.put("remove", new Integer(4));
     }
 
-    public EjbHomeProxyHandler(RpcContainer container, Object pk, Object depID) {
-        super(container, pk, depID);
+    public EjbHomeProxyHandler(RpcContainer container, Object pk, Object depID, InterfaceType interfaceType) {
+        super(container, pk, depID, interfaceType);
     }
 
     public void invalidateReference() {
@@ -55,7 +56,15 @@
 
         Object newProxy = null;
         try {
-            EjbObjectProxyHandler handler = newEjbObjectHandler(proxyInfo.getBeanContainer(), proxyInfo.getPrimaryKey(), proxyInfo.getDeploymentInfo().getDeploymentID());
+
+            InterfaceType interfaceType = InterfaceType.EJB_OBJECT;
+            switch(this.interfaceType){
+                case EJB_HOME: interfaceType = InterfaceType.EJB_OBJECT; break;
+                case EJB_LOCAL_HOME: interfaceType = InterfaceType.EJB_LOCAL; break;
+                case BUSINESS_REMOTE_HOME: interfaceType = InterfaceType.BUSINESS_REMOTE; break;
+                case BUSINESS_LOCAL_HOME: interfaceType = InterfaceType.BUSINESS_LOCAL; break;
+            }
+            EjbObjectProxyHandler handler = newEjbObjectHandler(proxyInfo.getBeanContainer(), proxyInfo.getPrimaryKey(), proxyInfo.getDeploymentInfo().getDeploymentID(), interfaceType);
             handler.setLocal(isLocal());
             handler.doIntraVmCopy = this.doIntraVmCopy;
             Class[] interfaces = new Class[]{proxyInfo.getInterface(), IntraVmProxy.class};
@@ -68,7 +77,7 @@
         return newProxy;
     }
 
-    protected abstract EjbObjectProxyHandler newEjbObjectHandler(RpcContainer container, Object pk, Object depID);
+    protected abstract EjbObjectProxyHandler newEjbObjectHandler(RpcContainer container, Object pk, Object depID, InterfaceType interfaceType);
 
     protected Object _invoke(Object proxy, Method method, Object[] args) throws Throwable {
 
@@ -204,7 +213,7 @@
     }
 
     public org.apache.openejb.ProxyInfo getProxyInfo() {
-        return new org.apache.openejb.ProxyInfo(deploymentInfo, null, deploymentInfo.getHomeInterface(), container);
+        return new org.apache.openejb.ProxyInfo(deploymentInfo, null, deploymentInfo.getHomeInterface(), container, interfaceType);
     }
 
     protected Object _writeReplace(Object proxy) throws ObjectStreamException {

Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/EjbObjectProxyHandler.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/EjbObjectProxyHandler.java?view=diff&rev=465182&r1=465181&r2=465182
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/EjbObjectProxyHandler.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/EjbObjectProxyHandler.java Wed Oct 18 02:16:32 2006
@@ -21,6 +21,7 @@
 import java.rmi.RemoteException;
 
 import org.apache.openejb.RpcContainer;
+import org.apache.openejb.InterfaceType;
 import org.apache.openejb.loader.SystemInstance;
 import org.apache.openejb.spi.ApplicationServer;
 
@@ -38,8 +39,8 @@
         dispatchTable.put("getEJBHome", new Integer(5));
     }
 
-    public EjbObjectProxyHandler(RpcContainer container, Object pk, Object depID, Class homeInterface) {
-        super(container, pk, depID);
+    public EjbObjectProxyHandler(RpcContainer container, Object pk, Object depID, Class homeInterface, InterfaceType interfaceType) {
+        super(container, pk, depID, interfaceType);
     }
 
     public abstract Object getRegistryId();
@@ -137,7 +138,7 @@
     }
 
     public org.apache.openejb.ProxyInfo getProxyInfo() {
-        return new org.apache.openejb.ProxyInfo(deploymentInfo, primaryKey, isLocal(), container);
+        return new org.apache.openejb.ProxyInfo(deploymentInfo, primaryKey, deploymentInfo.getInterface(interfaceType), container, interfaceType);
     }
 
     protected Object _writeReplace(Object proxy) throws ObjectStreamException {

Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/IntraVmServer.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/IntraVmServer.java?view=diff&rev=465182&r1=465181&r2=465182
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/IntraVmServer.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/IntraVmServer.java Wed Oct 18 02:16:32 2006
@@ -23,6 +23,7 @@
 import javax.ejb.HomeHandle;
 
 import org.apache.openejb.ProxyInfo;
+import org.apache.openejb.InterfaceType;
 import org.apache.openejb.core.entity.EntityEjbHomeHandler;
 import org.apache.openejb.core.stateful.StatefulEjbHomeHandler;
 import org.apache.openejb.core.stateless.StatelessEjbHomeHandler;
@@ -73,13 +74,13 @@
 
             case org.apache.openejb.DeploymentInfo.BMP_ENTITY:
             case org.apache.openejb.DeploymentInfo.CMP_ENTITY:
-                return new EntityEjbHomeHandler(pi.getBeanContainer(), pi.getPrimaryKey(), pi.getDeploymentInfo().getDeploymentID());
+                return new EntityEjbHomeHandler(pi.getBeanContainer(), pi.getPrimaryKey(), pi.getDeploymentInfo().getDeploymentID(), InterfaceType.EJB_HOME);
 
             case org.apache.openejb.DeploymentInfo.STATEFUL:
-                return new StatefulEjbHomeHandler(pi.getBeanContainer(), pi.getPrimaryKey(), pi.getDeploymentInfo().getDeploymentID());
+                return new StatefulEjbHomeHandler(pi.getBeanContainer(), pi.getPrimaryKey(), pi.getDeploymentInfo().getDeploymentID(), InterfaceType.EJB_HOME);
 
             case org.apache.openejb.DeploymentInfo.STATELESS:
-                return new StatelessEjbHomeHandler(pi.getBeanContainer(), pi.getPrimaryKey(), pi.getDeploymentInfo().getDeploymentID());
+                return new StatelessEjbHomeHandler(pi.getBeanContainer(), pi.getPrimaryKey(), pi.getDeploymentInfo().getDeploymentID(), InterfaceType.EJB_HOME);
             default:
                 throw new RuntimeException("Unknown EJB type: " + pi.getDeploymentInfo());
         }

Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateful/StatefulContext.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateful/StatefulContext.java?view=diff&rev=465182&r1=465181&r2=465182
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateful/StatefulContext.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateful/StatefulContext.java Wed Oct 18 02:16:32 2006
@@ -17,6 +17,7 @@
 package org.apache.openejb.core.stateful;
 
 import org.apache.openejb.RpcContainer;
+import org.apache.openejb.InterfaceType;
 import org.apache.openejb.loader.SystemInstance;
 import org.apache.openejb.core.Operations;
 import org.apache.openejb.core.ThreadContext;
@@ -112,8 +113,8 @@
 
     }
 
-    protected EjbObjectProxyHandler newEjbObjectHandler(RpcContainer container, Object pk, Object depID) {
-        return new StatefulEjbObjectHandler(container, pk, depID);
+    protected EjbObjectProxyHandler newEjbObjectHandler(RpcContainer container, Object pk, Object depID, InterfaceType interfaceType) {
+        return new StatefulEjbObjectHandler(container, pk, depID, interfaceType);
     }
 
     public MessageContext getMessageContext() {

Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateful/StatefulEjbHomeHandler.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateful/StatefulEjbHomeHandler.java?view=diff&rev=465182&r1=465181&r2=465182
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateful/StatefulEjbHomeHandler.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateful/StatefulEjbHomeHandler.java Wed Oct 18 02:16:32 2006
@@ -18,6 +18,7 @@
 
 import org.apache.openejb.ProxyInfo;
 import org.apache.openejb.RpcContainer;
+import org.apache.openejb.InterfaceType;
 import org.apache.openejb.core.ivm.EjbHomeProxyHandler;
 import org.apache.openejb.core.ivm.EjbObjectProxyHandler;
 import org.apache.openejb.util.proxy.ProxyManager;
@@ -27,8 +28,8 @@
 
 public class StatefulEjbHomeHandler extends EjbHomeProxyHandler {
 
-    public StatefulEjbHomeHandler(RpcContainer container, Object pk, Object depID) {
-        super(container, pk, depID);
+    public StatefulEjbHomeHandler(RpcContainer container, Object pk, Object depID, InterfaceType interfaceType) {
+        super(container, pk, depID, interfaceType);
     }
 
     protected Object createProxy(ProxyInfo proxyInfo) {
@@ -49,8 +50,8 @@
         throw new RemoteException("Session objects are private resources and do not have primary keys");
     }
 
-    protected EjbObjectProxyHandler newEjbObjectHandler(RpcContainer container, Object pk, Object depID) {
-        return new StatefulEjbObjectHandler(container, pk, depID);
+    protected EjbObjectProxyHandler newEjbObjectHandler(RpcContainer container, Object pk, Object depID, InterfaceType interfaceType) {
+        return new StatefulEjbObjectHandler(container, pk, depID, interfaceType);
     }
 
 }

Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateful/StatefulEjbObjectHandler.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateful/StatefulEjbObjectHandler.java?view=diff&rev=465182&r1=465181&r2=465182
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateful/StatefulEjbObjectHandler.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateful/StatefulEjbObjectHandler.java Wed Oct 18 02:16:32 2006
@@ -17,6 +17,7 @@
 package org.apache.openejb.core.stateful;
 
 import org.apache.openejb.RpcContainer;
+import org.apache.openejb.InterfaceType;
 import org.apache.openejb.core.ivm.EjbObjectProxyHandler;
 import org.apache.openejb.util.proxy.ProxyManager;
 
@@ -25,8 +26,8 @@
 
 public class StatefulEjbObjectHandler extends EjbObjectProxyHandler {
 
-    public StatefulEjbObjectHandler(RpcContainer container, Object pk, Object depID) {
-        super(container, pk, depID, null);
+    public StatefulEjbObjectHandler(RpcContainer container, Object pk, Object depID, InterfaceType interfaceType) {
+        super(container, pk, depID, null, interfaceType);
     }
 
     public Object getRegistryId() {

Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateless/StatelessContext.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateless/StatelessContext.java?view=diff&rev=465182&r1=465181&r2=465182
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateless/StatelessContext.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateless/StatelessContext.java Wed Oct 18 02:16:32 2006
@@ -17,6 +17,7 @@
 package org.apache.openejb.core.stateless;
 
 import org.apache.openejb.RpcContainer;
+import org.apache.openejb.InterfaceType;
 import org.apache.openejb.core.CoreDeploymentInfo;
 import org.apache.openejb.core.Operations;
 import org.apache.openejb.core.ThreadContext;
@@ -102,8 +103,8 @@
 
     }
 
-    protected EjbObjectProxyHandler newEjbObjectHandler(RpcContainer container, Object pk, Object depID) {
-        return new StatelessEjbObjectHandler(container, pk, depID);
+    protected EjbObjectProxyHandler newEjbObjectHandler(RpcContainer container, Object pk, Object depID, InterfaceType interfaceType) {
+        return new StatelessEjbObjectHandler(container, pk, depID, interfaceType);
     }
 
     public MessageContext getMessageContext() {

Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateless/StatelessEjbHomeHandler.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateless/StatelessEjbHomeHandler.java?view=diff&rev=465182&r1=465181&r2=465182
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateless/StatelessEjbHomeHandler.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateless/StatelessEjbHomeHandler.java Wed Oct 18 02:16:32 2006
@@ -17,6 +17,7 @@
 package org.apache.openejb.core.stateless;
 
 import org.apache.openejb.RpcContainer;
+import org.apache.openejb.InterfaceType;
 import org.apache.openejb.core.ThreadContext;
 import org.apache.openejb.core.ivm.EjbHomeProxyHandler;
 import org.apache.openejb.core.ivm.EjbObjectProxyHandler;
@@ -28,8 +29,8 @@
 
 public class StatelessEjbHomeHandler extends EjbHomeProxyHandler {
 
-    public StatelessEjbHomeHandler(RpcContainer container, Object pk, Object depID) {
-        super(container, pk, depID);
+    public StatelessEjbHomeHandler(RpcContainer container, Object pk, Object depID, InterfaceType interfaceType) {
+        super(container, pk, depID, interfaceType);
     }
 
     protected Object findX(Method method, Object[] args, Object proxy) throws Throwable {
@@ -66,8 +67,8 @@
         return null;
     }
 
-    protected EjbObjectProxyHandler newEjbObjectHandler(RpcContainer container, Object pk, Object depID) {
-        return new StatelessEjbObjectHandler(container, pk, depID);
+    protected EjbObjectProxyHandler newEjbObjectHandler(RpcContainer container, Object pk, Object depID, InterfaceType interfaceType) {
+        return new StatelessEjbObjectHandler(container, pk, depID, interfaceType);
     }
 
 }

Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateless/StatelessEjbObjectHandler.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateless/StatelessEjbObjectHandler.java?view=diff&rev=465182&r1=465181&r2=465182
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateless/StatelessEjbObjectHandler.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateless/StatelessEjbObjectHandler.java Wed Oct 18 02:16:32 2006
@@ -18,6 +18,7 @@
 
 import org.apache.openejb.Container;
 import org.apache.openejb.RpcContainer;
+import org.apache.openejb.InterfaceType;
 import org.apache.openejb.core.ivm.EjbObjectProxyHandler;
 import org.apache.openejb.util.proxy.ProxyManager;
 
@@ -27,8 +28,8 @@
 public class StatelessEjbObjectHandler extends EjbObjectProxyHandler {
     public Object registryId;
 
-    public StatelessEjbObjectHandler(RpcContainer container, Object pk, Object depID) {
-        super(container, pk, depID, null);
+    public StatelessEjbObjectHandler(RpcContainer container, Object pk, Object depID, InterfaceType interfaceType) {
+        super(container, pk, depID, null, interfaceType);
     }
 
     public static Object createRegistryId(Object primKey, Object deployId, Container contnr) {

Modified: incubator/openejb/trunk/openejb3/server/openejb-ejbd/src/main/java/org/apache/openejb/server/ejbd/JndiRequestHandler.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/server/openejb-ejbd/src/main/java/org/apache/openejb/server/ejbd/JndiRequestHandler.java?view=diff&rev=465182&r1=465181&r2=465182
==============================================================================
--- incubator/openejb/trunk/openejb3/server/openejb-ejbd/src/main/java/org/apache/openejb/server/ejbd/JndiRequestHandler.java (original)
+++ incubator/openejb/trunk/openejb3/server/openejb-ejbd/src/main/java/org/apache/openejb/server/ejbd/JndiRequestHandler.java Wed Oct 18 02:16:32 2006
@@ -93,51 +93,67 @@
         String deploymentID = deployment.getDeploymentID().toString();
 
         //DMB: HACK as proxyInfo.getInterface() reports the wrong interface, will fix that next.
-        //Class interfce = proxyInfo.getInterface();
-        Class interfce = getProxyInterface(object);
+        Class interfce = proxyInfo.getInterface();
+//        Class interfce = getProxyInterface(object);
 
-        if (handler instanceof EjbHomeProxyHandler && interfce.isAssignableFrom(deployment.getHomeInterface())){
-            res.setResponseCode(JNDI_EJBHOME);
-            EJBMetaDataImpl metaData = new EJBMetaDataImpl(deployment.getHomeInterface(),
-                    deployment.getRemoteInterface(),
-                    deployment.getPrimaryKeyClass(),
-                    deployment.getComponentType(),
-                    deploymentID,
-                    this.daemon.deploymentIndex.getDeploymentIndex(deploymentID));
-            res.setResult(metaData);
-        } else if (handler instanceof EjbHomeProxyHandler && interfce.isAssignableFrom(deployment.getLocalHomeInterface())){
-            res.setResponseCode(JNDI_NAMING_EXCEPTION);
-            res.setResult(new NamingException("Not remotable: '"+name+"'. EJBLocalHome interfaces are not remotable as per the EJB specification."));
-        } else if (handler instanceof EjbObjectProxyHandler && interfce.isAssignableFrom(deployment.getBusinessRemoteInterface())){
-            res.setResponseCode(JNDI_BUSINESS_OBJECT);
-            EJBMetaDataImpl metaData = new EJBMetaDataImpl(null,
-                    deployment.getBusinessRemoteInterface(),
-                    deployment.getPrimaryKeyClass(),
-                    deployment.getComponentType(),
-                    deploymentID,
-                    this.daemon.deploymentIndex.getDeploymentIndex(deploymentID));
-            Object[] data = {metaData, proxyInfo.getPrimaryKey()};
-            res.setResult(data);
-        } else if (handler instanceof EjbObjectProxyHandler && interfce.isAssignableFrom(deployment.getBusinessLocalInterface())){
-            String property = SystemInstance.get().getProperty("openejb.businessLocal", "remotable");
-            if (property.equalsIgnoreCase("remotable")) {
+        switch(proxyInfo.getInterfaceType()){
+            case EJB_HOME: {
+                res.setResponseCode(JNDI_EJBHOME);
+                EJBMetaDataImpl metaData = new EJBMetaDataImpl(deployment.getHomeInterface(),
+                        deployment.getRemoteInterface(),
+                        deployment.getPrimaryKeyClass(),
+                        deployment.getComponentType(),
+                        deploymentID,
+                        this.daemon.deploymentIndex.getDeploymentIndex(deploymentID));
+                res.setResult(metaData);
+                break;
+            }
+            case EJB_LOCAL_HOME: {
+                res.setResponseCode(JNDI_NAMING_EXCEPTION);
+                res.setResult(new NamingException("Not remotable: '"+name+"'. EJBLocalHome interfaces are not remotable as per the EJB specification."));
+                break;
+            }
+            case BUSINESS_REMOTE: {
                 res.setResponseCode(JNDI_BUSINESS_OBJECT);
                 EJBMetaDataImpl metaData = new EJBMetaDataImpl(null,
-                        deployment.getBusinessLocalInterface(),
+                        deployment.getBusinessRemoteInterface(),
                         deployment.getPrimaryKeyClass(),
                         deployment.getComponentType(),
                         deploymentID,
                         this.daemon.deploymentIndex.getDeploymentIndex(deploymentID));
                 Object[] data = {metaData, proxyInfo.getPrimaryKey()};
                 res.setResult(data);
-            } else {
+                break;
+            }
+            case BUSINESS_LOCAL: {
+                String property = SystemInstance.get().getProperty("openejb.businessLocal", "remotable");
+                if (property.equalsIgnoreCase("remotable")) {
+                    res.setResponseCode(JNDI_BUSINESS_OBJECT);
+                    EJBMetaDataImpl metaData = new EJBMetaDataImpl(null,
+                            deployment.getBusinessLocalInterface(),
+                            deployment.getPrimaryKeyClass(),
+                            deployment.getComponentType(),
+                            deploymentID,
+                            this.daemon.deploymentIndex.getDeploymentIndex(deploymentID));
+                    Object[] data = {metaData, proxyInfo.getPrimaryKey()};
+                    res.setResult(data);
+                } else {
+                    res.setResponseCode(JNDI_NAMING_EXCEPTION);
+                    res.setResult(new NamingException("Not remotable: '"+name+"'. Business Local interfaces are not remotable as per the EJB specification.  To disable this restriction, set the system property 'openejb.businessLocal=remotable' in the server."));
+                }
+                break;
+            }
+            default: {
                 res.setResponseCode(JNDI_NAMING_EXCEPTION);
-                res.setResult(new NamingException("Not remotable: '"+name+"'. Business Local interfaces are not remotable as per the EJB specification.  To disable this restriction, set the system property 'openejb.businessLocal=remotable' in the server."));
+                res.setResult(new NamingException("Not remotable: '"+name+"'."));
             }
-        } else {
-            res.setResponseCode(JNDI_NAMING_EXCEPTION);
-            res.setResult(new NamingException("Not remotable: '"+name+"'."));
         }
+//        if (handler instanceof EjbHomeProxyHandler && interfce.isAssignableFrom(deployment.getHomeInterface())){
+//        } else if (handler instanceof EjbHomeProxyHandler && interfce.isAssignableFrom(deployment.getLocalHomeInterface())){
+//        } else if (handler instanceof EjbObjectProxyHandler && interfce.isAssignableFrom(deployment.getBusinessRemoteInterface())){
+//        } else if (handler instanceof EjbObjectProxyHandler && interfce.isAssignableFrom(deployment.getBusinessLocalInterface())){
+//        } else {
+//        }
 
         res.writeExternal(out);
     }