Am I the only one who just got this message dated the 8th of
September?  Actually, I think I got it before too, though it has been a
while...

Aaron

On Fri, 8 Sep 2000, jBoss CVS Development wrote:
>   User: salborini
>   Date: 00/09/08 19:52:58
> 
>   Modified:    src/main/org/jboss/ejb/plugins/jaws/jdbc
>                         JDBCBeanExistsCommand.java JDBCCommand.java
>                         JDBCCommandFactory.java
>                         JDBCCreateEntityCommand.java
>                         JDBCDefinedFinderCommand.java
>                         JDBCDestroyCommand.java JDBCFindAllCommand.java
>                         JDBCFindByCommand.java JDBCFindEntitiesCommand.java
>                         JDBCFinderCommand.java JDBCInitCommand.java
>                         JDBCLoadEntityCommand.java
>                         JDBCRemoveEntityCommand.java
>                         JDBCStoreEntityCommand.java
>   Log:
>   Modifications:
>   
>   - to use the new jaws.metadata package
>   
>   - to store ejb references by using their handle instead of their primary key
>   
>   Revision  Changes    Path
>   1.4       +2 -2      
>jboss/src/main/org/jboss/ejb/plugins/jaws/jdbc/JDBCBeanExistsCommand.java
>   
>   Index: JDBCBeanExistsCommand.java
>   ===================================================================
>   RCS file: 
>/products/cvs/ejboss/jboss/src/main/org/jboss/ejb/plugins/jaws/jdbc/JDBCBeanExistsCommand.java,v
>   retrieving revision 1.3
>   retrieving revision 1.4
>   diff -u -r1.3 -r1.4
>   --- JDBCBeanExistsCommand.java      2000/08/24 10:56:36     1.3
>   +++ JDBCBeanExistsCommand.java      2000/09/09 02:52:55     1.4
>   @@ -19,7 +19,7 @@
>     * @see <related>
>     * @author <a href="mailto:[EMAIL PROTECTED]">Marc Fleury</a>
>     * @author <a href="mailto:[EMAIL PROTECTED]">Justin Forder</a>
>   - * @version $Revision: 1.3 $
>   + * @version $Revision: 1.4 $
>     */
>    public class JDBCBeanExistsCommand extends JDBCQueryCommand
>    {
>   @@ -28,7 +28,7 @@
>       public JDBCBeanExistsCommand(JDBCCommandFactory factory)
>       {
>          super(factory, "Exists");
>   -      String sql = "SELECT COUNT(*) AS Total FROM " + metaInfo.getTableName() +
>   +      String sql = "SELECT COUNT(*) AS Total FROM " + jawsEntity.getTableName() +
>                       " WHERE " + getPkColumnWhereList();
>          setSQL(sql);
>       }
>   
>   
>   
>   1.12      +54 -101   
>jboss/src/main/org/jboss/ejb/plugins/jaws/jdbc/JDBCCommand.java
>   
>   Index: JDBCCommand.java
>   ===================================================================
>   RCS file: 
>/products/cvs/ejboss/jboss/src/main/org/jboss/ejb/plugins/jaws/jdbc/JDBCCommand.java,v
>   retrieving revision 1.11
>   retrieving revision 1.12
>   diff -u -r1.11 -r1.12
>   --- JDBCCommand.java        2000/09/09 02:23:41     1.11
>   +++ JDBCCommand.java        2000/09/09 02:52:55     1.12
>   @@ -33,15 +33,14 @@
>    import java.rmi.RemoteException;
>    
>    import javax.ejb.EJBObject;
>   +import javax.ejb.Handle;
>    
>    import javax.sql.DataSource;
>    
>    import org.jboss.ejb.EntityEnterpriseContext;
>   -import org.jboss.ejb.plugins.jaws.CMPFieldInfo;
>   -import org.jboss.ejb.plugins.jaws.MetaInfo;
>   -import org.jboss.ejb.plugins.jaws.PkFieldInfo;
>   -import org.jboss.ejb.plugins.jaws.deployment.JawsEntity;
>   -import org.jboss.ejb.plugins.jaws.deployment.JawsCMPField;
>   +import org.jboss.ejb.plugins.jaws.metadata.JawsEntityMetaData;
>   +import org.jboss.ejb.plugins.jaws.metadata.CMPFieldMetaData;
>   +import org.jboss.ejb.plugins.jaws.metadata.PkFieldMetaData;
>    import org.jboss.logging.Log;
>    import org.jboss.logging.Logger;
>    
>   @@ -52,7 +51,7 @@
>     * utility methods that database commands may need to call.
>     *
>     * @author <a href="mailto:[EMAIL PROTECTED]">Justin Forder</a>
>   - * @version $Revision: 1.11 $
>   + * @version $Revision: 1.12 $
>     */
>    public abstract class JDBCCommand
>    {
>   @@ -85,10 +84,11 @@
>                e.printStackTrace();
>            }
>        }
>   +
>       // Attributes ----------------------------------------------------
>    
>       protected JDBCCommandFactory factory;
>   -   protected MetaInfo metaInfo;
>   +   protected JawsEntityMetaData jawsEntity;
>       protected Log log;
>       protected String name;    // Command name, used for debug trace
>    
>   @@ -113,7 +113,7 @@
>       protected JDBCCommand(JDBCCommandFactory factory, String name)
>       {
>          this.factory = factory;
>   -      this.metaInfo = factory.getMetaInfo();
>   +      this.jawsEntity = factory.getMetaData();
>          this.log = factory.getLog();
>          this.name = name;
>       }
>   @@ -281,9 +281,17 @@
>              } else if(jdbcType == Types.TIMESTAMP) {
>                  if(value.getClass().getName().equals("java.util.Date"))
>                      value = new 
>java.sql.Timestamp(((java.util.Date)value).getTime());
>   -          }
>   +          }                         
>              if (jdbcType == Types.JAVA_OBJECT) {
>   -              ByteArrayOutputStream baos = new ByteArrayOutputStream();
>   +              
>   +                     // ejb-reference: store the handle
>   +                     if (value instanceof EJBObject) try {
>   +                            value = ((EJBObject)value).getHandle();
>   +                     } catch (RemoteException e) {
>   +                            throw new SQLException("Cannot get Handle of 
>EJBObject: "+e);
>   +                     }
>   +                     
>   +                     ByteArrayOutputStream baos = new ByteArrayOutputStream();
>    
>                  try {
>                      ObjectOutputStream oos = new ObjectOutputStream(baos);
>   @@ -320,89 +328,28 @@
>                                             Object id)
>          throws IllegalAccessException, SQLException
>       {
>   -      Iterator it = metaInfo.getPkFieldInfos();
>   -
>   -      if (metaInfo.hasCompositeKey())
>   +      Iterator it = jawsEntity.getPkFields();
>   +      
>   +      if (jawsEntity.hasCompositeKey())
>          {
>             while (it.hasNext())
>             {
>   -            PkFieldInfo pkFieldInfo = (PkFieldInfo)it.next();
>   -            int jdbcType = pkFieldInfo.getJDBCType();
>   -            Object value = getPkFieldValue(id, pkFieldInfo);
>   +            PkFieldMetaData pkFieldMetaData = (PkFieldMetaData)it.next();
>   +            int jdbcType = pkFieldMetaData.getJDBCType();
>   +            Object value = getPkFieldValue(id, pkFieldMetaData);
>                setParameter(stmt, parameterIndex++, jdbcType, value);
>             }
>          } else
>          {
>   -         PkFieldInfo pkFieldInfo = (PkFieldInfo)it.next();
>   -         int jdbcType = pkFieldInfo.getJDBCType();
>   +         PkFieldMetaData pkFieldMetaData = (PkFieldMetaData)it.next();
>   +         int jdbcType = pkFieldMetaData.getJDBCType();
>             setParameter(stmt, parameterIndex++, jdbcType, id);
>          }
>    
>          return parameterIndex;
>       }
>    
>   -   /**
>   -    * Sets parameter(s) representing a foreign key in this
>   -    * Command's PreparedStatement.
>   -    * TODO: (JF) tighten up the typing of the value parameter.
>   -    *
>   -    * @param stmt the PreparedStatement whose parameters need to be set.
>   -    * @param idx the index (1-based) of the first parameter to be set.
>   -    * @param fieldInfo the CMP meta-info for the field containing the
>   -    *  entity reference.
>   -    * @param value the entity (EJBObject) referred to by the reference
>   -    *  (may be null).
>   -    * @return the index of the next unset parameter.
>   -    * @throws SQLException if the access to the referred-to entity's primary
>   -    *  key fails, or if parameter setting fails.
>   -    */
>   -   protected int setForeignKey(PreparedStatement stmt,
>   -                             int idx,
>   -                             CMPFieldInfo fieldInfo,
>   -                             Object value)
>   -      throws SQLException
>   -   {
>   -      JawsCMPField[] pkInfo = fieldInfo.getForeignKeyCMPFields();
>   -      Object pk = null;
>    
>   -      if (value != null)
>   -      {
>   -         try
>   -         {
>   -            pk = ((EJBObject)value).getPrimaryKey();
>   -         } catch (RemoteException e)
>   -         {
>   -            throw new SQLException("Could not extract primary key from EJB 
>reference:"+e);
>   -         }
>   -      }
>   -
>   -      if 
>(!((JawsEntity)pkInfo[0].getBeanContext()).getPrimaryKeyField().equals(""))
>   -      {
>   -         // Primitive key
>   -         int jdbcType = getJawsCMPFieldJDBCType(pkInfo[0]);
>   -         Object fieldValue = (value == null) ? null : pk;
>   -         setParameter(stmt, idx, jdbcType, fieldValue);
>   -         return idx+1;
>   -      } else
>   -      {
>   -         // Compound key
>   -         Field[] fields = (value == null) ? null : pk.getClass().getFields();
>   -         try
>   -         {
>   -            for (int i = 0; i < pkInfo.length; i++)
>   -            {
>   -               int jdbcType = getJawsCMPFieldJDBCType(pkInfo[i]);
>   -               Object fieldValue = (value == null) ? null : fields[i].get(pk);
>   -               setParameter(stmt, idx+i, jdbcType, fieldValue);
>   -            }
>   -         } catch (IllegalAccessException e)
>   -         {
>   -            throw new SQLException("Could not extract fields from primary 
>key:"+e);
>   -         }
>   -         return idx+pkInfo.length;
>   -      }
>   -   }
>   -
>       /**
>        * Used for all retrieval of results from <code>ResultSet</code>s.
>        * Implements tracing, and allows some tweaking of returned types.
>   @@ -432,6 +379,7 @@
>            result = rs.getObject(idx);
>            if(result == null)
>                return null;
>   +
>            if(destination.isAssignableFrom(result.getClass()))
>                return result;
>    // DEBUG        else System.out.println("Got a "+result.getClass().getName()+": 
>'"+result+"' while looking for a "+destination.getName());
>   @@ -454,12 +402,18 @@
>                try {
>                    WorkaroundInputStream ois = new WorkaroundInputStream(bais);
>                    result = ois.readObject();
>   +                           
>   +                           // ejb-reference: get the object back from the handle
>   +                           if (result instanceof Handle) result = 
>((Handle)result).getEJBObject();
>   +                   
>                    if(!destination.isAssignableFrom(result.getClass())) {
>                        System.out.println("Unable to load a ResultSet column into a 
>variable of type '"+destination.getName()+"' (got a 
>"+result.getClass().getName()+")");
>                        result = null;
>                    }
>    
>                    ois.close();
>   +                   } catch (RemoteException e) {
>   +                           throw new SQLException("Unable to load EJBObject back 
>from Handle: " +e);
>                } catch (IOException e) {
>                    throw new SQLException("Unable to load a ResultSet column into a 
>variable of type '"+destination.getName()+"': "+e);
>                } catch (ClassNotFoundException e) {
>   @@ -517,11 +471,11 @@
>       protected final String getPkColumnList()
>       {
>          StringBuffer sb = new StringBuffer();
>   -      Iterator it = metaInfo.getPkFieldInfos();
>   +      Iterator it = jawsEntity.getPkFields();
>          while (it.hasNext())
>          {
>   -         PkFieldInfo pkFieldInfo = (PkFieldInfo)it.next();
>   -         sb.append(pkFieldInfo.getColumnName());
>   +         PkFieldMetaData pkFieldMetaData = (PkFieldMetaData)it.next();
>   +         sb.append(pkFieldMetaData.getColumnName());
>             if (it.hasNext())
>             {
>                sb.append(",");
>   @@ -540,11 +494,11 @@
>       protected final String getPkColumnWhereList()
>       {
>          StringBuffer sb = new StringBuffer();
>   -      Iterator it = metaInfo.getPkFieldInfos();
>   +      Iterator it = jawsEntity.getPkFields();
>          while (it.hasNext())
>          {
>   -         PkFieldInfo pkFieldInfo = (PkFieldInfo)it.next();
>   -         sb.append(pkFieldInfo.getColumnName());
>   +         PkFieldMetaData pkFieldMetaData = (PkFieldMetaData)it.next();
>   +         sb.append(pkFieldMetaData.getColumnName());
>             sb.append("=?");
>             if (it.hasNext())
>             {
>   @@ -557,16 +511,16 @@
>       // MF: PERF!!!!!!!
>       protected Object[] getState(EntityEnterpriseContext ctx)
>       {
>   -      Object[] state = new Object[metaInfo.getNumberOfCMPFields()];
>   -      Iterator iter = metaInfo.getCMPFieldInfos();
>   +      Object[] state = new Object[jawsEntity.getNumberOfCMPFields()];
>   +      Iterator iter = jawsEntity.getCMPFields();
>          int i = 0;
>          while (iter.hasNext())
>          {
>   -         CMPFieldInfo fieldInfo = (CMPFieldInfo)iter.next();
>   +         CMPFieldMetaData fieldMetaData = (CMPFieldMetaData)iter.next();
>             try
>             {
>                // JF: Should clone
>   -            state[i++] = getCMPFieldValue(ctx.getInstance(), fieldInfo);
>   +            state[i++] = getCMPFieldValue(ctx.getInstance(), fieldMetaData);
>             } catch (Exception e)
>             {
>                return null;
>   @@ -575,35 +529,34 @@
>    
>          return state;
>       }
>   -
>   -   protected Object getCMPFieldValue(Object instance, CMPFieldInfo fieldInfo)
>   +   
>   +   protected Object getCMPFieldValue(Object instance, CMPFieldMetaData 
>fieldMetaData)
>          throws IllegalAccessException
>       {
>   -      Field field = fieldInfo.getField();
>   +      Field field = fieldMetaData.getField();
>          return field.get(instance);
>       }
>    
>       protected void setCMPFieldValue(Object instance,
>   -                                   CMPFieldInfo fieldInfo,
>   +                                   CMPFieldMetaData fieldMetaData,
>                                       Object value)
>          throws IllegalAccessException
>       {
>   -      Field field = fieldInfo.getField();
>   +      Field field = fieldMetaData.getField();
>          field.set(instance, value);
>       }
>   -
>   -   protected Object getPkFieldValue(Object pk, PkFieldInfo pkFieldInfo)
>   +   
>   +   protected Object getPkFieldValue(Object pk, PkFieldMetaData pkFieldMetaData)
>          throws IllegalAccessException
>       {
>   -      Field field = pkFieldInfo.getPkField();
>   +      Field field = pkFieldMetaData.getPkField();
>          return field.get(pk);
>       }
>    
>       // This is now only used in setForeignKey
>   -
>   -   protected int getJawsCMPFieldJDBCType(JawsCMPField fieldInfo)
>   +   protected int getJawsCMPFieldJDBCType(CMPFieldMetaData fieldMetaData)
>       {
>   -      return getJDBCType(fieldInfo.getJdbcType());
>   +      return fieldMetaData.getJDBCType();
>       }
>    
>       // Private -------------------------------------------------------
>   @@ -611,7 +564,7 @@
>       /** Get a database connection */
>       protected Connection getConnection() throws SQLException
>       {
>   -      DataSource ds = metaInfo.getDataSource();
>   +      DataSource ds = jawsEntity.getDataSource();
>          if (ds != null)
>          {
>             return ds.getConnection();
>   
>   
>   
>   1.3       +34 -9     
>jboss/src/main/org/jboss/ejb/plugins/jaws/jdbc/JDBCCommandFactory.java
>   
>   Index: JDBCCommandFactory.java
>   ===================================================================
>   RCS file: 
>/products/cvs/ejboss/jboss/src/main/org/jboss/ejb/plugins/jaws/jdbc/JDBCCommandFactory.java,v
>   retrieving revision 1.2
>   retrieving revision 1.3
>   diff -u -r1.2 -r1.3
>   --- JDBCCommandFactory.java 2000/08/21 01:23:58     1.2
>   +++ JDBCCommandFactory.java 2000/09/09 02:52:56     1.3
>   @@ -13,7 +13,8 @@
>    import javax.naming.InitialContext;
>    
>    import org.jboss.ejb.EntityContainer;
>   -import org.jboss.ejb.plugins.jaws.MetaInfo;
>   +import org.jboss.ejb.DeploymentException;
>   +
>    import org.jboss.ejb.plugins.jaws.JPMCommandFactory;
>    import org.jboss.ejb.plugins.jaws.JPMInitCommand;
>    import org.jboss.ejb.plugins.jaws.JPMStartCommand;
>   @@ -27,8 +28,13 @@
>    import org.jboss.ejb.plugins.jaws.JPMStoreEntityCommand;
>    import org.jboss.ejb.plugins.jaws.JPMActivateEntityCommand;
>    import org.jboss.ejb.plugins.jaws.JPMPassivateEntityCommand;
>   +
>   +import org.jboss.metadata.ApplicationMetaData;
>    
>   -import org.jboss.ejb.plugins.jaws.deployment.Finder;
>   +import org.jboss.ejb.plugins.jaws.metadata.JawsXmlFileLoader;
>   +import org.jboss.ejb.plugins.jaws.metadata.JawsEntityMetaData;
>   +import org.jboss.ejb.plugins.jaws.metadata.JawsApplicationMetaData;
>   +import org.jboss.ejb.plugins.jaws.metadata.FinderMetaData;
>    
>    import org.jboss.logging.Log;
>    
>   @@ -36,7 +42,7 @@
>     * JAWSPersistenceManager JDBCCommandFactory
>     *
>     * @author <a href="mailto:[EMAIL PROTECTED]">Justin Forder</a>
>   - * @version $Revision: 1.2 $
>   + * @version $Revision: 1.3 $
>     */
>    public class JDBCCommandFactory implements JPMCommandFactory
>    {
>   @@ -44,7 +50,7 @@
>       
>       private EntityContainer container;
>       private Context javaCtx;
>   -   private MetaInfo metaInfo;
>   +   private JawsEntityMetaData metadata;
>       private Log log;
>       
>       // These support singletons (within the scope of this factory)
>   @@ -58,9 +64,25 @@
>          throws Exception
>       {
>          this.container = container;
>   -      this.javaCtx = (Context)new InitialContext().lookup("java:comp/env");
>   -      this.metaInfo = new MetaInfo(container);
>          this.log = log;
>   +     
>   +      this.javaCtx = (Context)new InitialContext().lookup("java:comp/env");
>   +      
>   +     String ejbName = container.getBeanMetaData().getEjbName();
>   +     ApplicationMetaData amd = 
>container.getBeanMetaData().getApplicationMetaData();
>   +     JawsApplicationMetaData jamd = 
>(JawsApplicationMetaData)amd.getPluginData("JAWS");
>   +     
>   +     if (jamd == null) {
>   +        // we are the first cmp entity to need jaws. Load jaws.xml for the whole 
>application
>   +            JawsXmlFileLoader jfl = new JawsXmlFileLoader(amd, 
>container.getClassLoader(), log);
>   +         jamd = jfl.load();
>   +            amd.addPluginData("JAWS", jamd);
>   +     }
>   +             
>   +     metadata = jamd.getBeanByEjbName(ejbName);
>   +     if (metadata == null) {
>   +             throw new DeploymentException("No metadata found for bean " + 
>ejbName);
>   +     }
>       }
>       
>       // Public --------------------------------------------------------
>   @@ -75,9 +97,9 @@
>          return javaCtx;
>       }
>       
>   -   public MetaInfo getMetaInfo()
>   +   public JawsEntityMetaData getMetaData()
>       {
>   -      return metaInfo;
>   +      return metadata;
>       }
>       
>       public Log getLog()
>   @@ -106,7 +128,7 @@
>          return new JDBCFindAllCommand(this);
>       }
>       
>   -   public JPMFindEntitiesCommand createDefinedFinderCommand(Finder f)
>   +   public JPMFindEntitiesCommand createDefinedFinderCommand(FinderMetaData f)
>       {
>          return new JDBCDefinedFinderCommand(this, f);
>       }
>   @@ -193,4 +215,7 @@
>       {
>          return new JDBCPassivateEntityCommand(this);
>       }
>   +   
>   +   
>   +   // Private -------------------------------------------------------
>    }
>   
>   
>   
>   1.4       +24 -46    
>jboss/src/main/org/jboss/ejb/plugins/jaws/jdbc/JDBCCreateEntityCommand.java
>   
>   Index: JDBCCreateEntityCommand.java
>   ===================================================================
>   RCS file: 
>/products/cvs/ejboss/jboss/src/main/org/jboss/ejb/plugins/jaws/jdbc/JDBCCreateEntityCommand.java,v
>   retrieving revision 1.3
>   retrieving revision 1.4
>   diff -u -r1.3 -r1.4
>   --- JDBCCreateEntityCommand.java    2000/08/24 10:56:36     1.3
>   +++ JDBCCreateEntityCommand.java    2000/09/09 02:52:56     1.4
>   @@ -26,11 +26,10 @@
>    import org.jboss.ejb.EntityEnterpriseContext;
>    import org.jboss.ejb.plugins.jaws.JAWSPersistenceManager;
>    import org.jboss.ejb.plugins.jaws.JPMCreateEntityCommand;
>   -import org.jboss.ejb.plugins.jaws.CMPFieldInfo;
>   -import org.jboss.ejb.plugins.jaws.MetaInfo;
>   -import org.jboss.ejb.plugins.jaws.PkFieldInfo;
>   -import org.jboss.ejb.plugins.jaws.deployment.JawsCMPField;
>    
>   +import org.jboss.ejb.plugins.jaws.metadata.CMPFieldMetaData;
>   +import org.jboss.ejb.plugins.jaws.metadata.PkFieldMetaData;
>   +
>    /**
>     * JAWSPersistenceManager JDBCCreateEntityCommand
>     *
>   @@ -39,7 +38,7 @@
>     * @author <a href="mailto:[EMAIL PROTECTED]">Marc Fleury</a>
>     * @author <a href="mailto:[EMAIL PROTECTED]">Joe Shevland</a>
>     * @author <a href="mailto:[EMAIL PROTECTED]">Justin Forder</a>
>   - * @version $Revision: 1.3 $
>   + * @version $Revision: 1.4 $
>     */
>    public class JDBCCreateEntityCommand
>       extends JDBCUpdateCommand
>   @@ -59,36 +58,21 @@
>          
>          // Insert SQL
>          
>   -      String sql = "INSERT INTO " + metaInfo.getTableName();
>   +      String sql = "INSERT INTO " + jawsEntity.getTableName();
>          String fieldSql = "";
>          String valueSql = "";
>          
>   -      Iterator it = metaInfo.getCMPFieldInfos();
>   +      Iterator it = jawsEntity.getCMPFields();
>          boolean first = true;
>          
>          while (it.hasNext())
>          {
>   -         CMPFieldInfo fieldInfo = (CMPFieldInfo)it.next();
>   +         CMPFieldMetaData cmpField = (CMPFieldMetaData)it.next();
>             
>   -         if (fieldInfo.isEJBReference())
>   -         {
>   -            JawsCMPField[] pkFields = fieldInfo.getForeignKeyCMPFields();
>   -            
>   -            for (int i = 0; i < pkFields.length; i++)
>   -            {
>   -               fieldSql += (first ? "" : ",") +
>   -                           fieldInfo.getColumnName() + "_" +
>   -                           pkFields[i].getColumnName();
>   -               valueSql += first ? "?" : ",?";
>   -               first = false;
>   -            }
>   -         } else
>   -         {
>   -            fieldSql += (first ? "" : ",") +
>   -                        fieldInfo.getColumnName();
>   -            valueSql += first ? "?" : ",?";
>   -            first = false;
>   -         }
>   +         fieldSql += (first ? "" : ",") +
>   +                     cmpField.getColumnName();
>   +         valueSql += first ? "?" : ",?";
>   +         first = false;
>          }
>          
>          sql += " ("+fieldSql+") VALUES ("+valueSql+")";
>   @@ -107,13 +91,13 @@
>          {
>             // Extract pk
>             Object id = null;
>   -         Iterator it = metaInfo.getPkFieldInfos();
>   +         Iterator it = jawsEntity.getPkFields();
>             
>   -         if (metaInfo.hasCompositeKey())
>   +         if (jawsEntity.hasCompositeKey())
>             {
>                try
>                {
>   -               id = metaInfo.getPrimaryKeyClass().newInstance();
>   +               id = jawsEntity.getPrimaryKeyClass().newInstance();
>                } catch (InstantiationException e)
>                {
>                   throw new ServerException("Could not create primary key",e);
>   @@ -121,15 +105,15 @@
>                
>                while (it.hasNext())
>                {
>   -               PkFieldInfo pkFieldInfo = (PkFieldInfo)it.next();
>   -               Field from = pkFieldInfo.getCMPField();
>   -               Field to = pkFieldInfo.getPkField();
>   +               PkFieldMetaData pkField = (PkFieldMetaData)it.next();
>   +               Field from = pkField.getCMPField();
>   +               Field to = pkField.getPkField();
>                   to.set(id, from.get(ctx.getInstance()));
>                }
>             } else
>             {
>   -            PkFieldInfo pkFieldInfo = (PkFieldInfo)it.next();
>   -            Field from = pkFieldInfo.getCMPField();
>   +            PkFieldMetaData pkField = (PkFieldMetaData)it.next();
>   +            Field from = pkField.getCMPField();
>                id = from.get(ctx.getInstance());
>             }
>             
>   @@ -172,19 +156,13 @@
>          EntityEnterpriseContext ctx = (EntityEnterpriseContext)argOrArgs;
>          int idx = 1; // Parameter-index
>          
>   -      Iterator iter = metaInfo.getCMPFieldInfos();
>   +      Iterator iter = jawsEntity.getCMPFields();
>          while (iter.hasNext())
>          {
>   -         CMPFieldInfo fieldInfo = (CMPFieldInfo)iter.next();
>   -         Object value = getCMPFieldValue(ctx.getInstance(), fieldInfo);
>   +         CMPFieldMetaData cmpField = (CMPFieldMetaData)iter.next();
>   +         Object value = getCMPFieldValue(ctx.getInstance(), cmpField);
>             
>   -         if (fieldInfo.isEJBReference())
>   -         {
>   -            idx = setForeignKey(stmt, idx, fieldInfo, value);
>   -         } else
>   -         {
>   -            setParameter(stmt, idx++, fieldInfo.getJDBCType(), value);
>   -         }
>   +         setParameter(stmt, idx++, cmpField.getJDBCType(), value);
>          }
>       }
>       
>   @@ -200,7 +178,7 @@
>             new JAWSPersistenceManager.PersistenceContext();
>          
>          // If read-only, set last read to now
>   -      if (metaInfo.isReadOnly()) pCtx.lastRead = System.currentTimeMillis();
>   +      if (jawsEntity.isReadOnly()) pCtx.lastRead = System.currentTimeMillis();
>          
>          // Save initial state for tuned updates
>          pCtx.state = getState(ctx);
>   
>   
>   
>   1.3       +4 -4      
>jboss/src/main/org/jboss/ejb/plugins/jaws/jdbc/JDBCDefinedFinderCommand.java
>   
>   Index: JDBCDefinedFinderCommand.java
>   ===================================================================
>   RCS file: 
>/products/cvs/ejboss/jboss/src/main/org/jboss/ejb/plugins/jaws/jdbc/JDBCDefinedFinderCommand.java,v
>   retrieving revision 1.2
>   retrieving revision 1.3
>   diff -u -r1.2 -r1.3
>   --- JDBCDefinedFinderCommand.java   2000/08/24 10:56:36     1.2
>   +++ JDBCDefinedFinderCommand.java   2000/09/09 02:52:56     1.3
>   @@ -12,7 +12,7 @@
>    
>    import java.sql.PreparedStatement;
>    
>   -import org.jboss.ejb.plugins.jaws.deployment.Finder;
>   +import org.jboss.ejb.plugins.jaws.metadata.FinderMetaData;
>    
>    /**
>     * JAWSPersistenceManager JDBCDefinedFinderCommand
>   @@ -22,7 +22,7 @@
>     * @author <a href="mailto:[EMAIL PROTECTED]">Marc Fleury</a>
>     * @author <a href="mailto:[EMAIL PROTECTED]">Joe Shevland</a>
>     * @author <a href="mailto:[EMAIL PROTECTED]">Justin Forder</a>
>   - * @version $Revision: 1.2 $
>   + * @version $Revision: 1.3 $
>     */
>    public class JDBCDefinedFinderCommand extends JDBCFinderCommand
>    {
>   @@ -32,7 +32,7 @@
>       
>       // Constructors --------------------------------------------------
>       
>   -   public JDBCDefinedFinderCommand(JDBCCommandFactory factory, Finder f)
>   +   public JDBCDefinedFinderCommand(JDBCCommandFactory factory, FinderMetaData f)
>       {
>          super(factory, f.getName());
>          
>   @@ -62,7 +62,7 @@
>          // Construct SQL
>          String sql = "SELECT " + getPkColumnList() +
>             (f.getOrder().equals("") ? "" : ","+f.getOrder()) + 
>   -         " FROM " + metaInfo.getTableName() + " WHERE " + query;
>   +         " FROM " + jawsEntity.getTableName() + " WHERE " + query;
>          if (!f.getOrder().equals(""))
>          {
>             sql += " ORDER BY "+f.getOrder();
>   
>   
>   
>   1.4       +5 -6      
>jboss/src/main/org/jboss/ejb/plugins/jaws/jdbc/JDBCDestroyCommand.java
>   
>   Index: JDBCDestroyCommand.java
>   ===================================================================
>   RCS file: 
>/products/cvs/ejboss/jboss/src/main/org/jboss/ejb/plugins/jaws/jdbc/JDBCDestroyCommand.java,v
>   retrieving revision 1.3
>   retrieving revision 1.4
>   diff -u -r1.3 -r1.4
>   --- JDBCDestroyCommand.java 2000/08/24 10:56:36     1.3
>   +++ JDBCDestroyCommand.java 2000/09/09 02:52:56     1.4
>   @@ -11,7 +11,6 @@
>    import java.sql.SQLException;
>    
>    import org.jboss.ejb.plugins.jaws.JPMDestroyCommand;
>   -import org.jboss.ejb.plugins.jaws.MetaInfo;
>    
>    /**
>     * JAWSPersistenceManager JDBCDestroyCommand
>   @@ -21,7 +20,7 @@
>     * @author <a href="mailto:[EMAIL PROTECTED]">Marc Fleury</a>
>     * @author <a href="mailto:[EMAIL PROTECTED]">Joe Shevland</a>
>     * @author <a href="mailto:[EMAIL PROTECTED]">Justin Forder</a>
>   - * @version $Revision: 1.3 $
>   + * @version $Revision: 1.4 $
>     */
>    public class JDBCDestroyCommand
>       extends JDBCUpdateCommand
>   @@ -34,7 +33,7 @@
>          super(factory, "Destroy");
>          
>          // Drop table SQL
>   -      String sql = "DROP TABLE " + metaInfo.getTableName();
>   +      String sql = "DROP TABLE " + jawsEntity.getTableName();
>          setSQL(sql);
>       }
>       
>   @@ -42,7 +41,7 @@
>       
>       public void execute()
>       {
>   -      if (metaInfo.getRemoveTable())
>   +      if (jawsEntity.getRemoveTable())
>          {
>             // Remove it!
>             try
>   @@ -51,7 +50,7 @@
>             } catch (Exception e)
>             {
>                log.debug("Could not drop table " +
>   -                      metaInfo.getTableName() + ": " + e.getMessage());
>   +                      jawsEntity.getTableName() + ": " + e.getMessage());
>             }
>          }
>       }
>   @@ -61,7 +60,7 @@
>       protected Object handleResult(int rowsAffected, Object argOrArgs) 
>          throws Exception
>       {
>   -      log.debug("Table "+metaInfo.getTableName()+" removed");
>   +      log.debug("Table "+jawsEntity.getTableName()+" removed");
>          
>          return null;
>       }
>   
>   
>   
>   1.2       +1 -1      
>jboss/src/main/org/jboss/ejb/plugins/jaws/jdbc/JDBCFindAllCommand.java
>   
>   Index: JDBCFindAllCommand.java
>   ===================================================================
>   RCS file: 
>/products/cvs/ejboss/jboss/src/main/org/jboss/ejb/plugins/jaws/jdbc/JDBCFindAllCommand.java,v
>   retrieving revision 1.1
>   retrieving revision 1.2
>   diff -u -r1.1 -r1.2
>   --- JDBCFindAllCommand.java 2000/08/06 02:03:50     1.1
>   +++ JDBCFindAllCommand.java 2000/09/09 02:52:56     1.2
>   @@ -15,7 +15,7 @@
>     * @author <a href="mailto:[EMAIL PROTECTED]">Marc Fleury</a>
>     * @author <a href="mailto:[EMAIL PROTECTED]">Joe Shevland</a>
>     * @author <a href="mailto:[EMAIL PROTECTED]">Justin Forder</a>
>   - * @version $Revision: 1.1 $
>   + * @version $Revision: 1.2 $
>     */
>    public class JDBCFindAllCommand extends JDBCFinderCommand
>    {
>   @@ -25,7 +25,7 @@
>       {
>          super(factory, "FindAll");
>          
>   -      String sql = "SELECT " + getPkColumnList() + " FROM " + 
>metaInfo.getTableName();
>   +      String sql = "SELECT " + getPkColumnList() + " FROM " + 
>jawsEntity.getTableName();
>    
>          setSQL(sql);
>       }
>   
>   
>   
>   1.5       +13 -32    
>jboss/src/main/org/jboss/ejb/plugins/jaws/jdbc/JDBCFindByCommand.java
>   
>   Index: JDBCFindByCommand.java
>   ===================================================================
>   RCS file: 
>/products/cvs/ejboss/jboss/src/main/org/jboss/ejb/plugins/jaws/jdbc/JDBCFindByCommand.java,v
>   retrieving revision 1.4
>   retrieving revision 1.5
>   diff -u -r1.4 -r1.5
>   --- JDBCFindByCommand.java  2000/08/24 10:56:36     1.4
>   +++ JDBCFindByCommand.java  2000/09/09 02:52:56     1.5
>   @@ -13,11 +13,9 @@
>    
>    import java.util.Iterator;
>    
>   -import org.jboss.ejb.plugins.jaws.deployment.Finder;
>   -import org.jboss.ejb.plugins.jaws.CMPFieldInfo;
>   -import org.jboss.ejb.plugins.jaws.deployment.JawsCMPField;
>    import org.jboss.logging.Logger;
>    
>   +import org.jboss.ejb.plugins.jaws.metadata.CMPFieldMetaData;
>    
>    /**
>     * JAWSPersistenceManager JDBCFindByCommand
>   @@ -27,14 +25,14 @@
>     * @author <a href="mailto:[EMAIL PROTECTED]">Marc Fleury</a>
>     * @author <a href="mailto:[EMAIL PROTECTED]">Joe Shevland</a>
>     * @author <a href="mailto:[EMAIL PROTECTED]">Justin Forder</a>
>   - * @version $Revision: 1.4 $
>   + * @version $Revision: 1.5 $
>     */
>    public class JDBCFindByCommand extends JDBCFinderCommand
>    {
>       // Attributes ----------------------------------------------------
>       
>       // The meta-info for the field we are finding by
>   -   private CMPFieldInfo fieldInfo;
>   +   private CMPFieldMetaData cmpField;
>       
>       // Constructors --------------------------------------------------
>       
>   @@ -48,20 +46,20 @@
>          
>          // Find the meta-info for the field we want to find by
>          
>   -      fieldInfo = null;
>   -      Iterator iter = metaInfo.getCMPFieldInfos();
>   +      cmpField = null;
>   +      Iterator iter = jawsEntity.getCMPFields();
>          
>   -      while (fieldInfo == null && iter.hasNext())
>   +      while (cmpField == null && iter.hasNext())
>          {
>   -         CMPFieldInfo fi = (CMPFieldInfo)iter.next();
>   +         CMPFieldMetaData fi = (CMPFieldMetaData)iter.next();
>             
>             if (cmpFieldName.equals(fi.getName().toLowerCase()))
>             {
>   -            fieldInfo = fi;
>   +            cmpField = fi;
>             }
>          }
>          
>   -      if (fieldInfo == null)
>   +      if (cmpField == null)
>          {
>             throw new IllegalArgumentException(
>                "No finder for this method: " + finderMethod.getName());
>   @@ -70,20 +68,9 @@
>          // Compute SQL
>          
>          String sql = "SELECT " + getPkColumnList() +
>   -                   " FROM "+metaInfo.getTableName()+ " WHERE ";
>   +                   " FROM "+jawsEntity.getTableName()+ " WHERE ";
>          
>   -      if (fieldInfo.isEJBReference())
>   -      {
>   -         JawsCMPField[] cmpFields = fieldInfo.getForeignKeyCMPFields();
>   -         for (int j = 0; j < cmpFields.length; j++)
>   -         {
>   -            sql += (j==0?"":" AND ") + 
>   -               fieldInfo.getColumnName() + "_" + cmpFields[j].getColumnName() + 
>"=?";
>   -         }
>   -      } else
>   -      {
>   -         sql += fieldInfo.getColumnName() + "=?";
>   -      }
>   +      sql += cmpField.getColumnName() + "=?";
>          
>          setSQL(sql);
>       }
>   @@ -95,15 +82,9 @@
>       {
>          Object[] args = (Object[])argOrArgs;
>          
>   -      if (fieldInfo != null)
>   +      if (cmpField != null)
>          {
>   -         if (fieldInfo.isEJBReference())
>   -         {
>   -            setForeignKey(stmt, 1, fieldInfo, args[0]);
>   -         } else
>   -         {
>   -            setParameter(stmt, 1, fieldInfo.getJDBCType(), args[0]);
>   -         }
>   +         setParameter(stmt, 1, cmpField.getJDBCType(), args[0]);
>          }
>       }
>    }
>   
>   
>   
>   1.4       +4 -4      
>jboss/src/main/org/jboss/ejb/plugins/jaws/jdbc/JDBCFindEntitiesCommand.java
>   
>   Index: JDBCFindEntitiesCommand.java
>   ===================================================================
>   RCS file: 
>/products/cvs/ejboss/jboss/src/main/org/jboss/ejb/plugins/jaws/jdbc/JDBCFindEntitiesCommand.java,v
>   retrieving revision 1.3
>   retrieving revision 1.4
>   diff -u -r1.3 -r1.4
>   --- JDBCFindEntitiesCommand.java    2000/08/26 19:37:03     1.3
>   +++ JDBCFindEntitiesCommand.java    2000/09/09 02:52:56     1.4
>   @@ -20,7 +20,7 @@
>    
>    import org.jboss.ejb.EntityEnterpriseContext;
>    import org.jboss.ejb.plugins.jaws.JPMFindEntitiesCommand;
>   -import org.jboss.ejb.plugins.jaws.deployment.Finder;
>   +import org.jboss.ejb.plugins.jaws.metadata.FinderMetaData;
>    
>    /**
>     * Keeps a map from finder name to specific finder command, and
>   @@ -31,7 +31,7 @@
>     * @author <a href="mailto:[EMAIL PROTECTED]">Marc Fleury</a>
>     * @author <a href="mailto:[EMAIL PROTECTED]">Joe Shevland</a>
>     * @author <a href="mailto:[EMAIL PROTECTED]">Justin Forder</a>
>   - * @version $Revision: 1.3 $
>   + * @version $Revision: 1.4 $
>     */
>    public class JDBCFindEntitiesCommand implements JPMFindEntitiesCommand
>    {
>   @@ -48,10 +48,10 @@
>          
>          // Make commands for the defined finders
>          
>   -      Iterator definedFinders = factory.getMetaInfo().getFinders();
>   +      Iterator definedFinders = factory.getMetaData().getFinders();
>          while(definedFinders.hasNext())
>          {
>   -         Finder f = (Finder)definedFinders.next();
>   +         FinderMetaData f = (FinderMetaData)definedFinders.next();
>             
>             if ( !knownFinderCommands.containsKey(f.getName()) )
>             {
>   
>   
>   
>   1.7       +15 -16    
>jboss/src/main/org/jboss/ejb/plugins/jaws/jdbc/JDBCFinderCommand.java
>   
>   Index: JDBCFinderCommand.java
>   ===================================================================
>   RCS file: 
>/products/cvs/ejboss/jboss/src/main/org/jboss/ejb/plugins/jaws/jdbc/JDBCFinderCommand.java,v
>   retrieving revision 1.6
>   retrieving revision 1.7
>   diff -u -r1.6 -r1.7
>   --- JDBCFinderCommand.java  2000/09/09 02:25:00     1.6
>   +++ JDBCFinderCommand.java  2000/09/09 02:52:56     1.7
>   @@ -22,8 +22,8 @@
>    import javax.ejb.FinderException;
>    
>    import org.jboss.ejb.EntityEnterpriseContext;
>   -import org.jboss.ejb.plugins.jaws.PkFieldInfo;
>    import org.jboss.ejb.plugins.jaws.JPMFindEntitiesCommand;
>   +import org.jboss.ejb.plugins.jaws.metadata.PkFieldMetaData;
>    
>    /**
>     * Abstract superclass of finder commands that return collections.
>   @@ -33,7 +33,7 @@
>     * @author <a href="mailto:[EMAIL PROTECTED]">Marc Fleury</a>
>     * @author <a href="mailto:[EMAIL PROTECTED]">Joe Shevland</a>
>     * @author <a href="mailto:[EMAIL PROTECTED]">Justin Forder</a>
>   - * @version $Revision: 1.6 $
>   + * @version $Revision: 1.7 $
>     */
>    public abstract class JDBCFinderCommand
>       extends JDBCQueryCommand
>   @@ -72,24 +72,24 @@
>       protected Object handleResult(ResultSet rs, Object argOrArgs) throws Exception
>       {
>          Collection result = new ArrayList();
>   -
>   -      if (metaInfo.hasCompositeKey())
>   +      
>   +      if (jawsEntity.hasCompositeKey())
>          {
>             // Compound key
>             try
>             {
>                while (rs.next())
>                {
>   -               Object pk = metaInfo.getPrimaryKeyClass().newInstance();
>   +               Object pk = jawsEntity.getPrimaryKeyClass().newInstance();
>                   int i = 1;   // parameter index
>   -               Iterator it = metaInfo.getPkFieldInfos();
>   -
>   +               Iterator it = jawsEntity.getPkFields();
>   +               
>                   while (it.hasNext())
>                   {
>   -                  PkFieldInfo pkFieldInfo = (PkFieldInfo)it.next();
>   -                  Field pkField = pkFieldInfo.getPkField();
>   -                  pkField.set(pk, getResultObject(rs,
>   -                                                  i++,
>   +                  PkFieldMetaData pkFieldMetaData = (PkFieldMetaData)it.next();
>   +                  Field pkField = pkFieldMetaData.getPkField();
>   +                  pkField.set(pk, getResultObject(rs, 
>   +                                                  i++, 
>                                                      pkField.getType()));
>                   }
>                   result.add(pk);
>   @@ -101,13 +101,12 @@
>          } else
>          {
>             // Primitive key
>   -
>   -         Iterator it = metaInfo.getPkFieldInfos();
>   -         PkFieldInfo pkFieldInfo = (PkFieldInfo)it.next();
>   -
>   +         Iterator it = jawsEntity.getPkFields();
>   +         PkFieldMetaData pkFieldMetaData = (PkFieldMetaData)it.next();
>   +         
>             while (rs.next())
>             {
>   -            result.add(getResultObject(rs, 1, 
>pkFieldInfo.getCMPField().getType()));
>   +            result.add(getResultObject(rs, 1, 
>pkFieldMetaData.getCMPField().getType()));
>             }
>          }
>    
>   
>   
>   
>   1.5       +16 -34    
>jboss/src/main/org/jboss/ejb/plugins/jaws/jdbc/JDBCInitCommand.java
>   
>   Index: JDBCInitCommand.java
>   ===================================================================
>   RCS file: 
>/products/cvs/ejboss/jboss/src/main/org/jboss/ejb/plugins/jaws/jdbc/JDBCInitCommand.java,v
>   retrieving revision 1.4
>   retrieving revision 1.5
>   diff -u -r1.4 -r1.5
>   --- JDBCInitCommand.java    2000/09/07 13:54:17     1.4
>   +++ JDBCInitCommand.java    2000/09/09 02:52:56     1.5
>   @@ -16,9 +16,7 @@
>    import java.sql.Statement;
>    
>    import org.jboss.ejb.plugins.jaws.JPMInitCommand;
>   -import org.jboss.ejb.plugins.jaws.CMPFieldInfo;
>   -import org.jboss.ejb.plugins.jaws.MetaInfo;
>   -import org.jboss.ejb.plugins.jaws.deployment.JawsCMPField;
>   +import org.jboss.ejb.plugins.jaws.metadata.CMPFieldMetaData;
>    
>    /**
>     * JAWSPersistenceManager JDBCInitCommand
>   @@ -28,7 +26,7 @@
>     * @author <a href="mailto:[EMAIL PROTECTED]">Marc Fleury</a>
>     * @author <a href="mailto:[EMAIL PROTECTED]">Joe Shevland</a>
>     * @author <a href="mailto:[EMAIL PROTECTED]">Justin Forder</a>
>   - * @version $Revision: 1.4 $
>   + * @version $Revision: 1.5 $
>     */
>    public class JDBCInitCommand
>       extends JDBCUpdateCommand
>   @@ -41,33 +39,18 @@
>          super(factory, "Init");
>    
>          // Create table SQL
>   -      String sql = "CREATE TABLE " + metaInfo.getTableName() + " (";
>   -
>   -      Iterator it = metaInfo.getCMPFieldInfos();
>   +      String sql = "CREATE TABLE " + jawsEntity.getTableName() + " (";
>   +      
>   +      Iterator it = jawsEntity.getCMPFields();
>          boolean first = true;
>          while (it.hasNext())
>          {
>   -         CMPFieldInfo fieldInfo = (CMPFieldInfo)it.next();
>   -
>   -         if (fieldInfo.isEJBReference())
>   -         {
>   -            JawsCMPField[] pkFields = fieldInfo.getForeignKeyCMPFields();
>   -
>   -            for (int i = 0; i < pkFields.length; i++)
>   -            {
>   -               sql += (first ? "" : ",") +
>   -                      fieldInfo.getColumnName() + "_" +
>   -                      pkFields[i].getColumnName() + " " +
>   -                      pkFields[i].getSqlType();
>   -               first = false;
>   -            }
>   -         } else
>   -         {
>   -            sql += (first ? "" : ",") +
>   -                   fieldInfo.getColumnName() + " " +
>   -                   fieldInfo.getSQLType();
>   -            first = false;
>   -         }
>   +         CMPFieldMetaData cmpField = (CMPFieldMetaData)it.next();
>   +         
>   +         sql += (first ? "" : ",") +
>   +                cmpField.getColumnName() + " " +
>   +                cmpField.getSQLType();
>   +         first = false;
>          }
>    
>          sql += ")";
>   @@ -80,7 +63,7 @@
>       public void execute() throws Exception
>       {
>          // Create table if necessary
>   -      if (metaInfo.getCreateTable())
>   +      if (jawsEntity.getCreateTable())
>          {
>              boolean created = false;
>              Connection con = null;
>   @@ -89,7 +72,7 @@
>              try {
>                  con = getConnection();
>                  st = con.createStatement();
>   -              rs = st.executeQuery("SELECT COUNT(*) FROM 
>"+metaInfo.getTableName()+" WHERE 0=1");
>   +              rs = st.executeQuery("SELECT COUNT(*) FROM 
>"+jawsEntity.getTableName()+" WHERE 0=1");
>                  if(rs.next())
>                    created = true;
>                  rs.close();
>   @@ -108,7 +91,7 @@
>    
>             // Try to create it
>             if(created) {
>   -             System.out.println("Table '"+metaInfo.getTableName()+"' already 
>exists!");
>   +             System.out.println("Table '"+jawsEntity.getTableName()+"' already 
>exists!");
>             } else {
>                 try
>                 {
>   @@ -116,7 +99,7 @@
>                 } catch (Exception e)
>                 {
>                    log.debug("Could not create table " +
>   -                          metaInfo.getTableName() + ": " + e.getMessage());
>   +                          jawsEntity.getTableName() + ": " + e.getMessage());
>                 }
>             }
>          }
>   @@ -127,8 +110,7 @@
>       protected Object handleResult(int rowsAffected, Object argOrArgs)
>          throws Exception
>       {
>   -      log.debug("Table " + metaInfo.getTableName() + " created");
>   -
>   +      log.debug("Table " + jawsEntity.getTableName() + " created");
>          return null;
>       }
>    }
>   
>   
>   
>   1.5       +22 -109   
>jboss/src/main/org/jboss/ejb/plugins/jaws/jdbc/JDBCLoadEntityCommand.java
>   
>   Index: JDBCLoadEntityCommand.java
>   ===================================================================
>   RCS file: 
>/products/cvs/ejboss/jboss/src/main/org/jboss/ejb/plugins/jaws/jdbc/JDBCLoadEntityCommand.java,v
>   retrieving revision 1.4
>   retrieving revision 1.5
>   diff -u -r1.4 -r1.5
>   --- JDBCLoadEntityCommand.java      2000/09/04 16:17:54     1.4
>   +++ JDBCLoadEntityCommand.java      2000/09/09 02:52:56     1.5
>   @@ -22,9 +22,8 @@
>    import org.jboss.ejb.EntityEnterpriseContext;
>    import org.jboss.ejb.plugins.jaws.JAWSPersistenceManager;
>    import org.jboss.ejb.plugins.jaws.JPMLoadEntityCommand;
>   -import org.jboss.ejb.plugins.jaws.CMPFieldInfo;
>   -import org.jboss.ejb.plugins.jaws.deployment.JawsEntity;
>   -import org.jboss.ejb.plugins.jaws.deployment.JawsCMPField;
>   +import org.jboss.ejb.plugins.jaws.metadata.CMPFieldMetaData;
>   +import org.jboss.ejb.plugins.jaws.metadata.JawsEntityMetaData;
>    
>    /**
>     * JAWSPersistenceManager JDBCLoadEntityCommand
>   @@ -34,7 +33,7 @@
>     * @author <a href="mailto:[EMAIL PROTECTED]">Marc Fleury</a>
>     * @author <a href="mailto:[EMAIL PROTECTED]">Joe Shevland</a>
>     * @author <a href="mailto:[EMAIL PROTECTED]">Justin Forder</a>
>   - * @version $Revision: 1.4 $
>   + * @version $Revision: 1.5 $
>     */
>    public class JDBCLoadEntityCommand
>       extends JDBCQueryCommand
>   @@ -48,34 +47,19 @@
>    
>          // Select SQL
>          String sql = "SELECT ";
>   -
>   -      Iterator it = metaInfo.getCMPFieldInfos();
>   +      Iterator it = jawsEntity.getCMPFields();
>          boolean first = true;
>    
>          while (it.hasNext())
>          {
>   -         CMPFieldInfo fieldInfo = (CMPFieldInfo)it.next();
>   -
>   -         if (fieldInfo.isEJBReference())
>   -         {
>   -            JawsCMPField[] pkFields = fieldInfo.getForeignKeyCMPFields();
>   -
>   -            for (int i = 0; i < pkFields.length; i++)
>   -            {
>   -               sql += (first ? "" : ",") +
>   -                      fieldInfo.getColumnName() + "_" +
>   -                      pkFields[i].getColumnName();
>   -               first = false;
>   -            }
>   -         } else
>   -         {
>   -            sql += (first ? "" : ",") +
>   -                   fieldInfo.getColumnName();
>   -            first = false;
>   -         }
>   +         CMPFieldMetaData cmpField = (CMPFieldMetaData)it.next();
>   +         
>   +         sql += (first ? "" : ",") +
>   +                cmpField.getColumnName();
>   +         first = false;
>          }
>   -
>   -      sql += " FROM " + metaInfo.getTableName() +
>   +      
>   +      sql += " FROM " + jawsEntity.getTableName() +
>                 " WHERE " + getPkColumnWhereList();
>    
>          setSQL(sql);
>   @@ -86,7 +70,7 @@
>       public void execute(EntityEnterpriseContext ctx)
>          throws RemoteException
>       {
>   -      if ( !metaInfo.isReadOnly() || isTimedOut(ctx) )
>   +      if ( !jawsEntity.isReadOnly() || isTimedOut(ctx) )
>          {
>             try
>             {
>   @@ -119,92 +103,21 @@
>    
>          // Set values
>          int idx = 1;
>   -
>   -      Iterator iter = metaInfo.getCMPFieldInfos();
>   +      
>   +      Iterator iter = jawsEntity.getCMPFields();
>          while (iter.hasNext())
>          {
>   -         CMPFieldInfo fieldInfo = (CMPFieldInfo)iter.next();
>   -
>   -         if (fieldInfo.isEJBReference())
>   -         {
>   -            // Create pk
>   -            JawsCMPField[] pkFields = fieldInfo.getForeignKeyCMPFields();
>   -            JawsEntity referencedEntity = 
>(JawsEntity)pkFields[0].getBeanContext();
>   -            Object pk;
>   -            if (referencedEntity.getPrimaryKeyField().equals(""))
>   -            {
>   -               // Compound key
>   -               pk = 
>factory.getContainer().getClassLoader().loadClass(referencedEntity.getPrimaryKeyClass()).newInstance();
>   -               Field[] fields = pk.getClass().getFields();
>   -               for(int j = 0; j < fields.length; j++)
>   -               {
>   -                  Object val = getResultObject(rs, idx++, fields[j].getType());
>   -                  fields[j].set(pk, val);
>   -
>   -                  if (debug)
>   -                  {
>   -                     log.debug("Referenced pk field:" + val);
>   -                  }
>   -               }
>   -            } else
>   -            {
>   -               // Primitive key
>   -               pk = getResultObject(rs, idx++, fieldInfo.getField().getType());
>   -
>   -               if (debug)
>   -               {
>   -                  log.debug("Referenced pk:" + pk);
>   -               }
>   -            }
>   -
>   -            // Find referenced entity
>   -            try
>   -            {
>   -               Object home = factory.getJavaCtx().lookup(fieldInfo.getSQLType());
>   -               Method[] homeMethods = home.getClass().getMethods();
>   -               Method finder = null;
>   -
>   -               // We have to locate fBPK iteratively since we don't
>   -               // really know the pk-class
>   -               for (int j = 0; j < homeMethods.length; j++)
>   -               {
>   -                  if (homeMethods[j].getName().equals("findByPrimaryKey"))
>   -                  {
>   -                     finder = homeMethods[j];
>   -                     break;
>   -                  }
>   -               }
>   -
>   -               if (finder == null)
>   -               {
>   -                  throw new NoSuchMethodException(
>   -                     "FindByPrimaryKey method not found in home interface");
>   -               }
>   -
>   -               log.debug("PK=" + pk);
>   -               Object ref = finder.invoke(home, new Object[] { pk });
>   -
>   -               // Set found entity
>   -               setCMPFieldValue(ctx.getInstance(), fieldInfo, ref);
>   -            } catch (Exception e)
>   -            {
>   -               throw new ServerException("Could not restore reference", e);
>   -            }
>   -         } else
>   -         {
>   -            // Load primitive
>   -
>   -            // TODO: this probably needs to be fixed for BLOB's etc.
>   -            setCMPFieldValue(ctx.getInstance(),
>   -                             fieldInfo,
>   -                             getResultObject(rs, idx++, 
>fieldInfo.getField().getType()));
>   -         }
>   +         CMPFieldMetaData cmpField = (CMPFieldMetaData)iter.next();
>   +         
>   +         setCMPFieldValue(ctx.getInstance(), 
>   +                          cmpField, 
>   +                          getResultObject(rs, idx++, 
>cmpField.getField().getType()));
>          }
>    
>          // Store state to be able to do tuned updates
>          JAWSPersistenceManager.PersistenceContext pCtx =
>             (JAWSPersistenceManager.PersistenceContext)ctx.getPersistenceContext();
>   -      if (metaInfo.isReadOnly()) pCtx.lastRead = System.currentTimeMillis();
>   +      if (jawsEntity.isReadOnly()) pCtx.lastRead = System.currentTimeMillis();
>          pCtx.state = getState(ctx);
>    
>          return null;
>   @@ -216,7 +129,7 @@
>       {
>          JAWSPersistenceManager.PersistenceContext pCtx =
>             (JAWSPersistenceManager.PersistenceContext)ctx.getPersistenceContext();
>   -
>   -      return (System.currentTimeMillis() - pCtx.lastRead) > 
>metaInfo.getReadOnlyTimeOut();
>   +            
>   +      return (System.currentTimeMillis() - pCtx.lastRead) > 
>jawsEntity.getReadOnlyTimeOut();
>       }
>    }
>   
>   
>   
>   1.4       +2 -2      
>jboss/src/main/org/jboss/ejb/plugins/jaws/jdbc/JDBCRemoveEntityCommand.java
>   
>   Index: JDBCRemoveEntityCommand.java
>   ===================================================================
>   RCS file: 
>/products/cvs/ejboss/jboss/src/main/org/jboss/ejb/plugins/jaws/jdbc/JDBCRemoveEntityCommand.java,v
>   retrieving revision 1.3
>   retrieving revision 1.4
>   diff -u -r1.3 -r1.4
>   --- JDBCRemoveEntityCommand.java    2000/08/24 10:56:37     1.3
>   +++ JDBCRemoveEntityCommand.java    2000/09/09 02:52:56     1.4
>   @@ -24,7 +24,7 @@
>     * @author <a href="mailto:[EMAIL PROTECTED]">Marc Fleury</a>
>     * @author <a href="mailto:[EMAIL PROTECTED]">Joe Shevland</a>
>     * @author <a href="mailto:[EMAIL PROTECTED]">Justin Forder</a>
>   - * @version $Revision: 1.3 $
>   + * @version $Revision: 1.4 $
>     */
>    public class JDBCRemoveEntityCommand
>       extends JDBCUpdateCommand
>   @@ -37,7 +37,7 @@
>          super(factory, "Remove");
>          
>          // Remove SQL
>   -      String sql = "DELETE FROM " + metaInfo.getTableName() +
>   +      String sql = "DELETE FROM " + jawsEntity.getTableName() +
>                       " WHERE "+getPkColumnWhereList();
>          setSQL(sql);
>       }
>   
>   
>   
>   1.5       +18 -40    
>jboss/src/main/org/jboss/ejb/plugins/jaws/jdbc/JDBCStoreEntityCommand.java
>   
>   Index: JDBCStoreEntityCommand.java
>   ===================================================================
>   RCS file: 
>/products/cvs/ejboss/jboss/src/main/org/jboss/ejb/plugins/jaws/jdbc/JDBCStoreEntityCommand.java,v
>   retrieving revision 1.4
>   retrieving revision 1.5
>   diff -u -r1.4 -r1.5
>   --- JDBCStoreEntityCommand.java     2000/08/24 10:56:37     1.4
>   +++ JDBCStoreEntityCommand.java     2000/09/09 02:52:56     1.5
>   @@ -19,9 +19,7 @@
>    import org.jboss.ejb.EntityEnterpriseContext;
>    import org.jboss.ejb.plugins.jaws.JAWSPersistenceManager;
>    import org.jboss.ejb.plugins.jaws.JPMStoreEntityCommand;
>   -import org.jboss.ejb.plugins.jaws.CMPFieldInfo;
>   -import org.jboss.ejb.plugins.jaws.PkFieldInfo;
>   -import org.jboss.ejb.plugins.jaws.deployment.JawsCMPField;
>   +import org.jboss.ejb.plugins.jaws.metadata.CMPFieldMetaData;
>    
>    /**
>     * JAWSPersistenceManager JDBCStoreEntityCommand
>   @@ -32,7 +30,7 @@
>     * @author <a href="mailto:[EMAIL PROTECTED]">Joe Shevland</a>
>     * @author <a href="mailto:[EMAIL PROTECTED]">Justin Forder</a>
>     * @author <a href="mailto:[EMAIL PROTECTED]">Sebastien Alborini</a>
>   - * @version $Revision: 1.4 $
>   + * @version $Revision: 1.5 $
>     */
>    public class JDBCStoreEntityCommand
>       extends JDBCUpdateCommand
>   @@ -43,7 +41,7 @@
>       public JDBCStoreEntityCommand(JDBCCommandFactory factory)
>       {
>          super(factory, "Store");
>   -      boolean tuned = metaInfo.hasTunedUpdates();
>   +      boolean tuned = jawsEntity.hasTunedUpdates();
>          
>          // If we don't have tuned updates, create static SQL
>          if (!tuned)
>   @@ -63,7 +61,7 @@
>       {
>          // Check for read-only
>          // JF: Shouldn't this throw an exception?
>   -      if (metaInfo.isReadOnly())
>   +      if (jawsEntity.isReadOnly())
>          {
>             return;
>          }
>   @@ -74,7 +72,7 @@
>          boolean dirty = false;
>          
>          
>   -      boolean tuned = metaInfo.hasTunedUpdates();
>   +      boolean tuned = jawsEntity.hasTunedUpdates();
>          
>          // For tuned updates, need to see which fields have changed
>          
>   @@ -113,7 +111,7 @@
>        */
>       protected String getSQL(Object argOrArgs) throws Exception
>       {
>   -      boolean tuned = metaInfo.hasTunedUpdates();
>   +      boolean tuned = jawsEntity.hasTunedUpdates();
>          
>          return tuned ? makeSQL(argOrArgs) : super.getSQL(argOrArgs);
>       }
>   @@ -122,24 +120,18 @@
>          throws Exception
>       {
>          ExecutionState es = (ExecutionState)argOrArgs;
>   -      boolean tuned = metaInfo.hasTunedUpdates();
>   +      boolean tuned = jawsEntity.hasTunedUpdates();
>          
>          int idx = 1;
>   -      Iterator iter = metaInfo.getCMPFieldInfos();
>   +      Iterator iter = jawsEntity.getCMPFields();
>          int i = 0;
>          while (iter.hasNext())
>          {
>   -         CMPFieldInfo fieldInfo = (CMPFieldInfo)iter.next();
>   +         CMPFieldMetaData cmpField = (CMPFieldMetaData)iter.next();
>             
>             if (!tuned || es.dirtyField[i])
>             {
>   -            if (fieldInfo.isEJBReference())
>   -            {
>   -               idx = setForeignKey(stmt, idx, fieldInfo, es.currentState[i]);
>   -            } else
>   -            {
>   -               setParameter(stmt, idx++, fieldInfo.getJDBCType(), 
>es.currentState[i]);
>   -            }
>   +            setParameter(stmt, idx++, cmpField.getJDBCType(), es.currentState[i]);
>             }
>             
>             i++;
>   @@ -152,7 +144,7 @@
>          throws Exception
>       {
>          ExecutionState es = (ExecutionState)argOrArgs;
>   -      boolean tuned = metaInfo.hasTunedUpdates();
>   +      boolean tuned = jawsEntity.hasTunedUpdates();
>          
>          if (tuned)
>          {
>   @@ -178,35 +170,21 @@
>       protected String makeSQL(Object argOrArgs)
>       {
>          ExecutionState es = (ExecutionState)argOrArgs;  // NB: null if tuned
>   -      boolean tuned = metaInfo.hasTunedUpdates();
>   +      boolean tuned = jawsEntity.hasTunedUpdates();
>          
>   -      String sql = "UPDATE "+metaInfo.getTableName()+" SET ";
>   -      Iterator iter = metaInfo.getCMPFieldInfos();
>   +      String sql = "UPDATE "+jawsEntity.getTableName()+" SET ";
>   +      Iterator iter = jawsEntity.getCMPFields();
>          int i = 0;
>          boolean first = true;
>          while (iter.hasNext())
>          {
>   -         CMPFieldInfo fieldInfo = (CMPFieldInfo)iter.next();
>   +         CMPFieldMetaData cmpField = (CMPFieldMetaData)iter.next();
>             
>             if (!tuned || es.dirtyField[i++])
>             {
>   -            if (fieldInfo.isEJBReference())
>   -            {
>   -               JawsCMPField[] pkFields = fieldInfo.getForeignKeyCMPFields();
>   -               
>   -               for (int j = 0; j < pkFields.length; j++)
>   -               {
>   -                  sql += (first?"":",") + 
>   -                     fieldInfo.getColumnName()+"_"+pkFields[j].getColumnName()+
>   -                     "=?";
>   -                  first = false;
>   -               }
>   -            } else
>   -            {
>   -               sql += (first?"":",") +
>   -                  fieldInfo.getColumnName() + "=?";
>   -               first = false;
>   -            }
>   +            sql += (first?"":",") +
>   +               cmpField.getColumnName() + "=?";
>   +            first = false;
>             }
>          }
>          sql += " WHERE "+getPkColumnWhereList();
>   
>   
>   
> 


Reply via email to