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]

Reply via email to