[jboss-svn-commits] JBoss Common SVN: r2525 - in jbossxb-builder/trunk/src/test: java/org/jboss/javaee/metadata/support and 3 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Mon Sep 3 09:41:41 EDT 2007


Author: alex.loubyansky at jboss.com
Date: 2007-09-03 09:41:41 -0400 (Mon, 03 Sep 2007)
New Revision: 2525

Added:
   jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/cmp/JBossCMPFieldMetaData.java
   jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/cmp/JBossCMPFieldsMetaData.java
   jbossxb-builder/trunk/src/test/resources/org/jboss/test/ejb/metadata/test/JBossCMPMerge_testMerge.xml
Removed:
   jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/cmp/JBossCMPCMPFieldMetaData.java
Modified:
   jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/cmp/JBossCMPEnterpriseBeansMetaData.java
   jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/cmp/JBossCMPEntityBeanMetaData.java
   jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/cmp/JBossCMPMetaData.java
   jbossxb-builder/trunk/src/test/java/org/jboss/javaee/metadata/support/JavaEEMetaDataUtil.java
   jbossxb-builder/trunk/src/test/java/org/jboss/test/ejb/AbstractEJBEverythingTest.java
   jbossxb-builder/trunk/src/test/java/org/jboss/test/ejb/metadata/test/EJBMetaDataTestSuite.java
   jbossxb-builder/trunk/src/test/java/org/jboss/test/ejb/metadata/test/EjbJar21EverythingUnitTestCase.java
   jbossxb-builder/trunk/src/test/java/org/jboss/test/ejb/metadata/test/JBossCMPUnitTestCase.java
Log:
testcase for merging jbosscmp and ejb-jar, made cmp-fields mergeable

Deleted: jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/cmp/JBossCMPCMPFieldMetaData.java
===================================================================
--- jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/cmp/JBossCMPCMPFieldMetaData.java	2007-08-31 15:58:09 UTC (rev 2524)
+++ jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/cmp/JBossCMPCMPFieldMetaData.java	2007-09-03 13:41:41 UTC (rev 2525)
@@ -1,294 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source.
- * Copyright 2006, Red Hat Middleware LLC, and individual contributors
- * as indicated by the @author tags. See the copyright.txt file in the
- * distribution for a full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-package org.jboss.ejb.metadata.jboss.cmp;
-
-import java.util.List;
-
-import javax.xml.bind.annotation.XmlElement;
-import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
-
-
-/**
- * A JBossCMPCMPFieldMetaData.
- * 
- * @author <a href="alex at jboss.com">Alexey Loubyansky</a>
- * @version $Revision: 1.1 $
- */
-public class JBossCMPCMPFieldMetaData
-{
-   private String fieldName;
-   private boolean readOnly;
-   private long readTimeOut;
-   private String columnName;
-   private boolean notNull;
-   private int jdbcType;
-   private String sqlType;
-   private List<JBossCMPPropertyMetaData> properties;
-   private boolean autoIncrement;
-   private boolean dbindex;
-   private boolean checkDirtyAfterGet;
-   private String stateFactory;
-   
-   /**
-    * Get the autoIncrement.
-    * 
-    * @return the autoIncrement.
-    */
-   public boolean isAutoIncrement()
-   {
-      return autoIncrement;
-   }
-
-   /**
-    * Set the autoIncrement.
-    * 
-    * @param autoIncrement The autoIncrement to set.
-    */
-   @XmlJavaTypeAdapter(value=EmptyElementToBooleanAdapter.class)
-   public void setAutoIncrement(boolean autoIncrement)
-   {
-      this.autoIncrement = autoIncrement;
-   }
-   
-   /**
-    * Get the checkDirtyAfterGet.
-    * 
-    * @return the checkDirtyAfterGet.
-    */
-   public boolean isCheckDirtyAfterGet()
-   {
-      return checkDirtyAfterGet;
-   }
-
-   /**
-    * Set the checkDirtyAfterGet.
-    * 
-    * @param checkDirtyAfterGet The checkDirtyAfterGet to set.
-    */
-   public void setCheckDirtyAfterGet(boolean checkDirtyAfterGet)
-   {
-      this.checkDirtyAfterGet = checkDirtyAfterGet;
-   }
-
-   /**
-    * Get the columnName.
-    * 
-    * @return the columnName.
-    */
-   public String getColumnName()
-   {
-      return columnName;
-   }
-
-   /**
-    * Set the columnName.
-    * 
-    * @param columnName The columnName to set.
-    */
-   public void setColumnName(String columnName)
-   {
-      this.columnName = columnName;
-   }
-
-   /**
-    * Get the dbIndex.
-    * 
-    * @return the dbIndex.
-    */
-   public boolean isDbindex()
-   {
-      return dbindex;
-   }
-
-   /**
-    * Set the dbIndex.
-    * 
-    * @param dbIndex The dbIndex to set.
-    */
-   @XmlJavaTypeAdapter(value=EmptyElementToBooleanAdapter.class)
-   public void setDbindex(boolean dbIndex)
-   {
-      this.dbindex = dbIndex;
-   }
-
-   /**
-    * Get the fieldName.
-    * 
-    * @return the fieldName.
-    */
-   public String getFieldName()
-   {
-      return fieldName;
-   }
-
-   /**
-    * Set the fieldName.
-    * 
-    * @param fieldName The fieldName to set.
-    */
-   public void setFieldName(String fieldName)
-   {
-      this.fieldName = fieldName;
-   }
-
-   /**
-    * Get the jdbcType.
-    * 
-    * @return the jdbcType.
-    */
-   public int getJdbcType()
-   {
-      return jdbcType;
-   }
-
-   /**
-    * Set the jdbcType.
-    * 
-    * @param jdbcType The jdbcType to set.
-    */
-   @XmlJavaTypeAdapter(value=JDBCTypeAdapter.class)
-   public void setJdbcType(int jdbcType)
-   {
-      this.jdbcType = jdbcType;
-   }
-
-   /**
-    * Get the notNull.
-    * 
-    * @return the notNull.
-    */
-   public boolean isNotNull()
-   {
-      return notNull;
-   }
-
-   /**
-    * Set the notNull.
-    * 
-    * @param notNull The notNull to set.
-    */
-   public void setNotNull(boolean notNull)
-   {
-      this.notNull = notNull;
-   }
-
-   /**
-    * Get the properties.
-    * 
-    * @return the properties.
-    */
-   public List<JBossCMPPropertyMetaData> getProperties()
-   {
-      return properties;
-   }
-
-   /**
-    * Set the properties.
-    * 
-    * @param properties The properties to set.
-    */
-   @XmlElement(name="property")
-   public void setProperties(List<JBossCMPPropertyMetaData> properties)
-   {
-      this.properties = properties;
-   }
-
-   /**
-    * Get the readOnly.
-    * 
-    * @return the readOnly.
-    */
-   public boolean isReadOnly()
-   {
-      return readOnly;
-   }
-
-   /**
-    * Set the readOnly.
-    * 
-    * @param readOnly The readOnly to set.
-    */
-   public void setReadOnly(boolean readOnly)
-   {
-      this.readOnly = readOnly;
-   }
-
-   /**
-    * Get the readTimeOut.
-    * 
-    * @return the readTimeOut.
-    */
-   public long getReadTimeOut()
-   {
-      return readTimeOut;
-   }
-
-   /**
-    * Set the readTimeOut.
-    * 
-    * @param readTimeOut The readTimeOut to set.
-    */
-   public void setReadTimeOut(long readTimeOut)
-   {
-      this.readTimeOut = readTimeOut;
-   }
-
-   /**
-    * Get the sqlType.
-    * 
-    * @return the sqlType.
-    */
-   public String getSqlType()
-   {
-      return sqlType;
-   }
-
-   /**
-    * Set the sqlType.
-    * 
-    * @param sqlType The sqlType to set.
-    */
-   public void setSqlType(String sqlType)
-   {
-      this.sqlType = sqlType;
-   }
-
-   /**
-    * Get the stateFactory.
-    * 
-    * @return the stateFactory.
-    */
-   public String getStateFactory()
-   {
-      return stateFactory;
-   }
-
-   /**
-    * Set the stateFactory.
-    * 
-    * @param stateFactory The stateFactory to set.
-    */
-   public void setStateFactory(String stateFactory)
-   {
-      this.stateFactory = stateFactory;
-   }
-}

Modified: jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/cmp/JBossCMPEnterpriseBeansMetaData.java
===================================================================
--- jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/cmp/JBossCMPEnterpriseBeansMetaData.java	2007-08-31 15:58:09 UTC (rev 2524)
+++ jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/cmp/JBossCMPEnterpriseBeansMetaData.java	2007-09-03 13:41:41 UTC (rev 2525)
@@ -27,6 +27,7 @@
 import org.jboss.ejb.metadata.spec.EnterpriseBeansMetaData;
 import org.jboss.ejb.metadata.spec.EntityBeanMetaData;
 import org.jboss.javaee.metadata.support.AbstractMappedMetaDataWithOverride;
+import org.jboss.javaee.metadata.support.JavaEEMetaDataUtil;
 
 
 /**
@@ -43,15 +44,20 @@
       super("ejb name for enterprise bean");
    }
 
+   public static JBossCMPEnterpriseBeansMetaData merge(JBossCMPEnterpriseBeansMetaData jbossCMPEnterpriseBeansMetaData, EnterpriseBeansMetaData enterpriseBeansMetaData)
+   {
+      JBossCMPEnterpriseBeansMetaData merged = new JBossCMPEnterpriseBeansMetaData();
+      return JavaEEMetaDataUtil.mergeOverrideJBossXml(merged, enterpriseBeansMetaData, jbossCMPEnterpriseBeansMetaData, "enterprise bean", true);
+   }
+
    public JBossCMPEntityBeanMetaData createOverride(EnterpriseBeanMetaData data)
    {
       if (data == null)
          throw new IllegalArgumentException("Null data");
       if (!(data instanceof EntityBeanMetaData))
-         throw new IllegalArgumentException("Unregonised: " + data);
+         return null;
 
       JBossCMPEntityBeanMetaData result = new JBossCMPEntityBeanMetaData();
-
       result.setEjbName(data.getEjbName());
       result.setOverridenMetaData(data);
       return result;

Modified: jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/cmp/JBossCMPEntityBeanMetaData.java
===================================================================
--- jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/cmp/JBossCMPEntityBeanMetaData.java	2007-08-31 15:58:09 UTC (rev 2524)
+++ jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/cmp/JBossCMPEntityBeanMetaData.java	2007-09-03 13:41:41 UTC (rev 2525)
@@ -65,7 +65,8 @@
    private boolean cleanReadAheadOnLoad;
    private long fetchSize;
    private String tableName;
-   private List<JBossCMPCMPFieldMetaData> cmpFields;
+   private JBossCMPFieldsMetaData cmpFields;
+   private JBossCMPFieldsMetaData mergedCmpFields;
    private List<JBossCMPLoadGroupMetaData> loadGroups;
    private String eagerLoadGroup;
    private List<String> lazyLoadGroups;
@@ -104,17 +105,28 @@
       this.cleanReadAheadOnLoad = cleanReadAheadOnLoad;
    }
    
-   public List<JBossCMPCMPFieldMetaData> getCmpFields()
+   public JBossCMPFieldsMetaData getCmpFields()
    {
-      return cmpFields;
+      if(mergedCmpFields != null)
+      {
+         return mergedCmpFields;
+      }
+    
+      if(getOverridenMetaData() == null)
+      {
+         return cmpFields;
+      }
+      
+      mergedCmpFields = JBossCMPFieldsMetaData.merge(cmpFields, ((EntityBeanMetaData)getOverridenMetaDataWithCheck()).getCmpFields());
+      return mergedCmpFields;
    }
    
    @XmlElement(name="cmp-field")
-   public void setCmpFields(List<JBossCMPCMPFieldMetaData> cmpFields)
+   public void setCmpFields(JBossCMPFieldsMetaData cmpFields)
    {
       this.cmpFields = cmpFields;
    }
-   
+
    public boolean isCreateTable()
    {
       return createTable;

Added: jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/cmp/JBossCMPFieldMetaData.java
===================================================================
--- jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/cmp/JBossCMPFieldMetaData.java	                        (rev 0)
+++ jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/cmp/JBossCMPFieldMetaData.java	2007-09-03 13:41:41 UTC (rev 2525)
@@ -0,0 +1,299 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2006, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.ejb.metadata.jboss.cmp;
+
+import java.util.List;
+
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+
+import org.jboss.ejb.metadata.spec.CMPFieldMetaData;
+import org.jboss.javaee.metadata.support.NamedMetaDataWithDescriptionGroupWithOverride;
+
+
+/**
+ * A JBossCMPFieldMetaData.
+ * 
+ * @author <a href="alex at jboss.com">Alexey Loubyansky</a>
+ * @version $Revision: 1.1 $
+ */
+ at XmlType(name="jbosscmp-cmp-fieldType")
+public class JBossCMPFieldMetaData
+   extends NamedMetaDataWithDescriptionGroupWithOverride<CMPFieldMetaData>
+{
+   private boolean readOnly;
+   private long readTimeOut;
+   private String columnName;
+   private boolean notNull;
+   private int jdbcType;
+   private String sqlType;
+   private List<JBossCMPPropertyMetaData> properties;
+   private boolean autoIncrement;
+   private boolean dbindex;
+   private boolean checkDirtyAfterGet;
+   private String stateFactory;
+   
+   /**
+    * Get the autoIncrement.
+    * 
+    * @return the autoIncrement.
+    */
+   public boolean isAutoIncrement()
+   {
+      return autoIncrement;
+   }
+
+   /**
+    * Set the autoIncrement.
+    * 
+    * @param autoIncrement The autoIncrement to set.
+    */
+   @XmlJavaTypeAdapter(value=EmptyElementToBooleanAdapter.class)
+   public void setAutoIncrement(boolean autoIncrement)
+   {
+      this.autoIncrement = autoIncrement;
+   }
+   
+   /**
+    * Get the checkDirtyAfterGet.
+    * 
+    * @return the checkDirtyAfterGet.
+    */
+   public boolean isCheckDirtyAfterGet()
+   {
+      return checkDirtyAfterGet;
+   }
+
+   /**
+    * Set the checkDirtyAfterGet.
+    * 
+    * @param checkDirtyAfterGet The checkDirtyAfterGet to set.
+    */
+   public void setCheckDirtyAfterGet(boolean checkDirtyAfterGet)
+   {
+      this.checkDirtyAfterGet = checkDirtyAfterGet;
+   }
+
+   /**
+    * Get the columnName.
+    * 
+    * @return the columnName.
+    */
+   public String getColumnName()
+   {
+      return columnName;
+   }
+
+   /**
+    * Set the columnName.
+    * 
+    * @param columnName The columnName to set.
+    */
+   public void setColumnName(String columnName)
+   {
+      this.columnName = columnName;
+   }
+
+   /**
+    * Get the dbIndex.
+    * 
+    * @return the dbIndex.
+    */
+   public boolean isDbindex()
+   {
+      return dbindex;
+   }
+
+   /**
+    * Set the dbIndex.
+    * 
+    * @param dbIndex The dbIndex to set.
+    */
+   @XmlJavaTypeAdapter(value=EmptyElementToBooleanAdapter.class)
+   public void setDbindex(boolean dbIndex)
+   {
+      this.dbindex = dbIndex;
+   }
+
+   /**
+    * Get the fieldName.
+    * 
+    * @return the fieldName.
+    */
+   public String getFieldName()
+   {
+      return getName();
+   }
+
+   /**
+    * Set the fieldName.
+    * 
+    * @param fieldName The fieldName to set.
+    */
+   public void setFieldName(String fieldName)
+   {
+      setName(fieldName);
+   }
+
+   /**
+    * Get the jdbcType.
+    * 
+    * @return the jdbcType.
+    */
+   public int getJdbcType()
+   {
+      return jdbcType;
+   }
+
+   /**
+    * Set the jdbcType.
+    * 
+    * @param jdbcType The jdbcType to set.
+    */
+   @XmlJavaTypeAdapter(value=JDBCTypeAdapter.class)
+   public void setJdbcType(int jdbcType)
+   {
+      this.jdbcType = jdbcType;
+   }
+
+   /**
+    * Get the notNull.
+    * 
+    * @return the notNull.
+    */
+   public boolean isNotNull()
+   {
+      return notNull;
+   }
+
+   /**
+    * Set the notNull.
+    * 
+    * @param notNull The notNull to set.
+    */
+   public void setNotNull(boolean notNull)
+   {
+      this.notNull = notNull;
+   }
+
+   /**
+    * Get the properties.
+    * 
+    * @return the properties.
+    */
+   public List<JBossCMPPropertyMetaData> getProperties()
+   {
+      return properties;
+   }
+
+   /**
+    * Set the properties.
+    * 
+    * @param properties The properties to set.
+    */
+   @XmlElement(name="property")
+   public void setProperties(List<JBossCMPPropertyMetaData> properties)
+   {
+      this.properties = properties;
+   }
+
+   /**
+    * Get the readOnly.
+    * 
+    * @return the readOnly.
+    */
+   public boolean isReadOnly()
+   {
+      return readOnly;
+   }
+
+   /**
+    * Set the readOnly.
+    * 
+    * @param readOnly The readOnly to set.
+    */
+   public void setReadOnly(boolean readOnly)
+   {
+      this.readOnly = readOnly;
+   }
+
+   /**
+    * Get the readTimeOut.
+    * 
+    * @return the readTimeOut.
+    */
+   public long getReadTimeOut()
+   {
+      return readTimeOut;
+   }
+
+   /**
+    * Set the readTimeOut.
+    * 
+    * @param readTimeOut The readTimeOut to set.
+    */
+   public void setReadTimeOut(long readTimeOut)
+   {
+      this.readTimeOut = readTimeOut;
+   }
+
+   /**
+    * Get the sqlType.
+    * 
+    * @return the sqlType.
+    */
+   public String getSqlType()
+   {
+      return sqlType;
+   }
+
+   /**
+    * Set the sqlType.
+    * 
+    * @param sqlType The sqlType to set.
+    */
+   public void setSqlType(String sqlType)
+   {
+      this.sqlType = sqlType;
+   }
+
+   /**
+    * Get the stateFactory.
+    * 
+    * @return the stateFactory.
+    */
+   public String getStateFactory()
+   {
+      return stateFactory;
+   }
+
+   /**
+    * Set the stateFactory.
+    * 
+    * @param stateFactory The stateFactory to set.
+    */
+   public void setStateFactory(String stateFactory)
+   {
+      this.stateFactory = stateFactory;
+   }
+}

Added: jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/cmp/JBossCMPFieldsMetaData.java
===================================================================
--- jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/cmp/JBossCMPFieldsMetaData.java	                        (rev 0)
+++ jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/cmp/JBossCMPFieldsMetaData.java	2007-09-03 13:41:41 UTC (rev 2525)
@@ -0,0 +1,65 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2006, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.ejb.metadata.jboss.cmp;
+
+import org.jboss.ejb.metadata.spec.CMPFieldMetaData;
+import org.jboss.ejb.metadata.spec.CMPFieldsMetaData;
+import org.jboss.javaee.metadata.support.AbstractMappedMetaDataWithOverride;
+import org.jboss.javaee.metadata.support.JavaEEMetaDataUtil;
+
+
+/**
+ * A JBossCMPFieldsMetaData.
+ * 
+ * @author <a href="alex at jboss.com">Alexey Loubyansky</a>
+ * @version $Revision: 1.1 $
+ */
+public class JBossCMPFieldsMetaData
+   extends AbstractMappedMetaDataWithOverride<CMPFieldMetaData, JBossCMPFieldMetaData, CMPFieldsMetaData>
+{
+   public JBossCMPFieldsMetaData()
+   {
+      super("field name");
+   }
+
+   public static JBossCMPFieldsMetaData merge(JBossCMPFieldsMetaData jbossCMPFieldsMetaData, CMPFieldsMetaData cmpFieldsMetaData)
+   {
+      if(cmpFieldsMetaData == null)
+         return null;
+      
+      JBossCMPFieldsMetaData merged = new JBossCMPFieldsMetaData();
+      return JavaEEMetaDataUtil.mergeOverrideJBossXml(merged, cmpFieldsMetaData, jbossCMPFieldsMetaData, "cmp field", true);
+   }
+
+   public JBossCMPFieldMetaData createOverride(CMPFieldMetaData data)
+   {
+      if (data == null)
+         throw new IllegalArgumentException("Null data");
+      if (!(data instanceof CMPFieldMetaData))
+         return null;
+
+      JBossCMPFieldMetaData result = new JBossCMPFieldMetaData();
+      result.setFieldName(data.getFieldName());
+      result.setOverridenMetaData(data);
+      return result;
+   }
+}

Modified: jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/cmp/JBossCMPMetaData.java
===================================================================
--- jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/cmp/JBossCMPMetaData.java	2007-08-31 15:58:09 UTC (rev 2524)
+++ jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/cmp/JBossCMPMetaData.java	2007-09-03 13:41:41 UTC (rev 2525)
@@ -28,6 +28,7 @@
 import javax.xml.bind.annotation.XmlNs;
 import javax.xml.bind.annotation.XmlNsForm;
 import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlTransient;
 import javax.xml.bind.annotation.XmlType;
 
 import org.jboss.ejb.metadata.jboss.JBossMetaData;
@@ -58,6 +59,7 @@
 
    private JBossCMPDefaultsMetaData defaults;
    private JBossCMPEnterpriseBeansMetaData enterpriseBeans;
+   private JBossCMPEnterpriseBeansMetaData mergedEnterpriseBeans;
    private JBossCMPRelationshipsMetaData relationships;
    private List<JBossCMPDependentValueClassMetaData> dependentValueClasses;
    private List<JBossCMPTypeMappingMetaData> typeMappings;
@@ -134,7 +136,28 @@
       this.enterpriseBeans = enterpriseBeans;
    }
 
+   @XmlTransient
+   public JBossCMPEnterpriseBeansMetaData getMergedEnterpriseBeans()
+   {
+      if(mergedEnterpriseBeans != null)
+         return mergedEnterpriseBeans;
+      mergedEnterpriseBeans = JBossCMPEnterpriseBeansMetaData.merge(enterpriseBeans, getOverridenMetaDataWithCheck().getEnterpriseBeans());
+      return mergedEnterpriseBeans;
+   }
+
    /**
+    * Get a merged enterprise bean
+    * 
+    * @param name the name
+    * @return the container configuration
+    */
+   @XmlTransient
+   public JBossCMPEntityBeanMetaData getMergedEnterpriseBean(String name)
+   {
+      return getMergedEnterpriseBeans().get(name);
+   }
+
+   /**
     * Get the entityCommands.
     * 
     * @return the entityCommands.

Modified: jbossxb-builder/trunk/src/test/java/org/jboss/javaee/metadata/support/JavaEEMetaDataUtil.java
===================================================================
--- jbossxb-builder/trunk/src/test/java/org/jboss/javaee/metadata/support/JavaEEMetaDataUtil.java	2007-08-31 15:58:09 UTC (rev 2524)
+++ jbossxb-builder/trunk/src/test/java/org/jboss/javaee/metadata/support/JavaEEMetaDataUtil.java	2007-09-03 13:41:41 UTC (rev 2525)
@@ -142,7 +142,16 @@
    {
       return mergeOverride(merged, overriden, mapped, context, "ejb-jar.xml", "jboss.xml", mustOverride);
    }
-   
+
+   public static <C extends MappableMetaData,
+                  O extends MappedMetaData<C>, 
+                  T extends MappableMetaDataWithOverride<C>,
+                  M extends MappedMetaDataWithOverride<C, T, O>> 
+      M mergeOverrideJBossCMPXml(M merged, O overriden, M mapped, String context, boolean mustOverride)
+   {
+      return mergeOverride(merged, overriden, mapped, context, "ejb-jar.xml", "jbosscmp-jdbc.xml", mustOverride);
+   }
+
    /**
     * Merged overriden mapped metadata
     * 
@@ -195,9 +204,14 @@
             if (t == null)
                t = merged.createOverride(c);
             
-            // Return the result
-            t.setOverridenMetaData(c);
-            merged.add(t);
+            // give a chance to ignore an instance
+            // in case of jbosscmp, there are only entity beans
+            if(t != null)
+            {
+               // Return the result
+               t.setOverridenMetaData(c);
+               merged.add(t);
+            }
          }
       }
       

Modified: jbossxb-builder/trunk/src/test/java/org/jboss/test/ejb/AbstractEJBEverythingTest.java
===================================================================
--- jbossxb-builder/trunk/src/test/java/org/jboss/test/ejb/AbstractEJBEverythingTest.java	2007-08-31 15:58:09 UTC (rev 2524)
+++ jbossxb-builder/trunk/src/test/java/org/jboss/test/ejb/AbstractEJBEverythingTest.java	2007-09-03 13:41:41 UTC (rev 2525)
@@ -277,6 +277,12 @@
    private EntityBeanMetaData assertNullEntity(String ejbName, EnterpriseBeansMetaData enterpriseBeansMetaData)
    {
       EntityBeanMetaData entity = assertEntity(ejbName + "EjbName", enterpriseBeansMetaData);
+      assertNullEntity(entity);      
+      return entity;
+   }
+
+   public void assertNullEntity(EntityBeanMetaData entity)
+   {
       assertNull(entity.getId());
       assertNull(entity.getMappedName());
       assertNull(entity.getHome());
@@ -299,8 +305,6 @@
       assertNull(entity.getSecurityRoleRefs());
       assertNull(entity.getSecurityIdentity());
       assertNull(entity.getQueries());
-      
-      return entity;
    }
    
    protected EntityBeanMetaData assertEntity(String ejbName, EnterpriseBeansMetaData enterpriseBeansMetaData)

Modified: jbossxb-builder/trunk/src/test/java/org/jboss/test/ejb/metadata/test/EJBMetaDataTestSuite.java
===================================================================
--- jbossxb-builder/trunk/src/test/java/org/jboss/test/ejb/metadata/test/EJBMetaDataTestSuite.java	2007-08-31 15:58:09 UTC (rev 2524)
+++ jbossxb-builder/trunk/src/test/java/org/jboss/test/ejb/metadata/test/EJBMetaDataTestSuite.java	2007-09-03 13:41:41 UTC (rev 2525)
@@ -49,6 +49,7 @@
       suite.addTest(JBoss5xEverythingUnitTestCase.suite());
       suite.addTest(EjbJarJBossMergeEverythingUnitTestCase.suite());
       suite.addTest(JBossCMPUnitTestCase.suite());
+      suite.addTest(JBossCMPMergeUnitTestCase.suite());
       
       return suite;
    }

Modified: jbossxb-builder/trunk/src/test/java/org/jboss/test/ejb/metadata/test/EjbJar21EverythingUnitTestCase.java
===================================================================
--- jbossxb-builder/trunk/src/test/java/org/jboss/test/ejb/metadata/test/EjbJar21EverythingUnitTestCase.java	2007-08-31 15:58:09 UTC (rev 2524)
+++ jbossxb-builder/trunk/src/test/java/org/jboss/test/ejb/metadata/test/EjbJar21EverythingUnitTestCase.java	2007-09-03 13:41:41 UTC (rev 2525)
@@ -148,6 +148,12 @@
    protected EntityBeanMetaData assertFullEntity(String ejbName, EnterpriseBeansMetaData enterpriseBeansMetaData)
    {
       EntityBeanMetaData entity = assertEntity(ejbName + "EjbName", enterpriseBeansMetaData);
+      assertFullEntity(ejbName, entity);      
+      return entity;
+   }
+
+   public void assertFullEntity(String ejbName, EntityBeanMetaData entity)
+   {
       assertId(ejbName, entity);
       assertClass(ejbName, "Home", entity.getHome());
       assertClass(ejbName, "Remote", entity.getRemote());
@@ -169,8 +175,6 @@
       assertSecurityRoleRefs(ejbName, 2, entity.getSecurityRoleRefs());
       assertSecurityIdentity(ejbName, "SecurityIdentity", entity.getSecurityIdentity(), true);
       assertQueries(ejbName, 2, entity.getQueries());
-      
-      return entity;
    }
 
    private void assertCmpFields(String ejbName, int size, CMPFieldsMetaData cmpFieldsMetaData)

Modified: jbossxb-builder/trunk/src/test/java/org/jboss/test/ejb/metadata/test/JBossCMPUnitTestCase.java
===================================================================
--- jbossxb-builder/trunk/src/test/java/org/jboss/test/ejb/metadata/test/JBossCMPUnitTestCase.java	2007-08-31 15:58:09 UTC (rev 2524)
+++ jbossxb-builder/trunk/src/test/java/org/jboss/test/ejb/metadata/test/JBossCMPUnitTestCase.java	2007-09-03 13:41:41 UTC (rev 2525)
@@ -27,7 +27,7 @@
 import junit.framework.Test;
 
 import org.jboss.ejb.metadata.jboss.cmp.JBossCMPAuditMetaData;
-import org.jboss.ejb.metadata.jboss.cmp.JBossCMPCMPFieldMetaData;
+import org.jboss.ejb.metadata.jboss.cmp.JBossCMPFieldMetaData;
 import org.jboss.ejb.metadata.jboss.cmp.JBossCMPDeclaredSqlMetaData;
 import org.jboss.ejb.metadata.jboss.cmp.JBossCMPDefaultsMetaData;
 import org.jboss.ejb.metadata.jboss.cmp.JBossCMPDependentValueClassMetaData;
@@ -36,6 +36,7 @@
 import org.jboss.ejb.metadata.jboss.cmp.JBossCMPEnterpriseBeansMetaData;
 import org.jboss.ejb.metadata.jboss.cmp.JBossCMPEntityBeanMetaData;
 import org.jboss.ejb.metadata.jboss.cmp.JBossCMPEntityCommandMetaData;
+import org.jboss.ejb.metadata.jboss.cmp.JBossCMPFieldsMetaData;
 import org.jboss.ejb.metadata.jboss.cmp.JBossCMPKeyFieldMetaData;
 import org.jboss.ejb.metadata.jboss.cmp.JBossCMPLoadGroupMetaData;
 import org.jboss.ejb.metadata.jboss.cmp.JBossCMPMetaData;
@@ -392,11 +393,11 @@
       //
       // cmp-fields
       //
-      List<JBossCMPCMPFieldMetaData> cmpFields = entity.getCmpFields();
+      JBossCMPFieldsMetaData cmpFields = entity.getCmpFields();
       assertNotNull(cmpFields);
       assertEquals(3, cmpFields.size());
       
-      JBossCMPCMPFieldMetaData field = cmpFields.get(0);
+      JBossCMPFieldMetaData field = cmpFields.get("id");
       assertNotNull(field);
       assertEquals("id", field.getFieldName());
       assertFalse(field.isReadOnly());
@@ -411,7 +412,7 @@
       assertFalse(field.isCheckDirtyAfterGet());
       assertNull(field.getStateFactory());
 
-      field = cmpFields.get(1);
+      field = cmpFields.get("name");
       assertNotNull(field);
       assertEquals("name", field.getFieldName());
       assertTrue(field.isReadOnly());
@@ -426,7 +427,7 @@
       assertTrue(field.isCheckDirtyAfterGet());
       assertEquals("entity2.StateFactory", field.getStateFactory());
 
-      field = cmpFields.get(2);
+      field = cmpFields.get("address");
       assertNotNull(field);
       assertEquals("address", field.getFieldName());
       assertFalse(field.isReadOnly());

Added: jbossxb-builder/trunk/src/test/resources/org/jboss/test/ejb/metadata/test/JBossCMPMerge_testMerge.xml
===================================================================
--- jbossxb-builder/trunk/src/test/resources/org/jboss/test/ejb/metadata/test/JBossCMPMerge_testMerge.xml	                        (rev 0)
+++ jbossxb-builder/trunk/src/test/resources/org/jboss/test/ejb/metadata/test/JBossCMPMerge_testMerge.xml	2007-09-03 13:41:41 UTC (rev 2525)
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<jbosscmp-jdbc xmlns="http://www.jboss.com/xml/ns/javaee/cmp2x"
+       xmlns:jee="http://java.sun.com/xml/ns/javaee"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://www.jboss.com/xml/ns/javaee/cmp2x http://www.jboss.org/j2ee/schema/jbosscmp-jdbc_5_0.xsd">
+
+   <enterprise-beans>
+      <entity>
+         <ejb-name>entity1EjbName</ejb-name>
+      </entity>
+
+      <entity>
+         <ejb-name>entity2EjbName</ejb-name>
+         <datasource>java:/DefaultDS</datasource>
+         <datasource-mapping>Hypersonic SQL</datasource-mapping>
+         <create-table>true</create-table>
+         <remove-table>true</remove-table>
+
+         <table-name>entity2Table</table-name>
+         <cmp-field>
+            <field-name>entity2CmpField2</field-name>
+            <read-only>true</read-only>
+            <read-time-out>1111</read-time-out>
+            <column-name>name_column</column-name>
+            <not-null>true</not-null>
+            <jdbc-type>VARCHAR</jdbc-type>
+            <sql-type>VARCHAR(111)</sql-type>
+            <auto-increment/>
+            <dbindex/>
+            <check-dirty-after-get>true</check-dirty-after-get>
+            <state-factory>entity2.StateFactory</state-factory>
+         </cmp-field>
+
+         <query>
+            <description>overriden entity2Query1QueryMethod</description>
+            <query-method>
+               <method-name>entity2Query1QueryMethod</method-name>
+               <method-params>
+                  <method-param>entity2Query1QueryMethodParam1</method-param>
+                  <method-param>entity2Query1QueryMethodParam2</method-param>
+               </method-params>
+            </query-method>
+            <jboss-ql>select object(o) from entity2</jboss-ql>
+            <read-ahead>
+               <strategy>on-load</strategy>
+               <page-size>22</page-size>
+               <eager-load-group>eager-group</eager-load-group>
+            </read-ahead>
+            <ql-compiler>entity.QLCompiler</ql-compiler>
+            <lazy-resultset-loading>true</lazy-resultset-loading>
+         </query>
+      </entity>
+   </enterprise-beans>
+
+   <relationships>
+      <ejb-relation>
+         <ejb-relation-name>relation2Name</ejb-relation-name>
+         <ejb-relationship-role>
+            <ejb-relationship-role-name>relation2Role1Name</ejb-relationship-role-name>
+            <key-fields>
+               <key-field>
+                  <field-name>id1</field-name>
+                  <column-name>a_id1</column-name>
+                  <jdbc-type>INTEGER</jdbc-type>
+                  <sql-type>NUMERIC</sql-type>
+               </key-field>
+               <key-field>
+                  <field-name>id2</field-name>
+                  <column-name>a_id2</column-name>
+                  <dbindex/>
+               </key-field>
+            </key-fields>
+         </ejb-relationship-role>
+         <ejb-relationship-role>
+            <ejb-relationship-role-name>relation2Role2Name</ejb-relationship-role-name>
+            <key-fields/>
+            <batch-cascade-delete/>
+         </ejb-relationship-role>
+      </ejb-relation>
+   </relationships>
+
+</jbosscmp-jdbc>




More information about the jboss-svn-commits mailing list