JSF Module Configuration

CODI provides default values via CDI beans. Therefore, it's possible to provide an alternative bean (via the std. @Specializes or @Alternative mechanism provided by CDI). Furthermore, there are add-ons e.g. for using the web.xml for the configuration (see External Resources).

Hint for Weld v1.1.1-v1.1.3

In case of those versions of Weld you have to use the alternative-implementation module

Hint for Weld v1.1.4+

In case of Weld v1.1.4+ you can use @Specializes again and you don't need alternative-implementation module

Example

Custom config which overrides the default value
@Specializes
@ApplicationScoped
public class CustomConversationConfig extends ConversationConfig
{
    @Override
    public int getConversationTimeoutInMinutes()
    {
        return 45;
    }
}

CodiCoreConfig

  • isAdvancedQualifierRequiredForDependencyInjection
  • isConfigurationLoggingEnabled
  • isInvalidBeanCreationEventEnabled

WindowContextConfig

  • isUrlParameterSupported
  • isUnknownWindowIdsAllowed
  • isAddWindowIdToActionUrlsEnabled
  • getWindowContextTimeoutInMinutes
  • getMaxWindowContextCount
  • isCloseEmptyWindowContextsEnabled
  • isEagerWindowContextDetectionEnabled
  • isCreateWindowContextEventEnabled
  • isCloseWindowContextEventEnabled

ConversationConfig

  • getConversationTimeoutInMinutes
  • isScopeBeanEventEnabled
  • isAccessBeanEventEnabled
  • isUnscopeBeanEventEnabled
  • isStartConversationEventEnabled
  • isCloseConversationEventEnabled
  • isRestartConversationEventEnabled
  • isConversationRequiredEnabled

JsfModuleConfig

  • isInitialRedirectDisabled
  • isUseViewConfigsAsNavigationCasesEnabled
  • isInvalidValueAwareMessageInterpolatorEnabled
  • isAlwaysKeepMessages

JSF Module SPI

  • ConversationFactory (and EditableConversation and ConversationKey)
  • WindowContextFactory (and EditableWindowContext and JsfModuleConfig)
  • WindowContextManagerFactory (and EditableWindowContextManager and JsfModuleConfig)
  • WindowContextQuotaHandler
  • WindowHandler
  • LifecycleAwareWindowHandler
  • RenderKitWrapperFactory
  • ViewConfigExtractor (and EditableViewConfigDescriptor and LifecycleAwarePageBeanDescriptor and RequestLifecycleCallbackEntry)

ConversationFactory

A ConversationFactory is responsible for creating new Conversation instances (btw. EditableConversation) based on a given ConversationKey and ConversationConfig.

The default implementation is a bean - so it's possible to use the @Alternative mechanism of CDI for replacing it.

WindowContextFactory

A WindowContextFactory is responsible for creating new WindowContext instances (btw. EditableWindowContext) based on a given id and JsfModuleConfig.

There is no default implementation. So it's just required to implement a CDI bean which implements the interface.

WindowContextManagerFactory

A WindowContextManagerFactory is responsible for creating new WindowContextManager instances (btw. EditableWindowContextManager based on a given JsfModuleConfig.

There is no default implementation. So it's just required to implement a CDI bean which implements the interface.

WindowContextQuotaHandler

A WindowContextQuotaHandler is responsible for checking the max. count of WindowContext instances and handling a possible violation (e.g. cleaning up the eldest WindowContext).

The default implementation is a bean - so it's possible to use the @Alternative mechanism of CDI for replacing it.

WindowHandler

A WindowHandler is responsible for creating and restoring the id for/of the current window. If a component library already supports window id's it's possible to provide an adapter which uses the window-id provided by the component library. Furthermore, it's responsible for encoding URLs and for sending redirects based on the current window-id.

The default implementation is a bean - so it's possible to use the @Alternative mechanism of CDI for replacing it.

LifecycleAwareWindowHandler

A WindowHandler that is aware of the JSF lifecycle.

RenderKitWrapperFactory

Component libs like Trinidad use very special renderkits. This factory allows support-modules to customize the default behavior of CODI.

ViewConfigExtractor

A ViewConfigExtractor creates all view-config meta-data for a given ViewConfig class and returns the result as EditableViewConfigDescriptor . It also uses LifecycleAwarePageBeanDescriptor which is an extended PageBeanDescriptor . This descriptor exposes all supported view-controller methods as well as RequestLifecycleCallbackEntry for a given JSF PhaseId which provides the before- and after-callbacks.

With a custom implementation it's possible to customize e.g. the naming convention of the pages. If the custom implementation is annotated with @Advanced it's possible to wrap the default implementation for delegating to it. The only requirement is a field called defaultViewConfigExtractor . Furthermore, because this artifact is used during the bootstrapping process of CDI it's required to configure it for the environment - see Environment-Config Options

  • No labels