Author: nicolas
Date: Thu Feb 28 05:14:18 2008
New Revision: 631954

URL: http://svn.apache.org/viewvc?rev=631954&view=rev
Log:
fix support for PlexucConfiguration injection

Added:
    
maven/archiva/branches/springy/plexus-spring/src/test/java/org/codehaus/plexus/spring/ConfigPlexusBean.java
   (with props)
    
maven/archiva/branches/springy/plexus-spring/src/test/resources/testInjectPlexusConfiguration.xml
   (with props)
Modified:
    maven/archiva/branches/springy/plexus-spring/pom.xml
    
maven/archiva/branches/springy/plexus-spring/src/main/java/org/codehaus/plexus/spring/PlexusInSpringTestCase.java
    
maven/archiva/branches/springy/plexus-spring/src/main/java/org/codehaus/plexus/spring/PlexusNamespaceHandler.java
    
maven/archiva/branches/springy/plexus-spring/src/main/java/org/codehaus/plexus/spring/PlexusToSpringUtils.java
    
maven/archiva/branches/springy/plexus-spring/src/test/java/org/codehaus/plexus/spring/PlexusClassPathXmlApplicationContextTest.java

Modified: maven/archiva/branches/springy/plexus-spring/pom.xml
URL: 
http://svn.apache.org/viewvc/maven/archiva/branches/springy/plexus-spring/pom.xml?rev=631954&r1=631953&r2=631954&view=diff
==============================================================================
--- maven/archiva/branches/springy/plexus-spring/pom.xml (original)
+++ maven/archiva/branches/springy/plexus-spring/pom.xml Thu Feb 28 05:14:18 
2008
@@ -50,11 +50,9 @@
       <version>1.0-alpha-22</version>
     </dependency>
     <dependency>
-      <!-- only required to debug XSLT result -->
       <groupId>dom4j</groupId>
       <artifactId>dom4j</artifactId>
       <version>1.6.1</version>
-      <optional>true</optional>
     </dependency>
     <dependency>
       <groupId>junit</groupId>

Modified: 
maven/archiva/branches/springy/plexus-spring/src/main/java/org/codehaus/plexus/spring/PlexusInSpringTestCase.java
URL: 
http://svn.apache.org/viewvc/maven/archiva/branches/springy/plexus-spring/src/main/java/org/codehaus/plexus/spring/PlexusInSpringTestCase.java?rev=631954&r1=631953&r2=631954&view=diff
==============================================================================
--- 
maven/archiva/branches/springy/plexus-spring/src/main/java/org/codehaus/plexus/spring/PlexusInSpringTestCase.java
 (original)
+++ 
maven/archiva/branches/springy/plexus-spring/src/main/java/org/codehaus/plexus/spring/PlexusInSpringTestCase.java
 Thu Feb 28 05:14:18 2008
@@ -36,14 +36,11 @@
 public class PlexusInSpringTestCase
     extends TestCase
 {
-    private static String basedir;
-
     private ConfigurableApplicationContext applicationContext;
 
     protected void setUp()
         throws Exception
     {
-        basedir = getBasedir();
         applicationContext =
             new PlexusClassPathXmlApplicationContext( new String[] {
                 "classpath*:META-INF/plexus/components.xml",
@@ -79,18 +76,7 @@
 
     public static String getBasedir()
     {
-        if ( basedir != null )
-        {
-            return basedir;
-        }
-
-        basedir = System.getProperty( "basedir" );
-        if ( basedir == null )
-        {
-            basedir = new File( "" ).getAbsolutePath();
-        }
-
-        return basedir;
+        return PlexusToSpringUtils.getBasedir();
     }
 
     public String getTestConfiguration()
@@ -128,7 +114,7 @@
 
     public static File getTestFile( String path )
     {
-        return new File( getBasedir(), path );
+        return new File( PlexusToSpringUtils.getBasedir(), path );
     }
 
     public static File getTestFile( String basedir,

Modified: 
maven/archiva/branches/springy/plexus-spring/src/main/java/org/codehaus/plexus/spring/PlexusNamespaceHandler.java
URL: 
http://svn.apache.org/viewvc/maven/archiva/branches/springy/plexus-spring/src/main/java/org/codehaus/plexus/spring/PlexusNamespaceHandler.java?rev=631954&r1=631953&r2=631954&view=diff
==============================================================================
--- 
maven/archiva/branches/springy/plexus-spring/src/main/java/org/codehaus/plexus/spring/PlexusNamespaceHandler.java
 (original)
+++ 
maven/archiva/branches/springy/plexus-spring/src/main/java/org/codehaus/plexus/spring/PlexusNamespaceHandler.java
 Thu Feb 28 05:14:18 2008
@@ -35,6 +35,7 @@
 import javax.xml.transform.dom.DOMSource;
 import javax.xml.transform.stream.StreamResult;
 
+import org.apache.commons.lang.StringUtils;
 import org.dom4j.io.DOMReader;
 import org.dom4j.io.SAXReader;
 import org.springframework.beans.factory.BeanDefinitionStoreException;
@@ -126,16 +127,21 @@
             {
                 Element child = (Element) iterator.next();
                 String name = child.getAttribute( "name" );
+                String value;
                 if ( child.getChildNodes().getLength() == 1 )
                 {
-                    dependencies.put( name, child.getTextContent() );
+                    value = child.getTextContent();
                 }
                 else
                 {
                     StringWriter xml = new StringWriter();
-                    flatten( child, new PrintWriter( xml ) );
-                    dependencies.put( name, xml.toString() );
+                    xml.write( '<' + name + '>' );
+                    flatten( child.getChildNodes(), new PrintWriter( xml ) );
+                    xml.write( "</" + name + '>' );
+                    value = xml.toString();
                 }
+                value = StringUtils.replace( value, "${basedir}", 
PlexusToSpringUtils.getBasedir() );
+                dependencies.put( name, value );
             }
 
             builder.addPropertyValue( "requirements", dependencies );
@@ -187,6 +193,11 @@
             out.print( "=\"" );
             out.print( attribute.getTextContent() );
             out.print( "\"" );
+        }
+        if (el.getChildNodes().getLength() == 0)
+        {
+            out.print( "/>" );
+            return;
         }
         out.print( '>' );
         flatten( el.getChildNodes(), out );

Modified: 
maven/archiva/branches/springy/plexus-spring/src/main/java/org/codehaus/plexus/spring/PlexusToSpringUtils.java
URL: 
http://svn.apache.org/viewvc/maven/archiva/branches/springy/plexus-spring/src/main/java/org/codehaus/plexus/spring/PlexusToSpringUtils.java?rev=631954&r1=631953&r2=631954&view=diff
==============================================================================
--- 
maven/archiva/branches/springy/plexus-spring/src/main/java/org/codehaus/plexus/spring/PlexusToSpringUtils.java
 (original)
+++ 
maven/archiva/branches/springy/plexus-spring/src/main/java/org/codehaus/plexus/spring/PlexusToSpringUtils.java
 Thu Feb 28 05:14:18 2008
@@ -19,6 +19,7 @@
  * under the License.
  */
 
+import java.io.File;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
@@ -140,5 +141,23 @@
     public static List LookupList( String role, ListableBeanFactory 
beanFactory )
     {
         return new ArrayList( PlexusToSpringUtils.lookupMap( role, beanFactory 
).values() );
+    }
+
+    private static String basedir;
+
+    public static String getBasedir()
+    {
+        if ( basedir != null )
+        {
+            return basedir;
+        }
+
+        basedir = System.getProperty( "basedir" );
+        if ( basedir == null )
+        {
+            basedir = new File( "" ).getAbsolutePath();
+        }
+
+        return basedir;
     }
 }

Added: 
maven/archiva/branches/springy/plexus-spring/src/test/java/org/codehaus/plexus/spring/ConfigPlexusBean.java
URL: 
http://svn.apache.org/viewvc/maven/archiva/branches/springy/plexus-spring/src/test/java/org/codehaus/plexus/spring/ConfigPlexusBean.java?rev=631954&view=auto
==============================================================================
--- 
maven/archiva/branches/springy/plexus-spring/src/test/java/org/codehaus/plexus/spring/ConfigPlexusBean.java
 (added)
+++ 
maven/archiva/branches/springy/plexus-spring/src/test/java/org/codehaus/plexus/spring/ConfigPlexusBean.java
 Thu Feb 28 05:14:18 2008
@@ -0,0 +1,43 @@
+package org.codehaus.plexus.spring;
+
+import java.util.List;
+import java.util.Map;
+
+import org.codehaus.plexus.configuration.PlexusConfiguration;
+
+/*
+ * 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.
+ */
+
+/**
+ * A typical plexus component implementation
+ *
+ * @author <a href="mailto:[EMAIL PROTECTED]">Nicolas De Loof</a>
+ */
+public class ConfigPlexusBean
+{
+    private PlexusConfiguration config;
+
+    public PlexusConfiguration getConfig()
+    {
+        return config;
+    }
+
+
+
+}

Propchange: 
maven/archiva/branches/springy/plexus-spring/src/test/java/org/codehaus/plexus/spring/ConfigPlexusBean.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
maven/archiva/branches/springy/plexus-spring/src/test/java/org/codehaus/plexus/spring/ConfigPlexusBean.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Propchange: 
maven/archiva/branches/springy/plexus-spring/src/test/java/org/codehaus/plexus/spring/ConfigPlexusBean.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: 
maven/archiva/branches/springy/plexus-spring/src/test/java/org/codehaus/plexus/spring/PlexusClassPathXmlApplicationContextTest.java
URL: 
http://svn.apache.org/viewvc/maven/archiva/branches/springy/plexus-spring/src/test/java/org/codehaus/plexus/spring/PlexusClassPathXmlApplicationContextTest.java?rev=631954&r1=631953&r2=631954&view=diff
==============================================================================
--- 
maven/archiva/branches/springy/plexus-spring/src/test/java/org/codehaus/plexus/spring/PlexusClassPathXmlApplicationContextTest.java
 (original)
+++ 
maven/archiva/branches/springy/plexus-spring/src/test/java/org/codehaus/plexus/spring/PlexusClassPathXmlApplicationContextTest.java
 Thu Feb 28 05:14:18 2008
@@ -88,4 +88,14 @@
         assertEquals( 2, plexusBean.getBeansList().size() );
     }
 
+    public void testInjectPlexusConfiguration()
+        throws Exception
+    {
+        ConfigurableApplicationContext applicationContext =
+            new PlexusClassPathXmlApplicationContext( new String[] {
+                "testInjectPlexusConfiguration.xml" } );
+        ConfigPlexusBean plexusBean = (ConfigPlexusBean) 
applicationContext.getBean( "plexusBean" );
+        assertEquals( "expected", plexusBean.getConfig().getChild( "xml" 
).getAttribute( "test" ) );
+    }
+
 }

Added: 
maven/archiva/branches/springy/plexus-spring/src/test/resources/testInjectPlexusConfiguration.xml
URL: 
http://svn.apache.org/viewvc/maven/archiva/branches/springy/plexus-spring/src/test/resources/testInjectPlexusConfiguration.xml?rev=631954&view=auto
==============================================================================
--- 
maven/archiva/branches/springy/plexus-spring/src/test/resources/testInjectPlexusConfiguration.xml
 (added)
+++ 
maven/archiva/branches/springy/plexus-spring/src/test/resources/testInjectPlexusConfiguration.xml
 Thu Feb 28 05:14:18 2008
@@ -0,0 +1,13 @@
+<component-set>
+  <components>
+    <component>
+      <role>org.codehaus.plexus.spring.PlexusBean</role>
+      
<implementation>org.codehaus.plexus.spring.ConfigPlexusBean</implementation>
+      <configuration>
+        <config>
+            <xml test="expected"/>
+        </config>
+      </configuration>
+    </component>
+  </components>
+</component-set>

Propchange: 
maven/archiva/branches/springy/plexus-spring/src/test/resources/testInjectPlexusConfiguration.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
maven/archiva/branches/springy/plexus-spring/src/test/resources/testInjectPlexusConfiguration.xml
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Propchange: 
maven/archiva/branches/springy/plexus-spring/src/test/resources/testInjectPlexusConfiguration.xml
------------------------------------------------------------------------------
    svn:mime-type = text/xml


Reply via email to