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());
    }


}



Reply via email to