unforunately i have an "please help, urgent" mail here:
i am developing an ant task that builds a schema as well as a
mapping file from JDBC meta data, and from what only
looking at the result: the genereated files seems to be OK (still
have some specific type conversions left).
of course i run a junit-test on this which plagiarises the "Using JDO"
from the documentation (and is attached).
also of course, i've stranded on an exception (see last this letter) from
the test. this seems to be happening as castor is registerring a new bean
within my new context.
any guru solves this in a sec?
awkwardly, mats
---EXCEPTION--
testQuery:
[java] java.lang.IllegalArgumentException: object cannot be null
[java] at java.lang.Throwable.<init>(Throwable.java:96)
[java] at java.lang.Exception.<init>(Exception.java:44)
[java] .query result:
org.exolab.castor.jdo.engine.OQLQueryImpl$OQLEnumeration@44fec669
[java] at
java.lang.RuntimeException.<init>(RuntimeException.java:49)
[java] at
java.lang.IllegalArgumentException.<init>(IllegalArgumentException.java:45)
[java] at
org.exolab.castor.persist.TransactionContext.addObjectEntry(TransactionContext.java:1959)
[java] at
org.exolab.castor.persist.TransactionContext.load(TransactionContext.java:598)
[java] at
org.exolab.castor.persist.QueryResults.fetch(QueryResults.java:229)
[java] E
[java] Time: 4.03
[java]
[java] at
org.exolab.castor.jdo.engine.OQLQueryImpl$OQLEnumeration.hasMore(OQLQueryImpl.java:601)
[java] FAILURES!!!
[java] Test Results:
[java] Run: 1 Failures: 0 Errors: 1
[java] There was 1 error:
[java] 1) testSetup(test.se.tim.jdbcmeta.TestJDO)
[java] at
org.exolab.castor.jdo.engine.OQLQueryImpl$OQLEnumeration.hasMore(OQLQueryImpl.java:584)
[java] at test.se.tim.jdbcmeta.TestJDO.doQuery(TestJDO.java:83)
[java] at test.se.tim.jdbcmeta.TestJDO.testSetup(TestJDO.java:56)
[java] at java.lang.reflect.Method.invoke(Native Method)
[java]
[java] at junit.framework.TestCase.runTest(TestCase.java:155)
[java] at junit.framework.TestCase.runBare(TestCase.java:129)
[java] at junit.framework.TestResult$1.protect(TestResult.java:100)
[java] at
junit.framework.TestResult.runProtected(TestResult.java:117)
[java] at junit.framework.TestResult.run(TestResult.java:103)
[java] at junit.framework.TestCase.run(TestCase.java:120)
[java] at junit.framework.TestSuite.run(TestSuite.java:144)
[java] at junit.textui.TestRunner.doRun(TestRunner.java:61)
[java] at junit.textui.TestRunner.run(TestRunner.java:181)
[java] at test.se.tim.jdbcmeta.TestJDO.main(TestJDO.java:98)
[java] java.lang.RuntimeException:
java.lang.IllegalArgumentException: object cannot be null object cannot
be null
[java] at java.lang.Throwable.<init>(Throwable.java:96)
[java] at java.lang.Exception.<init>(Exception.java:44)
[java] at
java.lang.RuntimeException.<init>(RuntimeException.java:49)
[java] at test.se.tim.jdbcmeta.TestJDO.testSetup(TestJDO.java:64)
[java] at java.lang.reflect.Method.invoke(Native Method)
[java] at junit.framework.TestCase.runTest(TestCase.java:155)
[java] at junit.framework.TestCase.runBare(TestCase.java:129)
[java] at junit.framework.TestResult$1.protect(TestResult.java:100)
[java] at
junit.framework.TestResult.runProtected(TestResult.java:117)
[java] at junit.framework.TestResult.run(TestResult.java:103)
[java] at junit.framework.TestCase.run(TestCase.java:120)
[java] at junit.framework.TestSuite.run(TestSuite.java:144)
[java] at junit.textui.TestRunner.doRun(TestRunner.java:61)
[java] at junit.textui.TestRunner.run(TestRunner.java:181)
[java] at test.se.tim.jdbcmeta.TestJDO.main(TestJDO.java:98)
[java] Java Result: 255
BUILD SUCCESSFUL
Total time: 9 seconds
package test.se.tim.jdbcmeta;
import junit.framework.TestCase;
import junit.framework.TestSuite;
import junit.framework.Test;
import java.io.FileWriter;
import java.lang.RuntimeException;
import java.util.MissingResourceException;
import java.util.Properties;
import org.exolab.castor.jdo.JDO;
import org.exolab.castor.jdo.Database;
import org.exolab.castor.jdo.OQLQuery;
import org.exolab.castor.jdo.QueryResults;
import se.tim.castorbeans.*;
public class TestJDO extends TestCase{
protected static final String PROP_FILE = "test.properties";
protected static final String QUERY_PROP =
"test.se.tim.jdbcmeta.testjdo.query";
Properties properties = new Properties();
public TestJDO(String name){
super(name);
}
protected void setUp(){
try{
ClassLoader loader = getClass().getClassLoader();
properties.load(loader.getResourceAsStream(PROP_FILE));
}catch(Exception e){
throw new RuntimeException("cannot load " + PROP_FILE);
}
}
public void testSetup(){
try{
JDO jdo;
Database db;
// Define the JDO object
jdo = new JDO();
jdo.setDatabaseName( "crm" );
jdo.setConfiguration( "database.xml" );
jdo.setClassLoader( getClass().getClassLoader() );
// Obtain a new database
db = jdo.getDatabase();
// Begin a transaction
db.begin();
// Do something
doQuery(db);
// Commit the transaction, close database
db.commit();
db.close();
}catch(Exception e){
e.printStackTrace();
throw new RuntimeException(e + " " + e.getMessage());
}
}
public void doQuery(Database db) throws Exception{
OQLQuery oql;
QueryResults results;
// Construct a new query and bind its parameters
oql = db.getOQLQuery( properties.getProperty(QUERY_PROP) );
//oql.bind( groupId );
// Retrieve results and print each one
results = oql.execute();
System.out.println("query result: " + results);
while ( results.hasMore() ) {
System.out.println( results.next() );
}
}
public static Test suite(){
return new TestSuite(TestJDO.class);
}
public static void main(String[] arg){
junit.textui.TestRunner.run(suite());
}
}