Issue Details (XML | Word | Printable)

Key: JDO-326
Type: Bug Bug
Status: Resolved Resolved
Resolution: Fixed
Priority: Major Major
Assignee: Erik Bengtson
Reporter: Craig Russell
Votes: 0
Watchers: 0
Operations

If you were logged in you would be able to see more operations.
JDO

JPOX fails to create new instance of PC class via pm.newInstance(PCClass)

Created: 04/Mar/06 04:38 AM   Updated: 21/Mar/06 06:00 AM
Return to search
Component/s: tck2
Affects Version/s: JDO 2 rc1
Fix Version/s: JDO 2 final

Time Tracking:
Not Specified

Resolution Date: 21/Mar/06 06:00 AM


 Description  « Hide
Using the company factory class CompanyFactoryPMClass for the CompletenessTest, JPOX fails to create a new instance of a PC class.

maven -o -Djdo.tck.cfglist=companyPMClass.conf runtck.jdori

    IAddress newAddress() {
        return (IAddress)pm.newInstance(Address.class); <-- fails here
    }

    [java] RUN CompletenessTest.test ERROR
    [java] Description: Completeness test with standard mapping, basic testdata with all relationships and embedded objects.
    [java] Time: 013
    [java] There was 1 error:
    [java] 1) test(org.apache.jdo.tck.mapping.CompletenessTest)org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'root' defined in class path resource [org/apache/jdo/tck/pc/company/companyAllRelationships.xml]: Can't resolve reference to bean 'company1' while setting property 'constructor argument with index 0[0]'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'company1' defined in class path resource [org/apache/jdo/tck/pc/company/companyAllRelationships.xml]: Can't resolve reference to bean 'addr1' while setting property 'constructor argument with index 3'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'addr1' defined in class path resource [org/apache/jdo/tck/pc/company/companyAllRelationships.xml]: Instantiation of bean failed; nested exception is org.springframework.beans.factory.BeanDefinitionStoreException: Factory method [public org.apache.jdo.tck.pc.company.IAddress org.apache.jdo.tck.pc.company.CompanyFactoryAbstractImpl.newAddress(long,java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang.String)] threw exception; nested exception is java.lang.NullPointerException: null
    [java] org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'company1' defined in class path resource [org/apache/jdo/tck/pc/company/companyAllRelationships.xml]: Can't resolve reference to bean 'addr1' while setting property 'constructor argument with index 3'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'addr1' defined in class path resource [org/apache/jdo/tck/pc/company/companyAllRelationships.xml]: Instantiation of bean failed; nested exception is org.springframework.beans.factory.BeanDefinitionStoreException: Factory method [public org.apache.jdo.tck.pc.company.IAddress org.apache.jdo.tck.pc.company.CompanyFactoryAbstractImpl.newAddress(long,java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang.String)] threw exception; nested exception is java.lang.NullPointerException: null
    [java] org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'addr1' defined in class path resource [org/apache/jdo/tck/pc/company/companyAllRelationships.xml]: Instantiation of bean failed; nested exception is org.springframework.beans.factory.BeanDefinitionStoreException: Factory method [public org.apache.jdo.tck.pc.company.IAddress org.apache.jdo.tck.pc.company.CompanyFactoryAbstractImpl.newAddress(long,java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang.String)] threw exception; nested exception is java.lang.NullPointerException: null
    [java] org.springframework.beans.factory.BeanDefinitionStoreException: Factory method [public org.apache.jdo.tck.pc.company.IAddress org.apache.jdo.tck.pc.company.CompanyFactoryAbstractImpl.newAddress(long,java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang.String)] threw exception; nested exception is java.lang.NullPointerException: null
    [java] java.lang.NullPointerException
    [java] at org.jpox.enhancer.ImplementationGenerator.<init>(ImplementationGenerator.java:74)
    [java] at org.jpox.enhancer.ImplementationCreatorImpl.newInstance(ImplementationCreatorImpl.java:46)
    [java] at org.jpox.AbstractPersistenceManager.newInstance(AbstractPersistenceManager.java:2253)
    [java] at org.apache.jdo.tck.pc.company.CompanyFactoryPMClass.newAddress(CompanyFactoryPMClass.java:38)
    [java] at org.apache.jdo.tck.pc.company.CompanyFactoryAbstractImpl.newAddress(CompanyFactoryAbstractImpl.java:46)
    [java] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    [java] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    [java] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    [java] at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:102)
    [java] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:573)
    [java] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:325)
    [java] at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:226)
    [java] at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:147)
    [java] at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:176)
    [java] at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:105)
    [java] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.resolveConstructorArguments(AbstractAutowireCapableBeanFactory.java:705)
    [java] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:486)
    [java] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:325)
    [java] at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:226)
    [java] at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:147)
    [java] at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:176)
    [java] at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:105)
    [java] at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveManagedList(BeanDefinitionValueResolver.java:193)
    [java] at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:109)
    [java] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.resolveConstructorArguments(AbstractAutowireCapableBeanFactory.java:705)
    [java] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:611)
    [java] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:329)
    [java] at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:226)
    [java] at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:147)
    [java] at org.apache.jdo.tck.pc.company.CompanyModelReader.getRootList(CompanyModelReader.java:101)
    [java] at org.apache.jdo.tck.mapping.CompletenessTest.localSetUp(CompletenessTest.java:95)
    [java] at org.apache.jdo.tck.JDO_Test.setUp(JDO_Test.java:187)
    [java] at org.apache.jdo.tck.JDO_Test.runBare(JDO_Test.java:203)
    [java] at org.apache.jdo.tck.util.BatchTestRunner.start(BatchTestRunner.java:120)
    [java] at org.apache.jdo.tck.util.BatchTestRunner.main(BatchTestRunner.java:95)
    [java] FAILURES!!!


 All   Comments   Work Log   Change History   Subversion Commits      Sort Order: Ascending order - Click to sort in descending order
Erik Bengtson added a comment - 04/Mar/06 05:11 AM
Is it a test using concrete classes as argument or we have interfaces too?

Erik Bengtson added a comment - 04/Mar/06 05:23 AM
org.apache.jdo.tck.pc.company.CompanyFactoryPMClass refers only to concrete classes

Craig Russell added a comment - 04/Mar/06 07:11 AM
This test only uses persistent classes as arguments to pm.newInstance. Another test uses persistent interfaces.

<spec>
Object newInstance(Class persistenceCapable);
The parameter must be one of the following:
?an abstract class that is declared in the metadata using the class element, or
?an interface that is declared in the metadata using the interface element, or
?a concrete class that is declared in the metadata as persistence-capable. In this case, <---this test case uses this example
the concrete class must declare a public no-args constructor.
</spec>

Craig Russell made changes - 11/Mar/06 01:55 PM
Field Original Value New Value
Assignee Erik Bengtson [ ebengtso ]
Craig Russell added a comment - 21/Mar/06 06:00 AM
This is fixed with the latest JPOX SNAPSHOT.

Craig Russell made changes - 21/Mar/06 06:00 AM
Resolution Fixed [ 1 ]
Status Open [ 1 ] Resolved [ 5 ]