Author: tchemit Date: 2008-10-19 21:56:45 +0000 (Sun, 19 Oct 2008) New Revision: 979 Added: lutinjaxx/trunk/jaxx-core/src/main/java/jaxx/runtime/validator/DirectoryFieldValidator.java lutinjaxx/trunk/jaxx-core/src/main/java/jaxx/runtime/validator/ExistingDirectoryFieldValidator.java lutinjaxx/trunk/jaxx-core/src/main/java/jaxx/runtime/validator/ExistingFileFieldValidator.java lutinjaxx/trunk/jaxx-core/src/main/java/jaxx/runtime/validator/FileFieldValidator.java lutinjaxx/trunk/jaxx-core/src/main/resources/validators.xml Modified: lutinjaxx/trunk/jaxx-core/src/main/java/jaxx/runtime/validator/BeanValidator.java lutinjaxx/trunk/jaxx-example/Validation/src/main/java/examples/Validation/Identity.java lutinjaxx/trunk/jaxx-example/Validation/src/main/java/examples/Validation/Validation.jaxx lutinjaxx/trunk/jaxx-example/Validation/src/main/resources/examples/Validation/Identity-validation.xml Log: adding validator on files and directories Modified: lutinjaxx/trunk/jaxx-core/src/main/java/jaxx/runtime/validator/BeanValidator.java =================================================================== --- lutinjaxx/trunk/jaxx-core/src/main/java/jaxx/runtime/validator/BeanValidator.java 2008-10-19 20:15:06 UTC (rev 978) +++ lutinjaxx/trunk/jaxx-core/src/main/java/jaxx/runtime/validator/BeanValidator.java 2008-10-19 21:56:45 UTC (rev 979) @@ -25,6 +25,7 @@ import com.opensymphony.xwork2.ValidationAwareSupport; import com.opensymphony.xwork2.config.Configuration; import com.opensymphony.xwork2.config.ConfigurationManager; +import com.opensymphony.xwork2.config.providers.XmlConfigurationProvider; import com.opensymphony.xwork2.util.ValueStack; import com.opensymphony.xwork2.util.ValueStackFactory; import com.opensymphony.xwork2.validator.ActionValidatorManager; @@ -339,6 +340,8 @@ protected ActionValidatorManager getValidator() { if (validator == null) { ConfigurationManager confManager = new ConfigurationManager(); + //confManager.addContainerProvider(new XmlConfigurationProvider("my-xworks.xml")); + //confManager.addContainerProvider(new XmlConfigurationProvider("my-validators.xml")); Configuration conf = confManager.getConfiguration(); ValueStackFactory vsf = conf.getContainer().getInstance( Added: lutinjaxx/trunk/jaxx-core/src/main/java/jaxx/runtime/validator/DirectoryFieldValidator.java =================================================================== --- lutinjaxx/trunk/jaxx-core/src/main/java/jaxx/runtime/validator/DirectoryFieldValidator.java (rev 0) +++ lutinjaxx/trunk/jaxx-core/src/main/java/jaxx/runtime/validator/DirectoryFieldValidator.java 2008-10-19 21:56:45 UTC (rev 979) @@ -0,0 +1,70 @@ +package jaxx.runtime.validator; + +import com.opensymphony.xwork2.validator.ValidationException; +import com.opensymphony.xwork2.validator.validators.FieldValidatorSupport; + +import java.io.File; + +/** + * <!-- START SNIPPET: javadoc --> + * ExistingDirectoryFieldValidator checks that a File field exists and is a directory. + * <!-- END SNIPPET: javadoc --> + * <p/> + * <p/> + * <!-- START SNIPPET: parameters --> + * <ul> + * <li>fieldName - The field name this validator is validating. Required if using Plain-Validator Syntax otherwise not required</li> + * </ul> + * <!-- END SNIPPET: parameters --> + * <p/> + * <p/> + * <pre> + * <!-- START SNIPPET: examples --> + * <validators> + * <!-- Plain-Validator Syntax --> + * <validator type="directoryExisting"> + * <param name="fieldName">tmp</param> + * <message>tmp is not an existing directory</message> + * </validator> + * <p/> + * <!-- Field-Validator Syntax --> + * <field name="tmp"> + * <field-validator type="directoryExisting"> + * <message>tmp is not an existing directory</message> + * </field-validator> + * </field> + * </validators> + * <!-- END SNIPPET: examples --> + * </pre> + * + * @author chemit + */ +public class DirectoryFieldValidator extends FieldValidatorSupport { + + public void validate(Object object) throws ValidationException { + String fieldName = getFieldName(); + Object value = this.getFieldValue(fieldName, object); + if (value==null) { + addFieldError(fieldName, object); + return; + } + File f; + if (value instanceof File) { + f = (File) value; + } else if (value instanceof String) { + f = new File((String) value); + } else { + addFieldError(fieldName, object); + return; + } + + if (!f.isDirectory()) { + addFieldError(fieldName, object); + } + } + + @Override + public String getValidatorType() { + return "directory"; + } +} \ No newline at end of file Added: lutinjaxx/trunk/jaxx-core/src/main/java/jaxx/runtime/validator/ExistingDirectoryFieldValidator.java =================================================================== --- lutinjaxx/trunk/jaxx-core/src/main/java/jaxx/runtime/validator/ExistingDirectoryFieldValidator.java (rev 0) +++ lutinjaxx/trunk/jaxx-core/src/main/java/jaxx/runtime/validator/ExistingDirectoryFieldValidator.java 2008-10-19 21:56:45 UTC (rev 979) @@ -0,0 +1,72 @@ +package jaxx.runtime.validator; + +import com.opensymphony.xwork2.validator.ValidationException; + +import java.io.File; + +/** + * <!-- START SNIPPET: javadoc --> + * ExistingDirectoryFieldValidator checks that a File field exists and is a directory. + * <!-- END SNIPPET: javadoc --> + * <p/> + * <p/> + * <!-- START SNIPPET: parameters --> + * <ul> + * <li>fieldName - The field name this validator is validating. Required if using Plain-Validator Syntax otherwise not required</li> + * </ul> + * <!-- END SNIPPET: parameters --> + * <p/> + * <p/> + * <pre> + * <!-- START SNIPPET: examples --> + * <validators> + * <!-- Plain-Validator Syntax --> + * <validator type="directoryExisting"> + * <param name="fieldName">tmp</param> + * <message>tmp is not an existing directory</message> + * </validator> + * <p/> + * <!-- Field-Validator Syntax --> + * <field name="tmp"> + * <field-validator type="directoryExisting"> + * <message>tmp is not an existing directory</message> + * </field-validator> + * </field> + * </validators> + * <!-- END SNIPPET: examples --> + * </pre> + * + * @author chemit + */ +public class ExistingDirectoryFieldValidator extends DirectoryFieldValidator { + + @Override + public void validate(Object object) throws ValidationException { + super.validate(object); + if (getValidatorContext().getFieldErrors().containsKey(getFieldName())) { + // error already detected + return; + } + String fieldName = getFieldName(); + Object value = this.getFieldValue(fieldName, object); + + File f; + if (value instanceof File) { + f = (File) value; + } else if (value instanceof String) { + f = new File((String) value); + } else { + addFieldError(fieldName, object); + return; + } + + if (!f.exists()) { + addFieldError(fieldName, object); + } + } + + @Override + public String getValidatorType() { + return "existingDirectory"; + } +} \ No newline at end of file Added: lutinjaxx/trunk/jaxx-core/src/main/java/jaxx/runtime/validator/ExistingFileFieldValidator.java =================================================================== --- lutinjaxx/trunk/jaxx-core/src/main/java/jaxx/runtime/validator/ExistingFileFieldValidator.java (rev 0) +++ lutinjaxx/trunk/jaxx-core/src/main/java/jaxx/runtime/validator/ExistingFileFieldValidator.java 2008-10-19 21:56:45 UTC (rev 979) @@ -0,0 +1,72 @@ +package jaxx.runtime.validator; + +import com.opensymphony.xwork2.validator.ValidationException; + +import java.io.File; + +/** + * <!-- START SNIPPET: javadoc --> + * ExistingFileFieldValidator checks that a File field exists. * + * <!-- END SNIPPET: javadoc --> + * <p/> + * <p/> + * <!-- START SNIPPET: parameters --> + * <ul> + * <li>fieldName - The field name this validator is validating. Required if using Plain-Validator Syntax otherwise not required</li> + * </ul> + * <!-- END SNIPPET: parameters --> + * <p/> + * <p/> + * <pre> + * <!-- START SNIPPET: examples --> + * <validators> + * <!-- Plain-Validator Syntax --> + * <validator type="fileExisting"> + * <param name="fieldName">tmp</param> + * <message>tmp is not an existing file</message> + * </validator> + * <p/> + * <!-- Field-Validator Syntax --> + * <field name="tmp"> + * <field-validator type="fileExisting"> + * <message>tmp is not an existing file</message> + * </field-validator> + * </field> + * </validators> + * <!-- END SNIPPET: examples --> + * </pre> + * + * @author chemit + */ +public class ExistingFileFieldValidator extends FileFieldValidator { + + @Override + public void validate(Object object) throws ValidationException { + super.validate(object); + if (getValidatorContext().getFieldErrors().containsKey(getFieldName())) { + // error already detected + return; + } + String fieldName = getFieldName(); + Object value = this.getFieldValue(fieldName, object); + + File f; + if (value instanceof File) { + f = (File) value; + } else if (value instanceof String) { + f = new File((String) value); + } else { + addFieldError(fieldName, object); + return; + } + + if (!f.exists()) { + addFieldError(fieldName, object); + } + } + + @Override + public String getValidatorType() { + return "existingFile"; + } +} Added: lutinjaxx/trunk/jaxx-core/src/main/java/jaxx/runtime/validator/FileFieldValidator.java =================================================================== --- lutinjaxx/trunk/jaxx-core/src/main/java/jaxx/runtime/validator/FileFieldValidator.java (rev 0) +++ lutinjaxx/trunk/jaxx-core/src/main/java/jaxx/runtime/validator/FileFieldValidator.java 2008-10-19 21:56:45 UTC (rev 979) @@ -0,0 +1,70 @@ +package jaxx.runtime.validator; + +import com.opensymphony.xwork2.validator.ValidationException; +import com.opensymphony.xwork2.validator.validators.FieldValidatorSupport; + +import java.io.File; + +/** + * <!-- START SNIPPET: javadoc --> + * ExistingFileFieldValidator checks that a File field exists. * + * <!-- END SNIPPET: javadoc --> + * <p/> + * <p/> + * <!-- START SNIPPET: parameters --> + * <ul> + * <li>fieldName - The field name this validator is validating. Required if using Plain-Validator Syntax otherwise not required</li> + * </ul> + * <!-- END SNIPPET: parameters --> + * <p/> + * <p/> + * <pre> + * <!-- START SNIPPET: examples --> + * <validators> + * <!-- Plain-Validator Syntax --> + * <validator type="fileExisting"> + * <param name="fieldName">tmp</param> + * <message>tmp is not an existing file</message> + * </validator> + * <p/> + * <!-- Field-Validator Syntax --> + * <field name="tmp"> + * <field-validator type="fileExisting"> + * <message>tmp is not an existing file</message> + * </field-validator> + * </field> + * </validators> + * <!-- END SNIPPET: examples --> + * </pre> + * + * @author chemit + */ +public class FileFieldValidator extends FieldValidatorSupport { + + public void validate(Object object) throws ValidationException { + String fieldName = getFieldName(); + Object value = this.getFieldValue(fieldName, object); + if (value == null) { + addFieldError(fieldName, object); + return; + } + File f; + if (value instanceof File) { + f = (File) value; + } else if (value instanceof String) { + f = new File((String) value); + } else { + addFieldError(fieldName, object); + return; + } + + if (!f.isFile()) { + addFieldError(fieldName, object); + } + } + + @Override + public String getValidatorType() { + return "file"; + } +} \ No newline at end of file Added: lutinjaxx/trunk/jaxx-core/src/main/resources/validators.xml =================================================================== --- lutinjaxx/trunk/jaxx-core/src/main/resources/validators.xml (rev 0) +++ lutinjaxx/trunk/jaxx-core/src/main/resources/validators.xml 2008-10-19 21:56:45 UTC (rev 979) @@ -0,0 +1,13 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE validators PUBLIC + "-//OpenSymphony Group//XWork Validator Config 1.0//EN" + "http://www.opensymphony.com/xwork/xwork-validator-config-1.0.dtd"> + +<!-- START SNIPPET: validators --> +<validators> + <validator name="file" class="jaxx.runtime.validator.FileFieldValidator"/> + <validator name="directory" class="jaxx.runtime.validator.DirectoryFieldValidator"/> + <validator name="existingFile" class="jaxx.runtime.validator.ExistingFileFieldValidator"/> + <validator name="existingDirectory" class="jaxx.runtime.validator.ExistingDirectoryFieldValidator"/> +</validators> +<!-- END SNIPPET: validators --> Modified: lutinjaxx/trunk/jaxx-example/Validation/src/main/java/examples/Validation/Identity.java =================================================================== --- lutinjaxx/trunk/jaxx-example/Validation/src/main/java/examples/Validation/Identity.java 2008-10-19 20:15:06 UTC (rev 978) +++ lutinjaxx/trunk/jaxx-example/Validation/src/main/java/examples/Validation/Identity.java 2008-10-19 21:56:45 UTC (rev 979) @@ -2,6 +2,7 @@ import java.beans.PropertyChangeListener; import java.beans.PropertyChangeSupport; +import java.io.File; public class Identity { @@ -13,7 +14,10 @@ protected int age = 51; + protected File config = new File("/tmp"); + protected File dir = new File("/tmp"); + PropertyChangeSupport p; public Identity() { @@ -53,6 +57,14 @@ return age; } + public File getConfig() { + return config; + } + + public File getDir() { + return dir; + } + public void setFirstName(String firstName) { String oldFirstName = this.firstName; this.firstName = firstName; @@ -66,7 +78,7 @@ } public void setEmail(String email) { - String oldEmail =this.email; + String oldEmail = this.email; this.email = email; p.firePropertyChange("email", oldEmail, email); } @@ -76,4 +88,16 @@ this.age = age; p.firePropertyChange("age", oldAge, age); } + + public void setConfig(File config) { + File oldConfig = this.config; + this.config = config; + p.firePropertyChange("config", oldConfig, config); + } + + public void setDir(File dir) { + File oldDir = this.dir; + this.dir = dir; + p.firePropertyChange("dir", oldDir, dir); + } } \ No newline at end of file Modified: lutinjaxx/trunk/jaxx-example/Validation/src/main/java/examples/Validation/Validation.jaxx =================================================================== --- lutinjaxx/trunk/jaxx-example/Validation/src/main/java/examples/Validation/Validation.jaxx 2008-10-19 20:15:06 UTC (rev 978) +++ lutinjaxx/trunk/jaxx-example/Validation/src/main/java/examples/Validation/Validation.jaxx 2008-10-19 21:56:45 UTC (rev 979) @@ -166,7 +166,7 @@ <row> <cell weightx='1' weighty='1' insets='6, 3, 0, 0'> <JPanel border='{BorderFactory.createTitledBorder("Identify Form")}' - layout='{new GridLayout()}' width='250' height='140'> + layout='{new GridLayout()}' width='250' height='180'> <Table anchor='west' fill='both'> <row> <cell> @@ -205,6 +205,24 @@ onStateChanged='identity.setAge(age.getValue())'/> </cell> </row> + <row> + <cell> + <JLabel text='Config file :'/> + </cell> + <cell> + <JTextField id='config' text='{identity.getConfig()}' + onKeyReleased='identity.setConfig(new java.io.File(config.getText()))'/> + </cell> + </row> + <row> + <cell> + <JLabel text='Working directory:'/> + </cell> + <cell> + <JTextField id='dir' text='{identity.getDir()}' + onKeyReleased='identity.setDir(new java.io.File(dir.getText()))'/> + </cell> + </row> </Table> </JPanel> </cell> @@ -236,7 +254,6 @@ <JLabel text='{identity.getEmail()}'/> </cell> </row> - <row> <cell> <JLabel text='Age:'/> @@ -245,6 +262,22 @@ <JLabel text='{identity.getAge()}'/> </cell> </row> + <row> + <cell> + <JLabel text='Config file:'/> + </cell> + <cell> + <JLabel text='{identity.getConfig()}'/> + </cell> + </row> + <row> + <cell> + <JLabel text='Directory file:'/> + </cell> + <cell> + <JLabel text='{identity.getDir()}'/> + </cell> + </row> </Table> </JPanel> </cell> Modified: lutinjaxx/trunk/jaxx-example/Validation/src/main/resources/examples/Validation/Identity-validation.xml =================================================================== --- lutinjaxx/trunk/jaxx-example/Validation/src/main/resources/examples/Validation/Identity-validation.xml 2008-10-19 20:15:06 UTC (rev 978) +++ lutinjaxx/trunk/jaxx-example/Validation/src/main/resources/examples/Validation/Identity-validation.xml 2008-10-19 21:56:45 UTC (rev 979) @@ -22,6 +22,24 @@ </field-validator> </field> + <field name="config"> + <field-validator type="file" short-circuit="true"> + <message>${config} is not a file.</message> + </field-validator> + <field-validator type="existingFile" short-circuit="true"> + <message>The configuration file ${config} does not exist.</message> + </field-validator> + </field> + + <field name="dir"> + <field-validator type="directory" short-circuit="true"> + <message>${dir} is not a directory.</message> + </field-validator> + <field-validator type="existingDirectory" short-circuit="true"> + <message>The directory ${dir} does not exist.</message> + </field-validator> + </field> + <field name="age"> <field-validator type="int"> <param name="min">18</param>
participants (1)
-
tchemit@users.labs.libre-entreprise.org