diff options
Diffstat (limited to 'framework/src/maven/apache-maven-3.3.3/maven-core/src/main/java/org/apache/maven/configuration/DefaultBeanConfigurationRequest.java')
-rw-r--r-- | framework/src/maven/apache-maven-3.3.3/maven-core/src/main/java/org/apache/maven/configuration/DefaultBeanConfigurationRequest.java | 195 |
1 files changed, 195 insertions, 0 deletions
diff --git a/framework/src/maven/apache-maven-3.3.3/maven-core/src/main/java/org/apache/maven/configuration/DefaultBeanConfigurationRequest.java b/framework/src/maven/apache-maven-3.3.3/maven-core/src/main/java/org/apache/maven/configuration/DefaultBeanConfigurationRequest.java new file mode 100644 index 00000000..32def48f --- /dev/null +++ b/framework/src/maven/apache-maven-3.3.3/maven-core/src/main/java/org/apache/maven/configuration/DefaultBeanConfigurationRequest.java @@ -0,0 +1,195 @@ +package org.apache.maven.configuration; + +/* + * 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 org.apache.maven.model.Build; +import org.apache.maven.model.Model; +import org.apache.maven.model.Plugin; +import org.apache.maven.model.PluginExecution; +import org.apache.maven.model.PluginManagement; +import org.codehaus.plexus.util.StringUtils; + +/** + * A basic bean configuration request. + * + * @author Benjamin Bentmann + */ +public class DefaultBeanConfigurationRequest + implements BeanConfigurationRequest +{ + + private Object bean; + + private Object configuration; + + private String configurationElement; + + private ClassLoader classLoader; + + private BeanConfigurationValuePreprocessor valuePreprocessor; + + private BeanConfigurationPathTranslator pathTranslator; + + public Object getBean() + { + return bean; + } + + public DefaultBeanConfigurationRequest setBean( Object bean ) + { + this.bean = bean; + return this; + } + + public Object getConfiguration() + { + return configuration; + } + + public String getConfigurationElement() + { + return configurationElement; + } + + public DefaultBeanConfigurationRequest setConfiguration( Object configuration ) + { + return setConfiguration( configuration, null ); + } + + public DefaultBeanConfigurationRequest setConfiguration( Object configuration, String element ) + { + this.configuration = configuration; + this.configurationElement = element; + return this; + } + + /** + * Sets the configuration to the configuration taken from the specified build plugin in the POM. First, the build + * plugins will be searched for the specified plugin, if that fails, the plugin management section will be searched. + * + * @param model The POM to extract the plugin configuration from, may be {@code null}. + * @param pluginGroupId The group id of the plugin whose configuration should be used, must not be {@code null} or + * empty. + * @param pluginArtifactId The artifact id of the plugin whose configuration should be used, must not be + * {@code null} or empty. + * @param pluginExecutionId The id of a plugin execution whose configuration should be used, may be {@code null} or + * empty to use the general plugin configuration. + * @return This request for chaining, never {@code null}. + */ + public DefaultBeanConfigurationRequest setConfiguration( Model model, String pluginGroupId, + String pluginArtifactId, String pluginExecutionId ) + { + Plugin plugin = findPlugin( model, pluginGroupId, pluginArtifactId ); + if ( plugin != null ) + { + if ( StringUtils.isNotEmpty( pluginExecutionId ) ) + { + for ( PluginExecution execution : plugin.getExecutions() ) + { + if ( pluginExecutionId.equals( execution.getId() ) ) + { + setConfiguration( execution.getConfiguration() ); + break; + } + } + } + else + { + setConfiguration( plugin.getConfiguration() ); + } + } + return this; + } + + private Plugin findPlugin( Model model, String groupId, String artifactId ) + { + if ( StringUtils.isEmpty( groupId ) ) + { + throw new IllegalArgumentException( "group id for plugin has not been specified" ); + } + if ( StringUtils.isEmpty( artifactId ) ) + { + throw new IllegalArgumentException( "artifact id for plugin has not been specified" ); + } + + if ( model != null ) + { + Build build = model.getBuild(); + if ( build != null ) + { + for ( Plugin plugin : build.getPlugins() ) + { + if ( groupId.equals( plugin.getGroupId() ) && artifactId.equals( plugin.getArtifactId() ) ) + { + return plugin; + } + } + + PluginManagement mngt = build.getPluginManagement(); + if ( mngt != null ) + { + for ( Plugin plugin : mngt.getPlugins() ) + { + if ( groupId.equals( plugin.getGroupId() ) && artifactId.equals( plugin.getArtifactId() ) ) + { + return plugin; + } + } + } + } + } + + return null; + } + + public ClassLoader getClassLoader() + { + return classLoader; + } + + public DefaultBeanConfigurationRequest setClassLoader( ClassLoader classLoader ) + { + this.classLoader = classLoader; + return this; + } + + public BeanConfigurationValuePreprocessor getValuePreprocessor() + { + return valuePreprocessor; + } + + public DefaultBeanConfigurationRequest setValuePreprocessor( BeanConfigurationValuePreprocessor valuePreprocessor ) + { + this.valuePreprocessor = valuePreprocessor; + return this; + } + + public BeanConfigurationPathTranslator getPathTranslator() + { + return pathTranslator; + } + + public DefaultBeanConfigurationRequest setPathTranslator( BeanConfigurationPathTranslator pathTranslator ) + { + this.pathTranslator = pathTranslator; + return this; + } + +} |