You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by gi...@apache.org on 2001/12/09 22:30:01 UTC

cvs commit: xml-cocoon2/src/org/apache/cocoon/transformation I18nTransformer.java

giacomo     01/12/09 13:30:01

  Modified:    src/org/apache/cocoon/transformation I18nTransformer.java
  Log:
  Patched I18nTransformer to support transform
  time configuration changes.
  Submitted by:	Marcus Crafter <cr...@fztig938.bank.dresdner.net>
  
  Revision  Changes    Path
  1.24      +52 -8     xml-cocoon2/src/org/apache/cocoon/transformation/I18nTransformer.java
  
  Index: I18nTransformer.java
  ===================================================================
  RCS file: /home/cvs/xml-cocoon2/src/org/apache/cocoon/transformation/I18nTransformer.java,v
  retrieving revision 1.23
  retrieving revision 1.24
  diff -u -r1.23 -r1.24
  --- I18nTransformer.java	2001/10/25 20:15:38	1.23
  +++ I18nTransformer.java	2001/12/09 21:30:01	1.24
  @@ -17,6 +17,7 @@
   import org.apache.avalon.framework.configuration.ConfigurationException;
   import org.apache.avalon.framework.configuration.DefaultConfiguration;
   import org.apache.avalon.framework.parameters.Parameters;
  +import org.apache.avalon.excalibur.pool.Recyclable;
   import org.apache.cocoon.ProcessingException;
   import org.apache.cocoon.ResourceNotFoundException;
   import org.apache.cocoon.acting.LocaleAction;
  @@ -150,6 +151,11 @@
    * </pre>
    *
    * <p/>
  + *
  + * Note, <strong>catalogue-name</strong>, <strong>catalogue-location</strong>
  + * and <strong>untranslated-text</strong> can all be overridden at the
  + * pipeline level by specifying them as parameters to the transform statement.
  + *
    * <ul>
    *  <li><strong><i18n:date/></strong> gives now only the date.</li>
    *  <li><strong><i18n:date-time/></strong> gives the date and time.</li>
  @@ -173,17 +179,16 @@
    * Future work coming:
    *
    * <ul>
  - *  <li>Ability to override definition parameters in the pipeline
    *  <li>Many clean ups :-)
    * </ul>
    *
  - * @author <a href="mailto:Marcus.Crafter@osa.de">Marcus Crafter</a>
  + * @author <a href="mailto:Marcus.Crafter@managesoft.com">Marcus Crafter</a>
    * @author <a href="mailto:kpiroumian@flagship.ru">Konstantin Piroumian</a>
    * @author <a href="mailto:lassi.immonen@valkeus.com">Lassi Immonen</a>
    * @author <a href="mailto:Michael.Enke@wincor-nixdorf.com">Michael Enke</a>
    */
   public class I18nTransformer extends AbstractTransformer
  -        implements Composable, Poolable, Configurable {
  +        implements Composable, Poolable, Configurable, Recyclable {
   
       private static final String FILE = "file:";
   
  @@ -339,6 +344,7 @@
       private String catalogueName;
       private String catalogueLocation;
       private String untranslated;
  +    private String globalUntranslated;
       private boolean cacheAtStartup;
   
       /**
  @@ -394,11 +400,35 @@
   
           try {
   
  +            // check parameters to see if anything has been locally overloaded
  +            String localCatLocation = null;
  +            String localCatName = null;
  +            String localUntranslated = null;
  +
  +            if ( parameters != null ) {
  +                localCatLocation =
  +                    parameters.getParameter( I18N_CATALOGUE_LOCATION, null );
  +                localCatName =
  +                    parameters.getParameter( I18N_CATALOGUE_NAME, null );
  +                localUntranslated =
  +                    parameters.getParameter( I18N_UNTRANSLATED, null );
  +            }
  +
  +            // if untranslated-text has been overridden, save the original 
  +            // value so it can be restored when this object is recycled.
  +            if ( localUntranslated != null ) {
  +                globalUntranslated = untranslated;
  +                untranslated = localUntranslated;
  +            }
  +
               // Set current language and locale
               String lc = LocaleAction.getLocale( objectModel );
   
               // configure the factory
  -            _setup( resolver );
  +            _setup( resolver,
  +                    localCatLocation == null
  +		        ? catalogueLocation : localCatLocation
  +            );
   
               // setup everything for the current locale
               String[] matches = new RE( "_" ).split( lc );
  @@ -412,7 +442,10 @@
               debug( "using locale " + locale.toString() );
   
               dictionary =
  -                    (XMLResourceBundle) factory.select( catalogueName, locale );
  +                    (XMLResourceBundle) factory.select( 
  +		        localCatName == null ? catalogueName : localCatName,
  +			locale
  +                    );
   
               //FIXME(DIMS): Why should i do this explicitly? Is there an alternative?
               dictionary.compose( this.manager );
  @@ -433,7 +466,8 @@
        * REVISIT: when we can get the resolver anywhere, we can pass the
        * configuration object directly to XMLResourceBundle.
        */
  -    private void _setup( SourceResolver resolver ) throws Exception {
  +    private void _setup( SourceResolver resolver, String location )
  +             throws Exception {
   
           // configure the factory to log correctly and cache catalogues
           DefaultConfiguration configuration =
  @@ -453,8 +487,8 @@
                           "location"
                   );
   
  -        debug( "catalog location:" + catalogueLocation );
  -        Source source = resolver.resolve( catalogueLocation );
  +        debug( "catalog location:" + location );
  +        Source source = resolver.resolve( location );
           String systemId = source.getSystemId();
           if ( !systemId.startsWith( FILE ) ) {
               throw new ResourceNotFoundException( systemId + " does not denote a directory" );
  @@ -1158,4 +1192,14 @@
        }
        */
   
  +    public void recycle() {
  +
  +        // restore untranslated-text if necessary
  +        if ( globalUntranslated != null &&
  +             !untranslated.equals( globalUntranslated )
  +        ) {
  +            untranslated = globalUntranslated;
  +            debug( "untranslated-text restored to " + untranslated );
  +        }
  +    }
   }
  
  
  

----------------------------------------------------------------------
In case of troubles, e-mail:     webmaster@xml.apache.org
To unsubscribe, e-mail:          cocoon-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: cocoon-cvs-help@xml.apache.org