private void addBuilderImpl()

in apache-rat-core/src/main/java/org/apache/rat/configuration/MatcherBuilderTracker.java [102:131]


    private void addBuilderImpl(final String className, final String name) {
        Objects.requireNonNull(className, "className may not be null");
        Class<?> clazz;
        try {
            clazz = getClass().getClassLoader().loadClass(className);
        } catch (ClassNotFoundException e) {
            throw new ConfigurationException(e);
        }
        if (AbstractBuilder.class.isAssignableFrom(clazz)) {
            @SuppressWarnings("unchecked")
            Class<? extends AbstractBuilder> candidate = (Class<? extends AbstractBuilder>) clazz;
            String workingName = name;
            if (StringUtils.isBlank(workingName)) {
                workingName = candidate.getSimpleName();
                if (!workingName.endsWith("Builder")) {
                    throw new ConfigurationException(
                            "name is required, or " + candidate.getName() + " must end with 'Builder'");
                }
                workingName = workingName.substring(0, workingName.lastIndexOf("Builder"));
                if (StringUtils.isBlank(workingName)) {
                    throw new ConfigurationException("Last segment of " + candidate.getName()
                            + " may not be 'Builder', but must end in 'Builder'");
                }
                workingName = WordUtils.uncapitalize(workingName);
            }
            matcherBuilders.put(workingName, candidate);
        } else {
            throw new ConfigurationException("Class " + clazz.getName() + " does not extend " + AbstractBuilder.class);
        }
    }