in src/main/java/org/apache/sling/testing/junit/rules/instance/AbstractInstance.java [70:96]
private Class getBuilderClass(Class clientClass) {
// If the passed class is not a client, nothing to do;
if (!SlingClient.class.isAssignableFrom(clientClass)) {
return null;
}
// If it's SlingClient, just return the builder
if (clientClass == SlingClient.class) {
return SlingClient.Builder.class;
}
// First class that is not abstract and extends SlingClient.InternalBuilder is our builder
for (Class clazz : clientClass.getDeclaredClasses()) {
if (SlingClient.InternalBuilder.class.isAssignableFrom(clazz)
&& !Modifier.isAbstract(clazz.getModifiers())) {
return clazz;
}
}
// Not declared on this class, looking at the parent
if (null == clientClass.getSuperclass()) {
return null;
} else {
return getBuilderClass(clientClass.getSuperclass());
}
}