[jboss-svn-commits] JBoss Common SVN: r2424 - common-logging-log4j/trunk/src/main/java/org/jboss/logging/filter.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Sat Jun 23 19:05:34 EDT 2007


Author: scott.stark at jboss.org
Date: 2007-06-23 19:05:34 -0400 (Sat, 23 Jun 2007)
New Revision: 2424

Modified:
   common-logging-log4j/trunk/src/main/java/org/jboss/logging/filter/TCLFilter.java
Log:
JBCOMMON-27, All non-decisive checks should be Filter.NEUTRAL if this is to work with multiple filters.

Modified: common-logging-log4j/trunk/src/main/java/org/jboss/logging/filter/TCLFilter.java
===================================================================
--- common-logging-log4j/trunk/src/main/java/org/jboss/logging/filter/TCLFilter.java	2007-06-23 13:31:49 UTC (rev 2423)
+++ common-logging-log4j/trunk/src/main/java/org/jboss/logging/filter/TCLFilter.java	2007-06-23 23:05:34 UTC (rev 2424)
@@ -1,44 +1,33 @@
 /*
-  * JBoss, Home of Professional Open Source
-  * Copyright 2005, JBoss Inc., and individual contributors as indicated
-  * by the @authors tag. See the copyright.txt in the distribution for a
-  * full listing of individual contributors.
-  *
-  * This is free software; you can redistribute it and/or modify it
-  * under the terms of the GNU Lesser General Public License as
-  * published by the Free Software Foundation; either version 2.1 of
-  * the License, or (at your option) any later version.
-  *
-  * This software is distributed in the hope that it will be useful,
-  * but WITHOUT ANY WARRANTY; without even the implied warranty of
-  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-  * Lesser General Public License for more details.
-  *
-  * You should have received a copy of the GNU Lesser General Public
-  * License along with this software; if not, write to the Free
-  * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-  * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-  */
+* JBoss, Home of Professional Open Source
+* Copyright 2005, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
 package org.jboss.logging.filter;
 
-
-
 import java.lang.reflect.Method;
-
 import java.net.URL;
 
-
-
 import org.apache.log4j.spi.Filter;
-
 import org.apache.log4j.spi.LoggingEvent;
-
-
-
 import org.jboss.util.collection.WeakSet;
 
-
-
 /** An appender filter that accepts log events based on whether the thread
 
  context class loader has a classpath URL that has the DeployURL
@@ -46,19 +35,12 @@
  attribute as a substring. A sample usage would be:
 
 
-
    <appender name="JMX-CONSOLE" class="org.jboss.logging.appender.FileAppender">
-
       <errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>
-
       <param name="File" value="${jboss.server.home.dir}/log/jmx-console.log"/>
-
       <layout class="org.apache.log4j.PatternLayout">
-
          <!-- The default pattern: Date Priority [Category] Message\n -->
-
          <param name="ConversionPattern" value="%d %-5p [%c] %m%n"/>
-
       </layout>
 
       <filter class="org.jboss.logging.filter.TCLFilter">
@@ -68,248 +50,127 @@
          <param name="DeployURL" value="jmx-console.war"/>
 
       </filter>
-
    </appender>
 
 
-
  @author Scott.Stark at jboss.org
-
- @version $Revison:$
-
+ @version $Revision$
  */
-
 public class TCLFilter extends Filter
-
 {
-
    /** The set of TCLs seen to match DeployURL */
-
    private WeakSet matchSet = new WeakSet();
-
    /** The set of TCLs seen to not match DeployURL */
-
    private WeakSet missSet = new WeakSet();
-
    /** The deployment URL string fragment to match against */
-
    private String deployURL;
-
    /** Whether a match should return ACCEPT or DENY */
-
    private boolean acceptOnMatch = true;
 
-
-
    public boolean isAcceptOnMatch()
-
    {
-
       return acceptOnMatch;
-
    }
 
    public void setAcceptOnMatch(boolean acceptOnMatch)
-
    {
-
       this.acceptOnMatch = acceptOnMatch;
-
    }
 
    public String getDeployURL()
-
    {
-
       return deployURL;
-
    }
 
    public void setDeployURL(String deployURL)
-
    {
-
       this.deployURL = deployURL;
-
    }
 
-
-
    public int decide(LoggingEvent event)
-
    {
-
-      int ok = Filter.DENY;
-
+      int ok = Filter.NEUTRAL;
       if( acceptOnMatch == true )
-
       {
-
-         ok = Filter.DENY;
-
          if( isMatchingTCL() )
-
             ok = Filter.ACCEPT;
-
       }
-
       else
-
       {
-
-         ok = Filter.ACCEPT;
-
          if( isMatchingTCL() )
-
             ok = Filter.DENY;
-
       }
-
       return ok;
-
    }
 
-
-
    /** Start with the current thread context class loader 
-
     * @return true if the caller tcl has a url matching our deployURL
-
     */ 
-
    private boolean isMatchingTCL()
-
    {
-
       ClassLoader tcl = Thread.currentThread().getContextClassLoader();
-
       if( matchSet.contains(tcl) )
-
          return true;
-
       if( missSet.contains(tcl) )
-
          return false;
 
-
-
       // Search the class loader URLs for a match
-
       ClassLoader cl = tcl;
-
       boolean match = false;
-
       while( cl != null )
-
       {
-
          URL[] urls = getClassLoaderURLs(cl);
-
          for(int n = 0; n < urls.length; n ++)
-
          {
-
             URL u = urls[n];
-
             String file = u.getFile();
-
             if( file.indexOf(deployURL) > 0 )
-
             {
-
                match = true;
-
                break;
-
             }
-
          }
-
          cl = cl.getParent();
-
       }
 
       if( match == true )
-
          matchSet.add(tcl);
-
       else
-
          missSet.add(tcl);
 
-
-
       return match;
-
    }
 
-
-
    /** Use reflection to access a URL[] getURLs method so that non-URLClassLoader
-
     class loaders that support this method can provide info.
-
     */
-
    private static URL[] getClassLoaderURLs(ClassLoader cl)
-
    {
-
       URL[] urls = {};
-
       try
-
       {
-
          Class returnType = urls.getClass();
-
          Class[] parameterTypes = {};
-
          Method getURLs = cl.getClass().getMethod("getURLs", parameterTypes);
-
          if( returnType.isAssignableFrom(getURLs.getReturnType()) )
-
          {
-
             Object[] args = {};
-
             urls = (URL[]) getURLs.invoke(cl, args);
-
          }
-
          if( urls == null || urls.length == 0 )
-
          {
-
             getURLs = cl.getClass().getMethod("getClasspath", parameterTypes);
-
             if( returnType.isAssignableFrom(getURLs.getReturnType()) )
-
             {
-
                Object[] args = {};
-
                urls = (URL[]) getURLs.invoke(cl, args);
-
             }
-
          }
-
       }
-
       catch(Exception ignore)
-
       {
-
       }
-
       return urls;
-
    }
 
-
-
 }
-
-
-




More information about the jboss-svn-commits mailing list