- private List<Pair<Method, ParameterValues>> getAllSetters() {
- List<Pair<Method,ParameterValues>> result =
- new ArrayList<Pair<Method, ParameterValues>>();
- for (Method method : _class.getMethods()) {
- if (method.getName().startsWith("set")
- && method.getParameterTypes().length == 1) {
- String name = getSetterName(method);
- result.add(new Pair<Method,ParameterValues>(method,
- new ParameterValues(
- new String[] { name }, new Class[] { method.getParameterTypes()[0] })));
+ public SetterConfiguration addSetter(final Class aType) {
+ List<Method> result = new ArrayList<Method>();
+ CollectionFilter.filter(getAllSetters(clazz, publicOnly), result,
+ new Condition<Method>() {
+ @Override
+ public boolean matches(Method aObject) {
+ Class type = aObject.getParameterTypes()[0];
+
+ return type.equals(aType);
+ }
+ });
+
+ if (result.size() == 0) {
+ throw new IllegalArgumentException("No setter found in class '" +
+ clazz.getName() + "' that has a setter with argument type '" +
+ aType.getName() + "'");
+ }
+
+ if (result.size() > 1) {
+ String setters = "";
+
+ for (Method method : result) {
+ setters += (method.getName() + " ");