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