[jboss-svn-commits] JBoss Common SVN: r2423 - common-old/branches/Branch_1_0/src/main/org/jboss/logging/filter.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Sat Jun 23 09:31:49 EDT 2007
Author: scott.stark at jboss.org
Date: 2007-06-23 09:31:49 -0400 (Sat, 23 Jun 2007)
New Revision: 2423
Modified:
common-old/branches/Branch_1_0/src/main/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-old/branches/Branch_1_0/src/main/org/jboss/logging/filter/TCLFilter.java
===================================================================
--- common-old/branches/Branch_1_0/src/main/org/jboss/logging/filter/TCLFilter.java 2007-06-21 14:23:25 UTC (rev 2422)
+++ common-old/branches/Branch_1_0/src/main/org/jboss/logging/filter/TCLFilter.java 2007-06-23 13:31:49 UTC (rev 2423)
@@ -21,24 +21,13 @@
*/
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,247 +50,129 @@
<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