[
https://issues.apache.org/jira/browse/JDO-559?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12548382
]
Andy Jefferson commented on JDO-559:
------------------------------------
NewInstance checks for missing <property> for a method. e.g AAddress has
getAString() but not mapped in MetaData.
NewInstanceBadMapping checks for the same thing but using JDO+ORM files.
> NewInstanceBadMapping has to be invoked from a separate conf file which
> specifies the alternate mapping, which is missing metadata to map zipcode.
But it isn't missing anything IMHO. The <property> mapping is in the JDO file.
Why should users have to specify it in both JDO *and* ORM? That's not how it
works for fields. An alternate to using a different schema is just to have
AAddress_bad1, AAddress_bad2 for example.
> Currently the spec does assume that for pm.newInstance() to work, properties
> in interfaces and abstract classes need to be explicitly defined in metadata.
Yes, but as I already said, all of the persistent interfaces tests already
present in the TCK *don't* make that assumption. PIAddress has no properties
mapped, yet has methods for example, there are others. So going by the spec
JPOX should throw a JDOUserException for that (which it would do if i enable
that check hence all persistent interface tests would fail).
Spec section 18 says
<spec>If any field or property declarations are missing from the metadata, then
field or property metadata is defaulted for the missing declarations.</spec>
but what is it defaulted to is the crux
> JPOX fails to throw JDOUserException on some illegal arguments to
> pm.newInstance()
> ----------------------------------------------------------------------------------
>
> Key: JDO-559
> URL: https://issues.apache.org/jira/browse/JDO-559
> Project: JDO
> Issue Type: Bug
> Components: tck2
> Reporter: Michelle Caisse
> Assignee: Andy Jefferson
> Fix For: JDO 2 maintenance release 1
>
>
> For tests NewInstance (in pm.conf) and NewInstanceBadMapping (in
> newInstanceBadMapping.conf), a number of test failures:
> 1)
> testNewInstanceInterfaceBad(org.apache.jdo.tck.api.persistencemanager.NewInstance)junit.framework.AssertionFailedError:
> Expected JDOUserException but no exception thrown. Interface contains
> method not declared as persistent property.
> at
> org.apache.jdo.tck.api.persistencemanager.NewInstance.testNewInstanceInterfaceBad(NewInstance.java:99)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> at org.apache.jdo.tck.JDO_Test.runBare(JDO_Test.java:254)
> at
> org.apache.jdo.tck.util.BatchTestRunner.doRun(BatchTestRunner.java:108)
> at
> org.apache.jdo.tck.util.BatchTestRunner.start(BatchTestRunner.java:148)
> at
> org.apache.jdo.tck.util.BatchTestRunner.main(BatchTestRunner.java:123)
> 2)
> testNewInstanceAbstractClassBad(org.apache.jdo.tck.api.persistencemanager.NewInstance)junit.framework.AssertionFailedError:
> Expected JDOUserException but no exception thrown. Abstract class contains
> abstract method not declared as persistent property.
> at
> org.apache.jdo.tck.api.persistencemanager.NewInstance.testNewInstanceAbstractClassBad(NewInstance.java:115)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> at org.apache.jdo.tck.JDO_Test.runBare(JDO_Test.java:254)
> at
> org.apache.jdo.tck.util.BatchTestRunner.doRun(BatchTestRunner.java:108)
> at
> org.apache.jdo.tck.util.BatchTestRunner.start(BatchTestRunner.java:148)
> at
> org.apache.jdo.tck.util.BatchTestRunner.main(BatchTestRunner.java:123)
> RUN NewInstanceBadMapping.testNewInstanceInterface FAILURE
> RUN NewInstanceBadMapping.testNewInstanceAbstractClass FAILURE
> RUN NewInstanceBadMapping.testNewInstanceClass FAILURE
> Description: All pm tests with standard mapping, no testdata.
> Time: 003
> There were 3 failures:
> 1)
> testNewInstanceInterface(org.apache.jdo.tck.api.persistencemanager.NewInstanceBadMapping)junit.framework.AssertionFailedError:
> Expected JDOUserException but no exception thrown. Persistent property is
> not mapped.
> at
> org.apache.jdo.tck.api.persistencemanager.NewInstanceBadMapping.testNewInstanceInterface(NewInstanceBadMapping.java:66)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> at org.apache.jdo.tck.JDO_Test.runBare(JDO_Test.java:254)
> at
> org.apache.jdo.tck.util.BatchTestRunner.doRun(BatchTestRunner.java:108)
> at
> org.apache.jdo.tck.util.BatchTestRunner.start(BatchTestRunner.java:148)
> at
> org.apache.jdo.tck.util.BatchTestRunner.main(BatchTestRunner.java:123)
> 2)
> testNewInstanceAbstractClass(org.apache.jdo.tck.api.persistencemanager.NewInstanceBadMapping)junit.framework.AssertionFailedError:
> Expected JDOUserException but no exception thrown. Persistent property is
> not mapped.
> at
> org.apache.jdo.tck.api.persistencemanager.NewInstanceBadMapping.testNewInstanceAbstractClass(NewInstanceBadMapping.java:81)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> at org.apache.jdo.tck.JDO_Test.runBare(JDO_Test.java:254)
> at
> org.apache.jdo.tck.util.BatchTestRunner.doRun(BatchTestRunner.java:108)
> at
> org.apache.jdo.tck.util.BatchTestRunner.start(BatchTestRunner.java:148)
> at
> org.apache.jdo.tck.util.BatchTestRunner.main(BatchTestRunner.java:123)
> 3)
> testNewInstanceClass(org.apache.jdo.tck.api.persistencemanager.NewInstanceBadMapping)junit.framework.AssertionFailedError:
> Expected JDOUserException but no exception thrown. Persistent property is
> not mapped.
> at
> org.apache.jdo.tck.api.persistencemanager.NewInstanceBadMapping.testNewInstanceClass(NewInstanceBadMapping.java:96)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> at org.apache.jdo.tck.JDO_Test.runBare(JDO_Test.java:254)
> at
> org.apache.jdo.tck.util.BatchTestRunner.doRun(BatchTestRunner.java:108)
> at
> org.apache.jdo.tck.util.BatchTestRunner.start(BatchTestRunner.java:148)
> at
> org.apache.jdo.tck.util.BatchTestRunner.main(BatchTestRunner.java:123)
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.