User: dsundstrom Date: 01/07/09 14:49:23 Modified: src/main/org/jboss/ejb/plugins/cmp/jdbc/metadata JDBCApplicationMetaData.java JDBCEntityMetaData.java Log: Added relationship metadata. Revision Changes Path 1.5 +53 -14 jboss/src/main/org/jboss/ejb/plugins/cmp/jdbc/metadata/JDBCApplicationMetaData.java Index: JDBCApplicationMetaData.java =================================================================== RCS file: /cvsroot/jboss/jboss/src/main/org/jboss/ejb/plugins/cmp/jdbc/metadata/JDBCApplicationMetaData.java,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- JDBCApplicationMetaData.java 2001/06/27 03:55:36 1.4 +++ JDBCApplicationMetaData.java 2001/07/09 21:49:23 1.5 @@ -6,30 +6,27 @@ */ package org.jboss.ejb.plugins.cmp.jdbc.metadata; +import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; - -import javax.sql.DataSource; import javax.naming.InitialContext; import javax.naming.NamingException; - -import org.w3c.dom.Element; - -import org.jboss.logging.Logger; +import javax.sql.DataSource; import org.jboss.ejb.DeploymentException; - -import org.jboss.metadata.XmlLoadable; -import org.jboss.metadata.MetaData; +import org.jboss.logging.Logger; +import org.jboss.metadata.ApplicationMetaData; import org.jboss.metadata.BeanMetaData; import org.jboss.metadata.EntityMetaData; -import org.jboss.metadata.ApplicationMetaData; - +import org.jboss.metadata.MetaData; +import org.jboss.metadata.RelationMetaData; +import org.jboss.metadata.XmlLoadable; +import org.w3c.dom.Element; /** * * @author <a href="mailto:[EMAIL PROTECTED]">Dain Sundstrom</a> * @author <a href="[EMAIL PROTECTED]">Sebastien Alborini</a> - * @version $Revision: 1.4 $ + * @version $Revision: 1.5 $ */ public class JDBCApplicationMetaData extends MetaData implements XmlLoadable { // Constants ----------------------------------------------------- @@ -59,10 +56,16 @@ // the type mapping to use with the specified database private JDBCTypeMappingMetaData typeMapping; - + + /** + * Map of relations in this application by name. + * Items are instance of JDBCRelationMetaData. + */ + private HashMap relationships = new HashMap(); + // all the available dependent value classes (by javaType) private HashMap valueClasses = new HashMap(); - + // Static -------------------------------------------------------- @@ -94,6 +97,14 @@ } } } + + // relationships + Iterator iterator = applicationMetaData.getRelationships(); + while(iterator.hasNext()) { + RelationMetaData relation = (RelationMetaData) iterator.next(); + JDBCRelationMetaData jdbcRelation = new JDBCRelationMetaData(relation, this); + relationships.put(jdbcRelation.getRelationName(), jdbcRelation); + } } @@ -110,6 +121,14 @@ return typeMapping; } + /** + * Get the container managed relations in this application. + * Items are instance of JDBCRelationMetaData. + */ + public Iterator getRelationships() { + return relationships.values().iterator(); + } + public Iterator getValueClasses() { return valueClasses.values().iterator(); } @@ -217,6 +236,26 @@ } } + // relationships + // get the beans data (only in jbosscmp-jdbc.xml) + Element relationshipsElement = getOptionalChild(element, "relationships"); + if(relationshipsElement != null) { + iterator = getChildrenByTagName(relationshipsElement, "ejb-relation"); + while(iterator.hasNext()) { + Element relationElement = (Element)iterator.next(); + + // get the bean's data, gaurenteed to work because we create + // a metadata object for each bean in the constructor. + String relationName = getElementContent(getUniqueChild(relationElement, "ejb-relation-name")); + JDBCRelationMetaData relation = (JDBCRelationMetaData)relationships.get(relationName); + if(relation != null) { + relation.importXml(relationElement); + } else { + Logger.warning("Warning: data found in jbosscmp-jdbc.xml for relation " + relationName + " but relation is not a jbosscmp-jdbc-managed relation in ejb-jar.xml"); + } + } + } + // dependent-value-objects Element valueClassesElement = getOptionalChild(element, "dependent-value-classes"); if(valueClassesElement != null) { 1.2 +25 -4 jboss/src/main/org/jboss/ejb/plugins/cmp/jdbc/metadata/JDBCEntityMetaData.java Index: JDBCEntityMetaData.java =================================================================== RCS file: /cvsroot/jboss/jboss/src/main/org/jboss/ejb/plugins/cmp/jdbc/metadata/JDBCEntityMetaData.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- JDBCEntityMetaData.java 2001/06/24 03:23:15 1.1 +++ JDBCEntityMetaData.java 2001/07/09 21:49:23 1.2 @@ -28,7 +28,7 @@ * @author <a href="mailto:[EMAIL PROTECTED]">Dain Sundstrom</a> * @author <a href="[EMAIL PROTECTED]">Sebastien Alborini</a> * @author <a href="mailto:[EMAIL PROTECTED]">Dirk Zimmermann</a> - * @version $Revision: 1.1 $ + * @version $Revision: 1.2 $ */ public class JDBCEntityMetaData extends MetaData implements XmlLoadable { // Constants ----------------------------------------------------- @@ -48,10 +48,10 @@ // the implementation class of the bean private Class entityClass; - // the implementation class of the bean + // the home class of the bean private Class homeClass; - // the implementation class of the bean + // the local home class of the bean private Class localHomeClass; // the name of the table to use for this bean @@ -92,6 +92,9 @@ // used to create query meta data private JDBCQueryMetaDataFactory queryFactory; + + // all relationship roles for this entity + private ArrayList relationshipRoles; // Static -------------------------------------------------------- @@ -128,7 +131,7 @@ throw new DeploymentException("home class not found: " + home); } - String localHome = entity.getHome(); + String localHome = entity.getLocalHome(); try { if(localHome != null) { localHomeClass = classLoader.loadClass(localHome); @@ -173,6 +176,9 @@ queryFactory.createJDBCQueryMetaData(queryData, methods[i])); } } + + // Create no relationship roles for this entity, will be added by the relation meta data + relationshipRoles = new ArrayList(); } // Public -------------------------------------------------------- @@ -436,6 +442,21 @@ public Iterator getQueries() { return queries.values().iterator(); + } + + /** + * Get the relationsip roles of this entity. + * Items are instance of JDBCRelationshipRoleMetaData. + */ + public Iterator getRelationshipRoles() { + return relationshipRoles.iterator(); + } + + /** + * Adds a new relationsip roles to this entity. + */ + public void addRelationshipRole(JDBCRelationshipRoleMetaData role) { + relationshipRoles.add(role); } public Class getPrimaryKeyClass() { _______________________________________________ Jboss-development mailing list [EMAIL PROTECTED] http://lists.sourceforge.net/lists/listinfo/jboss-development