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"));
}
}
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;
}
}
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());
}
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;
}
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);
}
Aggregations