[jboss-cvs] JBossAS SVN: r58196 - in trunk/server/src/main/org/jboss: deployment metadata

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Tue Nov 7 19:18:17 EST 2006


Author: alex.loubyansky at jboss.com
Date: 2006-11-07 19:18:14 -0500 (Tue, 07 Nov 2006)
New Revision: 58196

Modified:
   trunk/server/src/main/org/jboss/deployment/EjbJarObjectFactory.java
   trunk/server/src/main/org/jboss/metadata/RelationMetaData.java
   trunk/server/src/main/org/jboss/metadata/RelationshipRoleMetaData.java
Log:
some fixes in CMR-related parsing

Modified: trunk/server/src/main/org/jboss/deployment/EjbJarObjectFactory.java
===================================================================
--- trunk/server/src/main/org/jboss/deployment/EjbJarObjectFactory.java	2006-11-07 23:37:37 UTC (rev 58195)
+++ trunk/server/src/main/org/jboss/deployment/EjbJarObjectFactory.java	2006-11-08 00:18:14 UTC (rev 58196)
@@ -22,9 +22,7 @@
 package org.jboss.deployment;
 
 import java.util.ArrayList;
-import java.util.HashSet;
 import java.util.List;
-import java.util.Set;
 
 import org.jboss.logging.Logger;
 import org.jboss.metadata.ApplicationMetaData;
@@ -48,6 +46,7 @@
  * An ObjectModelFactory implementation for parsing ejb-jar.xml descriptors.
  * 
  * @author Scott.Stark at jboss.org
+ * @author Alexey.Loubyansky at jboss.org
  * @version $Revision:$
  */
 public class EjbJarObjectFactory extends DDObjectFactory
@@ -57,28 +56,6 @@
    private int ejbVersion = 2;
    private int ejbMinorVersion = 0;
 
-   static class EnterpriseBeans
-   {
-      ApplicationMetaData app;
-      EnterpriseBeans(ApplicationMetaData app)
-      {
-         this.app = app;
-      }
-      List<EntityMetaData> entityBeans = new ArrayList<EntityMetaData>();
-      List<SessionMetaData> sessionBeans = new ArrayList<SessionMetaData>();
-      List<MessageDrivenMetaData> messageBeans = new ArrayList<MessageDrivenMetaData>();
-   }
-   static class Relationships
-   {
-      ApplicationMetaData app;
-      Relationships(ApplicationMetaData app)
-      {
-         this.app = app;
-      }
-      // used to assure that a relationship name is not reused
-      Set relationNames = new HashSet();
-      List<RelationMetaData> relations = new ArrayList<RelationMetaData>();      
-   }
    static class AssemblyDescriptor
    {
       static class MethodPermission
@@ -161,9 +138,17 @@
 
       // Check elements
       if (localName.equals("enterprise-beans"))
-         child = new EnterpriseBeans(dd);
+         child = dd;
+      else if(localName.equals("entity"))
+         child = new EntityMetaData(dd);
+      else if(localName.equals("session"))
+         child = new SessionMetaData(dd);
+      else if(localName.equals("message-driven"))
+         child = new MessageDrivenMetaData(dd);
       else if(localName.equals("relationships"))
-         child = new Relationships(dd);
+         child = dd;
+      else if (localName.equals("ejb-relation"))
+         child = new RelationMetaData();
       else if( localName.equals("assembly-descriptor"))
          child = new AssemblyDescriptor();
       else if(localName.equals("icon"))
@@ -175,35 +160,6 @@
       return child;
    }
 
-   /**
-    * ejb-jar/enterprise-beans children
-    * 
-    * @param module
-    * @param navigator
-    * @param namespaceURI
-    * @param localName
-    * @param attrs
-    * @return
-    */
-   public Object newChild(EnterpriseBeans beans, UnmarshallingContext navigator,
-         String namespaceURI, String localName, Attributes attrs)
-   {
-      Object child = null;
-      if (localName.equals("entity"))
-      {
-         child = new EntityMetaData(beans.app);
-      }
-      else if (localName.equals("session"))
-      {
-         child = new SessionMetaData(beans.app);
-      }
-      else if (localName.equals("message-driven"))
-      {
-         child = new MessageDrivenMetaData(beans.app);
-      }
-      return child;
-   }
-
    public Object newChild(EntityMetaData entity, UnmarshallingContext navigator,
          String namespaceURI, String localName, Attributes attrs)
    {
@@ -254,83 +210,89 @@
       return child;
    }
 
-   /**
-    * 
-    * @param relations
-    * @param navigator
-    * @param namespaceURI
-    * @param localName
-    * @param attrs
-    * @return
-    */
-   public Object newChild(Relationships relations, UnmarshallingContext navigator,
+   public Object newChild(RelationMetaData relation, UnmarshallingContext navigator,
          String namespaceURI, String localName, Attributes attrs)
    {
       Object child = null;
-      if (localName.equals("ejb-relation"))
-         child = new RelationMetaData();
+      
+      // left role
+      if( localName.equals("ejb-relationship-role") )
+      {
+         child = new RelationshipRoleMetaData(relation);
+      }
       else
       {
          log.debug("Ignoring: " + localName);
       }
       return child;
    }
-   public Object newChild(RelationMetaData relation, UnmarshallingContext navigator,
+
+   public Object newChild(RelationshipRoleMetaData role, UnmarshallingContext navigator,
          String namespaceURI, String localName, Attributes attrs)
    {
       Object child = null;
-      
-      // left role
-      if( localName.equals("ejb-relationship-role") )
+      if(localName.equals("cascade-delete"))
       {
-         child = new RelationshipRoleMetaData(relation);
-         // TODO need to populate RelationshipRoleMetaData
-      }      
-      else
+         role.setCascadeDelete(true);
+      }
+      else if(localName.equals("relationship-role-source") ||
+         localName.equals("cmr-field"))
       {
-         log.debug("Ignoring: " + localName);
+         child = role;
       }
       return child;
    }
 
-   public void addChild(ApplicationMetaData parent, EnterpriseBeans beans,
+   public void addChild(ApplicationMetaData parent, EntityMetaData entity,
          UnmarshallingContext navigator, String namespaceURI, String localName)
    {
-      // Noop
+      parent.addBeanMetaData(entity);
    }
-   public void addChild(EnterpriseBeans beans, EntityMetaData md,
+
+   public void addChild(ApplicationMetaData parent, SessionMetaData session,
          UnmarshallingContext navigator, String namespaceURI, String localName)
    {
-      beans.app.addBeanMetaData(md);
+      parent.addBeanMetaData(session);
    }
-   public void addChild(EnterpriseBeans beans, SessionMetaData md,
+
+   public void addChild(ApplicationMetaData parent, MessageDrivenMetaData mdb,
          UnmarshallingContext navigator, String namespaceURI, String localName)
    {
-      beans.app.addBeanMetaData(md);
+      parent.addBeanMetaData(mdb);
    }
-   public void addChild(EnterpriseBeans beans, MessageDrivenMetaData md,
-         UnmarshallingContext navigator, String namespaceURI, String localName)
-   {
-      beans.app.addBeanMetaData(md);
-   }
 
-   public void addChild(ApplicationMetaData parent, Relationships relationships,
+   public void addChild(ApplicationMetaData parent, RelationMetaData relation,
          UnmarshallingContext navigator, String namespaceURI, String localName)
    {
-      // Noop?
+      parent.addRelationship(relation);
    }
-   public void addChild(Relationships relationships, RelationMetaData relation,
-         UnmarshallingContext navigator, String namespaceURI, String localName)
-   {
-      // Need to validate...
-      relationships.app.addRelationship(relation);
-   }
+
    public void addChild(ApplicationMetaData parent, AssemblyDescriptor ad,
          UnmarshallingContext navigator, String namespaceURI, String localName)
    {
       // TODO
    }
 
+   public void addChild(RelationMetaData relation, RelationshipRoleMetaData role,
+                        UnmarshallingContext ctx, String namespaceURI, String localName)
+   {
+      if(role.getRelationshipRoleName() == null)
+      {
+         role.setRelationshipRoleName(
+            role.getEntityName() + (role.getCMRFieldName() == null ? "" : "_" + role.getCMRFieldName())
+         );
+      }
+
+      if(relation.getLeftRelationshipRole() == null)
+      {
+         relation.setLeftRelationshipRole(role);
+      }
+      else
+      {
+         relation.setRightRelationshipRole(role);
+      }
+   }
+
    /**
     * Set text values of ejb-jar/* children
     * @param dd
@@ -504,7 +466,31 @@
       {
          relation.setRelationName(value);
       }
-      
    }
 
+   public void setValue(RelationshipRoleMetaData role,
+         UnmarshallingContext navigator, String namespaceURI, String localName,
+         String value)
+   {
+      if(localName.equals("ejb-relationship-role-name"))
+      {
+         role.setRelationshipRoleName(value);
+      }
+      else if(localName.equals("multiplicity"))
+      {
+         role.setMultiplicity(value);
+      }
+      else if(localName.equals("ejb-name"))
+      {
+         role.setEntityName(value);
+      }
+      else if(localName.equals("cmr-field-name"))
+      {
+         role.setCmrFieldName(value);
+      }
+      else if(localName.equals("cmr-field-type"))
+      {
+         role.setCmrFieldType(value);
+      }
+   }
 }

Modified: trunk/server/src/main/org/jboss/metadata/RelationMetaData.java
===================================================================
--- trunk/server/src/main/org/jboss/metadata/RelationMetaData.java	2006-11-07 23:37:37 UTC (rev 58195)
+++ trunk/server/src/main/org/jboss/metadata/RelationMetaData.java	2006-11-08 00:18:14 UTC (rev 58196)
@@ -114,7 +114,7 @@
 
    public void setRightRelationshipRole(RelationshipRoleMetaData left)
    {
-      this.left = left;
+      this.right = left;
    }
 
    public RelationshipRoleMetaData getOtherRelationshipRole(RelationshipRoleMetaData role)

Modified: trunk/server/src/main/org/jboss/metadata/RelationshipRoleMetaData.java
===================================================================
--- trunk/server/src/main/org/jboss/metadata/RelationshipRoleMetaData.java	2006-11-07 23:37:37 UTC (rev 58195)
+++ trunk/server/src/main/org/jboss/metadata/RelationshipRoleMetaData.java	2006-11-08 00:18:14 UTC (rev 58196)
@@ -139,7 +139,50 @@
    public String getCMRFieldType() {
       return cmrFieldType;
    }
-   
+
+   public void setRelationshipRoleName(String relationshipRoleName)
+   {
+      this.relationshipRoleName = relationshipRoleName;
+   }
+
+   public void setMultiplicity(String multiplicity)
+   {
+      if("One".equals(multiplicity))
+      {
+         this.multiplicity = ONE;
+      }
+      else if("Many".equals(multiplicity))
+      {
+         this.multiplicity = MANY;
+      }
+      else
+      {
+         throw new IllegalStateException("multiplicity must be exactaly 'One' " +
+               "or 'Many' but is " + multiplicity + "; this is case " +
+               "sensitive");
+      }
+   }
+
+   public void setCascadeDelete(boolean cascadeDelete)
+   {
+      this.cascadeDelete = cascadeDelete;
+   }
+
+   public void setEntityName(String entityName)
+   {
+      this.entityName = entityName;
+   }
+
+   public void setCmrFieldName(String cmrFieldName)
+   {
+      this.cmrFieldName = cmrFieldName;
+   }
+
+   public void setCmrFieldType(String cmrFieldType)
+   {
+      this.cmrFieldType = cmrFieldType;
+   }
+
    public void importEjbJarXml (Element element) throws DeploymentException {
       // ejb-relationship-role-name?
       relationshipRoleName =




More information about the jboss-cvs-commits mailing list