// into the initializers for the templating engine, controller resolver, view resolver and
// redirect resolver
ModelFactory oModelFactory = new ModelFactory( oClassLoader,
oServletConfig,
oConfig.getFileUpload() );
ModelPool oModelPool;
try
{
oModelPool = new ModelPool( oConfig.getModelDefs(), oModelFactory, oServletConfig.getServletContext() );
}
catch ( MethodNotFoundException e )
{ throw new ServletException( "init-error: model-pool", e ); }
catch ( InvocationTargetException e )
{ throw new ServletException( "init-error: model-pool", e ); }
catch ( ClassNotFoundException e )
{ throw new ServletException( "init-error: model-pool", e ); }
catch ( ConstructorNotFoundException e )
{ throw new ServletException( "init-error: model-pool", e ); }
catch ( ParameterProviderException e )
{ throw new ServletException( "init-error: model-pool", e ); }
catch ( IllegalAccessException e )
{ throw new ServletException( "init-error: model-pool", e ); }
catch ( InstantiationException e )
{ throw new ServletException( "init-error: model-pool", e ); }
// now set the pool for the model factory to use in model-to-model injection
oModelFactory.setModelPool( oModelPool );
// we instantiate the templating engine early since we now support injecting the
// TemplatingEngine instance into models
TemplatingEngine oTemplatingEngine;
try
{
oTemplatingEngine
= TemplatingEngineInitializer
.getTemplatingEngine( oConfig.getTemplating(),
oModelPool,
oClassLoader,
oServletConfig );
}
catch ( IOException e )
{ throw new ServletException( "init-error: templating-engine-initializer", e ); }
catch ( ClassNotFoundException e )
{ throw new ServletException( "init-error: templating-engine-initializer", e ); }
catch ( InvocationTargetException e )
{ throw new ServletException( "init-error: templating-engine-initializer", e ); }
catch ( IllegalAccessException e )
{ throw new ServletException( "init-error: templating-engine-initializer", e ); }
catch ( InstantiationException e )
{ throw new ServletException( "init-error: templating-engine-initializer", e ); }
catch ( ConstructorNotFoundException e )
{ throw new ServletException( "init-error: templating-engine-initializer", e ); }
catch ( ParameterProviderException e )
{ throw new ServletException( "init-error: templating-engine-initializer", e ); }
// after the templating engine is setup is we set the templating engine in the model factory,
// to make it available to models or any of the other classes that can request it
oModelFactory.setTemplatingEngine( oTemplatingEngine );
// pre-initialize any app scope models that requested it
Log oLog = LogFactory.getLog( ModelPool.class );
for ( Iterator oIter = oConfig.getModelDefs().getModelDefList().iterator(); oIter.hasNext(); )
{
Config.ModelDefs.ModelDef oModelDef = ( Config.ModelDefs.ModelDef ) oIter.next();
if ( oModelDef.isApplicationScope() && oModelDef.isInitOnStartUp() )
{
oLog.info( "model-pool: initializing model: " + oModelDef.getModelClassName() );
try
{
oModelPool.initAppModel( oModelDef.getModelClassName() );
}
catch ( MethodNotFoundException e )
{ throw new ServletException( "init-error: model-init-on-startup", e ); }
catch ( InvocationTargetException e )
{ throw new ServletException( "init-error: model-init-on-startup", e ); }