(no commit message)
[utils] / support / general / src / main / java / org / wamblee / conditions / PropertyRegexCondition.java
index 7dd6b04bdc068780bb20bd8f0132057bd373f2e6..7300e4608c37d4cd6006bdaa1de2b9604806521d 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright 2005 the original author or authors.
- *
+ * Copyright 2005-2010 the original author or authors.
+ * 
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
- *
+ * 
  *      http://www.apache.org/licenses/LICENSE-2.0
- *
+ * 
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  */
 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,10 @@ 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 +81,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);
         }
     }
 }