I've put it in Scarab and will get a test case for it put together. - Stephen
> -----Original Message----- > From: Alexis HAUMONT [mailto:[EMAIL PROTECTED]] > Sent: Thursday, August 22, 2002 1:53 AM > To: Turbine Torque Users List > Subject: [Patch-2nd submit] Object.vm for setPrimaryKey( String ) if complex PK > > Hi, > > Could somenone please test and commit this patch, it's a bug-fix : given > one table with a complex PK, <om>.setPrimaryKey( String ) is broken. > > Thanks > Alexis. > > > I wrote on 2002/08/02 : > > > Hi all, > > > > Here is a little patch for a bug found in Object.vm, the generated > > method setPrimaryKey( String key ) has a bug if your Table has a > > multiple PK, it won't parse a string representation of a ComboKey even > > one acquired by om.getPrimaryKey().toString(), the code always throws > > an ArrayIndexOfBoundException.. > > The generated code could only work if your string representation of a > > ComboKey ends with a ':', the reason for this is because the code > > breaks the String between ':' and doesn't consider the end-of-line as > > a delimiter.. (btw, why not using a StringTokenizer here ?) > > [../..] > > > > > regards, > > Alexis. > > > >----------------------------------------------------------------------- - > > > >Index: Object.vm > >==================================================== > =============== > >RCS file: /home/cvspublic/jakarta-turbine-torque/src/templates/om/Object.vm,v > >retrieving revision 1.45 > >diff -u -r1.45 Object.vm > >--- Object.vm 1 Aug 2002 16:51:38 -0000 1.45 > >+++ Object.vm 2 Aug 2002 06:14:43 -0000 > >@@ -1164,11 +1164,17 @@ > > int prevPos = 0; > > > > #set ($int = "int ") > >+ #set ($i = 1) > > #foreach ($col in $table.PrimaryKeys) > >- ${int}colonPos = key.indexOf(':', prevPos); > >- set${col.JavaName}(new ${col.JavaNative}(key.substring(prevPos, > colonPos))); > >- prevPos = colonPos + 1; > >+ #if ( $i < $table.PrimaryKeys.size() ) > >+ ${int}colonPos = key.indexOf(':', prevPos); > >+ set${col.JavaName}( new ${col.JavaNative}(key.substring(prevPos, > colonPos)) ); > >+ prevPos = colonPos + 1; > >+ #else > >+ set${col.JavaName}( new ${col.JavaNative}(key.substring(prevPos)) ); > >+ #end > > #set ($int = "") > >+ #set ($i = $i +1) > > #end > > } > > > > > > > > > > > >----------------------------------------------------------------------- - > > > >-- > >To unsubscribe, e-mail: <mailto:turbine-torque-user- > [EMAIL PROTECTED]> > >For additional commands, e-mail: <mailto:turbine-torque-user- > [EMAIL PROTECTED]> > > -- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>
