1 package org.xmlfield.validation.handlers;
2
3 import java.lang.annotation.Annotation;
4 import java.lang.reflect.InvocationTargetException;
5 import java.lang.reflect.Method;
6 import java.util.HashSet;
7 import java.util.Set;
8
9 import org.apache.commons.lang.ArrayUtils;
10 import org.apache.commons.lang.StringUtils;
11 import org.xmlfield.validation.annotations.NotEmpty;
12
13 public class NotEmptyHandler implements IHandler {
14
15 @Override
16 public boolean handles(Annotation a) {
17 return a instanceof NotEmpty;
18 }
19
20 @Override
21 public Set<ConstraintViolation<Object>> validate(Annotation a, Method m, Object o, Class<?> group)
22 throws IllegalArgumentException, IllegalAccessException, InvocationTargetException {
23
24 NotEmpty as = (NotEmpty) a;
25
26 if ((group == null && as.groups().length == 0) || ArrayUtils.contains(as.groups(), group)) {
27
28 Object result = m.invoke(o, new Object[] {});
29 if (result == null)
30 return createResultFromViolation(new ConstraintViolation<Object>(m.getName(), "<not-empty>", "<null>"));
31
32 if (result instanceof String) {
33 if (StringUtils.isEmpty((String) result))
34 return createResultFromViolation(new ConstraintViolation<Object>(m.getName(), "<not-empty>",
35 "<empty>"));
36 }
37
38 }
39 return null;
40 }
41
42 private <T> Set<ConstraintViolation<T>> createResultFromViolation(ConstraintViolation<T> c) {
43
44 Set<ConstraintViolation<T>> result = new HashSet<ConstraintViolation<T>>();
45
46 result.add(c);
47 return result;
48
49 }
50
51 }