[jboss-cvs] JBossAS SVN: r73932 - in projects/metadata/trunk/src: main/java/org/jboss/metadata/ejb/spec and 2 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Mon Jun 2 11:31:30 EDT 2008


Author: alex.loubyansky at jboss.com
Date: 2008-06-02 11:31:30 -0400 (Mon, 02 Jun 2008)
New Revision: 73932

Modified:
   projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/CacheInvalidationConfigMetaData.java
   projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/JBossEntityBeanMetaData.java
   projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/spec/CMPFieldsMetaData.java
   projects/metadata/trunk/src/main/java/org/jboss/metadata/javaee/spec/SecurityRoleRefsMetaData.java
   projects/metadata/trunk/src/test/java/org/jboss/test/metadata/ejb/JBossEntityBeanOverrideUnitTestCase.java
Log:
JBMETA-46

Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/CacheInvalidationConfigMetaData.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/CacheInvalidationConfigMetaData.java	2008-06-02 15:01:24 UTC (rev 73931)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/CacheInvalidationConfigMetaData.java	2008-06-02 15:31:30 UTC (rev 73932)
@@ -131,4 +131,34 @@
          throw new IllegalArgumentException("Null invalidationManagerName");
       this.invalidationManagerName = invalidationManagerName;
    }
+   
+   public void merge(CacheInvalidationConfigMetaData override, CacheInvalidationConfigMetaData original)
+   {
+      String originalEjb = null;
+      if(original != null)
+      {
+         originalEjb = original.entityBean != null ? original.entityBean.getEjbName() : null;
+         if(original.invalidationGroupName != null)
+            invalidationGroupName = original.invalidationGroupName;
+         if(original.invalidationManagerName != null)
+            invalidationManagerName = original.invalidationManagerName;
+      }
+      
+      if(override != null)
+      {
+         if(override.entityBean != null && originalEjb != null)
+         {
+            if(!originalEjb.equals(override.entityBean.getEjbName()))
+               throw new IllegalArgumentException(
+                  "Attempt to merge cache invalidation config for different " +
+                  "entity beans: " + originalEjb + " and " + 
+                  override.entityBean.getEjbName());
+         }
+         
+         if(override.invalidationGroupName != null)
+            invalidationGroupName = override.invalidationGroupName;
+         if(override.invalidationManagerName != null)
+            invalidationManagerName = override.invalidationManagerName;
+      }
+   }
 }

Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/JBossEntityBeanMetaData.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/JBossEntityBeanMetaData.java	2008-06-02 15:01:24 UTC (rev 73931)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/JBossEntityBeanMetaData.java	2008-06-02 15:31:30 UTC (rev 73932)
@@ -838,4 +838,133 @@
       if(joverride != null && joverride.clusterConfig != null)
          clusterConfig = joverride.clusterConfig;      
    }
+   
+   public void merge(JBossEnterpriseBeanMetaData overrideEjb, JBossEnterpriseBeanMetaData originalEjb)
+   {
+      super.merge(overrideEjb, originalEjb);
+
+      CMPFieldsMetaData originalFields = null;
+      SecurityRoleRefsMetaData originalRoles = null;
+      ClusterConfigMetaData originalCluster = null;
+      CacheInvalidationConfigMetaData originalCacheInv = null;
+      JBossEntityBeanMetaData original = (JBossEntityBeanMetaData) originalEjb;
+      if(original != null)
+      {
+         if(original.abstractSchemaName != null)
+            abstractSchemaName = original.abstractSchemaName;
+         if(original.cmpVersion != null)
+            cmpVersion = original.cmpVersion;
+         if(original.home != null)
+            home = original.home;
+         if(original.jndiName != null)
+            jndiName = original.jndiName;
+         if(original.local != null)
+            local = original.local;
+         if(original.localHome != null)
+            localHome = original.localHome;
+         if(original.primKeyClass != null)
+            primKeyClass = original.primKeyClass;
+         if(original.primKeyField != null)
+            primKeyField = original.primKeyField;
+         if(original.remote != null)
+            remote = original.remote;
+         
+         // boolean should be changed to java.lang.Boolean to differentiate
+         // between the default and non-set value 
+         if(original.cacheInvalidation)
+            cacheInvalidation = original.cacheInvalidation;
+         if(original.callByValue)
+            callByValue = original.callByValue;
+         if(original.clustered)
+            clustered = original.clustered;
+         if(original.readOnly)
+            readOnly = original.readOnly;
+         if(original.reentrant)
+            reentrant = original.reentrant;
+         
+         if(original.persistenceType != null)
+            persistenceType = original.persistenceType;
+         
+         originalFields = original.cmpFields;
+         originalRoles = original.securityRoleRefs;
+         originalCluster = original.clusterConfig;
+         originalCacheInv = original.cacheInvalidationConfig;
+      }
+      
+      CMPFieldsMetaData overrideFields = null;
+      SecurityRoleRefsMetaData overrideRoles = null;
+      ClusterConfigMetaData overrideCluster = null;
+      CacheInvalidationConfigMetaData overrideCacheInv = null;
+      JBossEntityBeanMetaData override = (JBossEntityBeanMetaData) overrideEjb;
+      if(override != null)
+      {
+         if(override.abstractSchemaName != null)
+            abstractSchemaName = override.abstractSchemaName;
+         if(override.cmpVersion != null)
+            cmpVersion = override.cmpVersion;
+         if(override.home != null)
+            home = override.home;
+         if(override.jndiName != null)
+            jndiName = override.jndiName;
+         if(override.local != null)
+            local = override.local;
+         if(override.localHome != null)
+            localHome = override.localHome;
+         if(override.primKeyClass != null)
+            primKeyClass = override.primKeyClass;
+         if(override.primKeyField != null)
+            primKeyField = override.primKeyField;
+         if(override.remote != null)
+            remote = override.remote;
+
+         // boolean should be changed to java.lang.Boolean to differentiate
+         // between the default and non-set value 
+         if(override.cacheInvalidation)
+            cacheInvalidation = override.cacheInvalidation;
+         if(override.callByValue)
+            callByValue = override.callByValue;
+         if(override.clustered)
+            clustered = override.clustered;
+         if(override.readOnly)
+            readOnly = override.readOnly;
+         if(override.reentrant)
+            reentrant = override.reentrant;
+         
+         if(override.persistenceType != null)
+            persistenceType = override.persistenceType;
+         
+         overrideFields = override.cmpFields;
+         overrideRoles = override.securityRoleRefs;
+         overrideCluster = override.clusterConfig;
+         overrideCacheInv = override.cacheInvalidationConfig;
+      }
+      
+      if(originalFields != null || overrideFields != null)
+      {
+         if(cmpFields == null)
+            cmpFields = new CMPFieldsMetaData();
+         cmpFields.merge(overrideFields, originalFields);
+      }
+      
+      if(originalRoles != null || overrideRoles != null)
+      {
+         if(securityRoleRefs == null)
+            securityRoleRefs = new SecurityRoleRefsMetaData();
+         securityRoleRefs.merge(overrideRoles, originalRoles);
+      }
+      
+      if(originalCluster != null || overrideCluster != null)
+      {
+         if(clusterConfig == null)
+            clusterConfig = new ClusterConfigMetaData();
+         clusterConfig.merge(overrideCluster, originalCluster);
+      }
+      
+      if(originalCacheInv != null || overrideCacheInv != null)
+      {
+         if(cacheInvalidationConfig == null)
+            cacheInvalidationConfig = new CacheInvalidationConfigMetaData();
+         cacheInvalidationConfig.merge(overrideCacheInv, originalCacheInv);
+      }
+   }
 }

Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/spec/CMPFieldsMetaData.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/spec/CMPFieldsMetaData.java	2008-06-02 15:01:24 UTC (rev 73931)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/spec/CMPFieldsMetaData.java	2008-06-02 15:31:30 UTC (rev 73932)
@@ -41,4 +41,19 @@
    {
       super("cmp field name");
    }
+
+   public void merge(CMPFieldsMetaData override, CMPFieldsMetaData original)
+   {
+      super.merge(override, original);
+      if (original != null)
+      {
+         for (CMPFieldMetaData property : original)
+            add(property);
+      }
+      if (override != null)
+      {
+         for (CMPFieldMetaData property : override)
+            add(property);
+      }
+   }
 }

Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/javaee/spec/SecurityRoleRefsMetaData.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/javaee/spec/SecurityRoleRefsMetaData.java	2008-06-02 15:01:24 UTC (rev 73931)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/javaee/spec/SecurityRoleRefsMetaData.java	2008-06-02 15:31:30 UTC (rev 73932)
@@ -43,4 +43,19 @@
    {
       super("role name for security role ref");
    }
+
+   public void merge(SecurityRoleRefsMetaData override, SecurityRoleRefsMetaData original)
+   {
+      super.merge(override, original);
+      if (original != null)
+      {
+         for (SecurityRoleRefMetaData property : original)
+            add(property);
+      }
+      if (override != null)
+      {
+         for (SecurityRoleRefMetaData property : override)
+            add(property);
+      }
+   }
 }

Modified: projects/metadata/trunk/src/test/java/org/jboss/test/metadata/ejb/JBossEntityBeanOverrideUnitTestCase.java
===================================================================
--- projects/metadata/trunk/src/test/java/org/jboss/test/metadata/ejb/JBossEntityBeanOverrideUnitTestCase.java	2008-06-02 15:01:24 UTC (rev 73931)
+++ projects/metadata/trunk/src/test/java/org/jboss/test/metadata/ejb/JBossEntityBeanOverrideUnitTestCase.java	2008-06-02 15:31:30 UTC (rev 73932)
@@ -22,8 +22,15 @@
 package org.jboss.test.metadata.ejb;
 
 
+import org.jboss.metadata.ejb.jboss.CacheInvalidationConfigMetaData;
+import org.jboss.metadata.ejb.jboss.ClusterConfigMetaData;
 import org.jboss.metadata.ejb.jboss.JBossEnterpriseBeanMetaData;
 import org.jboss.metadata.ejb.jboss.JBossEntityBeanMetaData;
+import org.jboss.metadata.ejb.spec.CMPFieldMetaData;
+import org.jboss.metadata.ejb.spec.CMPFieldsMetaData;
+import org.jboss.metadata.ejb.spec.PersistenceType;
+import org.jboss.metadata.javaee.spec.SecurityRoleRefMetaData;
+import org.jboss.metadata.javaee.spec.SecurityRoleRefsMetaData;
 
 
 /**
@@ -39,4 +46,157 @@
    {
       simplePropertiesTest(JBossEntityBeanMetaData.class, JBossEnterpriseBeanMetaData.class, null);
    }
+   
+   public void testPersistenceType() throws Exception
+   {
+      JBossEntityBeanMetaData original = new JBossEntityBeanMetaData();
+      original.setEjbName("entity");
+      original.setPersistenceType(PersistenceType.Container);
+
+      JBossEntityBeanMetaData override = new JBossEntityBeanMetaData();
+      override.setEjbName("entity");
+      override.setPersistenceType(PersistenceType.Bean);
+
+      JBossEntityBeanMetaData merged = new JBossEntityBeanMetaData();
+      merged.merge(override, original);
+      assertEquals("entity", merged.getEjbName());
+      PersistenceType persistenceType = merged.getPersistenceType();
+      assertNotNull(persistenceType);
+      assertEquals(PersistenceType.Bean, persistenceType);
+   }
+   
+   public void testCMPFields() throws Exception
+   {
+      JBossEntityBeanMetaData original = new JBossEntityBeanMetaData();
+      original.setEjbName("entity");
+
+      CMPFieldsMetaData cmpFields = new CMPFieldsMetaData();
+      CMPFieldMetaData cmpField = new CMPFieldMetaData();
+      cmpField.setFieldName("field1");
+      cmpFields.add(cmpField);
+      original.setCmpFields(cmpFields);
+      
+      JBossEntityBeanMetaData override = new JBossEntityBeanMetaData();
+      override.setEjbName("entity");
+
+      cmpFields = new CMPFieldsMetaData();
+      cmpField = new CMPFieldMetaData();
+      cmpField.setFieldName("field2");
+      cmpFields.add(cmpField);
+      override.setCmpFields(cmpFields);
+      
+      JBossEntityBeanMetaData merged = new JBossEntityBeanMetaData();
+      merged.merge(override, original);
+      cmpFields = merged.getCmpFields();
+      assertNotNull(cmpFields);
+      
+      // not sure it's right
+      assertEquals(2, cmpFields.size());
+   }
+   
+   public void testSecurityRoleRefs() throws Exception
+   {
+      JBossEntityBeanMetaData original = new JBossEntityBeanMetaData();
+      original.setEjbName("entity");
+
+      SecurityRoleRefsMetaData roleRefs = new SecurityRoleRefsMetaData();
+      SecurityRoleRefMetaData roleRef = new SecurityRoleRefMetaData();
+      roleRef.setRoleName("role1");
+      roleRef.setRoleLink(roleRef.getRoleName() + "Original");
+      roleRefs.add(roleRef);
+      roleRef = new SecurityRoleRefMetaData();
+      roleRef.setRoleName("role2");
+      roleRef.setRoleLink(roleRef.getRoleName() + "Original");
+      roleRefs.add(roleRef);
+      original.setSecurityRoleRefs(roleRefs);
+      
+      JBossEntityBeanMetaData override = new JBossEntityBeanMetaData();
+      override.setEjbName("entity");
+      
+      roleRefs = new SecurityRoleRefsMetaData();
+      roleRef = new SecurityRoleRefMetaData();
+      roleRef.setRoleName("role2");
+      roleRef.setRoleLink(roleRef.getRoleName() + "Override");
+      roleRefs.add(roleRef);
+      roleRef = new SecurityRoleRefMetaData();
+      roleRef.setRoleName("role3");
+      roleRef.setRoleLink(roleRef.getRoleName() + "Override");
+      roleRefs.add(roleRef);
+      override.setSecurityRoleRefs(roleRefs);
+
+      JBossEntityBeanMetaData merged = new JBossEntityBeanMetaData();
+      merged.merge(override, original);
+      roleRefs = merged.getSecurityRoleRefs();
+      assertNotNull(roleRefs);
+      assertEquals(3, roleRefs.size());
+      roleRef = roleRefs.get("role1");
+      assertNotNull(roleRef);
+      assertEquals(roleRef.getRoleName() + "Original", roleRef.getRoleLink());
+      roleRef = roleRefs.get("role2");
+      assertNotNull(roleRef);
+      assertEquals(roleRef.getRoleName() + "Override", roleRef.getRoleLink());
+      roleRef = roleRefs.get("role3");
+      assertNotNull(roleRef);
+      assertEquals(roleRef.getRoleName() + "Override", roleRef.getRoleLink());
+   }
+   
+   public void testClusterConfig() throws Exception
+   {
+      JBossEntityBeanMetaData original = new JBossEntityBeanMetaData();
+      original.setEjbName("entity");
+
+      ClusterConfigMetaData clusterConfig = new ClusterConfigMetaData();
+      clusterConfig.setBeanLoadBalancePolicy("beanPolicyOriginal");
+      clusterConfig.setHomeLoadBalancePolicy("homePolicyOriginal");
+      //clusterConfig.setLoadBalancePolicy("policyOriginal");
+      clusterConfig.setPartitionName("partitionOriginal");
+      clusterConfig.setSessionStateManagerJndiName("stateManagerOriginal");
+      original.setClusterConfig(clusterConfig);
+      
+      JBossEntityBeanMetaData override = new JBossEntityBeanMetaData();
+      override.setEjbName("entity");
+      clusterConfig = new ClusterConfigMetaData();
+      clusterConfig.setBeanLoadBalancePolicy("beanPolicyOverride");
+      clusterConfig.setHomeLoadBalancePolicy("homePolicyOverride");
+      //clusterConfig.setLoadBalancePolicy("policyOverride");
+      clusterConfig.setPartitionName("partitionOverride");
+      clusterConfig.setSessionStateManagerJndiName("stateManagerOverride");
+      override.setClusterConfig(clusterConfig);
+      
+      JBossEntityBeanMetaData merged = new JBossEntityBeanMetaData();
+      merged.merge(override, original);
+      clusterConfig = merged.getClusterConfig();
+      assertNotNull(clusterConfig);
+      assertEquals("beanPolicyOverride", clusterConfig.getBeanLoadBalancePolicy());
+      assertEquals("homePolicyOverride", clusterConfig.getHomeLoadBalancePolicy());
+      assertEquals("beanPolicyOverride", clusterConfig.getLoadBalancePolicy());
+      assertEquals("partitionOverride", clusterConfig.getPartitionName());
+      assertEquals("stateManagerOverride", clusterConfig.getSessionStateManagerJndiName());
+   }
+   
+   public void testCacheInvalidation() throws Exception
+   {
+      JBossEntityBeanMetaData original = new JBossEntityBeanMetaData();
+      original.setEjbName("entity");
+
+      CacheInvalidationConfigMetaData cacheInv = new CacheInvalidationConfigMetaData();
+      cacheInv.setInvalidationGroupName("originalGroup");
+      cacheInv.setInvalidationManagerName("originalManager");
+      original.setCacheInvalidationConfig(cacheInv);
+      
+      JBossEntityBeanMetaData override = new JBossEntityBeanMetaData();
+      override.setEjbName("entity");
+      
+      cacheInv = new CacheInvalidationConfigMetaData();
+      //cacheInv.setInvalidationGroupName("overrideGroup");
+      cacheInv.setInvalidationManagerName("overrideManager");
+      override.setCacheInvalidationConfig(cacheInv);
+      
+      JBossEntityBeanMetaData merged = new JBossEntityBeanMetaData();
+      merged.merge(override, original);
+      cacheInv = merged.getCacheInvalidationConfig();
+      assertNotNull(cacheInv);
+      assertEquals("originalGroup", cacheInv.getInvalidationGroupName());
+      assertEquals("overrideManager", cacheInv.getInvalidationManagerName());
+   }
 }




More information about the jboss-cvs-commits mailing list