Author: mbenson Date: Thu Feb 1 12:50:40 2007 New Revision: 502353 URL: http://svn.apache.org/viewvc?view=rev&rev=502353 Log: don't loop through a String array calling equals(); use a map
Modified: jakarta/commons/proper/jxpath/trunk/src/java/org/apache/commons/jxpath/JXPathBasicBeanInfo.java Modified: jakarta/commons/proper/jxpath/trunk/src/java/org/apache/commons/jxpath/JXPathBasicBeanInfo.java URL: http://svn.apache.org/viewvc/jakarta/commons/proper/jxpath/trunk/src/java/org/apache/commons/jxpath/JXPathBasicBeanInfo.java?view=diff&rev=502353&r1=502352&r2=502353 ============================================================================== --- jakarta/commons/proper/jxpath/trunk/src/java/org/apache/commons/jxpath/JXPathBasicBeanInfo.java (original) +++ jakarta/commons/proper/jxpath/trunk/src/java/org/apache/commons/jxpath/JXPathBasicBeanInfo.java Thu Feb 1 12:50:40 2007 @@ -22,6 +22,7 @@ import java.beans.PropertyDescriptor; import java.util.Arrays; import java.util.Comparator; +import java.util.HashMap; /** * An implementation of JXPathBeanInfo based on JavaBeans' BeanInfo. Properties @@ -37,8 +38,8 @@ private boolean atomic = false; private Class clazz; private PropertyDescriptor propertyDescriptors[]; - private String[] propertyNames; private Class dynamicPropertyHandlerClass; + private HashMap propertyDescriptorMap; public JXPathBasicBeanInfo(Class clazz) { this.clazz = clazz; @@ -70,7 +71,7 @@ return dynamicPropertyHandlerClass != null; } - public PropertyDescriptor[] getPropertyDescriptors() { + public synchronized PropertyDescriptor[] getPropertyDescriptors() { if (propertyDescriptors == null) { try { BeanInfo bi = null; @@ -98,28 +99,15 @@ return propertyDescriptors; } - public PropertyDescriptor getPropertyDescriptor(String propertyName) { - if (propertyNames == null) { + public synchronized PropertyDescriptor getPropertyDescriptor(String propertyName) { + if (propertyDescriptorMap == null) { + propertyDescriptorMap = new HashMap(); PropertyDescriptor[] pds = getPropertyDescriptors(); - String[] names = new String[pds.length]; for (int i = 0; i < pds.length; i++) { - names[i] = pds[i].getName(); + propertyDescriptorMap.put(pds[i].getName(), pds[i]); } - propertyNames = names; } - - for (int i = 0; i < propertyNames.length; i++) { - if (propertyNames[i] == propertyName) { - return propertyDescriptors[i]; - } - } - - for (int i = 0; i < propertyNames.length; i++) { - if (propertyNames[i].equals(propertyName)) { - return propertyDescriptors[i]; - } - } - return null; + return (PropertyDescriptor) propertyDescriptorMap.get(propertyName); } /** --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]