org.apache.cocoon.components.modules.input
Class ChainMetaModule

java.lang.Object
  |
  +--org.apache.avalon.framework.logger.AbstractLogEnabled
        |
        +--org.apache.cocoon.components.modules.input.AbstractInputModule
              |
              +--org.apache.cocoon.components.modules.input.AbstractMetaModule
                    |
                    +--org.apache.cocoon.components.modules.input.ChainMetaModule
All Implemented Interfaces:
org.apache.avalon.framework.component.Component, org.apache.avalon.framework.component.Composable, org.apache.avalon.framework.configuration.Configurable, org.apache.avalon.framework.activity.Disposable, org.apache.avalon.framework.activity.Initializable, InputModule, org.apache.avalon.framework.logger.LogEnabled

public class ChainMetaModule
extends AbstractMetaModule

This modules allows to "chain" several other modules. If a module returns "null" as attribute value, the next module in the chain is queried until either a value can be obtained or the end of the chain is reached.

A typical example would be to "chain" request parameters, session attributes, and constants in this order. This way, an application could have a default skin that could be overridden by a user in her/his profile stored in the session. In addition, the user could request a different skin through passing a request parameter.

Usage:

Any number of <input-module/> blocks may appear in the component configuration. The @name attribute is used as the name of the requested input module. The complete <input-module/> block is passed at run-time to the module and thus can contain any configuration data for that particular module.

Configuration:

It can be controlled whether it returns a flat or a deep view, i.e. whether only values from the first module are returned if non-null or they are merged with values from other modules <all-values>true</all-values>. The same is possible for the attribute names (<all-names/>). In addition, empty strings could be treated the same as null values (<empty-as-null/>).

Version:
CVS $Id: ChainMetaModule.java,v 1.3.2.1 2002/11/17 19:12:49 haul Exp $
Author:
Christian Haul

Fields inherited from class org.apache.cocoon.components.modules.input.AbstractMetaModule
defaultInput, initialized, input, INPUT_MODULE_SELECTOR, inputConf, inputSelector, manager
 
Fields inherited from class org.apache.cocoon.components.modules.input.AbstractInputModule
settings
 
Fields inherited from interface org.apache.cocoon.components.modules.input.InputModule
ROLE
 
Constructor Summary
ChainMetaModule()
           
 
Method Summary
 void configure(org.apache.avalon.framework.configuration.Configuration config)
          Configures the database access helper.
 void dispose()
          Dispose exactly one cached InputModule.
 java.lang.Object getAttribute(java.lang.String attr, org.apache.avalon.framework.configuration.Configuration modeConf, java.util.Map objectModel)
          Standard access to an attribute's value.
 java.util.Iterator getAttributeNames(org.apache.avalon.framework.configuration.Configuration modeConf, java.util.Map objectModel)
          Returns an Iterator of String objects containing the names of the attributes available.
 java.lang.Object[] getAttributeValues(java.lang.String attr, org.apache.avalon.framework.configuration.Configuration modeConf, java.util.Map objectModel)
          Returns an array of String objects containing all of the values the given attribute has, or null if the attribute does not exist.
 void initialize()
          Initialize the meta module with exactly one other input module.
 
Methods inherited from class org.apache.cocoon.components.modules.input.AbstractMetaModule
compose, getNames, getNames, getValue, getValue, getValues, getValues, obtainModule, releaseModule
 
Methods inherited from class org.apache.avalon.framework.logger.AbstractLogEnabled
enableLogging, getLogger, setupLogger, setupLogger, setupLogger
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

ChainMetaModule

public ChainMetaModule()
Method Detail

configure

public void configure(org.apache.avalon.framework.configuration.Configuration config)
               throws org.apache.avalon.framework.configuration.ConfigurationException
Description copied from class: AbstractInputModule
Configures the database access helper. Takes all elements nested in component declaration and stores them as key-value pairs in settings. Nested configuration option are not catered for. This way global configuration options can be used. For nested configurations override this function.
Overrides:
configure in class AbstractInputModule

initialize

public void initialize()
Description copied from class: AbstractMetaModule
Initialize the meta module with exactly one other input module. Override this method and dispose() to keep references to more than one module.
Overrides:
initialize in class AbstractMetaModule

dispose

public void dispose()
Description copied from class: AbstractMetaModule
Dispose exactly one cached InputModule. To work on more than one, override this method and initialize().
Overrides:
dispose in class AbstractMetaModule

getAttributeValues

public java.lang.Object[] getAttributeValues(java.lang.String attr,
                                             org.apache.avalon.framework.configuration.Configuration modeConf,
                                             java.util.Map objectModel)
                                      throws org.apache.avalon.framework.configuration.ConfigurationException
Description copied from interface: InputModule
Returns an array of String objects containing all of the values the given attribute has, or null if the attribute does not exist. As an alternative, getAttributeNames together with getAttribute can be used to get the values one by one.
Following copied from interface: org.apache.cocoon.components.modules.input.InputModule
Parameters:
name - a String that specifies what the caller thinks would identify an attributes. This is mainly a fallback if no modeConf is present.
modeConf - column's mode configuration from resource description. This argument is optional.
objectModel -  

getAttributeNames

public java.util.Iterator getAttributeNames(org.apache.avalon.framework.configuration.Configuration modeConf,
                                            java.util.Map objectModel)
                                     throws org.apache.avalon.framework.configuration.ConfigurationException
Description copied from interface: InputModule
Returns an Iterator of String objects containing the names of the attributes available. If no attributes are available, the method returns an empty Iterator.
Following copied from interface: org.apache.cocoon.components.modules.input.InputModule
Parameters:
modeConf - column's mode configuration from resource description. This argument is optional.
objectModel -  

getAttribute

public java.lang.Object getAttribute(java.lang.String attr,
                                     org.apache.avalon.framework.configuration.Configuration modeConf,
                                     java.util.Map objectModel)
                              throws org.apache.avalon.framework.configuration.ConfigurationException
Description copied from interface: InputModule
Standard access to an attribute's value. If more than one value exists, the first is returned. If the value does not exist, null is returned. To get all values, use getAttributeSet or getAttributeNames and getAttribute to get them one by one.
Following copied from interface: org.apache.cocoon.components.modules.input.InputModule
Parameters:
name - a String that specifies what the caller thinks would identify an attribute. This is mainly a fallback if no modeConf is present.
modeConf - column's mode configuration from resource description. This argument is optional.
objectModel -  


Copyright © 1999-2002 Apache Software Foundation. All Rights Reserved.