private void runFieldTestsFor(Class targetClass, boolean supportJavaBeanNames) throws Exception
{
((OjbConfiguration) OjbConfigurator.getInstance().getConfigurationFor(null)).setPersistentFieldClass(targetClass);
PersistentField pfNM_Name = newInstance(targetClass, NestedMain.class, NESTED_MAIN_NAME);
PersistentField pfNDD_RD = newInstance(targetClass, NestedMain.class, NESTED_DETAIL_DETAIL_REAL_DETAIL);
PersistentField pfNDD_RDD = newInstance(targetClass, NestedMain.class, NESTED_DETAIL_DETAIL_REAL_DESCRIPTION);
PersistentField pfND_MJB = null;
PersistentField pfNE_Name = null;
if (supportJavaBeanNames)
{
pfND_MJB = newInstance(targetClass, NestedMain.class, NESTED_DETAIL_MORE_JAVA_BEAN);
pfNE_Name = newInstance(targetClass, NestedMain.class, NESTED_ENTRY_NAME);
}
// test getter
NestedMain nm = createNestedObject();
Object result = pfNM_Name.get(nm);
assertEquals(NESTED_MAIN_NAME_VALUE, result);
result = pfNDD_RD.get(nm);
assertEquals(NESTED_DETAIL_DETAIL_REAL_DETAIL_VALUE, result);
result = pfNDD_RDD.get(nm);
assertEquals(NESTED_DETAIL_DETAIL_REAL_DESCRIPTION_VALUE, result);
if (supportJavaBeanNames)
{
result = pfND_MJB.get(nm);
assertEquals(NESTED_DETAIL_MORE_JAVA_BEAN_VALUE, result);
result = pfNE_Name.get(nm);
assertEquals(NESTED_ENTRY_NAME_VALUE, result);
}
NestedMain newNM = new NestedMain();
// test setter
pfNM_Name.set(newNM, NESTED_MAIN_NAME_VALUE);
pfNDD_RD.set(newNM, NESTED_DETAIL_DETAIL_REAL_DETAIL_VALUE);
result = pfNDD_RDD.get(newNM);
assertEquals(NESTED_DETAIL_DETAIL_REAL_DESCRIPTION_VALUE, result);
result = pfNM_Name.get(newNM);
assertEquals(NESTED_MAIN_NAME_VALUE, result);
result = pfNDD_RD.get(newNM);
assertEquals(NESTED_DETAIL_DETAIL_REAL_DETAIL_VALUE, result);
if (supportJavaBeanNames)
{
pfND_MJB.set(newNM, NESTED_DETAIL_MORE_JAVA_BEAN_VALUE);
pfNE_Name.set(newNM, NESTED_ENTRY_NAME_VALUE);
result = pfND_MJB.get(newNM);
assertEquals(NESTED_DETAIL_MORE_JAVA_BEAN_VALUE, result);
result = pfNE_Name.get(newNM);
assertEquals(NESTED_ENTRY_NAME_VALUE, result);
}
// serialize fields and test again
pfNM_Name = (PersistentField) SerializationUtils.deserialize(SerializationUtils.serialize(pfNM_Name));
pfNDD_RD = (PersistentField) SerializationUtils.deserialize(SerializationUtils.serialize(pfNDD_RD));
pfNDD_RDD = (PersistentField) SerializationUtils.deserialize(SerializationUtils.serialize(pfNDD_RDD));
if (supportJavaBeanNames)
{
pfND_MJB = (PersistentField) SerializationUtils.deserialize(SerializationUtils.serialize(pfND_MJB));
pfNE_Name = (PersistentField) SerializationUtils.deserialize(SerializationUtils.serialize(pfNE_Name));
}
// test getter
nm = createNestedObject();
result = pfNM_Name.get(nm);
assertEquals(NESTED_MAIN_NAME_VALUE, result);
result = pfNDD_RD.get(nm);
assertEquals(NESTED_DETAIL_DETAIL_REAL_DETAIL_VALUE, result);
result = pfNDD_RDD.get(nm);
assertEquals(NESTED_DETAIL_DETAIL_REAL_DESCRIPTION_VALUE, result);
if (supportJavaBeanNames)
{
result = pfND_MJB.get(nm);
assertEquals(NESTED_DETAIL_MORE_JAVA_BEAN_VALUE, result);
result = pfNE_Name.get(nm);
assertEquals(NESTED_ENTRY_NAME_VALUE, result);
}
newNM = new NestedMain();
// test setter
pfNM_Name.set(newNM, NESTED_MAIN_NAME_VALUE);
pfNDD_RD.set(newNM, NESTED_DETAIL_DETAIL_REAL_DETAIL_VALUE);
result = pfNDD_RDD.get(newNM);
assertEquals(NESTED_DETAIL_DETAIL_REAL_DESCRIPTION_VALUE, result);
result = pfNM_Name.get(newNM);
assertEquals(NESTED_MAIN_NAME_VALUE, result);
result = pfNDD_RD.get(newNM);
assertEquals(NESTED_DETAIL_DETAIL_REAL_DETAIL_VALUE, result);
if (supportJavaBeanNames)
{
pfND_MJB.set(newNM, NESTED_DETAIL_MORE_JAVA_BEAN_VALUE);
pfNE_Name.set(newNM, NESTED_ENTRY_NAME_VALUE);
result = pfND_MJB.get(newNM);
assertEquals(NESTED_DETAIL_MORE_JAVA_BEAN_VALUE, result);
result = pfNE_Name.get(newNM);
assertEquals(NESTED_ENTRY_NAME_VALUE, result);
}
}