ceki        2004/12/28 15:08:12

  Modified:    src/java/org/apache/log4j/spi LoggerRepository.java
               src/java/org/apache/log4j Hierarchy.java Layout.java
                        AppenderSkeleton.java PatternLayout.java
               src/java/org/apache/log4j/joran/action
                        ConversionRuleAction.java AppenderAction.java
                        LayoutAction.java
               src/java/org/apache/joran ExecutionContext.java
               tests/src/java/org/apache/joran InterpreterTest.java
               tests/input/joran conversionRule.xml
               tests/src/java/org/apache/log4j PatternLayoutTest.java
               src/java/org/apache/log4j/joran JoranConfigurator.java
  Added:       examples/src/pattern LearnNewWord.java log4j-config.xml
  Removed:     tests/input/pattern patternLayout14.properties
               examples/src/pattern MyPatternLayout.java
  Log:
  - New conversion words can be easily added to PatternLayout using 
configuration files.
  - These conversion words will be shared by all instances of PatternLayout
  (work in progress.)
  
  Revision  Changes    Path
  1.22      +17 -0     
logging-log4j/src/java/org/apache/log4j/spi/LoggerRepository.java
  
  Index: LoggerRepository.java
  ===================================================================
  RCS file: 
/home/cvs/logging-log4j/src/java/org/apache/log4j/spi/LoggerRepository.java,v
  retrieving revision 1.21
  retrieving revision 1.22
  diff -u -r1.21 -r1.22
  --- LoggerRepository.java     24 Nov 2004 08:17:01 -0000      1.21
  +++ LoggerRepository.java     28 Dec 2004 23:08:11 -0000      1.22
  @@ -209,4 +209,21 @@
      * @return List
      */
     public void addErrorItem(ErrorItem errorItem);
  +  
  +  /**
  +   * A LoggerRepository can also act as a store for various objects used
  +   * by log4j components.
  +   * 
  +   * @return The object stored under 'key'.
  +   * @since 1.3
  +   */
  +  public Object getObject(String key);
  + 
  +  /**
  +   * Store an object under 'key'. If no object can be found, null is 
returned.
  +   * 
  +   * @param key
  +   * @param value
  +   */
  +  public void putObject(String key, Object value);
   }
  
  
  
  1.59      +15 -1     logging-log4j/src/java/org/apache/log4j/Hierarchy.java
  
  Index: Hierarchy.java
  ===================================================================
  RCS file: /home/cvs/logging-log4j/src/java/org/apache/log4j/Hierarchy.java,v
  retrieving revision 1.58
  retrieving revision 1.59
  diff -u -r1.58 -r1.59
  --- Hierarchy.java    4 Dec 2004 07:47:04 -0000       1.58
  +++ Hierarchy.java    28 Dec 2004 23:08:12 -0000      1.59
  @@ -36,6 +36,7 @@
   
   import java.util.ArrayList;
   import java.util.Enumeration;
  +import java.util.HashMap;
   import java.util.Hashtable;
   import java.util.List;
   import java.util.Map;
  @@ -84,6 +85,10 @@
     Map properties;
     private Scheduler scheduler;
     
  +  // The repository can also be used as an object store for various objects 
used
  +  // by log4j components
  +  private Map objectMap;
  +  
     // the internal logger used by this instance of Hierarchy for its own 
reporting
     private Logger myLogger;
     
  @@ -104,7 +109,7 @@
       repositoryEventListeners = new ArrayList(1);
       loggerEventListeners = new ArrayList(1);
       this.root = root;
  -
  +    this.objectMap = new HashMap();
       // Enable all level levels by default.
       setThreshold(Level.ALL);
       this.root.setHierarchy(this);
  @@ -791,4 +796,13 @@
       }
       return scheduler;
     }
  +  
  +  public void putObject(String key, Object value) {
  +    objectMap.put(key, value);
  +  }
  +  
  +  public Object getObject(String key) {
  +    return objectMap.get(key);
  +  }
  +  
   }
  
  
  
  1.13      +1 -1      logging-log4j/src/java/org/apache/log4j/Layout.java
  
  Index: Layout.java
  ===================================================================
  RCS file: /home/cvs/logging-log4j/src/java/org/apache/log4j/Layout.java,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- Layout.java       28 Dec 2004 18:25:57 -0000      1.12
  +++ Layout.java       28 Dec 2004 23:08:12 -0000      1.13
  @@ -166,7 +166,7 @@
       if(repository == null) {
         throw new IllegalArgumentException("repository argument cannot be 
null");
       }
  -    if(this.repository != null) {
  +    if(this.repository == null) {
         this.repository = repository;
       } else {
         throw new IllegalStateException("Repository has been already set");
  
  
  
  1.32      +1 -1      
logging-log4j/src/java/org/apache/log4j/AppenderSkeleton.java
  
  Index: AppenderSkeleton.java
  ===================================================================
  RCS file: 
/home/cvs/logging-log4j/src/java/org/apache/log4j/AppenderSkeleton.java,v
  retrieving revision 1.31
  retrieving revision 1.32
  diff -u -r1.31 -r1.32
  --- AppenderSkeleton.java     28 Dec 2004 18:25:57 -0000      1.31
  +++ AppenderSkeleton.java     28 Dec 2004 23:08:12 -0000      1.32
  @@ -334,7 +334,7 @@
       if(repository == null) {
         throw new IllegalArgumentException("repository argument cannot be 
null");
       }
  -    if(this.repository != null) {
  +    if(this.repository == null) {
         this.repository = repository;
       } else {
         throw new IllegalStateException("Repository has been already set");
  
  
  
  1.34      +11 -27    
logging-log4j/src/java/org/apache/log4j/PatternLayout.java
  
  Index: PatternLayout.java
  ===================================================================
  RCS file: 
/home/cvs/logging-log4j/src/java/org/apache/log4j/PatternLayout.java,v
  retrieving revision 1.33
  retrieving revision 1.34
  diff -u -r1.33 -r1.34
  --- PatternLayout.java        21 Dec 2004 04:19:46 -0000      1.33
  +++ PatternLayout.java        28 Dec 2004 23:08:12 -0000      1.34
  @@ -18,7 +18,7 @@
   
   import java.io.IOException;
   import java.io.Writer;
  -import java.util.HashMap;
  +import java.util.Map;
   
   import org.apache.log4j.pattern.PatternConverter;
   import org.apache.log4j.pattern.PatternParser;
  @@ -415,10 +415,16 @@
     public static final String TTCC_CONVERSION_PATTERN =
       "%r [%t] %p %c %x - %m%n";
   
  +  /**
  +   * Customized pattern conversion rules are stored under this key in the
  +   * [EMAIL PROTECTED] LoggerRepository} object store.
  +   */
  +  public static final String PATTERN_RULE_REGISTRY = "PATTERN_RULE_REGISTRY";
  +  
     private String conversionPattern;
     private PatternConverter head;
   
  -  private HashMap ruleRegistry = null;
  +
     private boolean handlesExceptions;
   
     /**
  @@ -437,30 +443,6 @@
       this.conversionPattern = pattern;
       activateOptions();
     }
  -
  -  /**
  -   * 
  -   * Add a new conversion word and associate it with a 
  -   * [EMAIL PROTECTED] org.apache.log4j.pattern.PatternConverter 
PatternConverter} class.
  -   * 
  -   * @param conversionWord New conversion word to accept in conversion 
patterns
  -   * @param converterClass The class name associated with the conversion word
  -   * @since 1.3
  -   */
  -  public void addConversionRule(String conversionWord, String 
converterClass) {
  -    if(ruleRegistry == null) {
  -      ruleRegistry = new HashMap(5);
  -    }
  -    ruleRegistry.put(conversionWord, converterClass);
  -  }
  -
  -  /**
  -   * Returns the rule registry specific for this PatternLayout instance.
  -   * @since 1.3
  -   */
  -  public HashMap getRuleRegistry() {
  -    return ruleRegistry;
  -  }
     
     /**
       Set the <b>ConversionPattern</b> option. This is the string which
  @@ -484,7 +466,9 @@
     */
     public void activateOptions() {
       PatternParser patternParser = new PatternParser(conversionPattern);
  -    patternParser.setConverterRegistry(ruleRegistry);
  +    if(this.repository != null) {
  +      patternParser.setConverterRegistry((Map) 
this.repository.getObject(PATTERN_RULE_REGISTRY));
  +    }
       head = patternParser.parse();
       handlesExceptions = PatternConverter.chainHandlesThrowable(head);
     }
  
  
  
  1.1                  logging-log4j/examples/src/pattern/LearnNewWord.java
  
  Index: LearnNewWord.java
  ===================================================================
  /*
   * Copyright 1999,2004 The Apache Software Foundation.
   * 
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
   * You may obtain a copy of the License at
   * 
   *      http://www.apache.org/licenses/LICENSE-2.0
   * 
   * Unless required by applicable law or agreed to in writing, software
   * distributed under the License is distributed on an "AS IS" BASIS,
   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   * See the License for the specific language governing permissions and
   * limitations under the License.
   */
  
  package pattern;
  
  import org.apache.log4j.LogManager;
  import org.apache.log4j.Logger;
  import org.apache.log4j.joran.JoranConfigurator;
  
  /**
   * 
   * Example showing how to extend PatternLayout to recognize additional 
   * conversion words without through a configuration file.
   * 
   * <p>In this case have PatternLayout recognize %counter conversion word. 
   * It outputs the value of an internal counter which is also incremented at 
   * each call.
   * 
   * @author Ceki G&uuml;lc&uuml;
   */
  
  public class LearnNewWord {
  
    public static void main(String[] args) {
      if (args.length != 1) {
       System.err.println("Usage: java " + LearnNewWord.class.getName() +
          " configFile");
        
      }
      
      JoranConfigurator joran = new JoranConfigurator();
      
      joran.doConfigure(args[0], LogManager.getLoggerRepository());
      joran.dumpErrors();
      
      Logger logger = Logger.getLogger("some.cat");
      logger.debug("Hello, log");
      logger.info("Hello again...");
    }
  }
  
  
  
  1.1                  logging-log4j/examples/src/pattern/log4j-config.xml
  
  Index: log4j-config.xml
  ===================================================================
  <?xml version="1.0" encoding="UTF-8" ?>
  <!DOCTYPE configuration>
  
  <configuration xmlns="http://logging.apache.org/";>
   
    <!-- teach log4j a new conversion word -->
    <conversionRule conversionWord="counter" 
converterClass="pattern.CountingPatternConverter"/>
   
    <!-- the new conversion word is available for immediate use -->
    <appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
      <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" value="[%3.10counter] - %m%n"/>
      </layout>     
    </appender>
    
    <root>
     <appender-ref ref="CONSOLE"/>
    </root>
  </configuration>
  
  
  1.12      +13 -6     
logging-log4j/src/java/org/apache/log4j/joran/action/ConversionRuleAction.java
  
  Index: ConversionRuleAction.java
  ===================================================================
  RCS file: 
/home/cvs/logging-log4j/src/java/org/apache/log4j/joran/action/ConversionRuleAction.java,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- ConversionRuleAction.java 28 Dec 2004 16:33:57 -0000      1.11
  +++ ConversionRuleAction.java 28 Dec 2004 23:08:12 -0000      1.12
  @@ -16,6 +16,9 @@
   
   package org.apache.log4j.joran.action;
   
  +import java.util.HashMap;
  +import java.util.Map;
  +
   import org.apache.joran.ExecutionContext;
   import org.apache.joran.action.Action;
   import org.apache.joran.helper.Option;
  @@ -23,6 +26,7 @@
   import org.apache.log4j.Layout;
   import org.apache.log4j.PatternLayout;
   import org.apache.log4j.spi.ErrorItem;
  +import org.apache.log4j.spi.LoggerRepository;
   
   
   import org.xml.sax.Attributes;
  @@ -66,15 +70,18 @@
   
       try {
         getLogger().debug(
  -        "About to add conversion rule [" + conversionWord + ", "
  -        + converterClass + "] to layout");
  +        "About to add conversion rule [{}, {}] to layout", conversionWord, 
converterClass);
   
  -      Object o = ec.peekObject();
  +      LoggerRepository repository = (LoggerRepository) 
ec.getObjectStack().get(0);
   
  -      if (o instanceof PatternLayout) {
  -        PatternLayout patternLayout = (PatternLayout) o;
  -        patternLayout.addConversionRule(conversionWord, converterClass);
  +      Map ruleRegistry = (Map) 
repository.getObject(PatternLayout.PATTERN_RULE_REGISTRY);
  +      if(ruleRegistry == null) {
  +        ruleRegistry = new HashMap();
  +        repository.putObject(PatternLayout.PATTERN_RULE_REGISTRY, 
ruleRegistry);
         }
  +      // put the new rule into the rule registry
  +      ruleRegistry.put(conversionWord, converterClass);
  +  
       } catch (Exception oops) {
         inError = true;
         errorMsg = "Could not add conversion rule to PatternLayout.";
  
  
  
  1.14      +4 -0      
logging-log4j/src/java/org/apache/log4j/joran/action/AppenderAction.java
  
  Index: AppenderAction.java
  ===================================================================
  RCS file: 
/home/cvs/logging-log4j/src/java/org/apache/log4j/joran/action/AppenderAction.java,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- AppenderAction.java       28 Dec 2004 16:33:57 -0000      1.13
  +++ AppenderAction.java       28 Dec 2004 23:08:12 -0000      1.14
  @@ -22,6 +22,7 @@
   import org.apache.log4j.Appender;
   import org.apache.log4j.helpers.OptionConverter;
   import org.apache.log4j.spi.ErrorItem;
  +import org.apache.log4j.spi.LoggerRepository;
   import org.apache.log4j.spi.OptionHandler;
   
   import org.xml.sax.Attributes;
  @@ -53,6 +54,9 @@
             className, org.apache.log4j.Appender.class, null);
         appender = (Appender) instance;
   
  +      LoggerRepository repo = (LoggerRepository) ec.getObjectStack().get(0);
  +      appender.setLoggerRepository(repo);
  +      
         String appenderName = attributes.getValue(NAME_ATTRIBUTE);
   
         if (Option.isEmpty(appenderName)) {
  
  
  
  1.13      +5 -1      
logging-log4j/src/java/org/apache/log4j/joran/action/LayoutAction.java
  
  Index: LayoutAction.java
  ===================================================================
  RCS file: 
/home/cvs/logging-log4j/src/java/org/apache/log4j/joran/action/LayoutAction.java,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- LayoutAction.java 28 Dec 2004 16:33:57 -0000      1.12
  +++ LayoutAction.java 28 Dec 2004 23:08:12 -0000      1.13
  @@ -23,6 +23,7 @@
   import org.apache.log4j.Layout;
   import org.apache.log4j.helpers.OptionConverter;
   import org.apache.log4j.spi.ErrorItem;
  +import org.apache.log4j.spi.LoggerRepository;
   import org.apache.log4j.spi.OptionHandler;
   
   import org.xml.sax.Attributes;
  @@ -49,7 +50,10 @@
           OptionConverter.instantiateByClassName(
             className, org.apache.log4j.Layout.class, null);
         layout = (Layout) instance;
  -
  +      
  +      LoggerRepository repo = (LoggerRepository) ec.getObjectStack().get(0);
  +      layout.setLoggerRepository(repo);
  +      
         getLogger().debug("Pushing layout on top of the object stack.");
         ec.pushObject(layout);
       } catch (Exception oops) {
  
  
  
  1.15      +3 -2      
logging-log4j/src/java/org/apache/joran/ExecutionContext.java
  
  Index: ExecutionContext.java
  ===================================================================
  RCS file: 
/home/cvs/logging-log4j/src/java/org/apache/joran/ExecutionContext.java,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- ExecutionContext.java     22 Nov 2004 20:21:01 -0000      1.14
  +++ ExecutionContext.java     28 Dec 2004 23:08:12 -0000      1.15
  @@ -25,6 +25,7 @@
   import java.util.HashMap;
   import java.util.Iterator;
   import java.util.List;
  +import java.util.Map;
   import java.util.Properties;
   import java.util.Stack;
   import java.util.Vector;
  @@ -40,7 +41,7 @@
    */
   public class ExecutionContext {
     Stack objectStack;
  -  HashMap objectMap;
  +  Map objectMap;
     Vector errorList;
     Properties substitutionProperties;
     Interpreter joranInterpreter;
  @@ -107,7 +108,7 @@
       return objectStack.get(i);
     }
   
  -  public HashMap getObjectMap() {
  +  public Map getObjectMap() {
       return objectMap;
     }
   
  
  
  
  1.13      +12 -7     
logging-log4j/tests/src/java/org/apache/joran/InterpreterTest.java
  
  Index: InterpreterTest.java
  ===================================================================
  RCS file: 
/home/cvs/logging-log4j/tests/src/java/org/apache/joran/InterpreterTest.java,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- InterpreterTest.java      8 Dec 2004 15:58:18 -0000       1.12
  +++ InterpreterTest.java      28 Dec 2004 23:08:12 -0000      1.13
  @@ -52,9 +52,11 @@
   import org.apache.log4j.rolling.SizeBasedTriggeringPolicy;
   import org.apache.log4j.rolling.FixedWindowRollingPolicy;
   import org.apache.log4j.spi.ErrorItem;
  +import org.apache.log4j.spi.LoggerRepository;
   import org.xml.sax.SAXParseException;
   
   import java.util.HashMap;
  +import java.util.Map;
   import java.util.Stack;
   
   import javax.xml.parsers.SAXParser;
  @@ -175,7 +177,7 @@
   
       Interpreter jp = new Interpreter(rs);
       ExecutionContext ec = jp.getExecutionContext();
  -    HashMap omap = ec.getObjectMap();
  +    Map omap = ec.getObjectMap();
       omap.put(ActionConst.APPENDER_BAG, new HashMap());
       ec.pushObject(LogManager.getLoggerRepository());
       SAXParser saxParser = createParser();
  @@ -231,7 +233,7 @@
   
       Interpreter jp = new Interpreter(rs);
       ExecutionContext ec = jp.getExecutionContext();
  -    HashMap omap = ec.getObjectMap();
  +    Map omap = ec.getObjectMap();
       omap.put(ActionConst.APPENDER_BAG, new HashMap());
       ec.pushObject(LogManager.getLoggerRepository());
       SAXParser saxParser = createParser();
  @@ -295,7 +297,7 @@
       jp.addImplicitAction(new NestComponentIA());
   
       ExecutionContext ec = jp.getExecutionContext();
  -    HashMap omap = ec.getObjectMap();
  +    Map omap = ec.getObjectMap();
       omap.put(ActionConst.APPENDER_BAG, new HashMap());
       ec.pushObject(LogManager.getLoggerRepository());
       logger.debug("About to parse doc");
  @@ -340,9 +342,10 @@
       jp.addImplicitAction(new NestComponentIA());
   
       ExecutionContext ec = jp.getExecutionContext();
  -    HashMap omap = ec.getObjectMap();
  +    Map omap = ec.getObjectMap();
       omap.put(ActionConst.APPENDER_BAG, new HashMap());
  -    ec.pushObject(LogManager.getLoggerRepository());
  +    LoggerRepository repository = LogManager.getLoggerRepository();
  +    ec.pushObject(repository);
   
       SAXParser saxParser = createParser();
       saxParser.parse("file:input/joran/conversionRule.xml", jp);
  @@ -351,7 +354,9 @@
         (HashMap) ec.getObjectMap().get(ActionConst.APPENDER_BAG);
       Appender appender = (Appender) appenderBag.get("A1");
       PatternLayout pl = (PatternLayout) appender.getLayout();
  -    assertEquals("org.apache.log4j.toto", pl.getRuleRegistry().get("toto"));
  +    
  +    Map ruleRegistry = (Map) 
repository.getObject(PatternLayout.PATTERN_RULE_REGISTRY);
  +    assertEquals("org.apache.log4j.toto", ruleRegistry.get("toto"));
     }
     
     
  @@ -367,7 +372,7 @@
   
       Interpreter jp = new Interpreter(rs);
       ExecutionContext ec = jp.getExecutionContext();
  -    HashMap omap = ec.getObjectMap();
  +    Map omap = ec.getObjectMap();
   
       SAXParser saxParser = createParser();
       saxParser.parse("file:input/joran/newRule1.xml", jp);
  
  
  
  1.3       +3 -1      logging-log4j/tests/input/joran/conversionRule.xml
  
  Index: conversionRule.xml
  ===================================================================
  RCS file: /home/cvs/logging-log4j/tests/input/joran/conversionRule.xml,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- conversionRule.xml        8 Dec 2004 18:49:24 -0000       1.2
  +++ conversionRule.xml        28 Dec 2004 23:08:12 -0000      1.3
  @@ -2,6 +2,9 @@
   <!DOCTYPE log4j:configuration>
   
   <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/";>
  + 
  +  <conversionRule conversionWord="toto" 
converterClass="org.apache.log4j.toto"/>
  + 
     <appender name="A1" class="org.apache.log4j.rolling.RollingFileAppender">
       <param name="File"   value="output/temp.A1" />
       <param name="Append" value="false" />        
  @@ -14,7 +17,6 @@
       </triggeringPolicy>
       <layout class="org.apache.log4j.PatternLayout">
         <param name="ConversionPattern" value="%-5p %c{2} - %m%n"/>
  -      <conversionRule conversionWord="toto" 
converterClass="org.apache.log4j.toto"/>
       </layout>            
     </appender>
   </log4j:configuration>
  
  
  
  1.8       +0 -16     
logging-log4j/tests/src/java/org/apache/log4j/PatternLayoutTest.java
  
  Index: PatternLayoutTest.java
  ===================================================================
  RCS file: 
/home/cvs/logging-log4j/tests/src/java/org/apache/log4j/PatternLayoutTest.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- PatternLayoutTest.java    20 Nov 2004 12:59:51 -0000      1.7
  +++ PatternLayoutTest.java    28 Dec 2004 23:08:12 -0000      1.8
  @@ -287,22 +287,6 @@
       assertTrue(Compare.compare(FILTERED, 
"witness/pattern/patternLayout.13"));
     }
   
  -  public void test14() throws Exception {
  -    
PropertyConfigurator.configure("input/pattern/patternLayout14.properties");
  -    common();
  -
  -    ControlFilter cf1 =
  -      new ControlFilter(
  -        new String[] { PAT14, EXCEPTION1, EXCEPTION2, EXCEPTION3 });
  -    Transformer.transform(
  -      TEMP, FILTERED,
  -      new Filter[] {
  -        cf1, new LineNumberFilter(), new SunReflectFilter(),
  -        new JunitTestRunnerFilter()
  -      });
  -    assertTrue(Compare.compare(FILTERED, 
"witness/pattern/patternLayout.14"));
  -  }
  -
     public void testMDC1() throws Exception {
       
PropertyConfigurator.configure("input/pattern/patternLayout.mdc.1.properties");
       MDC.put("key1", "va11");
  
  
  
  1.30      +5 -4      
logging-log4j/src/java/org/apache/log4j/joran/JoranConfigurator.java
  
  Index: JoranConfigurator.java
  ===================================================================
  RCS file: 
/home/cvs/logging-log4j/src/java/org/apache/log4j/joran/JoranConfigurator.java,v
  retrieving revision 1.29
  retrieving revision 1.30
  diff -u -r1.29 -r1.30
  --- JoranConfigurator.java    17 Dec 2004 19:58:58 -0000      1.29
  +++ JoranConfigurator.java    28 Dec 2004 23:08:12 -0000      1.30
  @@ -56,6 +56,7 @@
   
   import java.util.HashMap;
   import java.util.List;
  +import java.util.Map;
   
   import javax.xml.parsers.SAXParser;
   import javax.xml.parsers.SAXParserFactory;
  @@ -194,6 +195,9 @@
       rs.addRule(
         new Pattern("configuration/repositoryProperty"),
         new RepositoryPropertyAction());
  +    rs.addRule(
  +        new Pattern("configuration/conversionRule"),
  +        new ConversionRuleAction());
       rs.addRule(new Pattern("configuration/plugin"), new PluginAction());
       rs.addRule(new Pattern("configuration/logger"), new LoggerAction());
       rs.addRule(
  @@ -218,9 +222,6 @@
           new AppenderRefAction());
       rs.addRule(
         new Pattern("configuration/appender/layout"), new LayoutAction());
  -    rs.addRule(
  -      new Pattern("configuration/appender/layout/conversionRule"),
  -      new ConversionRuleAction());
       rs.addRule( 
            new Pattern("configuration/jndiSubstitutionProperty"), 
            new JndiSubstitutionPropertyAction());
  @@ -234,7 +235,7 @@
       joranInterpreter.addImplicitAction(new NestComponentIA());
       ExecutionContext ec = joranInterpreter.getExecutionContext();
   
  -    HashMap omap = ec.getObjectMap();
  +    Map omap = ec.getObjectMap();
       omap.put(ActionConst.APPENDER_BAG, new HashMap());
     }
   
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to