in chill-java/src/main/java/com/twitter/chill/config/ReflectingInstantiator.java [188:228]
protected List<? extends IKryoRegistrar> buildRegistrars(String base, boolean isAddDefault)
throws ConfigurationException {
List<IKryoRegistrar> builder = new ArrayList<IKryoRegistrar>();
if (base == null)
return builder;
for (String s: base.split(":")) {
String[] pair = s.split(",");
try {
switch (pair.length) {
case 1:
if(isAddDefault) { throw new ConfigurationException("default serializers require class and serializer: " + base); }
builder.add(new ClassRegistrar(Class.forName(pair[0], true, Thread.currentThread().getContextClassLoader())));
break;
case 2:
@SuppressWarnings("unchecked")
Class kls = Class.forName(pair[0], true, Thread.currentThread().getContextClassLoader());
Class<? extends Serializer> serializerClass = (Class<? extends Serializer>) Class.forName(pair[1],
true, Thread.currentThread().getContextClassLoader());
if(isAddDefault) {
builder.add(new ReflectingDefaultRegistrar(kls, serializerClass));
}
else {
builder.add(new ReflectingRegistrar(kls, serializerClass));
}
break;
default:
throw new ConfigurationException(base + " is not well-formed.");
}
} catch (ClassNotFoundException e) {
if (skipMissing) {
System.err.println("Could not find serialization or class for " + pair[1]
+ ". Skipping registration.");
} else {
throw new ConfigurationException(e);
}
}
}
return builder;
}