private Class getBuilderClass()

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());
        }
    }