Author: craigmcc
Date: Tue Sep 12 23:21:08 2006
New Revision: 442862

URL: http://svn.apache.org/viewvc?view=rev&rev=442862
Log:
Remove direct Commons BeanUtils dependencies.

SHALE-280

Modified:
    
shale/framework/trunk/shale-apps/shale-clay-usecases/src/main/java/org/apache/shale/usecases/rolodex/GenericComparator.java

Modified: 
shale/framework/trunk/shale-apps/shale-clay-usecases/src/main/java/org/apache/shale/usecases/rolodex/GenericComparator.java
URL: 
http://svn.apache.org/viewvc/shale/framework/trunk/shale-apps/shale-clay-usecases/src/main/java/org/apache/shale/usecases/rolodex/GenericComparator.java?view=diff&rev=442862&r1=442861&r2=442862
==============================================================================
--- 
shale/framework/trunk/shale-apps/shale-clay-usecases/src/main/java/org/apache/shale/usecases/rolodex/GenericComparator.java
 (original)
+++ 
shale/framework/trunk/shale-apps/shale-clay-usecases/src/main/java/org/apache/shale/usecases/rolodex/GenericComparator.java
 Tue Sep 12 23:21:08 2006
@@ -16,13 +16,18 @@
 
 package org.apache.shale.usecases.rolodex;
 
+import java.beans.BeanInfo;
+import java.beans.Introspector;
+import java.beans.PropertyDescriptor;
+import java.lang.reflect.InvocationTargetException;
 import java.util.ArrayList;
 import java.util.Comparator;
 import java.util.Iterator;
 import java.util.List;
+import java.util.Map;
 import java.util.StringTokenizer;
-
-import org.apache.commons.beanutils.BeanUtils;
+import javax.faces.FacesException;
+import javax.faces.el.PropertyNotFoundException;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 
@@ -126,19 +131,8 @@
             Object col1 = null;
             Object col2 = null;
 
-            try {
-                col1 = BeanUtils.getProperty(o1, nextProperty);
-            } catch (Exception e) {
-                log.error("Error finding property " + nextProperty
-                        + "to sort on in the target object", e);
-            }
-
-            try {
-                col2 = BeanUtils.getProperty(o2, nextProperty);
-            } catch (Exception e) {
-                log.error("Error finding property " + nextProperty
-                        + "to sort on in the target object", e);
-            }
+            col1 = value(o1, nextProperty);
+            col2 = value(o2, nextProperty);
 
             if ((col1 == null) && (col2 == null))
                 result = 0;
@@ -161,5 +155,40 @@
         }
         return  (sortAscending ? 1 : -1) * result;
     }
+
+
+    // --------------------------------------------------------- Private 
Methods
+
+
+    /**
+     * <p>Return the specified property value from the specified object,
+     * if possible.</p>
+     *
+     * @param base Base object from which to retrieve a property
+     * @param name Name of the property to be retrieved
+     */
+    private Object value(Object base, String name) {
+
+        if (base instanceof Map) {
+            return ((Map) base).get(name);
+        }
+        try {
+            BeanInfo info = Introspector.getBeanInfo(base.getClass());
+            PropertyDescriptor[] descriptors = info.getPropertyDescriptors();
+            for (int i = 0; i < descriptors.length; i++) {
+                if (name.equals(descriptors[i].getName())) {
+                    return descriptors[i].getReadMethod().invoke(base, null);
+                }
+            }
+            throw new PropertyNotFoundException(name);
+        } catch (RuntimeException e) {
+            throw e;
+        } catch (Exception e) {
+            throw new FacesException(e);
+        }
+    
+    }
+
+
 
 }


Reply via email to