use of org.datanucleus.ClassLoaderResolverImpl in project tests by datanucleus.
the class BasicTest method testLoadingMetaDataForPackage.
/**
* Tests the loading of XML metadata specified in package,jdo.
*/
public void testLoadingMetaDataForPackage() {
MetaDataManager mmgr = new PersistenceNucleusContextImpl("JDO", null).getMetaDataManager();
ClassLoaderResolver clr = new ClassLoaderResolverImpl();
// Validate metadata for DateWidget
AbstractClassMetaData cmd = mmgr.getMetaDataForClass(DateWidget.class, clr);
assertNotNull("ClassMetaData is null!", cmd);
assertEquals("Class name", DateWidget.class.getName(), cmd.getFullClassName());
assertEquals("Package name", "org.datanucleus.samples.widget", cmd.getPackageName());
assertEquals("Superclass", Widget.class.getName(), cmd.getPersistableSuperclass());
assertEquals("Identity type", IdentityType.DATASTORE, cmd.getIdentityType());
assertNull("Identity class", cmd.getObjectidClass());
assertNotNull("Inheritance", cmd.getInheritanceMetaData());
assertEquals("Inheritance strategy", cmd.getInheritanceMetaData().getStrategy().toString(), "new-table");
String[] sortedFieldNames = new String[] { "dateField", "dateJdbcTimestampField", "sqlDateField", "sqlTimestampField" };
Assert.assertEquals("Field count", sortedFieldNames.length, cmd.getNoOfManagedMembers());
for (int i = 0; i < sortedFieldNames.length; ++i) {
AbstractMemberMetaData fmd = cmd.getMetaDataForManagedMemberAtRelativePosition(i);
String s = sortedFieldNames[i];
assertEquals(s, fmd.getName());
assertEquals(s + " persistence modifier", FieldPersistenceModifier.PERSISTENT, fmd.getPersistenceModifier());
assertEquals(s + " primary key", false, fmd.isPrimaryKey());
assertEquals(s + " null value handling", NullValue.NONE, fmd.getNullValue());
assertEquals(s + " default fetch group", true, fmd.isDefaultFetchGroup());
assertNull(s + " collection metadata", fmd.getContainer());
assertNull(s + " map metadata", fmd.getContainer());
}
// Validate metadata for FloatWidget
cmd = mmgr.getMetaDataForClass(FloatWidget.class, clr);
assertNotNull("Metadata", cmd);
assertEquals("Class name", FloatWidget.class.getName(), cmd.getFullClassName());
assertEquals("Package name", "org.datanucleus.samples.widget", cmd.getPackageName());
assertEquals("Superclass", Widget.class.getName(), cmd.getPersistableSuperclass());
assertEquals("Identity type", IdentityType.DATASTORE, cmd.getIdentityType());
assertNull("Identity class", cmd.getObjectidClass());
sortedFieldNames = new String[] { "doubleField", "doubleObjField", "floatField", "floatObjField" };
NullValue[] nullValueHandlings = new NullValue[] { NullValue.EXCEPTION, NullValue.NONE, NullValue.EXCEPTION, NullValue.NONE };
assertEquals("Field count", sortedFieldNames.length, cmd.getNoOfManagedMembers());
for (int i = 0; i < sortedFieldNames.length; ++i) {
AbstractMemberMetaData fmd = cmd.getMetaDataForManagedMemberAtRelativePosition(i);
String s = sortedFieldNames[i];
Assert.assertEquals(s, fmd.getName());
Assert.assertEquals(s + " persistence modifier", FieldPersistenceModifier.PERSISTENT, fmd.getPersistenceModifier());
Assert.assertEquals(s + " primary key", false, fmd.isPrimaryKey());
Assert.assertEquals(s + " null value handling", nullValueHandlings[i], fmd.getNullValue());
Assert.assertEquals(s + " default fetch group", true, fmd.isDefaultFetchGroup());
Assert.assertNull(s + " collection metadata", fmd.getContainer());
Assert.assertNull(s + " map metadata", fmd.getContainer());
}
}
use of org.datanucleus.ClassLoaderResolverImpl in project tests by datanucleus.
the class FetchPlanTest method testNestedFetchGroupsAgain.
/**
* Test nested fetch groups.
* TODO Merge this with the test above
*/
public void testNestedFetchGroupsAgain() {
FetchPlan fp = getFetchPlan();
PersistenceNucleusContextImpl nucleusCtx = new PersistenceNucleusContextImpl("JDO", null);
MetaDataManager metaMgr = new JDOMetaDataManager(nucleusCtx);
// test parent with fetch-group = group1
AbstractClassMetaData cmd = metaMgr.getMetaDataForClass(FP1Sub.class, new ClassLoaderResolverImpl());
fp.addGroup("1");
fp.removeGroup(FetchPlan.DEFAULT);
FetchPlanForClass fpc = fp.getFetchPlanForClass(cmd);
int[] fieldsInFP = fpc.getMemberNumbers();
assertEquals("should have 2 fields in fetchplan", 2, fieldsInFP.length);
// check if fields are in the FP
BitSet fieldsInFPBitSet = fpc.getMemberNumbersByBitSet();
assertTrue("name should be in the fetchplan", fieldsInFPBitSet.get(cmd.getAbsolutePositionOfMember("name")));
assertTrue("room should be in the fetchplan", fieldsInFPBitSet.get(cmd.getAbsolutePositionOfMember("room")));
}
use of org.datanucleus.ClassLoaderResolverImpl in project tests by datanucleus.
the class FetchPlanTest method testPostLoad.
/**
* Test the use of "postload"
*/
public void testPostLoad() throws Exception {
FetchPlan fp = getFetchPlan();
PersistenceNucleusContextImpl nucleusCtx = new PersistenceNucleusContextImpl("JDO", null);
MetaDataManager metaMgr = new JDOMetaDataManager(nucleusCtx);
AbstractClassMetaData cmd = metaMgr.getMetaDataForClass(FP2Base.class, new ClassLoaderResolverImpl());
// --------------------------------------
// all fields in DFG
// --------------------------------------
FetchPlanForClass fpc = fp.getFetchPlanForClass(cmd);
boolean[] loadedFields = new boolean[14];
loadedFields[cmd.getAbsolutePositionOfMember("piece1")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece2")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece3")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece4")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece5")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece6")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece7")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece8")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece9")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece10")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece11")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece12")] = true;
assertFalse("Should not call postLoad callback", fpc.isToCallPostLoadFetchPlan(loadedFields));
loadedFields[cmd.getAbsolutePositionOfMember("piece1")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece2")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece3")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece4")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece5")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece6")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece7")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece8")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece9")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece10")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece11")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece12")] = false;
assertFalse("Should not call postLoad callback", fpc.isToCallPostLoadFetchPlan(loadedFields));
loadedFields[cmd.getAbsolutePositionOfMember("piece1")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece2")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece3")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece4")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece5")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece6")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece7")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece8")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece9")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece10")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece11")] = false;
loadedFields[cmd.getAbsolutePositionOfMember("piece12")] = false;
assertTrue("Should call postLoad callback", fpc.isToCallPostLoadFetchPlan(loadedFields));
// --------------------------------------
// fetch group width postLoad + DFG
// --------------------------------------
fp.addGroup("groupD");
fpc = fp.getFetchPlanForClass(cmd);
loadedFields[cmd.getAbsolutePositionOfMember("piece1")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece2")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece3")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece4")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece5")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece6")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece7")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece8")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece9")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece10")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece11")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece12")] = true;
assertFalse("Should not call postLoad callback", fpc.isToCallPostLoadFetchPlan(loadedFields));
loadedFields[cmd.getAbsolutePositionOfMember("piece1")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece2")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece3")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece4")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece5")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece6")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece7")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece8")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece9")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece10")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece11")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece12")] = false;
assertTrue("Should call postLoad callback", fpc.isToCallPostLoadFetchPlan(loadedFields));
loadedFields[cmd.getAbsolutePositionOfMember("piece1")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece2")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece3")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece4")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece5")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece6")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece7")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece8")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece9")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece10")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece11")] = false;
loadedFields[cmd.getAbsolutePositionOfMember("piece12")] = false;
assertTrue("Should call postLoad callback", fpc.isToCallPostLoadFetchPlan(loadedFields));
// --------------------------------------
// fetch group width postLoad
// --------------------------------------
fp.addGroup("groupD");
fp.removeGroup(FetchPlan.DEFAULT);
fpc = fp.getFetchPlanForClass(cmd);
loadedFields[cmd.getAbsolutePositionOfMember("piece1")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece2")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece3")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece4")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece5")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece6")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece7")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece8")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece9")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece10")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece11")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece12")] = true;
assertFalse("Should not call postLoad callback", fpc.isToCallPostLoadFetchPlan(loadedFields));
loadedFields[cmd.getAbsolutePositionOfMember("piece1")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece2")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece3")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece4")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece5")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece6")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece7")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece8")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece9")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece10")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece11")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece12")] = false;
assertTrue("Should call postLoad callback", fpc.isToCallPostLoadFetchPlan(loadedFields));
loadedFields[cmd.getAbsolutePositionOfMember("piece1")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece2")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece3")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece4")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece5")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece6")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece7")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece8")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece9")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece10")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece11")] = false;
loadedFields[cmd.getAbsolutePositionOfMember("piece12")] = false;
assertTrue("Should call postLoad callback", fpc.isToCallPostLoadFetchPlan(loadedFields));
loadedFields[cmd.getAbsolutePositionOfMember("piece1")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece2")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece3")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece4")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece5")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece6")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece7")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece8")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece9")] = false;
loadedFields[cmd.getAbsolutePositionOfMember("piece10")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece11")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece12")] = true;
assertFalse("Should not call postLoad callback", fpc.isToCallPostLoadFetchPlan(loadedFields));
// --------------------------------------
// fetch group without postLoad
// --------------------------------------
fp.addGroup("groupC");
fp.removeGroup("groupD");
fp.removeGroup(FetchPlan.DEFAULT);
fpc = fp.getFetchPlanForClass(cmd);
loadedFields[cmd.getAbsolutePositionOfMember("piece1")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece2")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece3")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece4")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece5")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece6")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece7")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece8")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece9")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece10")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece11")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece12")] = true;
assertFalse("Should not call postLoad callback", fpc.isToCallPostLoadFetchPlan(loadedFields));
loadedFields[cmd.getAbsolutePositionOfMember("piece1")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece2")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece3")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece4")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece5")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece6")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece7")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece8")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece9")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece10")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece11")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece12")] = false;
assertFalse("Should call postLoad callback", fpc.isToCallPostLoadFetchPlan(loadedFields));
loadedFields[cmd.getAbsolutePositionOfMember("piece1")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece2")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece3")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece4")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece5")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece6")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece7")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece8")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece9")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece10")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece11")] = false;
loadedFields[cmd.getAbsolutePositionOfMember("piece12")] = false;
assertFalse("Should not call postLoad callback", fpc.isToCallPostLoadFetchPlan(loadedFields));
loadedFields[cmd.getAbsolutePositionOfMember("piece1")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece2")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece3")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece4")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece5")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece6")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece7")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece8")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece9")] = false;
loadedFields[cmd.getAbsolutePositionOfMember("piece10")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece11")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece12")] = true;
assertFalse("Should not call postLoad callback", fpc.isToCallPostLoadFetchPlan(loadedFields));
// --------------------------------------
// fetch group width postLoad
// --------------------------------------
fp.addGroup("groupAll");
fp.removeGroup("groupC");
fp.removeGroup(FetchPlan.DEFAULT);
fpc = fp.getFetchPlanForClass(cmd);
loadedFields[cmd.getAbsolutePositionOfMember("piece1")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece2")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece3")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece4")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece5")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece6")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece7")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece8")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece9")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece10")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece11")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece12")] = true;
assertFalse("Should not call postLoad callback", fpc.isToCallPostLoadFetchPlan(loadedFields));
loadedFields[cmd.getAbsolutePositionOfMember("piece1")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece2")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece3")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece4")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece5")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece6")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece7")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece8")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece9")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece10")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece11")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece12")] = false;
assertTrue("Should call postLoad callback", fpc.isToCallPostLoadFetchPlan(loadedFields));
loadedFields[cmd.getAbsolutePositionOfMember("piece1")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece2")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece3")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece4")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece5")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece6")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece7")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece8")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece9")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece10")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece11")] = false;
loadedFields[cmd.getAbsolutePositionOfMember("piece12")] = false;
assertTrue("Should call postLoad callback", fpc.isToCallPostLoadFetchPlan(loadedFields));
loadedFields[cmd.getAbsolutePositionOfMember("piece1")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece2")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece3")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece4")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece5")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece6")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece7")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece8")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece9")] = false;
loadedFields[cmd.getAbsolutePositionOfMember("piece10")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece11")] = true;
loadedFields[cmd.getAbsolutePositionOfMember("piece12")] = true;
assertFalse("Should not call postLoad callback", fpc.isToCallPostLoadFetchPlan(loadedFields));
}
use of org.datanucleus.ClassLoaderResolverImpl in project tests by datanucleus.
the class FetchPlanTest method testDynamicFetchPlanViaPMF.
/**
* Test the use of the dynamic fetch plans via PMF.
*/
public void testDynamicFetchPlanViaPMF() {
JDOPersistenceManagerFactory myPMF = (JDOPersistenceManagerFactory) pmf;
AbstractClassMetaData cmd = myPMF.getNucleusContext().getMetaDataManager().getMetaDataForClass(FP2Base.class, new ClassLoaderResolverImpl());
FetchPlan fp = getFetchPlan();
// Test initial without DFG - should only have PK in fetch plan for PlaneA
fp.removeGroup(FetchPlan.DEFAULT);
FetchPlanForClass fpc = fp.getFetchPlanForClass(cmd);
int[] fieldsInFP = fpc.getMemberNumbers();
assertEquals("should have 1 fields in fetchplan (PK)", 1, fieldsInFP.length);
BitSet fieldsInFPBitSet = fpc.getMemberNumbersByBitSet();
assertTrue("piece1 should be in the fetchplan", fieldsInFPBitSet.get(cmd.getAbsolutePositionOfMember("piece1")));
// Test empty group - should only have PK in fetch plan
javax.jdo.FetchGroup grp1 = myPMF.getFetchGroup(FP2Base.class, "MyGroupPMF");
myPMF.addFetchGroups(grp1);
fp.addGroup("MyGroupPMF");
fpc = fp.getFetchPlanForClass(cmd);
fieldsInFP = fpc.getMemberNumbers();
assertEquals("Incorrect number of fields in FetchPlan", 1, fieldsInFP.length);
fieldsInFPBitSet = fpc.getMemberNumbersByBitSet();
assertTrue("piece1 should be in the fetchplan", fieldsInFPBitSet.get(cmd.getAbsolutePositionOfMember("piece1")));
// Test group for other class
javax.jdo.FetchGroup grp2 = myPMF.getFetchGroup(FP3Base.class, "MyGroupPMF2");
grp2.addMember("room2");
fp.clearGroups();
fp.removeGroup(FetchPlan.DEFAULT);
fp.addGroup("MyGroupPMF2");
fpc = fp.getFetchPlanForClass(cmd);
fieldsInFP = fpc.getMemberNumbers();
assertEquals("Incorrect number of fields in FetchPlan", 1, fieldsInFP.length);
fieldsInFPBitSet = fpc.getMemberNumbersByBitSet();
assertTrue("piece1 should be in the fetchplan", fieldsInFPBitSet.get(cmd.getAbsolutePositionOfMember("piece1")));
// Test one group
grp1 = myPMF.getFetchGroup(FP2Base.class, "MyGroupPMF");
grp1.addMember("piece4").addMember("piece7").addMember("piece10");
fp.setGroup("MyGroupPMF");
fpc = fp.getFetchPlanForClass(cmd);
fieldsInFP = fpc.getMemberNumbers();
assertEquals("Incorrect number of fields in FetchPlan", 4, fieldsInFP.length);
fieldsInFPBitSet = fpc.getMemberNumbersByBitSet();
assertTrue("piece1 should be in the fetchplan", fieldsInFPBitSet.get(cmd.getAbsolutePositionOfMember("piece1")));
assertTrue("piece4 should be in the fetchplan", fieldsInFPBitSet.get(cmd.getAbsolutePositionOfMember("piece4")));
assertTrue("piece7 should be in the fetchplan", fieldsInFPBitSet.get(cmd.getAbsolutePositionOfMember("piece7")));
assertTrue("piece10 should be in the fetchplan", fieldsInFPBitSet.get(cmd.getAbsolutePositionOfMember("piece10")));
// Test dynamic update to existing group after use
myPMF.getFetchGroup(FP2Base.class, "MyGroupPMF").removeMember("piece7");
fieldsInFP = fpc.getMemberNumbers();
assertEquals("Incorrect number of fields in FetchPlan", 3, fieldsInFP.length);
fieldsInFPBitSet = fpc.getMemberNumbersByBitSet();
assertTrue("piece1 should be in the fetchplan", fieldsInFPBitSet.get(cmd.getAbsolutePositionOfMember("piece1")));
assertTrue("piece4 should be in the fetchplan", fieldsInFPBitSet.get(cmd.getAbsolutePositionOfMember("piece4")));
assertTrue("piece10 should be in the fetchplan", fieldsInFPBitSet.get(cmd.getAbsolutePositionOfMember("piece10")));
// Test multiple groups for same class
grp1 = myPMF.getFetchGroup(FP2Base.class, "MyGroupPMF1");
grp1.addMember("piece4").addMember("piece5");
grp2 = myPMF.getFetchGroup(FP2Base.class, "MyGroupPMF2");
grp2.addMember("piece7").addMember("piece8");
javax.jdo.FetchGroup grp3 = myPMF.getFetchGroup(FP2Base.class, "MyGroupPMF3");
grp3.addMember("piece10");
myPMF.removeAllFetchGroups();
myPMF.addFetchGroups(new javax.jdo.FetchGroup[] { grp1, grp2, grp3 });
fp.setGroups(new String[] { "MyGroupPMF1", "MyGroupPMF2", "MyGroupPMF3" });
fpc = fp.getFetchPlanForClass(cmd);
fieldsInFP = fpc.getMemberNumbers();
assertEquals("Incorrect number of fields in FetchPlan", 6, fieldsInFP.length);
fieldsInFPBitSet = fpc.getMemberNumbersByBitSet();
assertTrue("piece1 should be in the fetchplan", fieldsInFPBitSet.get(cmd.getAbsolutePositionOfMember("piece1")));
assertTrue("piece4 should be in the fetchplan", fieldsInFPBitSet.get(cmd.getAbsolutePositionOfMember("piece4")));
assertTrue("piece5 should be in the fetchplan", fieldsInFPBitSet.get(cmd.getAbsolutePositionOfMember("piece5")));
assertTrue("piece7 should be in the fetchplan", fieldsInFPBitSet.get(cmd.getAbsolutePositionOfMember("piece7")));
assertTrue("piece8 should be in the fetchplan", fieldsInFPBitSet.get(cmd.getAbsolutePositionOfMember("piece8")));
assertTrue("piece10 should be in the fetchplan", fieldsInFPBitSet.get(cmd.getAbsolutePositionOfMember("piece10")));
}
use of org.datanucleus.ClassLoaderResolverImpl in project tests by datanucleus.
the class FetchPlanTest method testDynamicFetchPlanViaPM.
/**
* Test the use of the dynamic fetch plans via PM.
*/
public void testDynamicFetchPlanViaPM() {
JDOPersistenceManagerFactory myPMF = (JDOPersistenceManagerFactory) pmf;
AbstractClassMetaData cmd = myPMF.getNucleusContext().getMetaDataManager().getMetaDataForClass(FP2Base.class, new ClassLoaderResolverImpl());
JDOPersistenceManager myPM = (JDOPersistenceManager) myPMF.getPersistenceManager();
FetchPlan fp = ((JDOFetchPlan) myPM.getFetchPlan()).getInternalFetchPlan();
// Test initial without DFG - should only have PK in fetch plan for PlaneA
fp.removeGroup(FetchPlan.DEFAULT);
FetchPlanForClass fpc = fp.getFetchPlanForClass(cmd);
int[] fieldsInFP = fpc.getMemberNumbers();
assertEquals("should have 1 fields in fetchplan (PK)", 1, fieldsInFP.length);
BitSet fieldsInFPBitSet = fpc.getMemberNumbersByBitSet();
assertTrue("piece1 should be in the fetchplan", fieldsInFPBitSet.get(cmd.getAbsolutePositionOfMember("piece1")));
// Test empty group - should only have PK in fetch plan for PlaneA
javax.jdo.FetchGroup grp1 = myPM.getFetchGroup(FP2Base.class, "MyGroupPM");
fp.addGroup("MyGroupPM");
fpc = fp.getFetchPlanForClass(cmd);
fieldsInFP = fpc.getMemberNumbers();
assertEquals("Incorrect number of fields in FetchPlan", 1, fieldsInFP.length);
fieldsInFPBitSet = fpc.getMemberNumbersByBitSet();
assertTrue("piece1 should be in the fetchplan", fieldsInFPBitSet.get(cmd.getAbsolutePositionOfMember("piece1")));
// Test group for other class
javax.jdo.FetchGroup grp2 = myPM.getFetchGroup(FP3Base.class, "MyGroupPM2");
grp2.addMember("room2");
fp.clearGroups();
fp.removeGroup(FetchPlan.DEFAULT);
fp.addGroup("MyGroupPM2");
fpc = fp.getFetchPlanForClass(cmd);
fieldsInFP = fpc.getMemberNumbers();
assertEquals("Incorrect number of fields in FetchPlan", 1, fieldsInFP.length);
fieldsInFPBitSet = fpc.getMemberNumbersByBitSet();
assertTrue("piece1 should be in the fetchplan", fieldsInFPBitSet.get(cmd.getAbsolutePositionOfMember("piece1")));
// Test one group
grp1 = myPM.getFetchGroup(FP2Base.class, "MyGroupPM");
grp1.addMember("piece4").addMember("piece7").addMember("piece10");
fp.setGroup("MyGroupPM");
fpc = fp.getFetchPlanForClass(cmd);
fieldsInFP = fpc.getMemberNumbers();
assertEquals("Incorrect number of fields in FetchPlan", 4, fieldsInFP.length);
fieldsInFPBitSet = fpc.getMemberNumbersByBitSet();
assertTrue("piece1 should be in the fetchplan", fieldsInFPBitSet.get(cmd.getAbsolutePositionOfMember("piece1")));
assertTrue("piece4 should be in the fetchplan", fieldsInFPBitSet.get(cmd.getAbsolutePositionOfMember("piece4")));
assertTrue("piece7 should be in the fetchplan", fieldsInFPBitSet.get(cmd.getAbsolutePositionOfMember("piece7")));
assertTrue("piece10 should be in the fetchplan", fieldsInFPBitSet.get(cmd.getAbsolutePositionOfMember("piece10")));
// Test dynamic update to existing group after use
myPM.getFetchGroup(FP2Base.class, "MyGroupPM").removeMember("piece7");
fieldsInFP = fpc.getMemberNumbers();
assertEquals("Incorrect number of fields in FetchPlan", 3, fieldsInFP.length);
fieldsInFPBitSet = fpc.getMemberNumbersByBitSet();
assertTrue("piece1 should be in the fetchplan", fieldsInFPBitSet.get(cmd.getAbsolutePositionOfMember("piece1")));
assertTrue("piece4 should be in the fetchplan", fieldsInFPBitSet.get(cmd.getAbsolutePositionOfMember("piece4")));
assertTrue("piece10 should be in the fetchplan", fieldsInFPBitSet.get(cmd.getAbsolutePositionOfMember("piece10")));
// Test multiple groups for same class
grp1 = myPM.getFetchGroup(FP2Base.class, "MyGroupPM1");
grp1.addMember("piece4").addMember("piece5");
grp2 = myPM.getFetchGroup(FP2Base.class, "MyGroupPM2");
grp2.addMember("piece7").addMember("piece8");
javax.jdo.FetchGroup grp3 = myPM.getFetchGroup(FP2Base.class, "MyGroupPM3");
grp3.addMember("piece10");
myPMF.removeAllFetchGroups();
myPMF.addFetchGroups(new javax.jdo.FetchGroup[] { grp1, grp2, grp3 });
fp.setGroups(new String[] { "MyGroupPM1", "MyGroupPM2", "MyGroupPM3" });
fpc = fp.getFetchPlanForClass(cmd);
fieldsInFP = fpc.getMemberNumbers();
assertEquals("Incorrect number of fields in FetchPlan", 6, fieldsInFP.length);
fieldsInFPBitSet = fpc.getMemberNumbersByBitSet();
assertTrue("piece1 should be in the fetchplan", fieldsInFPBitSet.get(cmd.getAbsolutePositionOfMember("piece1")));
assertTrue("piece4 should be in the fetchplan", fieldsInFPBitSet.get(cmd.getAbsolutePositionOfMember("piece4")));
assertTrue("piece5 should be in the fetchplan", fieldsInFPBitSet.get(cmd.getAbsolutePositionOfMember("piece5")));
assertTrue("piece7 should be in the fetchplan", fieldsInFPBitSet.get(cmd.getAbsolutePositionOfMember("piece7")));
assertTrue("piece8 should be in the fetchplan", fieldsInFPBitSet.get(cmd.getAbsolutePositionOfMember("piece8")));
assertTrue("piece10 should be in the fetchplan", fieldsInFPBitSet.get(cmd.getAbsolutePositionOfMember("piece10")));
}
Aggregations