Unfortunately, I believe it was the 10PM fix that caused the TCK breakages. The problems first appeared for me after I rebuilt saturday morning, and are still there this morning.

Rick


David Blevins wrote:

On Apr 23, 2007, at 1:09 AM, Kevan Miller wrote:

David Blevins,
This change has caused some breakage in Geronimo TCK testing.

Would be great if you could have a look...

You may have missed the commit around 10pm fixing this. Update OpenEJB and Geronimo it should be fixed.

-David


--kevan

On Apr 19, 2007, at 11:42 PM, [EMAIL PROTECTED] wrote:

Author: dblevins
Date: Thu Apr 19 20:42:11 2007
New Revision: 530626

URL: http://svn.apache.org/viewvc?view=rev&rev=530626
Log:
Support for one proxy per business interface.  more to come.

Modified:
incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EjbLocalReferenceInfo.java incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/JndiBuilder.java incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/JndiEncBuilder.java incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/JndiEncInfoBuilder.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/ivm/EjbHomeProxyHandler.java incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateful/StatefulContainer.java incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateful/StatefulContainerManagedTxPolicy.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/src/main/java/org/apache/openejb/assembler/classic/EjbLocalReferenceInfo.java URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EjbLocalReferenceInfo.java?view=diff&rev=530626&r1=530625&r2=530626 ============================================================================== --- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EjbLocalReferenceInfo.java (original) +++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EjbLocalReferenceInfo.java Thu Apr 19 20:42:11 2007
@@ -20,6 +20,7 @@

     public String referenceName;
     public String homeType;
+    public String localType;
     public String ejbDeploymentId;

     public ReferenceLocationInfo location;

Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/JndiBuilder.java URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/JndiBuilder.java?view=diff&rev=530626&r1=530625&r2=530626 ============================================================================== --- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/JndiBuilder.java (original) +++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/JndiBuilder.java Thu Apr 19 20:42:11 2007
@@ -143,7 +143,10 @@
             if (homeInterface != null) {
String name = strategy.getName(deployment, homeInterface, JndiNameStrategy.Interface.REMOTE_HOME);
                 bindings.add(name);
- context.bind("openejb/ejb/" + name, new ObjectReference(deployment.getEJBHome())); + ObjectReference ref = new ObjectReference(deployment.getEJBHome());
+                context.bind("openejb/ejb/" + name, ref);
+ name = deployment.getDeploymentID() + "/" + deployment.getRemoteInterface().getName();
+                context.bind("openejb/Deployment/" + name, ref);
             }
         } catch (NamingException e) {
throw new RuntimeException("Unable to bind home interface for deployment " + id, e);
@@ -154,7 +157,9 @@
             if (localHomeInterface != null) {
String name = strategy.getName(deployment, localHomeInterface, JndiNameStrategy.Interface.LOCAL_HOME);
                 bindings.add(name);
- context.bind("openejb/ejb/" + name, new ObjectReference(deployment.getEJBLocalHome())); + ObjectReference ref = new ObjectReference(deployment.getEJBLocalHome());
+                context.bind("openejb/ejb/" + name, ref);
+ context.bind("openejb/Deployment/" + deployment.getDeploymentID() + "/" + deployment.getLocalInterface().getName(), ref);
             }
         } catch (NamingException e) {
throw new RuntimeException("Unable to bind local interface for deployment " + id, e);
@@ -167,6 +172,11 @@
DeploymentInfo.BusinessLocalHome businessLocalHome = deployment.getBusinessLocalHome();
                 bindings.add(name);
context.bind("openejb/ejb/" + name, new BusinessLocalReference(businessLocalHome));
+
+ for (Class interfce : deployment.getBusinessLocalInterfaces()) { + DeploymentInfo.BusinessLocalHome home = deployment.getBusinessLocalHome(asList(interfce)); + context.bind("openejb/Deployment/" + deployment.getDeploymentID() + "/" + interfce.getName(), new BusinessLocalReference(home));
+                }
             }
         } catch (NamingException e) {
throw new RuntimeException("Unable to bind business local interface for deployment " + id, e);
@@ -178,7 +188,13 @@
String name = strategy.getName(deployment, businessRemoteInterface, JndiNameStrategy.Interface.BUSINESS_REMOTE); DeploymentInfo.BusinessRemoteHome businessRemoteHome = deployment.getBusinessRemoteHome();
                 bindings.add(name);
- context.bind("openejb/ejb/" + name, new BusinessRemoteReference(businessRemoteHome)); + BusinessRemoteReference ref = new BusinessRemoteReference(businessRemoteHome);
+                context.bind("openejb/ejb/" + name, ref);
+
+ for (Class interfce : deployment.getBusinessRemoteInterfaces()) { + DeploymentInfo.BusinessRemoteHome home = deployment.getBusinessRemoteHome(asList(interfce)); + context.bind("openejb/Deployment/" + deployment.getDeploymentID() + "/" + interfce.getName(), new BusinessRemoteReference(home));
+                }
             }
         } catch (NamingException e) {
throw new RuntimeException("Unable to bind business remote deployment in jndi.", e);
@@ -204,6 +220,12 @@
         } catch (NamingException e) {
throw new RuntimeException("Unable to bind mdb destination in jndi.", e);
         }
+    }
+
+    private static List<Class> asList(Class interfce) {
+        List<Class> list = new ArrayList<Class>();
+        list.add(interfce);
+        return list;
     }

     protected static final class Bindings {

Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/JndiEncBuilder.java URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/JndiEncBuilder.java?view=diff&rev=530626&r1=530625&r2=530626 ============================================================================== --- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/JndiEncBuilder.java (original) +++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/JndiEncBuilder.java Thu Apr 19 20:42:11 2007
@@ -183,22 +183,11 @@
             if (referenceInfo.location != null) {
reference = buildReferenceLocation(referenceInfo.location);
             } else {
- // TODO: Before JndiNameStrategy can be used, this assumption has to be updated
-                if (referenceInfo.homeType == null){
- String jndiName = "java:openejb/ejb/" + referenceInfo.ejbDeploymentId + "BusinessRemote"; - if (useCrossClassLoaderRef && referenceInfo.externalReference) { - reference = new CrossClassLoaderJndiReference(jndiName);
-                    } else {
- reference = new IntraVmJndiReference(jndiName);
-                    }
+ String jndiName = "java:openejb/Deployment/" + referenceInfo.ejbDeploymentId + "/" + referenceInfo.remoteType; + if (useCrossClassLoaderRef && referenceInfo.externalReference) { + reference = new CrossClassLoaderJndiReference(jndiName);
                 } else {
- // TODO: Before JndiNameStrategy can be used, this assumption has to be updated - String jndiName = "java:openejb/ejb/" + referenceInfo.ejbDeploymentId; - if (useCrossClassLoaderRef && referenceInfo.externalReference) { - reference = new CrossClassLoaderJndiReference(jndiName);
-                    } else {
- reference = new IntraVmJndiReference(jndiName);
-                    }
+                    reference = new IntraVmJndiReference(jndiName);
                 }
             }
bindings.put(normalize(referenceInfo.referenceName), reference);
@@ -210,12 +199,8 @@

             if (referenceInfo.location != null) {
reference = buildReferenceLocation(referenceInfo.location);
-            } else if (referenceInfo.homeType == null){
- // TODO: Before JndiNameStrategy can be used, this assumption has to be updated - String jndiName = "java:openejb/ejb/" + referenceInfo.ejbDeploymentId + "BusinessLocal";
-                reference = new IntraVmJndiReference(jndiName);
             } else {
- String jndiName = "java:openejb/ejb/" + referenceInfo.ejbDeploymentId + "Local"; + String jndiName = "java:openejb/Deployment/" + referenceInfo.ejbDeploymentId + "/" + referenceInfo.localType;
                 reference = new IntraVmJndiReference(jndiName);
             }
bindings.put(normalize(referenceInfo.referenceName), reference);

Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/JndiEncInfoBuilder.java URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/JndiEncInfoBuilder.java?view=diff&rev=530626&r1=530625&r2=530626 ============================================================================== --- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/JndiEncInfoBuilder.java (original) +++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/JndiEncInfoBuilder.java Thu Apr 19 20:42:11 2007
@@ -361,6 +361,7 @@
             EjbLocalReferenceInfo info = new EjbLocalReferenceInfo();

             info.homeType = ejb.getLocalHome();
+            info.localType = ejb.getLocal();
             info.referenceName = ejb.getEjbRefName();

             // assign location to a global jndi name

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=530626&r1=530625&r2=530626 ============================================================================== --- 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 Thu Apr 19 20:42:11 2007
@@ -506,7 +506,7 @@
             }
         }

- return (BusinessLocalHome) EjbHomeProxyHandler.createHomeProxy(this, InterfaceType.BUSINESS_LOCAL_HOME); + return (BusinessLocalHome) EjbHomeProxyHandler.createHomeProxy(this, InterfaceType.BUSINESS_LOCAL_HOME, interfaces);
     }

     public BusinessRemoteHome getBusinessRemoteHome() {
@@ -526,7 +526,7 @@
             }
         }

- return (BusinessRemoteHome) EjbHomeProxyHandler.createHomeProxy(this, InterfaceType.BUSINESS_REMOTE_HOME); + return (BusinessRemoteHome) EjbHomeProxyHandler.createHomeProxy(this, InterfaceType.BUSINESS_REMOTE_HOME, interfaces);
     }

     public String getMessageDestination() {

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=530626&r1=530625&r2=530626 ============================================================================== --- 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 Thu Apr 19 20:42:11 2007
@@ -97,7 +97,7 @@
         return createHomeProxy(deploymentInfo, interfaceType, null);
     }

- public static Object createHomeProxy(DeploymentInfo deploymentInfo, InterfaceType interfaceType, ArrayList<Class> objectInterfaces) { + public static Object createHomeProxy(DeploymentInfo deploymentInfo, InterfaceType interfaceType, List<Class> objectInterfaces) { if (!interfaceType.isHome()) throw new IllegalArgumentException("InterfaceType is not a Home type: " + interfaceType);

         try {
@@ -105,7 +105,8 @@

             List<Class> proxyInterfaces = new ArrayList<Class>(2);

- proxyInterfaces.add(deploymentInfo.getInterface(interfaceType)); + Class homeInterface = deploymentInfo.getInterface(interfaceType);
+            proxyInterfaces.add(homeInterface);
             proxyInterfaces.add(IntraVmProxy.class);

return ProxyManager.newProxyInstance(proxyInterfaces.toArray(new Class[]{}), handler);

Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateful/StatefulContainer.java URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateful/StatefulContainer.java?view=diff&rev=530626&r1=530625&r2=530626 ============================================================================== --- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateful/StatefulContainer.java (original) +++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateful/StatefulContainer.java Thu Apr 19 20:42:11 2007
@@ -39,6 +39,7 @@
 import org.apache.openejb.OpenEJBException;
 import org.apache.openejb.ProxyInfo;
 import org.apache.openejb.RpcContainer;
+import org.apache.openejb.InvalidateReferenceException;
 import org.apache.openejb.core.CoreDeploymentInfo;
 import org.apache.openejb.core.Operation;
 import org.apache.openejb.core.ThreadContext;
@@ -315,6 +316,8 @@
InterceptorStack interceptorStack = new InterceptorStack(instance.bean, runMethod, Operation.REMOVE, interceptors, instance.interceptors); _invoke(callMethod, interceptorStack, args, instance, callContext);

+            } catch(InvalidateReferenceException e){
+                throw e;
             } catch(ApplicationException e){
                 retain = deploymentInfo.retainIfExeption(runMethod);
                 throw e;

Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateful/StatefulContainerManagedTxPolicy.java URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateful/StatefulContainerManagedTxPolicy.java?view=diff&rev=530626&r1=530625&r2=530626 ============================================================================== --- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateful/StatefulContainerManagedTxPolicy.java (original) +++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateful/StatefulContainerManagedTxPolicy.java Thu Apr 19 20:42:11 2007
@@ -54,7 +54,10 @@
public void handleSystemException(Throwable sysException, Object instance, TransactionContext context) throws ApplicationException, SystemException {
         try {
policy.handleSystemException(sysException, instance, context);
+        } catch (InvalidateReferenceException e) {
+            throw e;
         } catch (ApplicationException e) {
+            // DMB: Not sure we want this here
             throw new InvalidateReferenceException(e.getRootCause());
         }
     }

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=530626&r1=530625&r2=530626 ============================================================================== --- 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 Thu Apr 19 20:42:11 2007
@@ -162,7 +162,7 @@
                         deployment.getPrimaryKeyClass(),
                         deployment.getComponentType().toString(),
                         deploymentID,
-                        -1, deployment.getBusinessRemoteInterfaces());
+                        -1, proxyInfo.getInterfaces());
                 Object[] data = {metaData, proxyInfo.getPrimaryKey()};
                 res.setResult(data);
                 break;
@@ -172,11 +172,11 @@
                 if (property.equalsIgnoreCase("remotable")) {
res.setResponseCode(ResponseCodes.JNDI_BUSINESS_OBJECT); EJBMetaDataImpl metaData = new EJBMetaDataImpl(null,
-                            deployment.getBusinessLocalInterface(),
+                            null,
                             deployment.getPrimaryKeyClass(),
                             deployment.getComponentType().toString(),
                             deploymentID,
-                            -1, null);
+                            -1, proxyInfo.getInterfaces());
Object[] data = {metaData, proxyInfo.getPrimaryKey()};
                     res.setResult(data);
                 } else {






Reply via email to