(no commit message)
[utils] / support / general / src / main / java / org / wamblee / conditions / PropertyRegexCondition.java
index 975509044c9c57593fc7691c3517bfca95da9ae7..3b9cfef4da5b7f3aba74c3d7fb8a2169e4f19111 100644 (file)
  */ 
 package org.wamblee.conditions;
 
-import org.apache.commons.beanutils.PropertyUtils;
-
 import java.lang.reflect.InvocationTargetException;
-
+import java.lang.reflect.Method;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
 /**
- * Condition to check whether a given property value matches a certain regular
- * expression.
+ * Condition to check whether a given property of an object matches a certain regular
+ * expression. The method name to use of the object passed in to 
+ * {@link #matches(Object)} is obtained using the Javabean conventions. 
  * 
  * @author Erik Brakkee
  * 
@@ -70,7 +69,9 @@ public class PropertyRegexCondition<T> implements Condition<T> {
      */
     public boolean matches(T aObject) {
         try {
-            String value = PropertyUtils.getProperty(aObject, property) + "";
+            String readerName = "get" + property.substring(0, 1).toUpperCase() + property.substring(1);
+            Method reader = aObject.getClass().getMethod(readerName);
+            String value = reader.invoke(aObject) + "";
 
             if (tolower) {
                 value = value.toLowerCase();
@@ -79,12 +80,12 @@ public class PropertyRegexCondition<T> implements Condition<T> {
             Matcher matcher = regex.matcher(value);
 
             return matcher.matches();
+        } catch (NoSuchMethodException e) {
+            throw new RuntimeException(e.getMessage(), e);
         } catch (IllegalAccessException e) {
             throw new RuntimeException(e.getMessage(), e);
         } catch (InvocationTargetException e) {
             throw new RuntimeException(e.getMessage(), e);
-        } catch (NoSuchMethodException e) {
-            throw new RuntimeException(e.getMessage(), e);
-        }
+        } 
     }
 }