public static <T,V,E,C extends ConfigValidator<T,E>> Configuration<String>
buildValidatingSelfBuildingConfig(
Configuration<T> serviceConfig,
C validator,
Adapter<ValidatedConfig<T,C>,V> serviceFactory){
if(serviceConfig == null
|| validator == null || serviceFactory == null){
throw new NullPointerException();
}
DefaultConfiguration<String> conf = new DefaultConfiguration<String>();
conf.addProperty(Configuration.class,
CONF_SERVICE_CONFIG, serviceConfig);
conf.addProperty(ConfigValidator.class,
CONF_CONFIG_VALIDATOR, validator);
conf.addProperty(Adapter.class,
CONF_SERVICE_FACTORY, serviceFactory);
conf.addProperty(Adapter.class,
CONF_SELF_BUILD_FACTORY, new ValidatingSelfBuilder<T, E>());
return conf;
}