diff options
Diffstat (limited to 'framework/src/maven/apache-maven-3.3.3/maven-plugin-api/src/main/java/org/apache/maven/plugin/descriptor/PluginDescriptorBuilder.java')
-rw-r--r-- | framework/src/maven/apache-maven-3.3.3/maven-plugin-api/src/main/java/org/apache/maven/plugin/descriptor/PluginDescriptorBuilder.java | 358 |
1 files changed, 358 insertions, 0 deletions
diff --git a/framework/src/maven/apache-maven-3.3.3/maven-plugin-api/src/main/java/org/apache/maven/plugin/descriptor/PluginDescriptorBuilder.java b/framework/src/maven/apache-maven-3.3.3/maven-plugin-api/src/main/java/org/apache/maven/plugin/descriptor/PluginDescriptorBuilder.java new file mode 100644 index 00000000..66b16916 --- /dev/null +++ b/framework/src/maven/apache-maven-3.3.3/maven-plugin-api/src/main/java/org/apache/maven/plugin/descriptor/PluginDescriptorBuilder.java @@ -0,0 +1,358 @@ +package org.apache.maven.plugin.descriptor; + +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import java.io.IOException; +import java.io.Reader; +import java.util.ArrayList; +import java.util.List; + +import org.codehaus.plexus.component.repository.ComponentDependency; +import org.codehaus.plexus.component.repository.ComponentRequirement; +import org.codehaus.plexus.configuration.PlexusConfiguration; +import org.codehaus.plexus.configuration.PlexusConfigurationException; +import org.codehaus.plexus.configuration.xml.XmlPlexusConfiguration; +import org.codehaus.plexus.util.xml.Xpp3DomBuilder; +import org.codehaus.plexus.util.xml.pull.XmlPullParserException; + +/** + * @author Jason van Zyl + */ +public class PluginDescriptorBuilder +{ + public PluginDescriptor build( Reader reader ) + throws PlexusConfigurationException + { + return build( reader, null ); + } + + public PluginDescriptor build( Reader reader, String source ) + throws PlexusConfigurationException + { + PlexusConfiguration c = buildConfiguration( reader ); + + PluginDescriptor pluginDescriptor = new PluginDescriptor(); + + pluginDescriptor.setSource( source ); + pluginDescriptor.setGroupId( c.getChild( "groupId" ).getValue() ); + pluginDescriptor.setArtifactId( c.getChild( "artifactId" ).getValue() ); + pluginDescriptor.setVersion( c.getChild( "version" ).getValue() ); + pluginDescriptor.setGoalPrefix( c.getChild( "goalPrefix" ).getValue() ); + + pluginDescriptor.setName( c.getChild( "name" ).getValue() ); + pluginDescriptor.setDescription( c.getChild( "description" ).getValue() ); + + String isolatedRealm = c.getChild( "isolatedRealm" ).getValue(); + + if ( isolatedRealm != null ) + { + pluginDescriptor.setIsolatedRealm( Boolean.parseBoolean( isolatedRealm ) ); + } + + String inheritedByDefault = c.getChild( "inheritedByDefault" ).getValue(); + + if ( inheritedByDefault != null ) + { + pluginDescriptor.setInheritedByDefault( Boolean.parseBoolean( inheritedByDefault ) ); + } + + // ---------------------------------------------------------------------- + // Components + // ---------------------------------------------------------------------- + + PlexusConfiguration[] mojoConfigurations = c.getChild( "mojos" ).getChildren( "mojo" ); + + for ( PlexusConfiguration component : mojoConfigurations ) + { + MojoDescriptor mojoDescriptor = buildComponentDescriptor( component, pluginDescriptor ); + + pluginDescriptor.addMojo( mojoDescriptor ); + } + + // ---------------------------------------------------------------------- + // Dependencies + // ---------------------------------------------------------------------- + + PlexusConfiguration[] dependencyConfigurations = c.getChild( "dependencies" ).getChildren( "dependency" ); + + List<ComponentDependency> dependencies = new ArrayList<ComponentDependency>(); + + for ( PlexusConfiguration d : dependencyConfigurations ) + { + ComponentDependency cd = new ComponentDependency(); + + cd.setArtifactId( d.getChild( "artifactId" ).getValue() ); + + cd.setGroupId( d.getChild( "groupId" ).getValue() ); + + cd.setType( d.getChild( "type" ).getValue() ); + + cd.setVersion( d.getChild( "version" ).getValue() ); + + dependencies.add( cd ); + } + + pluginDescriptor.setDependencies( dependencies ); + + return pluginDescriptor; + } + + public MojoDescriptor buildComponentDescriptor( PlexusConfiguration c, PluginDescriptor pluginDescriptor ) + throws PlexusConfigurationException + { + MojoDescriptor mojo = new MojoDescriptor(); + mojo.setPluginDescriptor( pluginDescriptor ); + + mojo.setGoal( c.getChild( "goal" ).getValue() ); + + mojo.setImplementation( c.getChild( "implementation" ).getValue() ); + + PlexusConfiguration langConfig = c.getChild( "language" ); + + if ( langConfig != null ) + { + mojo.setLanguage( langConfig.getValue() ); + } + + PlexusConfiguration configuratorConfig = c.getChild( "configurator" ); + + if ( configuratorConfig != null ) + { + mojo.setComponentConfigurator( configuratorConfig.getValue() ); + } + + PlexusConfiguration composerConfig = c.getChild( "composer" ); + + if ( composerConfig != null ) + { + mojo.setComponentComposer( composerConfig.getValue() ); + } + + String since = c.getChild( "since" ).getValue(); + + if ( since != null ) + { + mojo.setSince( since ); + } + + PlexusConfiguration deprecated = c.getChild( "deprecated", false ); + + if ( deprecated != null ) + { + mojo.setDeprecated( deprecated.getValue() ); + } + + String phase = c.getChild( "phase" ).getValue(); + + if ( phase != null ) + { + mojo.setPhase( phase ); + } + + String executePhase = c.getChild( "executePhase" ).getValue(); + + if ( executePhase != null ) + { + mojo.setExecutePhase( executePhase ); + } + + String executeMojo = c.getChild( "executeGoal" ).getValue(); + + if ( executeMojo != null ) + { + mojo.setExecuteGoal( executeMojo ); + } + + String executeLifecycle = c.getChild( "executeLifecycle" ).getValue(); + + if ( executeLifecycle != null ) + { + mojo.setExecuteLifecycle( executeLifecycle ); + } + + mojo.setInstantiationStrategy( c.getChild( "instantiationStrategy" ).getValue() ); + + mojo.setDescription( c.getChild( "description" ).getValue() ); + + PlexusConfiguration dependencyResolution = c.getChild( "requiresDependencyResolution", false ); + + if ( dependencyResolution != null ) + { + mojo.setDependencyResolutionRequired( dependencyResolution.getValue() ); + } + + PlexusConfiguration dependencyCollection = c.getChild( "requiresDependencyCollection", false ); + + if ( dependencyCollection != null ) + { + mojo.setDependencyCollectionRequired( dependencyCollection.getValue() ); + } + + String directInvocationOnly = c.getChild( "requiresDirectInvocation" ).getValue(); + + if ( directInvocationOnly != null ) + { + mojo.setDirectInvocationOnly( Boolean.parseBoolean( directInvocationOnly ) ); + } + + String requiresProject = c.getChild( "requiresProject" ).getValue(); + + if ( requiresProject != null ) + { + mojo.setProjectRequired( Boolean.parseBoolean( requiresProject ) ); + } + + String requiresReports = c.getChild( "requiresReports" ).getValue(); + + if ( requiresReports != null ) + { + mojo.setRequiresReports( Boolean.parseBoolean( requiresReports ) ); + } + + String aggregator = c.getChild( "aggregator" ).getValue(); + + if ( aggregator != null ) + { + mojo.setAggregator( Boolean.parseBoolean( aggregator ) ); + } + + String requiresOnline = c.getChild( "requiresOnline" ).getValue(); + + if ( requiresOnline != null ) + { + mojo.setOnlineRequired( Boolean.parseBoolean( requiresOnline ) ); + } + + String inheritedByDefault = c.getChild( "inheritedByDefault" ).getValue(); + + if ( inheritedByDefault != null ) + { + mojo.setInheritedByDefault( Boolean.parseBoolean( inheritedByDefault ) ); + } + + String threadSafe = c.getChild( "threadSafe" ).getValue(); + + if ( threadSafe != null ) + { + mojo.setThreadSafe( Boolean.parseBoolean( threadSafe ) ); + } + + // ---------------------------------------------------------------------- + // Configuration + // ---------------------------------------------------------------------- + + PlexusConfiguration mojoConfig = c.getChild( "configuration" ); + mojo.setMojoConfiguration( mojoConfig ); + + // ---------------------------------------------------------------------- + // Parameters + // ---------------------------------------------------------------------- + + PlexusConfiguration[] parameterConfigurations = c.getChild( "parameters" ).getChildren( "parameter" ); + + List<Parameter> parameters = new ArrayList<Parameter>(); + + for ( PlexusConfiguration d : parameterConfigurations ) + { + Parameter parameter = new Parameter(); + + parameter.setName( d.getChild( "name" ).getValue() ); + + parameter.setAlias( d.getChild( "alias" ).getValue() ); + + parameter.setType( d.getChild( "type" ).getValue() ); + + String required = d.getChild( "required" ).getValue(); + + parameter.setRequired( Boolean.parseBoolean( required ) ); + + PlexusConfiguration editableConfig = d.getChild( "editable" ); + + // we need the null check for pre-build legacy plugins... + if ( editableConfig != null ) + { + String editable = d.getChild( "editable" ).getValue(); + + parameter.setEditable( editable == null || Boolean.parseBoolean( editable ) ); + } + + parameter.setDescription( d.getChild( "description" ).getValue() ); + + parameter.setDeprecated( d.getChild( "deprecated" ).getValue() ); + + parameter.setImplementation( d.getChild( "implementation" ).getValue() ); + + PlexusConfiguration paramConfig = mojoConfig.getChild( parameter.getName(), false ); + if ( paramConfig != null ) + { + parameter.setExpression( paramConfig.getValue( null ) ); + parameter.setDefaultValue( paramConfig.getAttribute( "default-value" ) ); + } + + parameters.add( parameter ); + } + + mojo.setParameters( parameters ); + + // TODO: this should not need to be handed off... + + // ---------------------------------------------------------------------- + // Requirements + // ---------------------------------------------------------------------- + + PlexusConfiguration[] requirements = c.getChild( "requirements" ).getChildren( "requirement" ); + + for ( PlexusConfiguration requirement : requirements ) + { + ComponentRequirement cr = new ComponentRequirement(); + + cr.setRole( requirement.getChild( "role" ).getValue() ); + + cr.setRoleHint( requirement.getChild( "role-hint" ).getValue() ); + + cr.setFieldName( requirement.getChild( "field-name" ).getValue() ); + + mojo.addRequirement( cr ); + } + + return mojo; + } + + // ---------------------------------------------------------------------- + // + // ---------------------------------------------------------------------- + + public PlexusConfiguration buildConfiguration( Reader configuration ) + throws PlexusConfigurationException + { + try + { + return new XmlPlexusConfiguration( Xpp3DomBuilder.build( configuration ) ); + } + catch ( IOException e ) + { + throw new PlexusConfigurationException( e.getMessage(), e ); + } + catch ( XmlPullParserException e ) + { + throw new PlexusConfigurationException( e.getMessage(), e ); + } + } +} |