com.opensymphony.xwork2
Class ObjectFactory

java.lang.Object
  extended by com.opensymphony.xwork2.ObjectFactory
All Implemented Interfaces:
Serializable
Direct Known Subclasses:
SpringObjectFactory, StrutsObjectFactory

public class ObjectFactory
extends Object
implements Serializable

ObjectFactory is responsible for building the core framework objects. Users may register their own implementation of the ObjectFactory to control instantiation of these Objects.

This default implementation uses the buildBean method to create all classes (interceptors, actions, results, etc).

Author:
Jason Carreira
See Also:
Serialized Form

Nested Class Summary
(package private) static class ObjectFactory.ContinuationsClassLoader
           
 
Field Summary
private  ClassLoader ccl
           
private  Container container
           
private static Logger LOG
           
protected  ReflectionProvider reflectionProvider
           
 
Constructor Summary
ObjectFactory()
           
ObjectFactory(ReflectionProvider prov)
           
 
Method Summary
 Object buildAction(String actionName, String namespace, ActionConfig config, Map extraContext)
          Build an instance of the action class to handle a particular request (eg.
 Object buildBean(Class clazz, Map extraContext)
          Build a generic Java object of the given type.
 Object buildBean(String className, Map extraContext)
          Build a generic Java object of the given type.
 Object buildBean(String className, Map extraContext, boolean injectInternal)
          Build a generic Java object of the given type.
 Interceptor buildInterceptor(InterceptorConfig interceptorConfig, Map interceptorRefParams)
          Builds an Interceptor from the InterceptorConfig and the Map of parameters from the interceptor reference.
 Result buildResult(ResultConfig resultConfig, Map extraContext)
          Build a Result using the type in the ResultConfig and set the parameters in the ResultConfig.
 Validator buildValidator(String className, Map params, Map extraContext)
          Build a Validator of the given type and set the parameters on it
 Class getClassInstance(String className)
          Utility method to obtain the class matched to className.
static ObjectFactory getObjectFactory()
          Deprecated. Since 2.1
protected  Object injectInternalBeans(Object obj)
           
 boolean isNoArgConstructorRequired()
          Allows for ObjectFactory implementations that support Actions without no-arg constructors.
 void setClassLoader(ClassLoader cl)
           
 void setContainer(Container container)
           
 void setReflectionProvider(ReflectionProvider prov)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

LOG

private static final Logger LOG

ccl

private transient ClassLoader ccl

container

private Container container

reflectionProvider

protected ReflectionProvider reflectionProvider
Constructor Detail

ObjectFactory

public ObjectFactory()

ObjectFactory

public ObjectFactory(ReflectionProvider prov)
Method Detail

setClassLoader

public void setClassLoader(ClassLoader cl)

setReflectionProvider

public void setReflectionProvider(ReflectionProvider prov)

setContainer

public void setContainer(Container container)

getObjectFactory

public static ObjectFactory getObjectFactory()
Deprecated. Since 2.1


isNoArgConstructorRequired

public boolean isNoArgConstructorRequired()
Allows for ObjectFactory implementations that support Actions without no-arg constructors.

Returns:
true if no-arg constructor is required, false otherwise

getClassInstance

public Class getClassInstance(String className)
                       throws ClassNotFoundException
Utility method to obtain the class matched to className. Caches look ups so that subsequent lookups will be faster.

Parameters:
className - The fully qualified name of the class to return
Returns:
The class itself
Throws:
ClassNotFoundException

buildAction

public Object buildAction(String actionName,
                          String namespace,
                          ActionConfig config,
                          Map extraContext)
                   throws Exception
Build an instance of the action class to handle a particular request (eg. web request)

Parameters:
actionName - the name the action configuration is set up with in the configuration
namespace - the namespace the action is configured in
config - the action configuration found in the config for the actionName / namespace
extraContext - a Map of extra context which uses the same keys as the ActionContext
Returns:
instance of the action class to handle a web request
Throws:
Exception

buildBean

public Object buildBean(Class clazz,
                        Map extraContext)
                 throws Exception
Build a generic Java object of the given type.

Parameters:
clazz - the type of Object to build
extraContext - a Map of extra context which uses the same keys as the ActionContext
Throws:
Exception

injectInternalBeans

protected Object injectInternalBeans(Object obj)
Parameters:
obj -

buildBean

public Object buildBean(String className,
                        Map extraContext)
                 throws Exception
Build a generic Java object of the given type.

Parameters:
className - the type of Object to build
extraContext - a Map of extra context which uses the same keys as the ActionContext
Throws:
Exception

buildBean

public Object buildBean(String className,
                        Map extraContext,
                        boolean injectInternal)
                 throws Exception
Build a generic Java object of the given type.

Parameters:
className - the type of Object to build
extraContext - a Map of extra context which uses the same keys as the ActionContext
Throws:
Exception

buildInterceptor

public Interceptor buildInterceptor(InterceptorConfig interceptorConfig,
                                    Map interceptorRefParams)
                             throws ConfigurationException
Builds an Interceptor from the InterceptorConfig and the Map of parameters from the interceptor reference. Implementations of this method should ensure that the Interceptor is parameterized with both the parameters from the Interceptor config and the interceptor ref Map (the interceptor ref params take precedence), and that the Interceptor.init() method is called on the Interceptor instance before it is returned.

Parameters:
interceptorConfig - the InterceptorConfig from the configuration
interceptorRefParams - a Map of params provided in the Interceptor reference in the Action mapping or InterceptorStack definition
Throws:
ConfigurationException

buildResult

public Result buildResult(ResultConfig resultConfig,
                          Map extraContext)
                   throws Exception
Build a Result using the type in the ResultConfig and set the parameters in the ResultConfig.

Parameters:
resultConfig - the ResultConfig found for the action with the result code returned
extraContext - a Map of extra context which uses the same keys as the ActionContext
Throws:
Exception

buildValidator

public Validator buildValidator(String className,
                                Map params,
                                Map extraContext)
                         throws Exception
Build a Validator of the given type and set the parameters on it

Parameters:
className - the type of Validator to build
params - property name -> value Map to set onto the Validator instance
extraContext - a Map of extra context which uses the same keys as the ActionContext
Throws:
Exception


Copyright © 2000-2008 Apache Software Foundation. All Rights Reserved.