No, same thing happened here.

Aaron Mulder <[EMAIL PROTECTED]> writes
>       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/JDBCBean
>ExistsCommand.java
>>   
>>   Index: JDBCBeanExistsCommand.java
>>   ===================================================================
>>   RCS file: /products/cvs/ejboss/jboss/src/main/org/jboss/ejb/plugins/jaws/jdb
>c/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/JDBCComm
>and.java
>>   
>>   Index: JDBCCommand.java
>>   ===================================================================
>>   RCS file: /products/cvs/ejboss/jboss/src/main/org/jboss/ejb/plugins/jaws/jdb
>c/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).ge
>tTime());
>>   -          }
>>   +          }                        
>>              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().eq
>uals(""))
>>   -      {
>>   -         // 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().g
>etName()+")");
>>                        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/JDBCComm
>andFactory.java
>>   
>>   Index: JDBCCommandFactory.java
>>   ===================================================================
>>   RCS file: /products/cvs/ejboss/jboss/src/main/org/jboss/ejb/plugins/jaws/jdb
>c/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().getApplicationMe
>taData();
>>   +    JawsApplicationMetaData jamd = (JawsApplicationMetaData)amd.getPluginD
>ata("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/JDBCCrea
>teEntityCommand.java
>>   
>>   Index: JDBCCreateEntityCommand.java
>>   ===================================================================
>>   RCS file: /products/cvs/ejboss/jboss/src/main/org/jboss/ejb/plugins/jaws/jdb
>c/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/JDBCDefi
>nedFinderCommand.java
>>   
>>   Index: JDBCDefinedFinderCommand.java
>>   ===================================================================
>>   RCS file: /products/cvs/ejboss/jboss/src/main/org/jboss/ejb/plugins/jaws/jdb
>c/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/JDBCDest
>royCommand.java
>>   
>>   Index: JDBCDestroyCommand.java
>>   ===================================================================
>>   RCS file: /products/cvs/ejboss/jboss/src/main/org/jboss/ejb/plugins/jaws/jdb
>c/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/JDBCFind
>AllCommand.java
>>   
>>   Index: JDBCFindAllCommand.java
>>   ===================================================================
>>   RCS file: /products/cvs/ejboss/jboss/src/main/org/jboss/ejb/plugins/jaws/jdb
>c/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/JDBCFind
>ByCommand.java
>>   
>>   Index: JDBCFindByCommand.java
>>   ===================================================================
>>   RCS file: /products/cvs/ejboss/jboss/src/main/org/jboss/ejb/plugins/jaws/jdb
>c/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/JDBCFind
>EntitiesCommand.java
>>   
>>   Index: JDBCFindEntitiesCommand.java
>>   ===================================================================
>>   RCS file: /products/cvs/ejboss/jboss/src/main/org/jboss/ejb/plugins/jaws/jdb
>c/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/JDBCFind
>erCommand.java
>>   
>>   Index: JDBCFinderCommand.java
>>   ===================================================================
>>   RCS file: /products/cvs/ejboss/jboss/src/main/org/jboss/ejb/plugins/jaws/jdb
>c/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().get
>Type()));
>>   +            result.add(getResultObject(rs, 1, pkFieldMetaData.getCMPField()
>.getType()));
>>             }
>>          }
>>    
>>   
>>   
>>   
>>   1.5       +16 -34    jboss/src/main/org/jboss/ejb/plugins/jaws/jdbc/JDBCInit
>Command.java
>>   
>>   Index: JDBCInitCommand.java
>>   ===================================================================
>>   RCS file: /products/cvs/ejboss/jboss/src/main/org/jboss/ejb/plugins/jaws/jdb
>c/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/JDBCLoad
>EntityCommand.java
>>   
>>   Index: JDBCLoadEntityCommand.java
>>   ===================================================================
>>   RCS file: /products/cvs/ejboss/jboss/src/main/org/jboss/ejb/plugins/jaws/jdb
>c/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].getBeanCo
>ntext();
>>   -            Object pk;
>>   -            if (referencedEntity.getPrimaryKeyField().equals(""))
>>   -            {
>>   -               // Compound key
>>   -               pk = factory.getContainer().getClassLoader().loadClass(refer
>encedEntity.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.getSQLTy
>pe());
>>   -               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().ge
>tType()));
>>          }
>>    
>>          // Store state to be able to do tuned updates
>>          JAWSPersistenceManager.PersistenceContext pCtx =
>>             (JAWSPersistenceManager.PersistenceContext)ctx.getPersistenceConte
>xt();
>>   -      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.getPersistenceConte
>xt();
>>   -
>>   -      return (System.currentTimeMillis() - pCtx.lastRead) > 
>metaInfo.getReadOnlyTimeOut();
>>   +           
>>   +      return (System.currentTimeMillis() - pCtx.lastRead) > jawsEntity.getR
>eadOnlyTimeOut();
>>       }
>>    }
>>   
>>   
>>   
>>   1.4       +2 -2      jboss/src/main/org/jboss/ejb/plugins/jaws/jdbc/JDBCRemo
>veEntityCommand.java
>>   
>>   Index: JDBCRemoveEntityCommand.java
>>   ===================================================================
>>   RCS file: /products/cvs/ejboss/jboss/src/main/org/jboss/ejb/plugins/jaws/jdb
>c/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/JDBCStor
>eEntityCommand.java
>>   
>>   Index: JDBCStoreEntityCommand.java
>>   ===================================================================
>>   RCS file: /products/cvs/ejboss/jboss/src/main/org/jboss/ejb/plugins/jaws/jdb
>c/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].getColumnNam
>e()+
>>   -                     "=?";
>>   -                  first = false;
>>   -               }
>>   -            } else
>>   -            {
>>   -               sql += (first?"":",") +
>>   -                  fieldInfo.getColumnName() + "=?";
>>   -               first = false;
>>   -            }
>>   +            sql += (first?"":",") +
>>   +               cmpField.getColumnName() + "=?";
>>   +            first = false;
>>             }
>>          }
>>          sql += " WHERE "+getPkColumnWhereList();
>>   
>>   
>>   
>> 
>
>

-- 
Justin Forder

Reply via email to