sdeboy      2004/12/15 21:52:44

  Modified:    src/java/org/apache/log4j/rule RuleFactory.java
  Log:
  Remove compile-time dependency of LikeRule from RuleFactory - invoking 
LikeRule.getRule(stack) via reflection
  
  Revision  Changes    Path
  1.6       +15 -2     
logging-log4j/src/java/org/apache/log4j/rule/RuleFactory.java
  
  Index: RuleFactory.java
  ===================================================================
  RCS file: 
/home/cvs/logging-log4j/src/java/org/apache/log4j/rule/RuleFactory.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- RuleFactory.java  21 Nov 2004 07:01:27 -0000      1.5
  +++ RuleFactory.java  16 Dec 2004 05:52:43 -0000      1.6
  @@ -16,10 +16,11 @@
   
   package org.apache.log4j.rule;
   
  +import java.lang.reflect.InvocationTargetException;
  +import java.lang.reflect.Method;
   import java.util.Collection;
   import java.util.LinkedList;
   import java.util.Stack;
  -
   import org.apache.log4j.LogManager;
   
   /**
  @@ -101,8 +102,20 @@
         return PartialTextMatchRule.getRule(stack);
       }
   
  +    //in order to avoid compile-time dependency on LikeRule, call 
getRule(stack) using reflection 
       if (rules.contains(LIKE_RULE) && LIKE_RULE.equalsIgnoreCase(symbol)) {
  -      return LikeRule.getRule(stack);
  +      String methodName = "getRule";
  +      try {
  +        Class likeClass = Class.forName("org.apache.log4j.rule.LikeRule");
  +        Method method =
  +          likeClass.getDeclaredMethod(methodName, new Class[]{Stack.class});
  +
  +        return (Rule)method.invoke(null, new Object[]{stack});
  +      }
  +      catch (ClassNotFoundException cnfe) {}
  +      catch (NoSuchMethodException nsme) {}
  +      catch (IllegalAccessException iae) {}
  +      catch (InvocationTargetException iae) {}
       }
   
       if (EXISTS_RULE.equalsIgnoreCase(symbol)) {
  
  
  

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

Reply via email to