X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=unused%2Fsrcjar_unused%2Forg%2Fapache%2Flog4j%2Fconfig%2FPropertySetter.java;fp=unused%2Fsrcjar_unused%2Forg%2Fapache%2Flog4j%2Fconfig%2FPropertySetter.java;h=0000000000000000000000000000000000000000;hb=4f77328104498504339216829abf5ea87e2791ec;hp=dae3c00746eb654bb56fb773f9dc0da606fcbf0a;hpb=2b8c0785318a3528e1876e8e2dd48b7d831eae69;p=jalview.git diff --git a/unused/srcjar_unused/org/apache/log4j/config/PropertySetter.java b/unused/srcjar_unused/org/apache/log4j/config/PropertySetter.java deleted file mode 100644 index dae3c00..0000000 --- a/unused/srcjar_unused/org/apache/log4j/config/PropertySetter.java +++ /dev/null @@ -1,315 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ - -// Contributors: Georg Lundesgaard - -package org.apache.log4j.config; - -import org.apache.log4j.Appender; -import org.apache.log4j.Level; -import org.apache.log4j.Priority; -import org.apache.log4j.helpers.LogLog; -import org.apache.log4j.helpers.OptionConverter; -import org.apache.log4j.spi.OptionHandler; -import org.apache.log4j.spi.ErrorHandler; - -import java.beans.BeanInfo; -import java.beans.IntrospectionException; -import java.beans.Introspector; -import java.beans.PropertyDescriptor; -import java.io.InterruptedIOException; -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; -import java.util.Enumeration; -import java.util.Properties; - -/** - General purpose Object property setter. Clients repeatedly invokes - {@link #setProperty setProperty(name,value)} in order to invoke setters - on the Object specified in the constructor. This class relies on the - JavaBeans {@link Introspector} to analyze the given Object Class using - reflection. - -
Usage: -
- PropertySetter ps = new PropertySetter(anObject); - ps.set("name", "Joe"); - ps.set("age", "32"); - ps.set("isMale", "true"); -- will cause the invocations anObject.setName("Joe"), anObject.setAge(32), - and setMale(true) if such methods exist with those signatures. - Otherwise an {@link IntrospectionException} are thrown. - - @author Anders Kristensen - @since 1.1 - */ -public class PropertySetter { - protected Object obj; - protected PropertyDescriptor[] props; - - /** - Create a new PropertySetter for the specified Object. This is done - in prepartion for invoking {@link #setProperty} one or more times. - - @param obj the object for which to set properties - */ - public - PropertySetter(Object obj) { - this.obj = obj; - } - - /** - Uses JavaBeans {@link Introspector} to computer setters of object to be - configured. - */ - protected - void introspect() { - try { - BeanInfo bi = Introspector.getBeanInfo(obj.getClass()); - props = bi.getPropertyDescriptors(); - } catch (IntrospectionException ex) { - LogLog.error("Failed to introspect "+obj+": " + ex.getMessage()); - props = new PropertyDescriptor[0]; - } - } - - - /** - Set the properties of an object passed as a parameter in one - go. The
properties
are parsed relative to a
- prefix
.
-
- @param obj The object to configure.
- @param properties A java.util.Properties containing keys and values.
- @param prefix Only keys having the specified prefix will be set.
- */
- public
- static
- void setProperties(Object obj, Properties properties, String prefix) {
- new PropertySetter(obj).setProperties(properties, prefix);
- }
-
-
- /**
- Set the properites for the object that match the
- prefix
passed as parameter.
-
-
- */
- public
- void setProperties(Properties properties, String prefix) {
- int len = prefix.length();
-
- for (Enumeration e = properties.propertyNames(); e.hasMoreElements(); ) {
- String key = (String) e.nextElement();
-
- // handle only properties that start with the desired frefix.
- if (key.startsWith(prefix)) {
-
-
- // ignore key if it contains dots after the prefix
- if (key.indexOf('.', len + 1) > 0) {
- //System.err.println("----------Ignoring---["+key
- // +"], prefix=["+prefix+"].");
- continue;
- }
-
- String value = OptionConverter.findAndSubst(key, properties);
- key = key.substring(len);
- if (("layout".equals(key) || "errorhandler".equals(key)) && obj instanceof Appender) {
- continue;
- }
- //
- // if the property type is an OptionHandler
- // (for example, triggeringPolicy of org.apache.log4j.rolling.RollingFileAppender)
- PropertyDescriptor prop = getPropertyDescriptor(Introspector.decapitalize(key));
- if (prop != null
- && OptionHandler.class.isAssignableFrom(prop.getPropertyType())
- && prop.getWriteMethod() != null) {
- OptionHandler opt = (OptionHandler)
- OptionConverter.instantiateByKey(properties, prefix + key,
- prop.getPropertyType(),
- null);
- PropertySetter setter = new PropertySetter(opt);
- setter.setProperties(properties, prefix + key + ".");
- try {
- prop.getWriteMethod().invoke(this.obj, new Object[] { opt });
- } catch(IllegalAccessException ex) {
- LogLog.warn("Failed to set property [" + key +
- "] to value \"" + value + "\". ", ex);
- } catch(InvocationTargetException ex) {
- if (ex.getTargetException() instanceof InterruptedException
- || ex.getTargetException() instanceof InterruptedIOException) {
- Thread.currentThread().interrupt();
- }
- LogLog.warn("Failed to set property [" + key +
- "] to value \"" + value + "\". ", ex);
- } catch(RuntimeException ex) {
- LogLog.warn("Failed to set property [" + key +
- "] to value \"" + value + "\". ", ex);
- }
- continue;
- }
-
- setProperty(key, value);
- }
- }
- activate();
- }
-
- /**
- Set a property on this PropertySetter's Object. If successful, this
- method will invoke a setter method on the underlying Object. The
- setter is the one for the specified property name and the value is
- determined partly from the setter argument type and partly from the
- value specified in the call to this method.
-
- If the setter expects a String no conversion is necessary.
- If it expects an int, then an attempt is made to convert 'value'
- to an int using new Integer(value). If the setter expects a boolean,
- the conversion is by new Boolean(value).
-
- @param name name of the property
- @param value String value of the property
- */
- public
- void setProperty(String name, String value) {
- if (value == null) {
- return;
- }
-
- name = Introspector.decapitalize(name);
- PropertyDescriptor prop = getPropertyDescriptor(name);
-
- //LogLog.debug("---------Key: "+name+", type="+prop.getPropertyType());
-
- if (prop == null) {
- LogLog.warn("No such property [" + name + "] in "+
- obj.getClass().getName()+"." );
- } else {
- try {
- setProperty(prop, name, value);
- } catch (PropertySetterException ex) {
- LogLog.warn("Failed to set property [" + name +
- "] to value \"" + value + "\". ", ex.rootCause);
- }
- }
- }
-
- /**
- Set the named property given a {@link PropertyDescriptor}.
-
- @param prop A PropertyDescriptor describing the characteristics
- of the property to set.
- @param name The named of the property to set.
- @param value The value of the property.
- */
- public
- void setProperty(PropertyDescriptor prop, String name, String value)
- throws PropertySetterException {
- Method setter = prop.getWriteMethod();
- if (setter == null) {
- throw new PropertySetterException("No setter for property ["+name+"].");
- }
- Class[] paramTypes = setter.getParameterTypes();
- if (paramTypes.length != 1) {
- throw new PropertySetterException("#params for setter != 1");
- }
-
- Object arg;
- try {
- arg = convertArg(value, paramTypes[0]);
- } catch (Throwable t) {
- throw new PropertySetterException("Conversion to type ["+paramTypes[0]+
- "] failed. Reason: "+t);
- }
- if (arg == null) {
- throw new PropertySetterException(
- "Conversion to type ["+paramTypes[0]+"] failed.");
- }
- LogLog.debug("Setting property [" + name + "] to [" +arg+"].");
- try {
- setter.invoke(obj, new Object[] { arg });
- } catch (IllegalAccessException ex) {
- throw new PropertySetterException(ex);
- } catch (InvocationTargetException ex) {
- if (ex.getTargetException() instanceof InterruptedException
- || ex.getTargetException() instanceof InterruptedIOException) {
- Thread.currentThread().interrupt();
- }
- throw new PropertySetterException(ex);
- } catch (RuntimeException ex) {
- throw new PropertySetterException(ex);
- }
- }
-
-
- /**
- Convert val
a String parameter to an object of a
- given type.
- */
- protected
- Object convertArg(String val, Class type) {
- if(val == null) {
- return null;
- }
-
- String v = val.trim();
- if (String.class.isAssignableFrom(type)) {
- return val;
- } else if (Integer.TYPE.isAssignableFrom(type)) {
- return new Integer(v);
- } else if (Long.TYPE.isAssignableFrom(type)) {
- return new Long(v);
- } else if (Boolean.TYPE.isAssignableFrom(type)) {
- if ("true".equalsIgnoreCase(v)) {
- return Boolean.TRUE;
- } else if ("false".equalsIgnoreCase(v)) {
- return Boolean.FALSE;
- }
- } else if (Priority.class.isAssignableFrom(type)) {
- return OptionConverter.toLevel(v, Level.DEBUG);
- } else if (ErrorHandler.class.isAssignableFrom(type)) {
- return OptionConverter.instantiateByClassName(v,
- ErrorHandler.class, null);
- }
- return null;
- }
-
-
- protected
- PropertyDescriptor getPropertyDescriptor(String name) {
- if (props == null) {
- introspect();
- }
-
- for (int i = 0; i < props.length; i++) {
- if (name.equals(props[i].getName())) {
- return props[i];
- }
- }
- return null;
- }
-
- public
- void activate() {
- if (obj instanceof OptionHandler) {
- ((OptionHandler) obj).activateOptions();
- }
- }
-}