net.lightbody.bmp.proxy.jetty.log.Factory Maven / Gradle / Ivy
//========================================================================
//$Id: Factory.java,v 1.4 2005/12/05 12:51:01 gregwilkins Exp $
//Copyright 2004 Mort Bay Consulting Pty. Ltd.
//------------------------------------------------------------------------
//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 net.lightbody.bmp.proxy.jetty.log;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogConfigurationException;
import java.util.ArrayList;
import java.util.HashMap;
/**
* Commons Logging Factory for org.mortbay.log
* Returns a static default log, unless an alternate Log implementation has been set as
* an attribute keyed by the classname or other name of the log. If the name of the attibute ends
* with '.*' it is assumed to be a name prefix match.
* Attributes with string values are treated as references to other attributes.
*
* This class needs to be configured in the META-INF/services directory (see build.xml for example)
* for automatic discovery. Or it can be configured with the system property:
* -Dorg.apache.commons.logging.LogFactory=org.mortbay.log.Factory
*
*/
public class Factory extends org.apache.commons.logging.LogFactory
{
static LogImpl log = new LogImpl();
static HashMap attributes = new HashMap();
static ArrayList prefixes = new ArrayList();
/**
*
*/
public Factory()
{
super();
}
/* (non-Javadoc)
* @see org.apache.commons.logging.LogFactory#getAttribute(java.lang.String)
*/
public Object getAttribute(String n)
{
return attributes.get(n);
}
/* (non-Javadoc)
* @see org.apache.commons.logging.LogFactory#getAttributeNames()
*/
public String[] getAttributeNames()
{
return (String[]) attributes.keySet().toArray(new String[attributes.size()]);
}
/* (non-Javadoc)
* @see org.apache.commons.logging.LogFactory#getInstance(java.lang.Class)
*/
public Log getInstance(Class c) throws LogConfigurationException
{
if (c!=null)
return getInstance(c.getName());
return getInstance((String)null);
}
/* (non-Javadoc)
* @see org.apache.commons.logging.LogFactory#getInstance(java.lang.String)
*/
public Log getInstance(String name) throws LogConfigurationException
{
String match="";
for (int i=prefixes.size();name!=null && i-->0;)
{
String prefix=(String)prefixes.get(i);
if (name.startsWith(prefix) && prefix.length()>match.length())
match=prefix;
}
if (match.length()>0)
name=match+".*";
// Get value
Object o = attributes.get(name);
// Dereference string attributes
while(o!=null && o instanceof String)
o=attributes.get(o);
// return actual log.
if (o instanceof Log)
return (Log)o;
return log;
}
/* (non-Javadoc)
* @see org.apache.commons.logging.LogFactory#release()
*/
public void release()
{
}
/* (non-Javadoc)
* @see org.apache.commons.logging.LogFactory#removeAttribute(java.lang.String)
*/
public void removeAttribute(String n)
{
attributes.remove(n);
if (n.endsWith(".*"))
prefixes.remove(n.substring(0,n.length()-2));
}
/* (non-Javadoc)
* @see org.apache.commons.logging.LogFactory#setAttribute(java.lang.String, java.lang.Object)
*/
public void setAttribute(String n, Object v)
{
attributes.put(n,v);
if (n.endsWith(".*") && v instanceof Log)
prefixes.add(n.substring(0,n.length()-2));
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy