Class I18nFactorySet

java.lang.Object
org.apache.struts.tiles.xmlDefinition.FactorySet
org.apache.struts.tiles.xmlDefinition.I18nFactorySet
All Implemented Interfaces:
Serializable, ComponentDefinitionsFactory

public class I18nFactorySet extends FactorySet
Definitions factory. This implementation allows to have a set of definition factories. There is a main factory and one factory for each file associated to a Locale. To retrieve a definition, we first search for the appropriate factory using the Locale found in session context. If no factory is found, use the default one. Then we ask the factory for the definition. A definition factory file is loaded using main filename extended with locale code (ex : templateDefinitions_fr.xml). If no file is found under this name, use default file.
See Also:
  • Field Details

    • DEFINITIONS_CONFIG_PARAMETER_NAME

      public static final String DEFINITIONS_CONFIG_PARAMETER_NAME
      Config file parameter name.
      See Also:
    • PARSER_DETAILS_PARAMETER_NAME

      public static final String PARSER_DETAILS_PARAMETER_NAME
      Config file parameter name.
      See Also:
    • PARSER_VALIDATE_PARAMETER_NAME

      public static final String PARSER_VALIDATE_PARAMETER_NAME
      Config file parameter name.
      See Also:
    • DEFAULT_DEFINITION_FILENAMES

      public static final String[] DEFAULT_DEFINITION_FILENAMES
      Possible definition filenames.
    • FILENAME_EXTENSION

      public static final String FILENAME_EXTENSION
      Default filenames extension.
      See Also:
    • defaultFactory

      protected DefinitionsFactory defaultFactory
      Default factory.
    • xmlParser

      protected transient XmlParser xmlParser
      XML parser used. Attribute is transient to allow serialization. In this implementaiton, xmlParser is created each time we need it ;-(.
    • isValidatingParser

      protected boolean isValidatingParser
      Do we want validating parser. Default is false. Can be set from servlet config file.
    • parserDetailLevel

      protected int parserDetailLevel
      Parser detail level. Default is 0. Can be set from servlet config file.
  • Constructor Details

  • Method Details

    • initFactory

      public void initFactory(ServletContext servletContext, Map<String,Object> properties) throws DefinitionsFactoryException
      Initialization method. Init the factory by reading appropriate configuration file. This method is called exactly once immediately after factory creation in case of internal creation (by DefinitionUtil).
      Specified by:
      initFactory in interface ComponentDefinitionsFactory
      Specified by:
      initFactory in class FactorySet
      Parameters:
      servletContext - Servlet Context passed to newly created factory.
      properties - Map of name/property passed to newly created factory. Map can contains more properties than requested.
      Throws:
      DefinitionsFactoryException - An error occur during initialization.
    • initFactory

      protected void initFactory(ServletContext servletContext, String proposedFilename) throws DefinitionsFactoryException, FileNotFoundException
      Initialization method. Init the factory by reading appropriate configuration file. This method is called exactly once immediately after factory creation in case of internal creation (by DefinitionUtil).
      Parameters:
      servletContext - Servlet Context passed to newly created factory.
      proposedFilename - File names, comma separated, to use as base file names.
      Throws:
      DefinitionsFactoryException - An error occur during initialization.
      FileNotFoundException
    • getDefaultFactory

      protected DefinitionsFactory getDefaultFactory()
      Get default factory.
      Specified by:
      getDefaultFactory in class FactorySet
      Returns:
      Default factory
    • createDefaultFactory

      protected DefinitionsFactory createDefaultFactory(ServletContext servletContext) throws DefinitionsFactoryException, FileNotFoundException
      Create default factory . Create InstancesMapper for specified Locale. If creation failes, use default mapper and log error message.
      Parameters:
      servletContext - Current servlet context. Used to open file.
      Returns:
      Created default definition factory.
      Throws:
      DefinitionsFactoryException - If an error occur while creating factory.
      FileNotFoundException - if factory can't be loaded from filenames.
    • getDefinitionsFactoryKey

      protected Object getDefinitionsFactoryKey(String name, ServletRequest request, ServletContext servletContext)
      Extract key that will be used to get the sub factory.
      Specified by:
      getDefinitionsFactoryKey in class FactorySet
      Parameters:
      name - Name of requested definition
      request - Current servlet request.
      servletContext - Current servlet context.
      Returns:
      the key or null if not found.
    • createFactory

      protected DefinitionsFactory createFactory(Object key, ServletRequest request, ServletContext servletContext) throws DefinitionsFactoryException
      Create a factory for specified key. If creation failes, return default factory and log an error message.
      Specified by:
      createFactory in class FactorySet
      Parameters:
      key - The key.
      request - Servlet request.
      servletContext - Servlet context.
      Returns:
      Definition factory for specified key.
      Throws:
      DefinitionsFactoryException - If an error occur while creating factory.
    • parseXmlFiles

      protected XmlDefinitionsSet parseXmlFiles(ServletContext servletContext, String postfix, XmlDefinitionsSet xmlDefinitions) throws DefinitionsFactoryException
      Parse files associated to postix if they exist. For each name in filenames, append postfix before file extension, then try to load the corresponding file. If file doesn't exist, try next one. Each file description is added to the XmlDefinitionsSet description. The XmlDefinitionsSet description is created only if there is a definition file. Inheritance is not resolved in the returned XmlDefinitionsSet. If no description file can be opened and no definiion set is provided, return null.
      Parameters:
      postfix - Postfix to add to each description file.
      xmlDefinitions - Definitions set to which definitions will be added. If null, a definitions set is created on request.
      Returns:
      XmlDefinitionsSet The definitions set created or passed as parameter.
      Throws:
      DefinitionsFactoryException - On errors parsing file.
    • parseXmlFile

      protected XmlDefinitionsSet parseXmlFile(ServletContext servletContext, String filename, XmlDefinitionsSet xmlDefinitions) throws DefinitionsFactoryException
      Parse specified xml file and add definition to specified definitions set. This method is used to load several description files in one instances list. If filename exists and definition set is null, create a new set. Otherwise, return passed definition set (can be null).
      Parameters:
      servletContext - Current servlet context. Used to open file.
      filename - Name of file to parse.
      xmlDefinitions - Definitions set to which definitions will be added. If null, a definitions set is created on request.
      Returns:
      XmlDefinitionsSet The definitions set created or passed as parameter.
      Throws:
      DefinitionsFactoryException - On errors parsing file.
    • toString

      public String toString()
      Return String representation.
      Overrides:
      toString in class FactorySet
      Returns:
      String representation.