Revision: 959
http://stripes.svn.sourceforge.net/stripes/?rev=959&view=rev
Author: javelotinfo
Date: 2008-09-27 19:02:23 +0000 (Sat, 27 Sep 2008)
Log Message:
-----------
Fix for STS-604
Modified Paths:
--------------
trunk/stripes/src/net/sourceforge/stripes/validation/DefaultValidationMetadataProvider.java
trunk/tests/src/net/sourceforge/stripes/validation/ValidationAnnotationsTest.java
Modified:
trunk/stripes/src/net/sourceforge/stripes/validation/DefaultValidationMetadataProvider.java
===================================================================
---
trunk/stripes/src/net/sourceforge/stripes/validation/DefaultValidationMetadataProvider.java
2008-09-27 19:02:03 UTC (rev 958)
+++
trunk/stripes/src/net/sourceforge/stripes/validation/DefaultValidationMetadataProvider.java
2008-09-27 19:02:23 UTC (rev 959)
@@ -19,9 +19,12 @@
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
+import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
+import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
@@ -89,7 +92,15 @@
Set<String> seen = new HashSet<String>();
try {
for (Class<?> clazz = beanType; clazz != null; clazz =
clazz.getSuperclass()) {
- PropertyDescriptor[] pds =
Introspector.getBeanInfo(clazz).getPropertyDescriptors();
+ List<PropertyDescriptor> pds = new
ArrayList<PropertyDescriptor>(
+
Arrays.asList(Introspector.getBeanInfo(clazz).getPropertyDescriptors()));
+
+ // Also look at public fields
+ Field[] publicFields = clazz.getFields();
+ for (Field field : publicFields) {
+ pds.add(new PropertyDescriptor(field.getName(), null,
null));
+ }
+
for (PropertyDescriptor pd : pds) {
String propertyName = pd.getName();
Method accessor = pd.getReadMethod();
Modified:
trunk/tests/src/net/sourceforge/stripes/validation/ValidationAnnotationsTest.java
===================================================================
---
trunk/tests/src/net/sourceforge/stripes/validation/ValidationAnnotationsTest.java
2008-09-27 19:02:03 UTC (rev 958)
+++
trunk/tests/src/net/sourceforge/stripes/validation/ValidationAnnotationsTest.java
2008-09-27 19:02:23 UTC (rev 959)
@@ -39,4 +39,22 @@
ActionBean actionBean = trip.getActionBean(getClass());
Assert.assertEquals(0,
actionBean.getContext().getValidationErrors().size());
}
+
+ @Validate(required=true, on="validatePublicField")
+ public String publicField;
+
+ public Resolution validatePublicField() { return null; }
+
+ /**
+ * Tests that a validation annotation works on a public field.
+ *
+ * @see http://www.stripesframework.org/jira/browse/STS-604
+ */
+ @Test(groups="fast")
+ public void testValidatePublicField() throws Exception {
+ MockRoundtrip trip = new
MockRoundtrip(StripesTestFixture.getServletContext(), getClass());
+ trip.execute("validatePublicField");
+ ActionBean actionBean = trip.getActionBean(getClass());
+ Assert.assertEquals(1,
actionBean.getContext().getValidationErrors().size());
+ }
}
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
Stripes-development mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/stripes-development