Index: stripes/src/net/sourceforge/stripes/util/bean/PropertyExpressionEvaluation.java =================================================================== --- stripes/src/net/sourceforge/stripes/util/bean/PropertyExpressionEvaluation.java (revision 972) +++ stripes/src/net/sourceforge/stripes/util/bean/PropertyExpressionEvaluation.java Fri Oct 10 13:48:18 PDT 2008 @@ -15,6 +15,7 @@ package net.sourceforge.stripes.util.bean; import net.sourceforge.stripes.util.ReflectUtil; +import net.sourceforge.stripes.util.ObjectFactory; import java.beans.PropertyDescriptor; import java.lang.reflect.Array; @@ -645,7 +646,7 @@ return ReflectUtil.getInterfaceInstance(clazz); } else { - return clazz.newInstance(); + return ObjectFactory.getInstance().newObject(clazz); } } catch (Exception e) { Index: stripes/src/net/sourceforge/stripes/util/ObjectFactory.java =================================================================== --- stripes/src/net/sourceforge/stripes/util/ObjectFactory.java Fri Oct 10 13:48:18 PDT 2008 +++ stripes/src/net/sourceforge/stripes/util/ObjectFactory.java Fri Oct 10 13:48:18 PDT 2008 @@ -0,0 +1,22 @@ +package net.sourceforge.stripes.util; + +public class ObjectFactory { + private static ObjectFactory instance = new ObjectFactory(); + + public T newObject(Class clazz) { + try { + return clazz.newInstance(); + } + catch (Exception e) { + throw new RuntimeException("Could not instantiate class " + clazz.getName(), e); + } + } + + public static void setInstance(final ObjectFactory instance) { + ObjectFactory.instance = instance; + } + + public static ObjectFactory getInstance() { + return instance; + } +}