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