package com.brightgenerous.injection;
import com.brightgenerous.cglib.CglibUtils;
public abstract class GenerateImplResolver implements ImplResolver {
private static final long serialVersionUID = -3882972724203907781L;
@Override
public <T> Class<? extends T> getImplClass(Class<T> clazz) {
String name = getImplName(clazz);
{
Class<?> clz = null;
try {
clz = Class.forName(name);
} catch (ClassNotFoundException e) {
}
if (clz != null) {
if (!clazz.isAssignableFrom(clz)) {
throw new IllegalStateException(String.format("%s is not assignable from %s.",
clazz, clz));
}
return (Class<? extends T>) clz;
}
}
return (Class<T>) CglibUtils.defineInterface(name, clazz);
}
protected abstract String getImplName(Class<?> clazz);
}