| Craig Russell (JIRA) 2006-04-30, 7:11 am |
| [ http://issues.apache.org/jira/brows...ments#action_1=
2377148 ]=20
Craig Russell commented on JDO-327:
-----------------------------------
Running tests with the uploaded jars, I found that the instances of persist=
ent interfaces are not being cleaned up during localTearDown.
This is due to JPOX not finding instances in the database using Extent or Q=
uery. Instances can only be found using getObjectById. The tearDown method =
cleans up the instances using deletePersistent of the result of a query whe=
re the candidates are an Extent.
1. getExtent(ICompany.class) returns an Extent which when iterated, has no =
elements.
2. pm.newQuery(ICompany.class).execute() returns a Collection which when it=
erated, has no elements.
3. pm.newQuery().setCandidates(pm.getExtent(ICompany.class).execute() retur=
ns a Collection which when iterated, has no elements.
4. the target class stored in the oid for persistent instances is incorrect=
.. This must be the interface, not the implementation's persistent class.=20
<spec section=3D12.6.6>
For interfaces and classes that use a SingleFieldIdentity as the object-id =
class, if the=20
returned instance is subsequently made persistent, the target class stored =
in the object-id=20
instance is the parameter of the newInstance method that created it.=20
</spec>
All of these symptoms might have the same root cause. The discriminator sto=
red in the table doesn't match the value of the discriminator assumed for t=
he persistent interface. The best solution is probably to store the interfa=
ce name as the discriminator value and the name of the target class in the =
object id.
Please see JDO-377 for some debugging tests for this issue.
> JPOX fails to create new instance of PC class via pm.newInstance(PCInterf=
ace)
> -------------------------------------------------------------------------=
----
>
> Key: JDO-327
> URL: http://issues.apache.org/jira/browse/JDO-327
> Project: JDO
> Type: Bug
> Components: tck20
> Versions: JDO 2 rc1
> Reporter: Craig Russell
> Assignee: Erik Bengtson
> Fix For: JDO 2 final
> Attachments: jpox-1.1.0.jar, jpox-enhancer-1.1.0.jar
>
> This is a new test for persistent interfaces. JPOX fails while obtaining =
metadata for the persistent interface IAddress.
> IAddress newAddress() {
> return (IAddress)pm.newInstance(IAddress.class);
> }
> maven -o -Djdo.tck.cfglist=3DcompanyPMInterface.conf runtck.jdori
> [java] RUN CompletenessTest.test ERROR
> [java] Description: Completeness test with standard mapping, basic te=
stdata with all relationships and embedded objects.
> [java] Time: 009
> [java] There was 1 error:
> [java] 1) test(org.apache.jdo.tck.mapping.CompletenessTest)org.spring=
framework.beans.factory.BeanCreationException: Error creating bean with nam=
e 'root' defined in class path resource [org/apache/jdo/tck/pc/company/comp=
anyAllRelationships.xml]: Can't resolve reference to bean 'company1' while =
setting property 'constructor argument with index 0[0]'; nested exception i=
s org.springframework.beans.factory.BeanCreationException: Error creating b=
ean 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 e=
xception 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 fail=
ed; nested exception is org.springframework.beans.factory.BeanDefinitionSto=
reException: Factory method [public org.apache.jdo.tck.pc.company.IAddress =
org.apache.jdo.tck.pc.company.CompanyFactoryAbstractImpl.newAddress(long,ja=
va.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang=
..String)] threw exception; nested exception is javax.jdo.JDOException: Cann=
ot read the JDO Meta-Data file "<input stream> java.lang.ClassCastException=
: org.jpox.metadata.EmbeddedMetaData"
> [java] org.springframework.beans.factory.BeanCreationException: Error=
creating bean with name 'company1' defined in class path resource [org/apa=
che/jdo/tck/pc/company/companyAllRelationships.xml]: Can't resolve referenc=
e to bean 'addr1' while setting property 'constructor argument with index 3=
'; nested exception is org.springframework.beans.factory.BeanCreationExcept=
ion: Error creating bean with name 'addr1' defined in class path resource [=
org/apache/jdo/tck/pc/company/companyAllRelationships.xml]: Instantiation o=
f bean failed; nested exception is org.springframework.beans.factory.BeanDe=
finitionStoreException: Factory method [public org.apache.jdo.tck.pc.compan=
y.IAddress org.apache.jdo.tck.pc.company.CompanyFactoryAbstractImpl.newAddr=
ess(long,java.lang.String,java.lang.String,java.lang.String,java.lang.Strin=
g,java.lang.String)] threw exception; nested exception is javax.jdo.JDOExce=
ption: Cannot read the JDO Meta-Data file "<input stream> java.lang.ClassCa=
stException: org.jpox.metadata.EmbeddedMetaData"
> [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 fai=
led; nested exception is org.springframework.beans.factory.BeanDefinitionSt=
oreException: Factory method [public org.apache.jdo.tck.pc.company.IAddress=
org.apache.jdo.tck.pc.company.CompanyFactoryAbstractImpl.newAddress(long,j=
ava.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lan=
g.String)] threw exception; nested exception is javax.jdo.JDOException: Can=
not read the JDO Meta-Data file "<input stream> java.lang.ClassCastExceptio=
n: org.jpox.metadata.EmbeddedMetaData"
> [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.Str=
ing,java.lang.String,java.lang.String,java.lang.String,java.lang.String)] t=
hrew exception; nested exception is javax.jdo.JDOException: Cannot read the=
JDO Meta-Data file "<input stream> java.lang.ClassCastException: org.jpox.=
metadata.EmbeddedMetaData"
> [java] javax.jdo.JDOException: Cannot read the JDO Meta-Data file "<i=
nput stream> java.lang.ClassCastException: org.jpox.metadata.EmbeddedMetaDa=
ta"
> [java] at org.jpox.metadata.MetaDataParser.parseMetaDataStream(M=
etaDataParser.java:174)
> [java] at org.jpox.metadata.MetaDataParser.parseMetaData(MetaDat=
aParser.java:107)
> [java] at org.jpox.metadata.MetaDataManager.parseFile(MetaDataMa=
nager.java:1131)
> [java] at org.jpox.metadata.MetaDataManager.loadMetaDataForClass=
(MetaDataManager.java:1319)
> [java] at org.jpox.metadata.MetaDataManager.addORMDataToClass(Me=
taDataManager.java:644)
> [java] at org.jpox.metadata.ClassMetaData.populate(ClassMetaData=
..java:429)
> [java] at org.jpox.metadata.MetaDataManager.populateClassesInFil=
e(MetaDataManager.java:1211)
> [java] at org.jpox.metadata.MetaDataManager.loadMetaDataForClass=
(MetaDataManager.java:1325)
> [java] at org.jpox.metadata.MetaDataManager.getMetaDataForClassO=
rInterface(MetaDataManager.java:503)
> [java] at org.jpox.metadata.MetaDataManager.getMetaDataForInterf=
ace(MetaDataManager.java:392)
> [java] at org.jpox.AbstractPersistenceManager.newInstance(Abstra=
ctPersistenceManager.java:2250)
> [java] at org.apache.jdo.tck.pc.company.CompanyFactoryPMInterfac=
e.newAddress(CompanyFactoryPMInterface.java:38)
> [java] at org.apache.jdo.tck.pc.company.CompanyFactoryAbstractIm=
pl.newAddress(CompanyFactoryAbstractImpl.java:46)
> [java] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Me=
thod)
> [java] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMeth=
odAccessorImpl.java:39)
> [java] at sun.reflect.DelegatingMethodAccessorImpl.invoke(Delega=
tingMethodAccessorImpl.java:25)
> [java] at org.springframework.beans.factory.support.SimpleInstan=
tiationStrategy.instantiate(SimpleInstantiationStrategy.java:102)
> [java] at org.springframework.beans.factory.support.AbstractAuto=
wireCapableBeanFactory. instantiateUsingFactoryMethod(AbstractAu
towireCapabl=
eBeanFactory.java:573)
> [java] at org.springframework.beans.factory.support.AbstractAuto=
wireCapableBeanFactory. createBean(AbstractAutowireCapableBeanFa
ctory.java:3=
25)
> [java] at org.springframework.beans.factory.support.AbstractBean=
Factory.getBean(AbstractBeanFactory.java:226)
> [java] at org.springframework.beans.factory.support.AbstractBean=
Factory.getBean(AbstractBeanFactory.java:147)
> [java] at org.springframework.beans.factory.support.BeanDefiniti=
onValueResolver. resolveReference(BeanDefinitionValueReso
lver.java:176)
> [java] at org.springframework.beans.factory.support.BeanDefiniti=
onValueResolver. resolveValueIfNecessary(BeanDefinitionVa
lueResolver.java:10=
5)
> [java] at org.springframework.beans.factory.support.AbstractAuto=
wireCapableBeanFactory. resolveConstructorArguments(AbstractAuto
wireCapableB=
eanFactory.java:705)
> [java] at org.springframework.beans.factory.support.AbstractAuto=
wireCapableBeanFactory. instantiateUsingFactoryMethod(AbstractAu
towireCapabl=
eBeanFactory.java:486)
> [java] at org.springframework.beans.factory.support.AbstractAuto=
wireCapableBeanFactory. createBean(AbstractAutowireCapableBeanFa
ctory.java:3=
25)
> [java] at org.springframework.beans.factory.support.AbstractBean=
Factory.getBean(AbstractBeanFactory.java:226)
> [java] at org.springframework.beans.factory.support.AbstractBean=
Factory.getBean(AbstractBeanFactory.java:147)
> [java] at org.springframework.beans.factory.support.BeanDefiniti=
onValueResolver. resolveReference(BeanDefinitionValueReso
lver.java:176)
> [java] at org.springframework.beans.factory.support.BeanDefiniti=
onValueResolver. resolveValueIfNecessary(BeanDefinitionVa
lueResolver.java:10=
5)
> [java] at org.springframework.beans.factory.support.BeanDefiniti=
onValueResolver. resolveManagedList(BeanDefinitionValueRe
solver.java:193)
> [java] at org.springframework.beans.factory.support.BeanDefiniti=
onValueResolver. resolveValueIfNecessary(BeanDefinitionVa
lueResolver.java:10=
9)
> [java] at org.springframework.beans.factory.support.AbstractAuto=
wireCapableBeanFactory. resolveConstructorArguments(AbstractAuto
wireCapableB=
eanFactory.java:705)
> [java] at org.springframework.beans.factory.support.AbstractAuto=
wireCapableBeanFactory. autowireConstructor(AbstractAutowireCapa
bleBeanFacto=
ry.java:611)
> [java] at org.springframework.beans.factory.support.AbstractAuto=
wireCapableBeanFactory. createBean(AbstractAutowireCapableBeanFa
ctory.java:3=
29)
> [java] at org.springframework.beans.factory.support.AbstractBean=
Factory.getBean(AbstractBeanFactory.java:226)
> [java] at org.springframework.beans.factory.support.AbstractBean=
Factory.getBean(AbstractBeanFactory.java:147)
> [java] at org.apache.jdo.tck.pc.company.CompanyModelReader.getRo=
otList(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(BatchTes=
tRunner.java:120)
> [java] at org.apache.jdo.tck.util.BatchTestRunner.main(BatchTest=
Runner.java:95)
> [java] NestedThrowablesStackTrace:
> [java] java.lang.ClassCastException: org.jpox.metadata.EmbeddedMetaDa=
ta
> [java] at org.jpox.metadata.MetaDataParser.startElement(MetaData=
Parser.java:466)
> [java] at com.sun.org.apache.xerces.internal.parsers.AbstractSAX=
Parser.startElement(AbstractSAXParser.java:533)
> [java] at com.sun.org.apache.xerces.internal.parsers.AbstractXML=
DocumentParser.emptyElement(AbstractXMLDocumentParser.java:220)
> [java] at com.sun.org.apache.xerces.internal.impl.XMLDocumentFra=
gmentScannerImpl. scanStartElement(XMLDocumentFragmentScan
nerImpl.java:872)
> [java] at com.sun.org.apache.xerces.internal.impl.XMLDocumentFra=
gmentScannerImpl$FragmentContentDispatch
er.dispatch(XMLDocumentFragmentScan=
nerImpl.java:1693)
> [java] at com.sun.org.apache.xerces.internal.impl.XMLDocumentFra=
gmentScannerImpl. scanDocument(XMLDocumentFragmentScannerI
mpl.java:368)
> [java] at com.sun.org.apache.xerces.internal.parsers.XML11Config=
uration.parse(XML11Configuration.java:834)
> [java] at com.sun.org.apache.xerces.internal.parsers.XML11Config=
uration.parse(XML11Configuration.java:764)
> [java] at com.sun.org.apache.xerces.internal.parsers.XMLParser.p=
arse(XMLParser.java:148)
> [java] at com.sun.org.apache.xerces.internal.parsers.AbstractSAX=
Parser.parse(AbstractSAXParser.java:1242)
> [java] at javax.xml.parsers.SAXParser.parse(SAXParser.java:375)
> [java] at javax.xml.parsers.SAXParser.parse(SAXParser.java:176)
> [java] at org.jpox.metadata.MetaDataParser.parseMetaDataStream(M=
etaDataParser.java:162)
> [java] at org.jpox.metadata.MetaDataParser.parseMetaData(MetaDat=
aParser.java:107)
> [java] at org.jpox.metadata.MetaDataManager.parseFile(MetaDataMa=
nager.java:1131)
> [java] at org.jpox.metadata.MetaDataManager.loadMetaDataForClass=
(MetaDataManager.java:1319)
> [java] at org.jpox.metadata.MetaDataManager.addORMDataToClass(Me=
taDataManager.java:644)
> [java] at org.jpox.metadata.ClassMetaData.populate(ClassMetaData=
..java:429)
> [java] at org.jpox.metadata.MetaDataManager.populateClassesInFil=
e(MetaDataManager.java:1211)
> [java] at org.jpox.metadata.MetaDataManager.loadMetaDataForClass=
(MetaDataManager.java:1325)
> [java] at org.jpox.metadata.MetaDataManager.getMetaDataForClassO=
rInterface(MetaDataManager.java:503)
> [java] at org.jpox.metadata.MetaDataManager.getMetaDataForInterf=
ace(MetaDataManager.java:392)
> [java] at org.jpox.AbstractPersistenceManager.newInstance(Abstra=
ctPersistenceManager.java:2250)
> [java] at org.apache.jdo.tck.pc.company.CompanyFactoryPMInterfac=
e.newAddress(CompanyFactoryPMInterface.java:38)
> [java] at org.apache.jdo.tck.pc.company.CompanyFactoryAbstractIm=
pl.newAddress(CompanyFactoryAbstractImpl.java:46)
> [java] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Me=
thod)
> [java] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMeth=
odAccessorImpl.java:39)
> [java] at sun.reflect.DelegatingMethodAccessorImpl.invoke(Delega=
tingMethodAccessorImpl.java:25)
> [java] at org.springframework.beans.factory.support.SimpleInstan=
tiationStrategy.instantiate(SimpleInstantiationStrategy.java:102)
> [java] at org.springframework.beans.factory.support.AbstractAuto=
wireCapableBeanFactory. instantiateUsingFactoryMethod(AbstractAu
towireCapabl=
eBeanFactory.java:573)
> [java] at org.springframework.beans.factory.support.AbstractAuto=
wireCapableBeanFactory. createBean(AbstractAutowireCapableBeanFa
ctory.java:3=
25)
> [java] at org.springframework.beans.factory.support.AbstractBean=
Factory.getBean(AbstractBeanFactory.java:226)
> [java] at org.springframework.beans.factory.support.AbstractBean=
Factory.getBean(AbstractBeanFactory.java:147)
> [java] at org.springframework.beans.factory.support.BeanDefiniti=
onValueResolver. resolveReference(BeanDefinitionValueReso
lver.java:176)
> [java] at org.springframework.beans.factory.support.BeanDefiniti=
onValueResolver. resolveValueIfNecessary(BeanDefinitionVa
lueResolver.java:10=
5)
> [java] at org.springframework.beans.factory.support.AbstractAuto=
wireCapableBeanFactory. resolveConstructorArguments(AbstractAuto
wireCapableB=
eanFactory.java:705)
> [java] at org.springframework.beans.factory.support.AbstractAuto=
wireCapableBeanFactory. instantiateUsingFactoryMethod(AbstractAu
towireCapabl=
eBeanFactory.java:486)
> [java] at org.springframework.beans.factory.support.AbstractAuto=
wireCapableBeanFactory. createBean(AbstractAutowireCapableBeanFa
ctory.java:3=
25)
> [java] at org.springframework.beans.factory.support.AbstractBean=
Factory.getBean(AbstractBeanFactory.java:226)
> [java] at org.springframework.beans.factory.support.AbstractBean=
Factory.getBean(AbstractBeanFactory.java:147)
> [java] at org.springframework.beans.factory.support.BeanDefiniti=
onValueResolver. resolveReference(BeanDefinitionValueReso
lver.java:176)
> [java] at org.springframework.beans.factory.support.BeanDefiniti=
onValueResolver. resolveValueIfNecessary(BeanDefinitionVa
lueResolver.java:10=
5)
> [java] at org.springframework.beans.factory.support.BeanDefiniti=
onValueResolver. resolveManagedList(BeanDefinitionValueRe
solver.java:193)
> [java] at org.springframework.beans.factory.support.BeanDefiniti=
onValueResolver. resolveValueIfNecessary(BeanDefinitionVa
lueResolver.java:10=
9)
> [java] at org.springframework.beans.factory.support.AbstractAuto=
wireCapableBeanFactory. resolveConstructorArguments(AbstractAuto
wireCapableB=
eanFactory.java:705)
> [java] at org.springframework.beans.factory.support.AbstractAuto=
wireCapableBeanFactory. autowireConstructor(AbstractAutowireCapa
bleBeanFacto=
ry.java:611)
> [java] at org.springframework.beans.factory.support.AbstractAuto=
wireCapableBeanFactory. createBean(AbstractAutowireCapableBeanFa
ctory.java:3=
29)
> [java] at org.springframework.beans.factory.support.AbstractBean=
Factory.getBean(AbstractBeanFactory.java:226)
> [java] at org.springframework.beans.factory.support.AbstractBean=
Factory.getBean(AbstractBeanFactory.java:147)
> [java] at org.apache.jdo.tck.pc.company.CompanyModelReader.getRo=
otList(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(BatchTes=
tRunner.java:120)
> [java] at org.apache.jdo.tck.util.BatchTestRunner.main(BatchTest=
Runner.java:95)
> [java] FAILURES!!!
--=20
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://issues.apache.org/jira/secur...nistrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira
|