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; }