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
     {
 


Reply via email to