in commons-digester3-core/src/main/java/org/apache/commons/digester3/ObjectCreateRule.java [140:179]
Object createProxy()
{
final Object[] constructorArguments = templateConstructorArguments.clone();
digester.pushParams( constructorArguments );
final DeferredConstructionCallback callback =
new DeferredConstructionCallback( constructor, constructorArguments );
Object result;
if ( factory == null )
{
final Enhancer enhancer = new Enhancer();
enhancer.setSuperclass( clazz );
enhancer.setCallback( callback );
enhancer.setClassLoader( digester.getClassLoader() );
enhancer.setInterceptDuringConstruction( false );
if ( hasDefaultConstructor )
{
result = enhancer.create();
}
else
{
result = enhancer.create( constructor.getParameterTypes(), constructorArguments );
}
factory = (Factory) result;
return result;
}
if ( hasDefaultConstructor )
{
result = factory.newInstance( callback );
}
else
{
result = factory.newInstance( constructor.getParameterTypes(),
constructorArguments, new Callback[] { callback } );
}
return result;
}