[jboss-cvs] JBossAS SVN: r75334 - in projects/metadata/trunk/src: test/java/org/jboss/test/metadata/ejb and 1 other directory.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Thu Jul 3 04:52:35 EDT 2008


Author: emuckenhuber
Date: 2008-07-03 04:52:35 -0400 (Thu, 03 Jul 2008)
New Revision: 75334

Modified:
   projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/JBossEnterpriseBeanMetaData.java
   projects/metadata/trunk/src/test/java/org/jboss/test/metadata/ejb/EjbJarJBossMergeEverythingUnitTestCase.java
Log:
[JBMETA-45] merge ejbRefs invokerBindings

Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/JBossEnterpriseBeanMetaData.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/JBossEnterpriseBeanMetaData.java	2008-07-03 08:37:46 UTC (rev 75333)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/JBossEnterpriseBeanMetaData.java	2008-07-03 08:52:35 UTC (rev 75334)
@@ -1974,6 +1974,39 @@
          securityIdentity.merge(overrideSecId, originalSecId);
       }
       
+      // Fixup the invoker binding references on ejb refs
+      InvokerBindingsMetaData invokerBindings = getInvokerBindings();
+      if (invokerBindings != null && invokerBindings.isEmpty() == false)
+      {
+         for (InvokerBindingMetaData invokerBinding : invokerBindings)
+         {
+            if(invokerBinding.getEjbRefs() != null)
+            {
+               for(InvokerBindingMetaData.EjbRef ejbRef : invokerBinding.getEjbRefs())
+               {
+                  EJBReferenceMetaData targetEjbRef = jndiEnvironmentRefsGroup.getEjbReferenceByName(ejbRef.getEjbRefName());
+                  if (targetEjbRef == null)
+                     throw new IllegalStateException("ejb-ref " + ejbRef.getEjbRefName() + " found on invoker " + invokerBinding.getName() + " but it does not exist for ejb: " + getName());
+                  targetEjbRef.addInvokerBinding(invokerBinding.getName(), ejbRef.getJndiName());
+               }
+            }
+         }
+      }
+      
+      // Fixup the security identity
+      SecurityIdentityMetaData jbossSecurityIdentity = null;
+      if (override != null && override.getSecurityIdentity() != null)
+         jbossSecurityIdentity = override.getSecurityIdentity();
+      SecurityIdentityMetaData originalSecurityIdentity = null;
+      if(original != null)
+         originalSecurityIdentity = original.getSecurityIdentity();
+      if(jbossSecurityIdentity != null || originalSecurityIdentity != null)
+      {
+         if(securityIdentity == null)
+            securityIdentity = new SecurityIdentityMetaData();
+         securityIdentity.merge(jbossSecurityIdentity, originalSecurityIdentity);
+      }
+      
       if(original instanceof JBossGenericBeanMetaData)
          merge((JBossGenericBeanMetaData)original);
       if(override instanceof JBossGenericBeanMetaData)

Modified: projects/metadata/trunk/src/test/java/org/jboss/test/metadata/ejb/EjbJarJBossMergeEverythingUnitTestCase.java
===================================================================
--- projects/metadata/trunk/src/test/java/org/jboss/test/metadata/ejb/EjbJarJBossMergeEverythingUnitTestCase.java	2008-07-03 08:37:46 UTC (rev 75333)
+++ projects/metadata/trunk/src/test/java/org/jboss/test/metadata/ejb/EjbJarJBossMergeEverythingUnitTestCase.java	2008-07-03 08:52:35 UTC (rev 75334)
@@ -35,10 +35,13 @@
 import org.jboss.metadata.annotation.creator.ejb.EjbJar30Creator;
 import org.jboss.metadata.annotation.finder.AnnotationFinder;
 import org.jboss.metadata.annotation.finder.DefaultAnnotationFinder;
+import org.jboss.metadata.ejb.jboss.InvokerBindingMetaData;
+import org.jboss.metadata.ejb.jboss.InvokerBindingsMetaData;
 import org.jboss.metadata.ejb.jboss.JBoss50DTDMetaData;
 import org.jboss.metadata.ejb.jboss.JBoss50MetaData;
 import org.jboss.metadata.ejb.jboss.JBossEnterpriseBeanMetaData;
 import org.jboss.metadata.ejb.jboss.JBossEnterpriseBeansMetaData;
+import org.jboss.metadata.ejb.jboss.JBossEnvironmentRefsGroupMetaData;
 import org.jboss.metadata.ejb.jboss.JBossMessageDrivenBeanMetaData;
 import org.jboss.metadata.ejb.jboss.JBossMetaData;
 import org.jboss.metadata.ejb.jboss.JBossSessionBeanMetaData;
@@ -50,6 +53,9 @@
 import org.jboss.metadata.ejb.spec.SessionBeanMetaData;
 import org.jboss.metadata.javaee.spec.DescriptionGroupMetaData;
 import org.jboss.metadata.javaee.spec.EJBLocalReferenceMetaData;
+import org.jboss.metadata.javaee.spec.EJBReferenceMetaData;
+import org.jboss.metadata.javaee.spec.EJBReferencesMetaData;
+import org.jboss.metadata.javaee.spec.Environment;
 import org.jboss.xb.binding.sunday.unmarshalling.DefaultSchemaResolver;
 import org.jboss.xb.binding.sunday.unmarshalling.SchemaBindingResolver;
 
@@ -115,6 +121,9 @@
       }
       
       ejbJar.assertInterceptorBindings(3, jbossMetaData.getAssemblyDescriptor().getInterceptorBindings());
+      
+      // Basic check if EjbReferences.invokerBindings are merged
+      assertEjbReferenceInvokerBindings(ejb);
    }
 
    /**
@@ -371,5 +380,18 @@
          }
       }
       return classes;
-   } 
+   }
+   
+   private void assertEjbReferenceInvokerBindings(JBossEnterpriseBeanMetaData bean)
+   {
+      Environment envRefs = bean.getJndiEnvironmentRefsGroup();
+      assertNotNull(envRefs);
+      EJBReferencesMetaData ejbReferences = envRefs.getEjbReferences();
+      assertNotNull(ejbReferences);
+      EJBReferenceMetaData ejbRef = ejbReferences.get("session1EjbRef1Name");
+      assertNotNull(ejbRef);
+      
+      assertEquals("session1Invoker1EjbName1", ejbRef.getInvokerBinding("invokerProxyBinding1Name"));
+      assertEquals("session1Invoker2EjbName1", ejbRef.getInvokerBinding("invokerProxyBinding2Name"));
+   }
 }
\ No newline at end of file




More information about the jboss-cvs-commits mailing list