try {
Class<?> factoryClass = ClassUtil.forName(factory, HttpProtocol.class);
if(ProtocolSocketFactoryBuilder.class.isAssignableFrom(factoryClass)) {
try {
ProtocolSocketFactoryBuilder factoryBuilder = (ProtocolSocketFactoryBuilder) factoryClass.newInstance();
factoryBuilder.setConfiguration(properties);
socketFactory = factoryBuilder.newInstance();
} catch (InstantiationException e) {
throw new ConfigurationException("Failed to instantiate ProtocolSocketFactoryBuilder implementation class [" + factory + "]. Must provide a default constructor.", e);
} catch (IllegalAccessException e) {
throw new ConfigurationException("Failed to instantiate ProtocolSocketFactoryBuilder implementation class [" + factory + "]. Must provide a default constructor.", e);
}