Author: ifedorenko Date: Mon Nov 22 14:48:00 2010 New Revision: 1037741 URL: http://svn.apache.org/viewvc?rev=1037741&view=rev Log: MNG-4910 Use BeanConfigurator for configuration sub-elements
Modified: maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/configuration/BeanConfigurationRequest.java maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/configuration/DefaultBeanConfigurationRequest.java maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/configuration/internal/DefaultBeanConfigurator.java maven/maven-3/trunk/maven-core/src/test/java/org/apache/maven/configuration/DefaultBeanConfiguratorTest.java Modified: maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/configuration/BeanConfigurationRequest.java URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/configuration/BeanConfigurationRequest.java?rev=1037741&r1=1037740&r2=1037741&view=diff ============================================================================== --- maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/configuration/BeanConfigurationRequest.java (original) +++ maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/configuration/BeanConfigurationRequest.java Mon Nov 22 14:48:00 2010 @@ -52,6 +52,7 @@ public interface BeanConfigurationReques /** * Sets the configuration to unmarshal into the bean. The configuration should be taken from * {...@link org.apache.maven.model.ConfigurationContainer#getConfiguration()} or a similar source. + * Fully equivalent to {...@code setConfiguration(configuration, null)}. * * @param configuration The configuration to unmarshal, may be {...@code null}. * @return This request for chaining, never {...@code null}. @@ -59,6 +60,27 @@ public interface BeanConfigurationReques BeanConfigurationRequest setConfiguration( Object configuration ); /** + * Sets the configuration to unmarshal into the bean. The configuration should be taken from + * {...@link org.apache.maven.model.ConfigurationContainer#getConfiguration()} or a similar source. + * If {...@code element} is not {...@code null}, child configuration element with the specified name will + * be unmarshaled. + * + * @param configuration The configuration to unmarshal, may be {...@code null}. + * @param element Configuration element name to unmarshal or {...@code null} to unmarshal entire configuration. + * @return This request for chaining, never {...@code null}. + */ + BeanConfigurationRequest setConfiguration( Object configuration, String element ); + + /** + * Returns configuration element name or {...@code null}. + * + * @see {...@link #setConfiguration(Object, String)} + * + * @return Configuration element name or {...@code null} + */ + String getConfigurationElement(); + + /** * Gets the class loader from which to load any types referenced by the configuration. If unset, the class loader of * the bean class will be used. * Modified: maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/configuration/DefaultBeanConfigurationRequest.java URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/configuration/DefaultBeanConfigurationRequest.java?rev=1037741&r1=1037740&r2=1037741&view=diff ============================================================================== --- maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/configuration/DefaultBeanConfigurationRequest.java (original) +++ maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/configuration/DefaultBeanConfigurationRequest.java Mon Nov 22 14:48:00 2010 @@ -39,6 +39,8 @@ public class DefaultBeanConfigurationReq private Object configuration; + private String configurationElement; + private ClassLoader classLoader; private BeanConfigurationValuePreprocessor valuePreprocessor; @@ -61,9 +63,20 @@ public class DefaultBeanConfigurationReq 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; } Modified: maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/configuration/internal/DefaultBeanConfigurator.java URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/configuration/internal/DefaultBeanConfigurator.java?rev=1037741&r1=1037740&r2=1037741&view=diff ============================================================================== --- maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/configuration/internal/DefaultBeanConfigurator.java (original) +++ maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/configuration/internal/DefaultBeanConfigurator.java Mon Nov 22 14:48:00 2010 @@ -84,6 +84,11 @@ public class DefaultBeanConfigurator + configuration.getClass().getName() + ")" ); } + if ( request.getConfigurationElement() != null ) + { + plexusConfig = plexusConfig.getChild( request.getConfigurationElement() ); + } + ClassLoader classLoader = request.getClassLoader(); if ( classLoader == null ) { Modified: maven/maven-3/trunk/maven-core/src/test/java/org/apache/maven/configuration/DefaultBeanConfiguratorTest.java URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-core/src/test/java/org/apache/maven/configuration/DefaultBeanConfiguratorTest.java?rev=1037741&r1=1037740&r2=1037741&view=diff ============================================================================== --- maven/maven-3/trunk/maven-core/src/test/java/org/apache/maven/configuration/DefaultBeanConfiguratorTest.java (original) +++ maven/maven-3/trunk/maven-core/src/test/java/org/apache/maven/configuration/DefaultBeanConfiguratorTest.java Mon Nov 22 14:48:00 2010 @@ -123,6 +123,21 @@ public class DefaultBeanConfiguratorTest assertEquals( new File( "base/test" ).getAbsoluteFile(), bean.file ); } + public void testChildConfigurationElement() + throws BeanConfigurationException + { + SomeBean bean = new SomeBean(); + + Xpp3Dom config = toConfig( "<wrapper><file>test</file></wrapper>" ); + + DefaultBeanConfigurationRequest request = new DefaultBeanConfigurationRequest(); + request.setBean( bean ).setConfiguration( config, "wrapper" ); + + configurator.configureBean( request ); + + assertEquals( new File( "test" ), bean.file ); + } + static class SomeBean {