Author: musachy Date: Mon Mar 30 02:48:48 2009 New Revision: 759834 URL: http://svn.apache.org/viewvc?rev=759834&view=rev Log: Add XML support
Added: struts/sandbox/trunk/struts2-oval-plugin/src/test/java/org/apache/struts2/interceptor/SimpleFieldsXML.java - copied, changed from r759802, struts/sandbox/trunk/struts2-oval-plugin/src/test/java/org/apache/struts2/interceptor/SimpleFieldsXml.java struts/sandbox/trunk/struts2-oval-plugin/src/test/resources/org/apache/struts2/interceptor/SimpleFieldsXML-validation.xml - copied, changed from r759802, struts/sandbox/trunk/struts2-oval-plugin/src/test/resources/org/apache/struts2/interceptor/SimpleFieldsXml-validation.xml Removed: struts/sandbox/trunk/struts2-oval-plugin/src/test/java/org/apache/struts2/interceptor/SimpleFieldsXml.java struts/sandbox/trunk/struts2-oval-plugin/src/test/resources/org/apache/struts2/interceptor/SimpleFieldsXml-validation.xml Modified: struts/sandbox/trunk/struts2-oval-plugin/src/main/java/org/apache/struts2/interceptor/DefaultOValValidationManager.java struts/sandbox/trunk/struts2-oval-plugin/src/main/java/org/apache/struts2/interceptor/OValValidationInterceptor.java struts/sandbox/trunk/struts2-oval-plugin/src/test/java/org/apache/struts2/interceptor/OValValidationInterceptorTest.java struts/sandbox/trunk/struts2-oval-plugin/src/test/resources/oval-test.xml Modified: struts/sandbox/trunk/struts2-oval-plugin/src/main/java/org/apache/struts2/interceptor/DefaultOValValidationManager.java URL: http://svn.apache.org/viewvc/struts/sandbox/trunk/struts2-oval-plugin/src/main/java/org/apache/struts2/interceptor/DefaultOValValidationManager.java?rev=759834&r1=759833&r2=759834&view=diff ============================================================================== --- struts/sandbox/trunk/struts2-oval-plugin/src/main/java/org/apache/struts2/interceptor/DefaultOValValidationManager.java (original) +++ struts/sandbox/trunk/struts2-oval-plugin/src/main/java/org/apache/struts2/interceptor/DefaultOValValidationManager.java Mon Mar 30 02:48:48 2009 @@ -6,6 +6,7 @@ import com.opensymphony.xwork2.util.logging.LoggerFactory; import net.sf.oval.configuration.xml.XMLConfigurer; import net.sf.oval.configuration.Configurer; +import net.sf.oval.configuration.annotation.AnnotationsConfigurer; import java.util.List; import java.util.Map; @@ -27,10 +28,22 @@ if (validatorCache.containsKey(validatorKey)) { if (FileManager.isReloadingConfigs()) { - validatorCache.put(validatorKey, buildXMLConfigurers(clazz, context, true, null)); + List<Configurer> configurers = buildXMLConfigurers(clazz, context, true, null); + + //add an annotation configurer + AnnotationsConfigurer annotationsConfigurer = new AnnotationsConfigurer(); + configurers.add(annotationsConfigurer); + + validatorCache.put(validatorKey, configurers); } } else { - validatorCache.put(validatorKey, buildXMLConfigurers(clazz, context, false, null)); + List<Configurer> configurers = buildXMLConfigurers(clazz, context, false, null); + + //add an annotation configurer + AnnotationsConfigurer annotationsConfigurer = new AnnotationsConfigurer(); + configurers.add(annotationsConfigurer); + + validatorCache.put(validatorKey, configurers); } // get the set of validator configs @@ -45,21 +58,21 @@ } private List<Configurer> buildXMLConfigurers(Class clazz, String context, boolean checkFile, Set<String> checked) { - List<Configurer> xmlConfigurers = new ArrayList<Configurer>(); + List<Configurer> configurers = new ArrayList<Configurer>(); if (checked == null) { checked = new TreeSet<String>(); } else if (checked.contains(clazz.getName())) { - return xmlConfigurers; + return configurers; } if (clazz.isInterface()) { for (Class anInterface : clazz.getInterfaces()) { - xmlConfigurers.addAll(buildXMLConfigurers(anInterface, context, checkFile, checked)); + configurers.addAll(buildXMLConfigurers(anInterface, context, checkFile, checked)); } } else { if (!clazz.equals(Object.class)) { - xmlConfigurers.addAll(buildXMLConfigurers(clazz.getSuperclass(), context, checkFile, checked)); + configurers.addAll(buildXMLConfigurers(clazz.getSuperclass(), context, checkFile, checked)); } } @@ -69,24 +82,24 @@ continue; } - addIfNotNull(xmlConfigurers, buildClassValidatorConfigs(anInterface1, checkFile)); + addIfNotNull(configurers, buildClassValidatorConfigs(anInterface1, checkFile)); if (context != null) { - addIfNotNull(xmlConfigurers, buildAliasValidatorConfigs(anInterface1, context, checkFile)); + addIfNotNull(configurers, buildAliasValidatorConfigs(anInterface1, context, checkFile)); } checked.add(anInterface1.getName()); } - addIfNotNull(xmlConfigurers, buildClassValidatorConfigs(clazz, checkFile)); + addIfNotNull(configurers, buildClassValidatorConfigs(clazz, checkFile)); if (context != null) { - addIfNotNull(xmlConfigurers, buildAliasValidatorConfigs(clazz, context, checkFile)); + addIfNotNull(configurers, buildAliasValidatorConfigs(clazz, context, checkFile)); } checked.add(clazz.getName()); - return xmlConfigurers; + return configurers; } protected void addIfNotNull(List<Configurer> configurers, Configurer configurer) { @@ -120,6 +133,7 @@ XMLConfigurer configurer = new XMLConfigurer(); configurer.fromXML(is); validatorFileCache.put(fileName, configurer); + return configurer; } } finally { if (is != null) { Modified: struts/sandbox/trunk/struts2-oval-plugin/src/main/java/org/apache/struts2/interceptor/OValValidationInterceptor.java URL: http://svn.apache.org/viewvc/struts/sandbox/trunk/struts2-oval-plugin/src/main/java/org/apache/struts2/interceptor/OValValidationInterceptor.java?rev=759834&r1=759833&r2=759834&view=diff ============================================================================== --- struts/sandbox/trunk/struts2-oval-plugin/src/main/java/org/apache/struts2/interceptor/OValValidationInterceptor.java (original) +++ struts/sandbox/trunk/struts2-oval-plugin/src/main/java/org/apache/struts2/interceptor/OValValidationInterceptor.java Mon Mar 30 02:48:48 2009 @@ -35,6 +35,7 @@ import net.sf.oval.ConstraintViolation; import net.sf.oval.configuration.xml.XMLConfigurer; import net.sf.oval.configuration.Configurer; +import net.sf.oval.configuration.annotation.AnnotationsConfigurer; import net.sf.oval.context.FieldContext; import net.sf.oval.context.OValContext; import net.sf.oval.context.MethodReturnValueContext; Modified: struts/sandbox/trunk/struts2-oval-plugin/src/test/java/org/apache/struts2/interceptor/OValValidationInterceptorTest.java URL: http://svn.apache.org/viewvc/struts/sandbox/trunk/struts2-oval-plugin/src/test/java/org/apache/struts2/interceptor/OValValidationInterceptorTest.java?rev=759834&r1=759833&r2=759834&view=diff ============================================================================== --- struts/sandbox/trunk/struts2-oval-plugin/src/test/java/org/apache/struts2/interceptor/OValValidationInterceptorTest.java (original) +++ struts/sandbox/trunk/struts2-oval-plugin/src/test/java/org/apache/struts2/interceptor/OValValidationInterceptorTest.java Mon Mar 30 02:48:48 2009 @@ -29,6 +29,8 @@ import java.util.List; import java.util.Map; +import net.sf.oval.configuration.Configurer; + public class OValValidationInterceptorTest extends XWorkTestCase { public void testSimpleFieldsXML() throws Exception { ActionProxy baseActionProxy = actionProxyFactory.createActionProxy("oval", "simpleFieldsXML", null, null); @@ -38,7 +40,20 @@ assertNotNull(fieldErrors); assertEquals(2, fieldErrors.size()); assertValue(fieldErrors, "firstName", Arrays.asList("firstName cannot be null")); - assertValue(fieldErrors, "lastName", Arrays.asList("lastName cannot be empty")); + assertValue(fieldErrors, "lastName", Arrays.asList("lastName cannot be null")); + } + + public void testXMLLoadCaching() { + OValValidationManager manager = container.getInstance(OValValidationManager.class); + List<Configurer> configurers = manager.getConfigurers(SimpleFieldsXML.class, "simpleFieldsXML"); + assertNotNull(configurers); + assertEquals(1, configurers.size()); + + //load again and check it is the same instance + List<Configurer> configurers2 = manager.getConfigurers(SimpleFieldsXML.class, "simpleFieldsXML"); + assertNotNull(configurers2); + assertEquals(1, configurers2.size()); + assertSame(configurers.get(0), configurers2.get(0)); } public void testSimpleField() throws Exception { Copied: struts/sandbox/trunk/struts2-oval-plugin/src/test/java/org/apache/struts2/interceptor/SimpleFieldsXML.java (from r759802, struts/sandbox/trunk/struts2-oval-plugin/src/test/java/org/apache/struts2/interceptor/SimpleFieldsXml.java) URL: http://svn.apache.org/viewvc/struts/sandbox/trunk/struts2-oval-plugin/src/test/java/org/apache/struts2/interceptor/SimpleFieldsXML.java?p2=struts/sandbox/trunk/struts2-oval-plugin/src/test/java/org/apache/struts2/interceptor/SimpleFieldsXML.java&p1=struts/sandbox/trunk/struts2-oval-plugin/src/test/java/org/apache/struts2/interceptor/SimpleFieldsXml.java&r1=759802&r2=759834&rev=759834&view=diff ============================================================================== --- struts/sandbox/trunk/struts2-oval-plugin/src/test/java/org/apache/struts2/interceptor/SimpleFieldsXml.java (original) +++ struts/sandbox/trunk/struts2-oval-plugin/src/test/java/org/apache/struts2/interceptor/SimpleFieldsXML.java Mon Mar 30 02:48:48 2009 @@ -4,12 +4,11 @@ import net.sf.oval.constraint.NotEmpty; import net.sf.oval.constraint.NotNull; -public class SimpleFieldsXml extends ActionSupport { - @NotNull +public class SimpleFieldsXML extends ActionSupport { private String firstName; - @NotEmpty - private String lastName = ""; + @NotNull + private String lastName; public String getFirstName() { return firstName; Copied: struts/sandbox/trunk/struts2-oval-plugin/src/test/resources/org/apache/struts2/interceptor/SimpleFieldsXML-validation.xml (from r759802, struts/sandbox/trunk/struts2-oval-plugin/src/test/resources/org/apache/struts2/interceptor/SimpleFieldsXml-validation.xml) URL: http://svn.apache.org/viewvc/struts/sandbox/trunk/struts2-oval-plugin/src/test/resources/org/apache/struts2/interceptor/SimpleFieldsXML-validation.xml?p2=struts/sandbox/trunk/struts2-oval-plugin/src/test/resources/org/apache/struts2/interceptor/SimpleFieldsXML-validation.xml&p1=struts/sandbox/trunk/struts2-oval-plugin/src/test/resources/org/apache/struts2/interceptor/SimpleFieldsXml-validation.xml&r1=759802&r2=759834&rev=759834&view=diff ============================================================================== --- struts/sandbox/trunk/struts2-oval-plugin/src/test/resources/org/apache/struts2/interceptor/SimpleFieldsXml-validation.xml (original) +++ struts/sandbox/trunk/struts2-oval-plugin/src/test/resources/org/apache/struts2/interceptor/SimpleFieldsXML-validation.xml Mon Mar 30 02:48:48 2009 @@ -5,10 +5,11 @@ "http://oval.sourceforge.net/oval-configuration-1.3.dtd"> --> <oval xmlns="http://oval.sf.net/oval-configuration" xmlns:xsi="http://http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://oval.sf.net/oval-configuration http://oval.sourceforge.net/oval-configuration-1.3.xsd" -> - <!-- define a constraint set --> - <constraintSet id="firstName"> - <notNull message="{context} is null" /> - </constraintSet> + xsi:schemaLocation="http://oval.sf.net/oval-configuration http://oval.sourceforge.net/oval-configuration-1.3.xsd"> + <class type="org.apache.struts2.interceptor.SimpleFieldsXML" overwrite="false" + applyFieldConstraintsToSetters="true"> + <field name="firstName"> + <notNull/> + </field> + </class> </oval> \ No newline at end of file Modified: struts/sandbox/trunk/struts2-oval-plugin/src/test/resources/oval-test.xml URL: http://svn.apache.org/viewvc/struts/sandbox/trunk/struts2-oval-plugin/src/test/resources/oval-test.xml?rev=759834&r1=759833&r2=759834&view=diff ============================================================================== --- struts/sandbox/trunk/struts2-oval-plugin/src/test/resources/oval-test.xml (original) +++ struts/sandbox/trunk/struts2-oval-plugin/src/test/resources/oval-test.xml Mon Mar 30 02:48:48 2009 @@ -13,7 +13,7 @@ <interceptor name="ovalValidation" class="org.apache.struts2.interceptor.OValValidationInterceptor"/> </interceptors> - <action name="simpleFieldsXML" class="org.apache.struts2.interceptor.SimpleFieldsXml"> + <action name="simpleFieldsXML" class="org.apache.struts2.interceptor.SimpleFieldsXML"> <interceptor-ref name="ovalValidation"/> <result type="void"></result> </action>