| package org.apache.log4j.config; |
| import java.beans.*; |
| import java.lang.reflect.*; |
| import org.apache.log4j.Priority; |
| import org.apache.log4j.helpers.LogLog; |
| public |
| class PropertyGetter |
| { |
| protected static final |
| Object[] NULL_ARG |
| //QC Intervals :(Object[]) org.apache.log4j.config.PropertyGetter.NULL_ARG : Interval 0 : new : new |
| =new Object[] {} |
| ; |
| protected |
| Object obj |
| //QC Intervals : (Object) org.apache.log4j.config.PropertyGetter.obj : Interval 0 : null : null |
| //QC : Interval 1 : new : new |
| ; |
| protected |
| PropertyDescriptor[] props |
| //QC Intervals :(PropertyDescriptor[]) org.apache.log4j.config.PropertyGetter.props : Interval 0 : null : null |
| //QC : Interval 1 : new : new |
| ; |
| public |
| interface PropertyCallback |
| { |
| void |
| foundProperty |
| ( |
| Object obj |
| , |
| String prefix |
| , |
| String name |
| , |
| Object value |
| ) |
| //QC Intervals : (Object) org.apache.log4j.config.PropertyGetter.PropertyCallback.foundProperty.obj: Interval 0 : null : null |
| //QC : Interval 1 : new : new |
| //QC Intervals : (String) org.apache.log4j.config.PropertyGetter.PropertyCallback.foundProperty.prefix: Interval 0 : null : null |
| //QC : Interval 1 : new : new |
| //QC Intervals : (String) org.apache.log4j.config.PropertyGetter.PropertyCallback.foundProperty.name: Interval 0 : null : null |
| //QC : Interval 1 : new : new |
| //QC Intervals : (Object) org.apache.log4j.config.PropertyGetter.PropertyCallback.foundProperty.value: Interval 0 : null : null |
| //QC : Interval 1 : new : new |
| ; |
| } |
| public |
| PropertyGetter |
| ( |
| Object obj |
| ) |
| //QC Intervals : (Object) org.apache.log4j.config.PropertyGetter.PropertyGetter.obj: Interval 0 : null : null |
| //QC : Interval 1 : new : new |
| throws IntrospectionException |
| { |
| BeanInfo bi=Introspector.getBeanInfo(obj.getClass()); |
| //QC-CWE476 or QCerrorNPE null pointer reference on obj (see http://cwe.mitre.org/data/definitions/476.html) |
| //QC Intervals : (Class) java.beans.Introspector |
| 1 : Interval 0 : null : null |
| //QC : Interval 1 : new : new |
| //QC Intervals :(BeanInfo) org.apache.log4j.config.PropertyGetter.PropertyGetter.bi: Interval 0 : null : null |
| //QC : Interval 1 : new : new |
| props=bi.getPropertyDescriptors(); |
| //QC-CWE476 or QCerrorNPE null pointer reference on bi (see http://cwe.mitre.org/data/definitions/476.html) |
| //QC Intervals :(PropertyDescriptor) org.apache.log4j.config.PropertyGetter.PropertyGetter |
| : Interval 0 : null : null |
| //QC : Interval 1 : new : new |
| //assignation |
| this.obj=obj; |
| //QC Intervals : (Object) org.apache.log4j.config.PropertyGetter |
| : Interval 0 : null : null |
| //QC : Interval 1 : new : new |
| //assignation |
| } |
| public static |
| void getProperties |
| ( |
| Object obj |
| , |
| PropertyCallback callback |
| , |
| String prefix |
| ) |
| //QC Intervals : (Object) org.apache.log4j.config.PropertyGetter.getProperties.obj: Interval 0 : null : null |
| //QC : Interval 1 : new : new |
| //QC Intervals :(PropertyCallback) org.apache.log4j.config.PropertyGetter.getProperties.callback: Interval 0 : null : null |
| //QC : Interval 1 : new : new |
| //QC Intervals : (String) org.apache.log4j.config.PropertyGetter.getProperties.prefix: Interval 0 : null : null |
| //QC : Interval 1 : new : new |
| { |
| try |
| { |
| new PropertyGetter(obj).getProperties(callback,prefix); |
| //type of the function/method : void;PropertyCallback;String |
| //QC-CWE252 or QCerrorRTF return type of function is not tested (see http://cwe.mitre.org/data/definitions/252.html) |
| } |
| catch ( |
| IntrospectionException ex |
| ) |
| //QC Intervals :(IntrospectionException) org.apache.log4j.config.PropertyGetter.getProperties.ex: Interval 0 : null : null |
| //QC : Interval 1 : new : new |
| { |
| LogLog.error("Failed to introspect object "+obj,ex); |
| //QC Intervals : (String) org.apache.log4j.helpers.LogLog.error |
| 1 : Interval 0 : 0 : 0 |
| //QC Intervals :(Throwable) org.apache.log4j.helpers.LogLog.error |
| 2 : Interval 0 : null : null |
| //QC : Interval 1 : new : new |
| //type of the function/method : void |
| } |
| } |
| public |
| void getProperties |
| ( |
| PropertyCallback callback |
| , |
| String prefix |
| ) |
| //QC Intervals :(PropertyCallback) org.apache.log4j.config.PropertyGetter.getProperties.callback: Interval 0 : null : null |
| //QC : Interval 1 : new : new |
| //QC Intervals : (String) org.apache.log4j.config.PropertyGetter.getProperties.prefix: Interval 0 : null : null |
| //QC : Interval 1 : new : new |
| { |
| for ( |
| int i |
| //QC Intervals : (int) org.apache.log4j.config.PropertyGetter.getProperties.i : Interval 0 : 0 : 0 |
| =0; |
| i<props.length; |
| i++ |
| ) |
| { |
| Method getter=props[i] .getReadMethod(); |
| //QC Intervals : (Method) org.apache.log4j.config.PropertyGetter.getProperties.getter: Interval 0 : null : null |
| //QC : Interval 1 : new : new |
| if (getter==null ) |
| //QC Intervals : (Method) org.apache.log4j.config.PropertyGetter.getProperties.getter: Interval 0 : null : null |
| continue ; |
| if (!isHandledType(getter.getReturnType())) |
| //QC-CWE476 or QCerrorNPE null pointer reference on getter (see http://cwe.mitre.org/data/definitions/476.html) |
| //QC Intervals : (Class) org.apache.log4j.config.PropertyGetter.isHandledType |
| 1 : Interval 0 : null : null |
| //QC : Interval 1 : new : new |
| //QC Intervals : (boolean) org.apache.log4j.config.PropertyGetter.isHandledType |
| : Interval 0 : false : false |
| { |
| continue ; |
| } |
| String name=props[i] .getName(); |
| //QC Intervals : (String) org.apache.log4j.config.PropertyGetter.getProperties.name: Interval 0 : null : null |
| //QC : Interval 1 : new : new |
| try |
| { |
| Object result=getter.invoke(obj,NULL_ARG); |
| //QC Intervals : (Object) java.lang.reflect.Method |
| 1 : Interval 0 : null : null |
| //QC : Interval 1 : new : new |
| //QC Intervals : (Object) java.lang.reflect.Method |
| 2 : Interval 0 : null : null |
| //QC : Interval 1 : new : new |
| //QC-CWE476 or QCerrorNPE null pointer reference on getter (see http://cwe.mitre.org/data/definitions/476.html) |
| //QC Intervals : (Object) org.apache.log4j.config.PropertyGetter.getProperties.result: Interval 0 : null : null |
| //QC : Interval 1 : new : new |
| if (result!=null ) |
| //QC Intervals : (Object) org.apache.log4j.config.PropertyGetter.getProperties.result: Interval 0 : new : new |
| { |
| callback.foundProperty(obj,prefix,name,result); |
| //QC Intervals : (Object) org.apache.log4j.config.PropertyGetter.PropertyCallback.foundProperty |
| 1: Interval 0 : null : null |
| //QC : Interval 1 : new : new |
| //QC Intervals : (String) org.apache.log4j.config.PropertyGetter.PropertyCallback.foundProperty |
| 2: Interval 0 : null : null |
| //QC : Interval 1 : new : new |
| //QC Intervals : (String) org.apache.log4j.config.PropertyGetter.PropertyCallback.foundProperty |
| 3: Interval 0 : null : null |
| //QC : Interval 1 : new : new |
| //QC Intervals : (Object) org.apache.log4j.config.PropertyGetter.PropertyCallback.foundProperty |
| 4: Interval 0 : new : new |
| //QC-CWE476 or QCerrorNPE null pointer reference on callback (see http://cwe.mitre.org/data/definitions/476.html) |
| //type of the function/method : void |
| } |
| } |
| catch ( |
| Exception ex |
| ) |
| //QC Intervals :(Exception) org.apache.log4j.config.PropertyGetter.getProperties.ex: Interval 0 : null : null |
| //QC : Interval 1 : new : new |
| { |
| LogLog.warn("Failed to get value of property "+name); |
| //QC Intervals : (String) org.apache.log4j.helpers.LogLog.warn |
| 1 : Interval 0 : Failed to get value of property null : Failed to get value of property null |
| //QC : Interval 1 : Failed to get value of property new : Failed to get value of property new |
| //type of the function/method : void |
| } |
| } |
| } |
| protected |
| boolean isHandledType |
| //QC Intervals : (boolean) org.apache.log4j.config.PropertyGetter.isHandledType : Interval 0 : false : true |
| ( |
| Class type |
| ) |
| //QC Intervals : (Class) org.apache.log4j.config.PropertyGetter.isHandledType.type: Interval 0 : null : null |
| //QC : Interval 1 : new : new |
| { |
| return String.class .isAssignableFrom(type)||Integer.TYPE.isAssignableFrom(type)||Long.TYPE.isAssignableFrom(type)||Boolean.TYPE.isAssignableFrom(type)||Priority.class .isAssignableFrom(type); |
| //QC Intervals : (Class) java.lang.Class.isAssignableFrom |
| 1 : Interval 0 : null : null |
| //QC : Interval 1 : new : new |
| //QC Intervals : (Class) java.lang.Class.isAssignableFrom |
| 1 : Interval 0 : null : null |
| //QC : Interval 1 : new : new |
| //QC Intervals : (Class) java.lang.Class.isAssignableFrom |
| 1 : Interval 0 : null : null |
| //QC : Interval 1 : new : new |
| //QC Intervals : (boolean) org.apache.log4j.config.PropertyGetter.isHandledType.return: Interval 0 : true : true |
| //QC : Interval 1 : false : false |
| } |
| } |