private MojoDescriptor asDescriptor()

in maven-script/maven-plugin-tools-model/src/main/java/org/apache/maven/tools/plugin/extractor/model/PluginMetadataParser.java [86:167]


    private MojoDescriptor asDescriptor(File metadataFile, Mojo mojo) throws PluginMetadataParseException {
        MojoDescriptor descriptor = new MojoDescriptor();

        if (mojo.getCall() != null) {
            descriptor.setImplementation(IMPL_BASE_PLACEHOLDER + ":" + mojo.getCall());
        } else {
            descriptor.setImplementation(IMPL_BASE_PLACEHOLDER);
        }

        descriptor.setGoal(mojo.getGoal());
        descriptor.setPhase(mojo.getPhase());
        descriptor.setDependencyResolutionRequired(mojo.getRequiresDependencyResolution());
        descriptor.setAggregator(mojo.isAggregator());
        descriptor.setInheritedByDefault(mojo.isInheritByDefault());
        descriptor.setDirectInvocationOnly(mojo.isRequiresDirectInvocation());
        descriptor.setOnlineRequired(mojo.isRequiresOnline());
        descriptor.setProjectRequired(mojo.isRequiresProject());
        descriptor.setRequiresReports(mojo.isRequiresReports());
        descriptor.setDescription(mojo.getDescription());
        descriptor.setDeprecated(mojo.getDeprecation());
        descriptor.setSince(mojo.getSince());

        LifecycleExecution le = mojo.getExecution();
        if (le != null) {
            descriptor.setExecuteLifecycle(le.getLifecycle());
            descriptor.setExecutePhase(le.getPhase());
            descriptor.setExecuteGoal(le.getGoal());
        }

        List<org.apache.maven.tools.plugin.extractor.model.Parameter> parameters = mojo.getParameters();

        if (parameters != null && !parameters.isEmpty()) {
            for (org.apache.maven.tools.plugin.extractor.model.Parameter param : parameters) {
                Parameter dParam = new Parameter();
                dParam.setAlias(param.getAlias());
                dParam.setDeprecated(param.getDeprecation());
                dParam.setDescription(param.getDescription());
                dParam.setEditable(!param.isReadonly());
                dParam.setExpression(param.getExpression());
                dParam.setDefaultValue(param.getDefaultValue());
                dParam.setSince(param.getSince());

                String property = param.getProperty();
                if (property != null && !property.isEmpty()) {
                    dParam.setName(property);
                } else {
                    dParam.setName(param.getName());
                }

                if (StringUtils.isEmpty(dParam.getName())) {
                    throw new PluginMetadataParseException(
                            metadataFile,
                            "Mojo: \'" + mojo.getGoal()
                                    + "\' has a parameter without either property or name attributes. Please specify one.");
                }

                dParam.setRequired(param.isRequired());
                dParam.setType(param.getType());

                try {
                    descriptor.addParameter(dParam);
                } catch (DuplicateParameterException e) {
                    throw new PluginMetadataParseException(
                            metadataFile, "Duplicate parameters detected for mojo: " + mojo.getGoal(), e);
                }
            }
        }

        List<Component> components = mojo.getComponents();

        if (components != null && !components.isEmpty()) {
            for (Component component : components) {
                ComponentRequirement cr = new ComponentRequirement();
                cr.setRole(component.getRole());
                cr.setRoleHint(component.getHint());

                descriptor.addRequirement(cr);
            }
        }

        return descriptor;
    }