private EnforcerRuleDesc createRuleDesc()

in maven-enforcer-plugin/src/main/java/org/apache/maven/plugins/enforcer/internal/EnforcerRuleManager.java [133:165]


    private EnforcerRuleDesc createRuleDesc(String name, String implementation) throws EnforcerRuleManagerException {

        // component name should always start at lowercase character
        String ruleName = Character.toLowerCase(name.charAt(0)) + name.substring(1);

        if (plexusContainer.hasComponent(EnforcerRuleBase.class, ruleName)) {
            try {
                return new EnforcerRuleDesc(ruleName, plexusContainer.lookup(EnforcerRuleBase.class, ruleName));
            } catch (ComponentLookupException e) {
                throw new EnforcerRuleManagerException(e);
            }
        }

        String ruleClass;
        if (implementation != null && !implementation.isEmpty()) {
            ruleClass = implementation;
        } else {
            ruleClass = name;
        }

        if (!ruleClass.contains(".")) {
            ruleClass = "org.apache.maven.plugins.enforcer." + Character.toUpperCase(ruleClass.charAt(0))
                    + ruleClass.substring(1);
        }

        try {
            return new EnforcerRuleDesc(
                    ruleName, (EnforcerRuleBase) Class.forName(ruleClass).newInstance());
        } catch (Exception e) {
            throw new EnforcerRuleManagerException(
                    "Failed to create enforcer rules with name: " + ruleName + " or for class: " + ruleClass, e);
        }
    }