[ 
https://issues.apache.org/jira/browse/OPENJPA-588?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Sandeep Shrivastava updated OPENJPA-588:
----------------------------------------

    Attachment: openjpa-1.1.0-SNAPSHOT-r422266-650703.patch

Patch to set the index value on the FieldMetadata when reinitializing the 
fields array in the ClassMetaData class.

> Test for checking the absolute index of field metadata fails
> ------------------------------------------------------------
>
>                 Key: OPENJPA-588
>                 URL: https://issues.apache.org/jira/browse/OPENJPA-588
>             Project: OpenJPA
>          Issue Type: Bug
>            Reporter: Sandeep Shrivastava
>         Attachments: openjpa-1.1.0-SNAPSHOT-r422266-650703.patch
>
>   Original Estimate: 24h
>  Remaining Estimate: 24h
>
> We have a JDO metadata test which checks for the absolute index positions for 
> the entity fields that are returned by the getIndex method of the 
> FieldMetaData.
> In this test ,we have an entity class MetaTest1
> public class MetaTest1 {
>     // these should not be persistent
>     private static int staticField;
>     private final String finalField = null;
>     private transient char transientField;
>     private MetaTest4 metaTest4Field;
>     private MetaTest4[] metaTest4ArrayField;
>     private Object objectField;
>     private Long longWrapperField;
>     private double doubleField;
>     // persistent fields -- see metadata
>     private String stringField;
>     private Integer intWrapperField;
>     private int intField;
>     private MetaTest2 metaTest2Field;
>     private MetaTest2[] metaTest2ArrayField;
>     private int[] intArrayField;
>     public static class Inner {
>         private long longField;
>     }
> }
> In the test, we get the MetaDataRepository and from it the ClassMetaData, 
> then the FieldMetaData and so on.
> The test fails at the line:
>         assertEquals(6, _metaTest1.getField('stringField').getIndex());
> Failure is :
> [testlogic] junit.framework.AssertionFailedError: expected:<6> but was:<8>
> [testlogic]   at 
> kodo.meta.TestClassMetaData.testAbsoluteFieldNumbering(TestClassMetaData.java:217)
> [testlogic]   at 
> com.solarmetric.test.AbstractTestCase.run(AbstractTestCase.java:132)
> The persistence mapping is defined in the JDO file
> <jdo>
>     <package name="kodo.meta">
>         <!-- class MetaTest1 -->
>         <class name="MetaTest1">
>             <!-- field longWrapperField -->
>             <field name="longWrapperField" persistence-modifier="none">
>                 <!-- comment1 on comment-test extension -->
>                 <!-- comment2 on comment-test extension -->
>                 <extension vendor-name="test" key="comment-test" 
> value="test"/>
>             </field>
>             <field name="objectField" persistence-modifier="none"/>
>             <field name="transientField" persistence-modifier="none"/>
>             <field name="doubleField" persistence-modifier="transactional"/>
>             <field name="intField" embedded="false" 
> default-fetch-group="false" null-value="exception"/>
>             <field name="intWrapperField" null-value="default"/>
>         </class>
>     </package>
> </jdo>
> There is no metadata mapping available for the MetaTest2 class. Initially the 
> metadata is populated using reflection and assigns index positions to 
> metaTest2Field and metaTest4ArrayField fields. During resolution the 
> FieldMetaData[] _fields is reset and when ClassMetadata.getDeclaredIndex() is 
> called later it is reinitialized but we dont set the index value on the 
> FieldMetadata once assigned and this fails the test as it does not get the 
> expected value for the index for the stringField.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to