package org.rosenvold.spring.convention.testclasses;
import org.rosenvold.spring.convention.CandidateEvaluator;
import org.rosenvold.spring.convention.NameToClassResolver;
/**
* @author Kristian Rosenvold
*/
public class TestBeanClassResolver implements NameToClassResolver {
public Class resolveBean(String name, final CandidateEvaluator candidateEvaluator) {
final Class aClass = resolveClass(name);
if (aClass != null && aClass.isInterface()) {
String target = "Default" + aClass.getSimpleName();
final Class enclosingClass = aClass.getEnclosingClass();
final String ifName = (enclosingClass != null)
? enclosingClass.getName() + "$" + target
: aClass.getPackage().getName() + "." + target;
return resolveClass(ifName);
}
return aClass;
}
private Class resolveClass(final String beanName) {
try {
return Class.forName(beanName);
} catch (ClassNotFoundException ex) {
return null;
}
}
}