User: dsundstrom
  Date: 01/11/29 12:40:05

  Modified:    src/main/org/jboss/ejb/plugins/cmp/jdbc
                        JDBCCreateEntityCommand.java
                        JDBCFindByPrimaryKeyQuery.java
                        JDBCRemoveEntityCommand.java QueryParameter.java
  Log:
  Fixed bug with FindByPrimaryKey where it was expecting an Entity parameter
  instead of a pk object.
  
  Revision  Changes    Path
  1.8       +3 -3      
jboss/src/main/org/jboss/ejb/plugins/cmp/jdbc/JDBCCreateEntityCommand.java
  
  Index: JDBCCreateEntityCommand.java
  ===================================================================
  RCS file: 
/cvsroot/jboss/jboss/src/main/org/jboss/ejb/plugins/cmp/jdbc/JDBCCreateEntityCommand.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- JDBCCreateEntityCommand.java      2001/11/28 11:32:54     1.7
  +++ JDBCCreateEntityCommand.java      2001/11/29 20:40:05     1.8
  @@ -32,7 +32,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.7 $
  + * @version $Revision: 1.8 $
    */
   public class JDBCCreateEntityCommand implements CreateEntityCommand {
      private JDBCStoreManager manager;
  @@ -89,8 +89,8 @@
   
      private String createEntityExistsSQL() {
         StringBuffer sql = new StringBuffer();
  -      sql.append("SELECT COUNT(*) ");
  -      sql.append("FROM ").append(entity.getTableName());
  +      sql.append("SELECT COUNT(*)");
  +      sql.append(" FROM ").append(entity.getTableName());
         sql.append(" WHERE ");
         sql.append(SQLUtil.getWhereClause(entity.getJDBCPrimaryKeyFields()));
         
  
  
  
  1.2       +3 -3      
jboss/src/main/org/jboss/ejb/plugins/cmp/jdbc/JDBCFindByPrimaryKeyQuery.java
  
  Index: JDBCFindByPrimaryKeyQuery.java
  ===================================================================
  RCS file: 
/cvsroot/jboss/jboss/src/main/org/jboss/ejb/plugins/cmp/jdbc/JDBCFindByPrimaryKeyQuery.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- JDBCFindByPrimaryKeyQuery.java    2001/11/28 11:32:54     1.1
  +++ JDBCFindByPrimaryKeyQuery.java    2001/11/29 20:40:05     1.2
  @@ -18,7 +18,7 @@
    * @author <a href="mailto:[EMAIL PROTECTED]";>Dain Sundstrom</a>
    * @author <a href="mailto:[EMAIL PROTECTED]";>Marc Fleury</a>
    * @author <a href="mailto:[EMAIL PROTECTED]";>Justin Forder</a>
  - * @version $Revision: 1.1 $
  + * @version $Revision: 1.2 $
    */
   public class JDBCFindByPrimaryKeyQuery extends JDBCAbstractQueryCommand {
   
  @@ -32,11 +32,11 @@
         StringBuffer sql = new StringBuffer();
         sql.append("SELECT ").append(SQLUtil.getColumnNamesClause(
                  entity.getJDBCPrimaryKeyFields()));
  -      sql.append("FROM ").append(entity.getTableName());
  +      sql.append(" FROM ").append(entity.getTableName());
         sql.append(" WHERE ").append(SQLUtil.getWhereClause(
                  entity.getJDBCPrimaryKeyFields()));
         
         setSQL(sql.toString());
  -      setParameterList(QueryParameter.createParameters(0, entity));
  +      setParameterList(QueryParameter.createPrimaryKeyParameters(0, entity));
      }
   }
  
  
  
  1.9       +3 -3      
jboss/src/main/org/jboss/ejb/plugins/cmp/jdbc/JDBCRemoveEntityCommand.java
  
  Index: JDBCRemoveEntityCommand.java
  ===================================================================
  RCS file: 
/cvsroot/jboss/jboss/src/main/org/jboss/ejb/plugins/cmp/jdbc/JDBCRemoveEntityCommand.java,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- JDBCRemoveEntityCommand.java      2001/11/28 11:32:54     1.8
  +++ JDBCRemoveEntityCommand.java      2001/11/29 20:40:05     1.9
  @@ -30,7 +30,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.8 $
  + * @version $Revision: 1.9 $
    */
   public class JDBCRemoveEntityCommand implements RemoveEntityCommand {
      
  @@ -50,8 +50,8 @@
               manager.getMetaData().getName());
   
         StringBuffer sql = new StringBuffer();
  -      sql.append("DELETE ");
  -      sql.append("FROM ").append(entity.getTableName());
  +      sql.append("DELETE");
  +      sql.append(" FROM ").append(entity.getTableName());
         sql.append(" WHERE ").append(SQLUtil.getWhereClause(
                  entity.getJDBCPrimaryKeyFields()));
         
  
  
  
  1.3       +55 -8     
jboss/src/main/org/jboss/ejb/plugins/cmp/jdbc/QueryParameter.java
  
  Index: QueryParameter.java
  ===================================================================
  RCS file: 
/cvsroot/jboss/jboss/src/main/org/jboss/ejb/plugins/cmp/jdbc/QueryParameter.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- QueryParameter.java       2001/11/28 11:32:54     1.2
  +++ QueryParameter.java       2001/11/29 20:40:05     1.3
  @@ -36,6 +36,7 @@
            for(int i=0; i<props.length; i++) {
               QueryParameter param = new QueryParameter(
                        argNum,
  +                     false,
                        null,
                        props[i],
                        props[i].getJDBCType());
  @@ -46,6 +47,7 @@
   
            QueryParameter param = new QueryParameter(
                     argNum,
  +                  false,
                     null,
                     null,
                     type.getJDBCTypes()[0]);
  @@ -69,6 +71,7 @@
               for(int j=0; j<props.length; j++) {
                  QueryParameter param = new QueryParameter(
                           argNum,
  +                        false,
                           pkFields[i],
                           props[j],
                           props[j].getJDBCType());
  @@ -77,6 +80,7 @@
            } else {
               QueryParameter param = new QueryParameter(
                        argNum,
  +                     false,
                        pkFields[i],
                        null,
                        type.getJDBCTypes()[0]);
  @@ -86,7 +90,42 @@
         return parameters;
      } 
      
  +   public static List createPrimaryKeyParameters(
  +         int argNum, 
  +         JDBCEntityBridge entity) {
  +
  +      List parameters = new ArrayList();
  +
  +      JDBCCMPFieldBridge[] pkFields = entity.getJDBCPrimaryKeyFields();
  +      for(int i=0; i<pkFields.length; i++) {
  +         JDBCType type = pkFields[i].getJDBCType();
  +         if(type instanceof JDBCTypeComplex) {
  +            JDBCTypeComplexProperty[] props = 
  +                  ((JDBCTypeComplex)type).getProperties();
  +            for(int j=0; j<props.length; j++) {
  +               QueryParameter param = new QueryParameter(
  +                        argNum,
  +                        true,
  +                        pkFields[i],
  +                        props[j],
  +                        props[j].getJDBCType());
  +               parameters.add(param);
  +            }
  +         } else {
  +            QueryParameter param = new QueryParameter(
  +                     argNum,
  +                     true,
  +                     pkFields[i],
  +                     null,
  +                     type.getJDBCTypes()[0]);
  +            parameters.add(param);
  +         }
  +      }
  +      return parameters;
  +   }
  +
      private int argNum;
  +   private boolean isPrimaryKeyParameter;
      private JDBCCMPFieldBridge field;
      private JDBCTypeComplexProperty property;
      private String parameterString;
  @@ -98,6 +137,10 @@
            Method method, 
            String parameterString) {
   
  +      // Method parameter will never be a primary key object, but always
  +      // a complete entity.
  +      this.isPrimaryKeyParameter = false;
  +      
         this.parameterString = parameterString;
   
         if(parameterString == null || parameterString.length() == 0) {
  @@ -179,11 +222,13 @@
   
      public QueryParameter(
            int argNum, 
  +         boolean isPrimaryKeyParameter,
            JDBCCMPFieldBridge field,
            JDBCTypeComplexProperty property,
            int jdbcType) {
   
         this.argNum = argNum;
  +      this.isPrimaryKeyParameter = isPrimaryKeyParameter;
         this.field = field;
         this.property = property;
         this.jdbcType = jdbcType;
  @@ -211,14 +256,16 @@
   
         Object arg = args[argNum];
         if(field != null) {
  -         if (arg instanceof EJBObject) {
  -            arg = ((EJBObject)arg).getPrimaryKey();
  -         } else if (arg instanceof EJBLocalObject) {
  -            arg = ((EJBLocalObject)arg).getPrimaryKey();
  -         } else {
  -            throw new IllegalArgumentException("Expected an instanc of " +
  -                  "EJBObject or EJBLocalObject, but got an instance of " + 
  -                  arg.getClass().getName());
  +         if(!isPrimaryKeyParameter) {
  +            if(arg instanceof EJBObject) {
  +               arg = ((EJBObject)arg).getPrimaryKey();
  +            } else if(arg instanceof EJBLocalObject) {
  +               arg = ((EJBLocalObject)arg).getPrimaryKey();
  +            } else {
  +               throw new IllegalArgumentException("Expected an instanc of " +
  +                     "EJBObject or EJBLocalObject, but got an instance of " + 
  +                     arg.getClass().getName());
  +            }
            }
            arg = field.getPrimaryKeyValue(arg);
         }
  
  
  

_______________________________________________
Jboss-development mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jboss-development

Reply via email to