You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jaxme-dev@ws.apache.org by jo...@apache.org on 2004/03/23 18:50:50 UTC
cvs commit: ws-jaxme/src/js/org/apache/ws/jaxme/js/pattern VersionGenerator.java
jochen 2004/03/23 09:50:50
Modified: src/js/org/apache/ws/jaxme/js/pattern VersionGenerator.java
Log:
Nullable keys have not been handled properly.
Revision Changes Path
1.5 +30 -6 ws-jaxme/src/js/org/apache/ws/jaxme/js/pattern/VersionGenerator.java
Index: VersionGenerator.java
===================================================================
RCS file: /home/cvs/ws-jaxme/src/js/org/apache/ws/jaxme/js/pattern/VersionGenerator.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- VersionGenerator.java 16 Feb 2004 23:39:54 -0000 1.4
+++ VersionGenerator.java 23 Mar 2004 17:50:49 -0000 1.5
@@ -147,9 +147,32 @@
public void update(JavaMethod pMethod, TableInfo pTableInfo,
DirectAccessible pConnection,
DirectAccessible pMap, DirectAccessible pRow) {
+ Table table = foreignKey.getTable();
+ List params = new ArrayList();
+ for (Iterator iter = foreignKey.getColumns(); iter.hasNext(); ) {
+ Column primaryKeyColumn = (Column) iter.next();
+ int index = -1;
+ int i = 0;
+ for (Iterator iter2 = table.getColumns(); iter2.hasNext(); ++i) {
+ Column tableColumn = (Column) iter2.next();
+ if (tableColumn.equals(primaryKeyColumn)) {
+ index = i;
+ break;
+ }
+ }
+ if (index == -1) {
+ throw new IllegalStateException("Key column " + primaryKeyColumn.getQName() + " not found.");
+ }
+ if (params.size() > 0) {
+ params.add(" || ");
+ }
+ params.add(new Object[]{pRow, "[" + index + "] != null"});
+ }
+
+ pMethod.addIf(params);
LocalJavaField referencedKey = getCacheDataClassInstance(pMethod,
- referencedTable,
- foreignKey, pRow);
+ referencedTable,
+ foreignKey, pRow);
LocalJavaField mappedKey = pMethod.newJavaField(referencedKey.getType());
mappedKey.addLine("(", referencedKey.getType(), ") ", pMap, ".get(",
referencedKey, ")");
@@ -187,6 +210,8 @@
}
pMethod.addLine(pRow, "[" + colNum + "] = ", mappedKey, ".getValues()[" + valNum++ + "];");
}
+
+ pMethod.addEndIf();
}
}
@@ -766,12 +791,11 @@
JavaQName cacheDataClass = getCacheDataClassName(pMethod.getJavaSource().getQName());
LocalJavaField jf = pMethod.newJavaField(cacheDataClass);
jf.addLine("new ", cacheDataClass, "(",
-
- JavaSource.getQuoted(pTableInfo.getPropertyName()),
- ", new ", Object[].class, "{", params, "})");
+ JavaSource.getQuoted(pTableInfo.getPropertyName()),
+ ", new ", Object[].class, "{", params, "})");
return jf;
}
-
+
/** <p>Updates a row by reading the values from an instance of the inner
* class CacheData.</p>
*/
---------------------------------------------------------------------
To unsubscribe, e-mail: jaxme-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: jaxme-dev-help@ws.apache.org