The version of Apache log4j used by SoundHelix.
Clone
HTTPS:
git clone https://vervis.peers.community/repos/aEp6o
SSH:
git clone USERNAME@vervis.peers.community:aEp6o
Branches
Tags
- 1.3alpha-7
- CHAINSAW_2_SANDBOX_MERGE
- CORE_VERSION
- LEVEL_REPLACES_PRIORITY
- PREALPHA_1_3_AS_OF_2004_05_12
- PRE_CHAINSAW_MODEL_CONVERSION
- PRE_UGLI_MOVE
- TAG_CHAINSAW2_MOVE
- log4j-1.2.17
- log4j-1.2.17-rc1
- v1.3alpha8
- v1.3alpha8-temp
- v1_2_1
- v1_2_10-recalled
- v1_2_11
- v1_2_11_rc1
- v1_2_11rc3
- v1_2_12
- v1_2_12_rc1
- v1_2_12_rc2
- v1_2_12_rc3
- v1_2_12_rc4
- v1_2_12_rc5
- v1_2_12_rc6
- v1_2_13
- v1_2_13_rc1
- v1_2_13_rc2
- v1_2_13_site_update
- v1_2_14
- v1_2_14_maven
- v1_2_14_rc1
- v1_2_14_site_update
- v1_2_15
- v1_2_15_rc1
- v1_2_15_rc2
- v1_2_15_rc3
- v1_2_15_rc4
- v1_2_15_rc5
- v1_2_15_rc6
- v1_2_16
- v1_2_16_rc1
- v1_2_16_rc2
- v1_2_17
- v1_2_17-rc1
- v1_2_17_rc1
- v1_2_17_rc2
- v1_2_17_rc3
- v1_2_2
- v1_2_3
- v1_2_4
- v1_2_6
- v1_2_7
- v1_2_9
- v1_2_alpha0
- v1_2_alpha7
- v1_2beta1
- v1_2final
- v1_3alpha_1
- v1_3alpha_6
- v_1_0
- v_1_0_1
- v_1_0_4
- v_1_1
- v_1_1_1
- v_1_1_2
- v_1_1_3
- v_1_1_b1
- v_1_1b2
- v_1_1b3
- v_1_1b5
- v_1_1b6
- v_1_1b7
- v_1_2beta3
PropertyGetter.java
/*
* Copyright (C) The Apache Software Foundation. All rights reserved.
*
* This software is published under the terms of the Apache Software
* License version 1.1, a copy of which has been included with this
* distribution in the LICENSE.APL file.
*/
package org.apache.log4j.config;
import java.beans.*;
import java.lang.reflect.*;
import org.apache.log4j.Priority;
import org.apache.log4j.helpers.LogLog;
/**
Used for inferring configuration information for a log4j's component.
@author Anders Kristensen
*/
public class PropertyGetter {
protected static final Object[] NULL_ARG = new Object[] {};
protected Object obj;
protected PropertyDescriptor[] props;
public interface PropertyCallback {
void foundProperty(Object obj, String prefix, String name, Object value);
}
/**
Create a new PropertyGetter for the specified Object. This is done
in prepartion for invoking {@link
#getProperties(PropertyGetter.PropertyCallback, String)} one or
more times.
@param obj the object for which to set properties */
public
PropertyGetter(Object obj) throws IntrospectionException {
BeanInfo bi = Introspector.getBeanInfo(obj.getClass());
props = bi.getPropertyDescriptors();
this.obj = obj;
}
public
static
void getProperties(Object obj, PropertyCallback callback, String prefix) {
try {
new PropertyGetter(obj).getProperties(callback, prefix);
} catch (IntrospectionException ex) {
LogLog.error("Failed to introspect object " + obj, ex);
}
}
public
void getProperties(PropertyCallback callback, String prefix) {
for (int i = 0; i < props.length; i++) {
Method getter = props[i].getReadMethod();
if (getter == null) continue;
if (!isHandledType(getter.getReturnType())) {
//System.err.println("Ignoring " + props[i].getName() +" " + getter.getReturnType());
continue;
}
String name = props[i].getName();
try {
Object result = getter.invoke(obj, NULL_ARG);
//System.err.println("PROP " + name +": " + result);
if (result != null) {
callback.foundProperty(obj, prefix, name, result);
}
} catch (Exception ex) {
LogLog.warn("Failed to get value of property " + name);
}
}
}
protected
boolean isHandledType(Class type) {
return String.class.isAssignableFrom(type) ||
Integer.TYPE.isAssignableFrom(type) ||
Long.TYPE.isAssignableFrom(type) ||
Boolean.TYPE.isAssignableFrom(type) ||
Priority.class.isAssignableFrom(type);
}
}