use of com.opensymphony.xwork2.mock.MockObjectTypeDeterminer in project struts by apache.
the class SetPropertiesTest method doTestAddingToMapsWithObjects.
public void doTestAddingToMapsWithObjects(boolean allowAdditions) throws Exception {
loadButAdd(ObjectTypeDeterminer.class, new MockObjectTypeDeterminer(Long.class, Cat.class, null, allowAdditions));
Foo foo = new Foo();
foo.setAnotherCatMap(new HashMap());
String spielname = "Spielen";
ValueStack vs = ActionContext.getContext().getValueStack();
vs.getContext().put(XWorkConverter.REPORT_CONVERSION_ERRORS, Boolean.TRUE);
vs.getContext().put(ReflectionContextState.CREATE_NULL_OBJECTS, Boolean.TRUE);
vs.push(foo);
vs.getContext().put(XWorkConverter.REPORT_CONVERSION_ERRORS, Boolean.TRUE);
vs.setValue("anotherCatMap[\"3\"].name", spielname);
Object setCat = foo.getAnotherCatMap().get(new Long(3));
if (allowAdditions) {
assertNotNull(setCat);
assertTrue(setCat instanceof Cat);
assertTrue(((Cat) setCat).getName().equals(spielname));
} else {
assertNull(setCat);
}
}
use of com.opensymphony.xwork2.mock.MockObjectTypeDeterminer in project struts by apache.
the class SetPropertiesTest method testAddingToCollectionBasedOnPermission.
public void testAddingToCollectionBasedOnPermission() {
final MockObjectTypeDeterminer determiner = new MockObjectTypeDeterminer(Long.class, Bar.class, "id", true);
loadConfigurationProviders(new StubConfigurationProvider() {
@Override
public void register(ContainerBuilder builder, LocatableProperties props) throws ConfigurationException {
builder.factory(ObjectTypeDeterminer.class, new Factory() {
public Object create(Context context) throws Exception {
return determiner;
}
@Override
public Class type() {
return determiner.getClass();
}
}, Scope.SINGLETON);
}
});
Collection barColl = new HashSet();
ValueStack vs = ActionContext.getContext().getValueStack();
ReflectionContextState.setCreatingNullObjects(vs.getContext(), true);
ReflectionContextState.setReportingConversionErrors(vs.getContext(), true);
Foo foo = new Foo();
foo.setBarCollection(barColl);
vs.push(foo);
String bar1Title = "title";
vs.setValue("barCollection(11).title", bar1Title);
assertEquals(1, barColl.size());
Object bar = barColl.iterator().next();
assertTrue(bar instanceof Bar);
assertEquals(((Bar) bar).getTitle(), bar1Title);
assertEquals(((Bar) bar).getId(), new Long(11));
// now test where there is no permission
determiner.setShouldCreateIfNew(false);
String bar2Title = "another title";
vs.setValue("barCollection(22).title", bar1Title);
assertEquals(1, barColl.size());
bar = barColl.iterator().next();
assertTrue(bar instanceof Bar);
assertEquals(((Bar) bar).getTitle(), bar1Title);
assertEquals(((Bar) bar).getId(), new Long(11));
}
use of com.opensymphony.xwork2.mock.MockObjectTypeDeterminer in project struts by apache.
the class SetPropertiesTest method doTestAddingToListsWithObjects.
public void doTestAddingToListsWithObjects(final boolean allowAdditions) {
loadConfigurationProviders(new StubConfigurationProvider() {
@Override
public void register(ContainerBuilder builder, LocatableProperties props) throws ConfigurationException {
builder.factory(ObjectTypeDeterminer.class, new Factory() {
public Object create(Context context) throws Exception {
return new MockObjectTypeDeterminer(null, Cat.class, null, allowAdditions);
}
@Override
public Class type() {
return Cat.class;
}
});
}
});
Foo foo = new Foo();
foo.setMoreCats(new ArrayList());
String spielname = "Spielen";
ValueStack vs = ActionContext.getContext().getValueStack();
vs.getContext().put(XWorkConverter.REPORT_CONVERSION_ERRORS, Boolean.TRUE);
vs.getContext().put(ReflectionContextState.CREATE_NULL_OBJECTS, Boolean.TRUE);
vs.push(foo);
try {
vs.setValue("moreCats[2].name", spielname);
} catch (IndexOutOfBoundsException e) {
if (allowAdditions) {
throw e;
}
}
Object setCat = null;
if (allowAdditions) {
setCat = foo.getMoreCats().get(2);
assertNotNull(setCat);
assertTrue(setCat instanceof Cat);
assertTrue(((Cat) setCat).getName().equals(spielname));
} else {
assertTrue(foo.getMoreCats() == null || foo.getMoreCats().size() == 0);
}
// has been created
if (allowAdditions) {
spielname = "paws";
vs.setValue("moreCats[0].name", spielname);
setCat = foo.getMoreCats().get(0);
assertNotNull(setCat);
assertTrue(setCat instanceof Cat);
assertTrue(((Cat) setCat).getName().equals(spielname));
}
}
Aggregations