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