* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
- */
+ */
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
*
*/
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();
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);
}
}
}