Search in sources :

Example 46 with Validator

use of com.opensymphony.xwork2.validator.Validator in project gretl by sogis.

the class IliValidator method validate.

@TaskAction
public void validate() {
    log = LogEnvironment.getLogger(IliValidator.class);
    if (dataFiles == null) {
        return;
    }
    FileCollection dataFilesCollection = null;
    if (dataFiles instanceof FileCollection) {
        dataFilesCollection = (FileCollection) dataFiles;
    } else {
        dataFilesCollection = getProject().files(dataFiles);
    }
    if (dataFilesCollection == null || dataFilesCollection.isEmpty()) {
        return;
    }
    List<String> files = new ArrayList<String>();
    for (java.io.File fileObj : dataFilesCollection) {
        String fileName = fileObj.getPath();
        files.add(fileName);
    }
    Settings settings = new Settings();
    initSettings(settings);
    List<String> userFunctionList = new ArrayList<String>();
    userFunctionList.add("ch.so.agi.ilivalidator.ext.IsHttpResourceIoxPlugin");
    userFunctionList.add("ch.so.agi.ilivalidator.ext.AreaIoxPlugin");
    userFunctionList.add("ch.so.agi.ilivalidator.ext.LengthIoxPlugin");
    userFunctionList.add("ch.so.agi.ilivalidator.ext.IsValidDocumentsCycleIoxPlugin");
    userFunctionList.add("ch.so.agi.ilivalidator.ext.RingSelfIntersectionIoxPlugin");
    userFunctionList.add("ch.so.agi.ilivalidator.ext.TooFewPointsPolylineIoxPlugin");
    // userFunctionList.add("ch.so.agi.ilivalidator.ext.IsHttpResourceFromOerebMultilingualUriIoxPlugin");
    Map<String, Class> userFunctions = new HashMap<String, Class>();
    try {
        for (String userFunction : userFunctionList) {
            Class clazz = Class.forName(userFunction);
            IoxPlugin plugin = (IoxPlugin) clazz.newInstance();
            userFunctions.put(((InterlisFunction) plugin).getQualifiedIliName(), clazz);
        }
    } catch (ClassNotFoundException e) {
        e.printStackTrace();
        log.info("Class not found");
    } catch (InstantiationException e) {
        e.printStackTrace();
        log.error("cannot instantiate class", e);
    } catch (IllegalAccessException e) {
        e.printStackTrace();
        log.error("Class not accessible", e);
    }
    settings.setTransientObject(ch.interlis.iox_j.validator.Validator.CONFIG_CUSTOM_FUNCTIONS, userFunctions);
    validationOk = new Validator().validate(files.toArray(new String[files.size()]), settings);
    if (!validationOk && failOnError) {
        throw new TaskExecutionException(this, new Exception("validation failed"));
    }
}
Also used : HashMap(java.util.HashMap) ArrayList(java.util.ArrayList) FileCollection(org.gradle.api.file.FileCollection) TaskExecutionException(org.gradle.api.tasks.TaskExecutionException) TaskExecutionException(org.gradle.api.tasks.TaskExecutionException) IoxPlugin(ch.interlis.iox_j.plugins.IoxPlugin) Settings(ch.ehi.basics.settings.Settings) Validator(org.interlis2.validator.Validator) TaskAction(org.gradle.api.tasks.TaskAction)

Example 47 with Validator

use of com.opensymphony.xwork2.validator.Validator in project struts by apache.

the class ShowValidatorAction method execute.

public String execute() throws Exception {
    loadValidators();
    Validator validator = getSelectedValidator();
    properties = new TreeSet<PropertyInfo>();
    try {
        Map<String, Object> context = reflectionContextFactory.createDefaultContext(validator);
        BeanInfo beanInfoFrom;
        try {
            beanInfoFrom = Introspector.getBeanInfo(validator.getClass(), Object.class);
        } catch (IntrospectionException e) {
            LOG.error("An error occurred", e);
            addActionError("An error occurred while introspecting a validator of type " + validator.getClass().getName());
            return ERROR;
        }
        PropertyDescriptor[] pds = beanInfoFrom.getPropertyDescriptors();
        for (PropertyDescriptor pd : pds) {
            String name = pd.getName();
            Object value = null;
            if (pd.getReadMethod() == null) {
                value = "No read method for property";
            } else {
                try {
                    value = reflectionProvider.getValue(name, context, validator);
                } catch (ReflectionException e) {
                    addActionError("Caught exception while getting property value for '" + name + "' on validator of type " + validator.getClass().getName());
                }
            }
            properties.add(new PropertyInfo(name, pd.getPropertyType(), value));
        }
    } catch (Exception e) {
        if (LOG.isWarnEnabled()) {
            LOG.warn("Unable to retrieve properties.", e);
        }
        addActionError("Unable to retrieve properties: " + e.toString());
    }
    if (hasErrors()) {
        return ERROR;
    } else {
        return SUCCESS;
    }
}
Also used : ReflectionException(com.opensymphony.xwork2.util.reflection.ReflectionException) PropertyDescriptor(java.beans.PropertyDescriptor) BeanInfo(java.beans.BeanInfo) IntrospectionException(java.beans.IntrospectionException) Validator(com.opensymphony.xwork2.validator.Validator) IntrospectionException(java.beans.IntrospectionException) ReflectionException(com.opensymphony.xwork2.util.reflection.ReflectionException)

Example 48 with Validator

use of com.opensymphony.xwork2.validator.Validator in project struts by apache.

the class SpringObjectFactoryTest method testObtainValidatorBySpringName.

public void testObtainValidatorBySpringName() throws Exception {
    sac.registerPrototype("expression-validator", ExpressionValidator.class, new MutablePropertyValues());
    Map<String, Object> extraContext = new HashMap<>();
    Validator validator = objectFactory.buildValidator("expression-validator", new HashMap<String, Object>(), extraContext);
    assertEquals(ExpressionValidator.class, validator.getClass());
}
Also used : HashMap(java.util.HashMap) MutablePropertyValues(org.springframework.beans.MutablePropertyValues) Validator(com.opensymphony.xwork2.validator.Validator) RequiredStringValidator(com.opensymphony.xwork2.validator.validators.RequiredStringValidator) ExpressionValidator(com.opensymphony.xwork2.validator.validators.ExpressionValidator)

Example 49 with Validator

use of com.opensymphony.xwork2.validator.Validator in project struts by apache.

the class DefaultValidatorFactory method buildValidator.

public Validator buildValidator(String className, Map<String, Object> params, Map<String, Object> extraContext) throws Exception {
    Validator validator = (Validator) objectFactory.buildBean(className, extraContext);
    reflectionProvider.setProperties(params, validator, extraContext);
    return validator;
}
Also used : Validator(com.opensymphony.xwork2.validator.Validator)

Example 50 with Validator

use of com.opensymphony.xwork2.validator.Validator in project struts by apache.

the class ActionValidatorManagerTest method testValidate.

public void testValidate() throws Exception {
    /* MockAction.class */
    // reference number
    ValueStack stack = container.getInstance(ValueStackFactory.class).createValueStack();
    final RequiredStringValidator referenceNumberRequiredStringValidator = container.inject(RequiredStringValidator.class);
    referenceNumberRequiredStringValidator.setFieldName("referenceNumber");
    referenceNumberRequiredStringValidator.setDefaultMessage("Reference number is required");
    referenceNumberRequiredStringValidator.setValueStack(stack);
    // order
    final RequiredFieldValidator orderRequiredValidator = container.inject(RequiredFieldValidator.class);
    orderRequiredValidator.setFieldName("order");
    orderRequiredValidator.setDefaultMessage("Order is required");
    orderRequiredValidator.setValueStack(stack);
    // customer
    final RequiredFieldValidator customerRequiredValidator = container.inject(RequiredFieldValidator.class);
    customerRequiredValidator.setFieldName("customer");
    customerRequiredValidator.setDefaultMessage("Customer is required");
    customerRequiredValidator.setValueStack(stack);
    final VisitorFieldValidator customerVisitorValidator = container.inject(VisitorFieldValidator.class);
    customerVisitorValidator.setAppendPrefix(true);
    customerVisitorValidator.setFieldName("customer");
    customerVisitorValidator.setValueStack(stack);
    /* Customer.class */
    // customer -> name
    final RequiredStringValidator customerNameRequiredStringValidator = container.inject(RequiredStringValidator.class);
    customerNameRequiredStringValidator.setFieldName("name");
    customerNameRequiredStringValidator.setDefaultMessage("Name is required");
    customerNameRequiredStringValidator.setValueStack(stack);
    // customer -> age
    final RequiredFieldValidator customerAgeRequiredValidator = container.inject(RequiredFieldValidator.class);
    customerAgeRequiredValidator.setFieldName("age");
    customerAgeRequiredValidator.setDefaultMessage("Age is required");
    customerAgeRequiredValidator.setValueStack(stack);
    // customer -> Address
    final RequiredFieldValidator customerAddressRequiredFieldValidator = container.inject(RequiredFieldValidator.class);
    customerAddressRequiredFieldValidator.setFieldName("address");
    customerAddressRequiredFieldValidator.setDefaultMessage("Address is required");
    customerAddressRequiredFieldValidator.setValueStack(stack);
    final VisitorFieldValidator customerAddressVisitorFieldValidator = container.inject(VisitorFieldValidator.class);
    customerAddressVisitorFieldValidator.setFieldName("address");
    customerAddressVisitorFieldValidator.setAppendPrefix(true);
    // customerAddressVisitorFieldValidator.setDefaultMessage("");
    customerAddressVisitorFieldValidator.setValueStack(stack);
    /* Address.class */
    // customer -> Address -> street
    final RequiredStringValidator customerAddressStreetRequiredFieldValidator = container.inject(RequiredStringValidator.class);
    customerAddressStreetRequiredFieldValidator.setFieldName("street");
    customerAddressStreetRequiredFieldValidator.setDefaultMessage("Street is required");
    customerAddressStreetRequiredFieldValidator.setShortCircuit(true);
    customerAddressStreetRequiredFieldValidator.setValueStack(stack);
    final RequiredStringValidator customerAddressStreetRequiredFieldValidator2 = container.inject(RequiredStringValidator.class);
    customerAddressStreetRequiredFieldValidator2.setFieldName("street");
    customerAddressStreetRequiredFieldValidator2.setDefaultMessage("Street is required 2");
    customerAddressStreetRequiredFieldValidator2.setShortCircuit(true);
    customerAddressStreetRequiredFieldValidator2.setValueStack(stack);
    // customer -> Address -> pobox
    final RequiredStringValidator customerAddressPoboxRequiredFieldValidator = container.inject(RequiredStringValidator.class);
    customerAddressPoboxRequiredFieldValidator.setFieldName("pobox");
    customerAddressPoboxRequiredFieldValidator.setDefaultMessage("PO Box is required");
    customerAddressPoboxRequiredFieldValidator.setShortCircuit(false);
    customerAddressPoboxRequiredFieldValidator.setValueStack(stack);
    final RequiredStringValidator customerAddressPoboxRequiredFieldValidator2 = container.inject(RequiredStringValidator.class);
    customerAddressPoboxRequiredFieldValidator2.setFieldName("pobox");
    customerAddressPoboxRequiredFieldValidator2.setDefaultMessage("PO Box is required 2");
    customerAddressPoboxRequiredFieldValidator2.setShortCircuit(false);
    customerAddressPoboxRequiredFieldValidator2.setValueStack(stack);
    final List<Validator> validatorsForMockAction = new ArrayList<Validator>() {

        {
            add(referenceNumberRequiredStringValidator);
            add(orderRequiredValidator);
            add(customerRequiredValidator);
            add(customerVisitorValidator);
        }
    };
    final List<Validator> validatorsForCustomer = new ArrayList<Validator>() {

        {
            add(customerNameRequiredStringValidator);
            add(customerAgeRequiredValidator);
            add(customerAddressRequiredFieldValidator);
            add(customerAddressVisitorFieldValidator);
        }
    };
    final List<Validator> validatorsForAddress = new ArrayList<Validator>() {

        {
            add(customerAddressStreetRequiredFieldValidator);
            add(customerAddressStreetRequiredFieldValidator2);
            add(customerAddressPoboxRequiredFieldValidator);
            add(customerAddressPoboxRequiredFieldValidator2);
        }
    };
    DefaultActionValidatorManager validatorManager = new DefaultActionValidatorManager() {

        @Override
        public List<Validator> getValidators(Class clazz, String context, String method) {
            if (clazz.isAssignableFrom(MockAction.class)) {
                return validatorsForMockAction;
            } else if (clazz.isAssignableFrom(Customer.class)) {
                return validatorsForCustomer;
            } else if (clazz.isAssignableFrom(Address.class)) {
                return validatorsForAddress;
            }
            return Collections.emptyList();
        }
    };
    container.inject(validatorManager);
    customerVisitorValidator.setActionValidatorManager(validatorManager);
    customerAddressVisitorFieldValidator.setActionValidatorManager(validatorManager);
    MockAction action = container.inject(MockAction.class);
    stack.push(action);
    validatorManager.validate(action, "ctx");
    assertFalse(action.hasActionErrors());
    assertFalse(action.hasActionMessages());
    assertTrue(action.hasFieldErrors());
    assertTrue(action.getFieldErrors().containsKey("referenceNumber"));
    assertEquals((action.getFieldErrors().get("referenceNumber")).size(), 1);
    assertTrue(action.getFieldErrors().containsKey("order"));
    assertEquals((action.getFieldErrors().get("order")).size(), 1);
    assertTrue(action.getFieldErrors().containsKey("customer.name"));
    assertEquals((action.getFieldErrors().get("customer.name")).size(), 1);
    assertTrue(action.getFieldErrors().containsKey("customer.age"));
    assertEquals((action.getFieldErrors().get("customer.age")).size(), 1);
    assertTrue(action.getFieldErrors().containsKey("customer.address.street"));
    assertEquals((action.getFieldErrors().get("customer.address.street")).size(), 1);
    assertTrue(action.getFieldErrors().containsKey("customer.address.pobox"));
    assertEquals((action.getFieldErrors().get("customer.address.pobox")).size(), 2);
}
Also used : ValueStack(com.opensymphony.xwork2.util.ValueStack) VisitorFieldValidator(com.opensymphony.xwork2.validator.validators.VisitorFieldValidator) ValueStackFactory(com.opensymphony.xwork2.util.ValueStackFactory) ArrayList(java.util.ArrayList) RequiredStringValidator(com.opensymphony.xwork2.validator.validators.RequiredStringValidator) RequiredFieldValidator(com.opensymphony.xwork2.validator.validators.RequiredFieldValidator) VisitorFieldValidator(com.opensymphony.xwork2.validator.validators.VisitorFieldValidator) RequiredStringValidator(com.opensymphony.xwork2.validator.validators.RequiredStringValidator) RequiredFieldValidator(com.opensymphony.xwork2.validator.validators.RequiredFieldValidator)

Aggregations

ValueStack (com.opensymphony.xwork2.util.ValueStack)19 DummyValidatorContext (com.opensymphony.xwork2.validator.DummyValidatorContext)18 ValidatorContext (com.opensymphony.xwork2.validator.ValidatorContext)18 URLValidator (com.opensymphony.xwork2.validator.validators.URLValidator)16 RegexFieldValidator (com.opensymphony.xwork2.validator.validators.RegexFieldValidator)12 EmailValidator (com.opensymphony.xwork2.validator.validators.EmailValidator)9 ValueStackFactory (com.opensymphony.xwork2.util.ValueStackFactory)7 RequiredStringValidator (com.opensymphony.xwork2.validator.validators.RequiredStringValidator)6 HashMap (java.util.HashMap)6 ActionSupport (com.opensymphony.xwork2.ActionSupport)5 Validator (com.opensymphony.xwork2.validator.Validator)5 ExpressionValidator (com.opensymphony.xwork2.validator.validators.ExpressionValidator)5 VisitorFieldValidator (com.opensymphony.xwork2.validator.validators.VisitorFieldValidator)5 ConfigurationException (com.opensymphony.xwork2.config.ConfigurationException)4 RequiredFieldValidator (com.opensymphony.xwork2.validator.validators.RequiredFieldValidator)4 StringLengthFieldValidator (com.opensymphony.xwork2.validator.validators.StringLengthFieldValidator)4 TextProviderFactory (com.opensymphony.xwork2.TextProviderFactory)3 ConversionErrorFieldValidator (com.opensymphony.xwork2.validator.validators.ConversionErrorFieldValidator)3 DateRangeFieldValidator (com.opensymphony.xwork2.validator.validators.DateRangeFieldValidator)3 DoubleRangeFieldValidator (com.opensymphony.xwork2.validator.validators.DoubleRangeFieldValidator)3