Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## org.apache.struts2.cdi
Class CdiObjectFactory

    java.lang.Object
      com.opensymphony.xwork2.ObjectFactory
          org.apache.struts2.cdi.CdiObjectFactory

All Implemented Interfaces:
  Serializable

    public class CdiObjectFactory

extends com.opensymphony.xwork2.ObjectFactory

CdiObjectFactory allows Struts 2 managed objects, like Actions, Interceptors or Results, to be injected by a Contexts and Dependency Injection container (JSR299 / WebBeans). The BeanManager instance will be searched in the container's JNDI context, according to following algorithm:

- if a value for configuration constant `struts.objectFactory.cdi.jndiKey` is given, this key will be looked up
- if no BeanManager found so far, look under `CDI_JNDIKEY_BEANMANAGER_COMP`
- if no BeanManager found so far, look under `CDI_JNDIKEY_BEANMANAGER_APP`
- if no BeanManager found so far, look under `CDI_JNDIKEY_BEANMANAGER_COMP_ENV`

See Also:
  Serialized Form

Field Summary
`protected javax.enterprise.inject.spi.BeanManager` | `beanManager`
`static String` | `CDI_JNDIKEY_BEANMANAGER_APP` The key under which the BeanManager can be found according to JBoss Weld docs
`static String` | `CDI_JNDIKEY_BEANMANAGER_COMP` The key under which the BeanManager can be found according to CDI API docs
`static String` | `CDI_JNDIKEY_BEANMANAGER_COMP_ENV` The key under which the BeanManager can be found in pure Servlet containers according to JBoss Weld docs.

Constructor Summary
`CdiObjectFactory()`

Method Summary
`Object` | `buildBean(String className, Map<String,Object> extraContext, boolean injectInternal)`
`protected javax.enterprise.context.spi.CreationalContext` | `buildNonContextualCreationalContext(javax.enterprise.inject.spi.BeanManager beanManager)` Simple wrapper for CreationalContext creation.
`protected javax.enterprise.inject.spi.BeanManager` | `findBeanManager()` Try to find the CDI BeanManager from JNDI context.
`protected javax.enterprise.inject.spi.InjectionTarget<?>` | `getInjectionTarget(Class<?> clazz)` Get a InjectionTarget instance for a given class.
`boolean` | `isNoArgConstructorRequired()` Allow constructor injection
`protected javax.enterprise.inject.spi.BeanManager` | `lookup(Context context, String jndiKeyToCheck)` Lookup the given JNDI key in the given context.
`void` | `setJndiKey(String jndiKey)`

Methods inherited from class com.opensymphony.xwork2.ObjectFactory
`buildAction, buildBean, buildBean, buildConverter, buildInterceptor, buildResult, buildUnknownHandler, buildValidator, getClassInstance, getObjectFactory, injectInternalBeans, setActionFactory, setClassLoader, setContainer, setConverterFactory, setInterceptorFactory, setResultFactory, setUnknownHandlerFactory, setValidatorFactory`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Field Detail

### CDI_JNDIKEY_BEANMANAGER_COMP

    public static final String CDI_JNDIKEY_BEANMANAGER_COMP

  The key under which the BeanManager can be found according to CDI API docs

  See Also:
    Constant Field Values

### CDI_JNDIKEY_BEANMANAGER_APP

    public static final String CDI_JNDIKEY_BEANMANAGER_APP

  The key under which the BeanManager can be found according to JBoss Weld docs

  See Also:
    Constant Field Values

### CDI_JNDIKEY_BEANMANAGER_COMP_ENV

    public static final String CDI_JNDIKEY_BEANMANAGER_COMP_ENV

  The key under which the BeanManager can be found in pure Servlet containers according to JBoss Weld docs.

  See Also:
    Constant Field Values

### beanManager

    protected javax.enterprise.inject.spi.BeanManager beanManager

Constructor Detail

### CdiObjectFactory

    public CdiObjectFactory()

Method Detail

### setJndiKey

    public void setJndiKey(String jndiKey)

### findBeanManager

    protected javax.enterprise.inject.spi.BeanManager findBeanManager()

  Try to find the CDI BeanManager from JNDI context. First, if provided, the key given by struts.objectFactory.cdi.jndiKey will be checked. Then, if nothing was found or no explicit configuration was given, the key `CDI_JNDIKEY_BEANMANAGER_COMP` will be tested. If nothing is found there, the key `CDI_JNDIKEY_BEANMANAGER_APP` will be checked. If still nothing is found there, the key `CDI_JNDIKEY_BEANMANAGER_COMP_ENV` will be checked.

  Returns:
    the BeanManager, if found. `null` otherwise.

### lookup

    protected javax.enterprise.inject.spi.BeanManager lookup(Context context,
                                                             String jndiKeyToCheck)

  Lookup the given JNDI key in the given context.

  Parameters:
    `context` - the context to use for lookup.
    `jndiKeyToCheck` - the key to lookup.
  Returns:
    the BeanManager, if found; `null` if not found or `NamingException` was thrown.

### buildBean

    public Object buildBean(String className,
                            Map<String,Object> extraContext,
                            boolean injectInternal)
                     throws Exception

  Overrides:
    `buildBean` in class `com.opensymphony.xwork2.ObjectFactory`
  Throws:
    `Exception`

### getInjectionTarget

    protected javax.enterprise.inject.spi.InjectionTarget<?> getInjectionTarget(Class<?> clazz)

  Get a InjectionTarget instance for a given class. If the appropriate target is not found in cache, a nw instance will be created.

  Parameters:
    `clazz` - The class to get a InjectionTarget instance for.
  Returns:
    if found in cache, an existing instance. A new instance otherwise.

### buildNonContextualCreationalContext

    protected javax.enterprise.context.spi.CreationalContext buildNonContextualCreationalContext(javax.enterprise.inject.spi.BeanManager beanManager)

  Simple wrapper for CreationalContext creation.

  Parameters:
    `beanManager` - the BeanManager to use for creating the context.
  Returns:
    the context to use, if given BeanManager was not `null`. `null` otherwise.

### isNoArgConstructorRequired

    public boolean isNoArgConstructorRequired()

  Allow constructor injection

  Overrides:
    `isNoArgConstructorRequired` in class `com.opensymphony.xwork2.ObjectFactory`

Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

Copyright © 2000–2018 Apache Software Foundation. All rights reserved.