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