/**
*
*/
package org.jentrata.validation;
import hk.hku.cecid.piazza.commons.module.Component;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
/**
* @author aaronwalker
*
*/
public class ValidatorComponent extends Component {
public static final String COMP_ID = "payloadValidator";
private Map<String,Validator> validators;
@Override
protected void init() throws Exception {
validators = new HashMap<String, Validator>();
}
public void registerDefault(String cpaId, Class<? extends Validator> c, Properties config) {
Validator v = instance(c,config);
validators.put(cpaId, v); //register the default validator for the cpaId
}
public void register(String cpaId,String contentType, Class<? extends Validator> c, Properties config) {
Validator v = instance(c,config);
validators.put(cpaId + ":" + contentType,v);
}
public Validator getDefaultValidator(String cpaId) {
return validators.get(cpaId);
}
public Validator getValidator(String cpaId, String contentType) {
Validator v = validators.get(cpaId + ":" + contentType);
if(v == null) {
return getDefaultValidator(cpaId);
}
return v;
}
protected Validator instance(Class<? extends Validator> c, Properties props) {
if(c != null) {
try {
Validator v = c.newInstance();
v.init(props);
return v;
} catch (Exception e) {
throw new RuntimeException(e);
}
}
return null;
}
}