Author: nicolas
Date: Thu Feb 28 07:16:09 2008
New Revision: 631995

URL: http://svn.apache.org/viewvc?rev=631995&view=rev
Log:
add support for WebApplicationContext
fix plexus descriptors that use <plexus> root element (redback)

Added:
    
maven/archiva/branches/springy/plexus-spring/src/main/java/org/codehaus/plexus/spring/PlexusApplicationContextDelegate.java
   (with props)
    
maven/archiva/branches/springy/plexus-spring/src/main/java/org/codehaus/plexus/spring/PlexusWebApplicationContext.java
   (with props)
Modified:
    maven/archiva/branches/springy/plexus-spring/pom.xml
    
maven/archiva/branches/springy/plexus-spring/src/main/java/org/codehaus/plexus/spring/PlexusBeanDefinitionDocumentReader.java
    
maven/archiva/branches/springy/plexus-spring/src/main/java/org/codehaus/plexus/spring/PlexusClassPathXmlApplicationContext.java
    
maven/archiva/branches/springy/plexus-spring/src/main/java/org/codehaus/plexus/spring/PlexusContainerAdapter.java
    
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/PlexusToSpringUtils.java
    
maven/archiva/branches/springy/plexus-spring/src/main/resources/org/codehaus/plexus/spring/PlexusBeanDefinitionDocumentReader.xsl
    
maven/archiva/branches/springy/plexus-spring/src/test/resources/testInjectMapForRole.xml

Modified: maven/archiva/branches/springy/plexus-spring/pom.xml
URL: 
http://svn.apache.org/viewvc/maven/archiva/branches/springy/plexus-spring/pom.xml?rev=631995&r1=631994&r2=631995&view=diff
==============================================================================
--- maven/archiva/branches/springy/plexus-spring/pom.xml (original)
+++ maven/archiva/branches/springy/plexus-spring/pom.xml Thu Feb 28 07:16:09 
2008
@@ -34,6 +34,12 @@
       <version>2.5.1</version>
     </dependency>
     <dependency>
+      <groupId>org.springframework</groupId>
+      <artifactId>spring-web</artifactId>
+      <version>2.5.1</version>
+      <optional>true</optional>
+    </dependency>
+    <dependency>
       <groupId>commons-lang</groupId>
       <artifactId>commons-lang</artifactId>
       <version>2.2</version>

Added: 
maven/archiva/branches/springy/plexus-spring/src/main/java/org/codehaus/plexus/spring/PlexusApplicationContextDelegate.java
URL: 
http://svn.apache.org/viewvc/maven/archiva/branches/springy/plexus-spring/src/main/java/org/codehaus/plexus/spring/PlexusApplicationContextDelegate.java?rev=631995&view=auto
==============================================================================
--- 
maven/archiva/branches/springy/plexus-spring/src/main/java/org/codehaus/plexus/spring/PlexusApplicationContextDelegate.java
 (added)
+++ 
maven/archiva/branches/springy/plexus-spring/src/main/java/org/codehaus/plexus/spring/PlexusApplicationContextDelegate.java
 Thu Feb 28 07:16:09 2008
@@ -0,0 +1,99 @@
+package org.codehaus.plexus.spring;
+
+/*
+ * 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.File;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.StringTokenizer;
+
+import org.apache.commons.lang.ClassUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.codehaus.plexus.PlexusConstants;
+import org.codehaus.plexus.personality.plexus.lifecycle.phase.Disposable;
+import org.codehaus.plexus.personality.plexus.lifecycle.phase.Initializable;
+import org.springframework.beans.BeansException;
+import org.springframework.beans.factory.ListableBeanFactory;
+import 
org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
+import org.springframework.beans.factory.xml.XmlBeanDefinitionReader;
+import org.springframework.context.ApplicationContext;
+
+/**
+ * Utility method to convert plexus descriptors to spring bean context.
+ *
+ * @author <a href="mailto:[EMAIL PROTECTED]">Nicolas De Loof</a>
+ */
+public class PlexusApplicationContextDelegate
+{
+    /** Logger used by this class. */
+    protected final Log logger = LogFactory.getLog(getClass());
+
+    private PlexusLifecycleBeanPostProcessor lifecycleBeanPostProcessor;
+
+    /**
+     * @see 
org.springframework.context.support.AbstractXmlApplicationContext#loadBeanDefinitions(org.springframework.beans.factory.xml.XmlBeanDefinitionReader)
+     */
+    protected void loadBeanDefinitions( XmlBeanDefinitionReader reader )
+        throws BeansException, IOException
+    {
+        logger.info( "Registering plexus to spring XML translation" );
+        reader.setDocumentReaderClass( 
PlexusBeanDefinitionDocumentReader.class );
+        reader.setValidationMode( XmlBeanDefinitionReader.VALIDATION_NONE );
+    }
+
+    /**
+     * @see 
org.springframework.context.support.AbstractApplicationContext#postProcessBeanFactory(org.springframework.beans.factory.config.ConfigurableListableBeanFactory)
+     */
+    protected void postProcessBeanFactory( ConfigurableListableBeanFactory 
beanFactory, ApplicationContext context )
+    {
+        // Register a PlexusContainerAdapter bean to allow context lookups 
using plexus API
+        PlexusContainerAdapter plexus = new PlexusContainerAdapter();
+        plexus.setApplicationContext( context );
+        beanFactory.registerSingleton( "plexusContainer", plexus );
+
+        // Register a beanPostProcessor to handle plexus interface-based 
lifecycle management
+        lifecycleBeanPostProcessor = new PlexusLifecycleBeanPostProcessor();
+        lifecycleBeanPostProcessor.setBeanFactory( context );
+        beanFactory.addBeanPostProcessor( lifecycleBeanPostProcessor );
+
+        // Register a PorpertyEditor to support plexus XML <configuration> set 
as CDATA in
+        // a spring context XML file.
+        beanFactory.addPropertyEditorRegistrar( new 
PlexusConfigurationPropertyEditor() );
+    }
+
+    /**
+     * @see 
org.springframework.context.support.AbstractApplicationContext#doClose()
+     */
+    protected void doClose()
+    {
+        try
+        {
+            lifecycleBeanPostProcessor.destroy();
+        }
+        catch ( Throwable ex )
+        {
+            logger.error( "Exception thrown from 
PlexusLifecycleBeanPostProcessor handling ContextClosedEvent", ex );
+        }
+    }
+}

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

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

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

Modified: 
maven/archiva/branches/springy/plexus-spring/src/main/java/org/codehaus/plexus/spring/PlexusBeanDefinitionDocumentReader.java
URL: 
http://svn.apache.org/viewvc/maven/archiva/branches/springy/plexus-spring/src/main/java/org/codehaus/plexus/spring/PlexusBeanDefinitionDocumentReader.java?rev=631995&r1=631994&r2=631995&view=diff
==============================================================================
--- 
maven/archiva/branches/springy/plexus-spring/src/main/java/org/codehaus/plexus/spring/PlexusBeanDefinitionDocumentReader.java
 (original)
+++ 
maven/archiva/branches/springy/plexus-spring/src/main/java/org/codehaus/plexus/spring/PlexusBeanDefinitionDocumentReader.java
 Thu Feb 28 07:16:09 2008
@@ -24,6 +24,7 @@
 import javax.xml.transform.Source;
 import javax.xml.transform.Transformer;
 import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.TransformerFactoryConfigurationError;
 import javax.xml.transform.dom.DOMResult;
 import javax.xml.transform.dom.DOMSource;
 import javax.xml.transform.stream.StreamSource;
@@ -67,11 +68,21 @@
 
     protected Document convertPlexusDescriptorToSpringBeans( Document doc )
     {
-        if ( !"component-set".equals( doc.getDocumentElement().getNodeName() ) 
)
+        if ( "component-set".equals( doc.getDocumentElement().getNodeName() ) )
         {
-            return doc;
+            return translatePlexusDescriptor( doc );
+        }
+        if ( "plexus".equals( doc.getDocumentElement().getNodeName() ) )
+        {
+            return translatePlexusDescriptor( doc );
         }
 
+        return doc;
+    }
+
+    private Document translatePlexusDescriptor( Document doc )
+        throws TransformerFactoryConfigurationError
+    {
         try
         {
             Source xmlSource = new DOMSource( doc );

Modified: 
maven/archiva/branches/springy/plexus-spring/src/main/java/org/codehaus/plexus/spring/PlexusClassPathXmlApplicationContext.java
URL: 
http://svn.apache.org/viewvc/maven/archiva/branches/springy/plexus-spring/src/main/java/org/codehaus/plexus/spring/PlexusClassPathXmlApplicationContext.java?rev=631995&r1=631994&r2=631995&view=diff
==============================================================================
--- 
maven/archiva/branches/springy/plexus-spring/src/main/java/org/codehaus/plexus/spring/PlexusClassPathXmlApplicationContext.java
 (original)
+++ 
maven/archiva/branches/springy/plexus-spring/src/main/java/org/codehaus/plexus/spring/PlexusClassPathXmlApplicationContext.java
 Thu Feb 28 07:16:09 2008
@@ -37,7 +37,7 @@
 public class PlexusClassPathXmlApplicationContext
     extends ClassPathXmlApplicationContext
 {
-    private PlexusLifecycleBeanPostProcessor lifecycleBeanPostProcessor;
+    private static PlexusApplicationContextDelegate delegate = new 
PlexusApplicationContextDelegate();
 
     public PlexusClassPathXmlApplicationContext( String path, Class clazz )
         throws BeansException
@@ -45,9 +45,6 @@
         super( path, clazz );
     }
 
-
-
-
     public PlexusClassPathXmlApplicationContext( String configLocation )
         throws BeansException
     {
@@ -98,9 +95,7 @@
     protected void loadBeanDefinitions( XmlBeanDefinitionReader reader )
         throws BeansException, IOException
     {
-        logger.info( "Registering plexus to spring XML translation" );
-        reader.setDocumentReaderClass( 
PlexusBeanDefinitionDocumentReader.class );
-        reader.setValidationMode( XmlBeanDefinitionReader.VALIDATION_NONE );
+        delegate.loadBeanDefinitions( reader );
         super.loadBeanDefinitions( reader );
     }
 
@@ -111,19 +106,7 @@
      */
     protected void postProcessBeanFactory( ConfigurableListableBeanFactory 
beanFactory )
     {
-        // Register a PlexusContainerAdapter bean to allow context lookups 
using plexus API
-        PlexusContainerAdapter plexus = new PlexusContainerAdapter();
-        plexus.setApplicationContext( this );
-        beanFactory.registerSingleton( "plexusContainer", plexus );
-
-        // Register a beanPostProcessor to handle plexus interface-based 
lifecycle management
-        lifecycleBeanPostProcessor = new PlexusLifecycleBeanPostProcessor();
-        lifecycleBeanPostProcessor.setBeanFactory( this );
-        beanFactory.addBeanPostProcessor( lifecycleBeanPostProcessor );
-
-        // Register a PorpertyEditor to support plexus XML <configuration> set 
as CDATA in
-        // a spring context XML file.
-        beanFactory.addPropertyEditorRegistrar( new 
PlexusConfigurationPropertyEditor() );
+        delegate.postProcessBeanFactory( beanFactory, this );
     }
 
     /**
@@ -133,14 +116,7 @@
      */
     protected void doClose()
     {
-        try
-        {
-            lifecycleBeanPostProcessor.destroy();
-        }
-        catch ( Throwable ex )
-        {
-            logger.error( "Exception thrown from 
PlexusLifecycleBeanPostProcessor handling ContextClosedEvent", ex );
-        }
+        delegate.doClose();
         super.doClose();
     }
 

Modified: 
maven/archiva/branches/springy/plexus-spring/src/main/java/org/codehaus/plexus/spring/PlexusContainerAdapter.java
URL: 
http://svn.apache.org/viewvc/maven/archiva/branches/springy/plexus-spring/src/main/java/org/codehaus/plexus/spring/PlexusContainerAdapter.java?rev=631995&r1=631994&r2=631995&view=diff
==============================================================================
--- 
maven/archiva/branches/springy/plexus-spring/src/main/java/org/codehaus/plexus/spring/PlexusContainerAdapter.java
 (original)
+++ 
maven/archiva/branches/springy/plexus-spring/src/main/java/org/codehaus/plexus/spring/PlexusContainerAdapter.java
 Thu Feb 28 07:16:09 2008
@@ -24,6 +24,7 @@
 import java.util.List;
 import java.util.Map;
 
+import org.codehaus.plexus.PlexusConstants;
 import org.codehaus.plexus.PlexusContainer;
 import org.codehaus.plexus.PlexusContainerException;
 import org.codehaus.plexus.classworlds.realm.ClassRealm;
@@ -48,7 +49,7 @@
  * @author <a href="mailto:[EMAIL PROTECTED]">Nicolas De Loof</a>
  */
 public class PlexusContainerAdapter
-    implements PlexusContainer, ApplicationContextAware, InitializingBean
+    implements PlexusContainer, ApplicationContextAware
 {
     private Context context = new SimpleContext();
 
@@ -62,16 +63,6 @@
 
     /**
      * [EMAIL PROTECTED]
-     * @see 
org.springframework.beans.factory.InitializingBean#afterPropertiesSet()
-     */
-    public void afterPropertiesSet()
-        throws Exception
-    {
-        context = new SimpleContext();
-    }
-
-    /**
-     * [EMAIL PROTECTED]
      * @see 
org.codehaus.plexus.PlexusContainer#addComponentDescriptor(org.codehaus.plexus.component.repository.ComponentDescriptor)
      */
     public void addComponentDescriptor( ComponentDescriptor 
componentDescriptor )
@@ -660,8 +651,6 @@
 
     private class SimpleContext implements Context
     {
-        /** the plexus container key in the context */
-        private static final String PLEXUS = "plexus";
 
         /**
          * [EMAIL PROTECTED]
@@ -669,7 +658,7 @@
          */
         public boolean contains( Object key )
         {
-            return PLEXUS.equals( key );
+            return PlexusConstants.PLEXUS_KEY.equals( key );
         }
 
         /**
@@ -679,7 +668,7 @@
         public Object get( Object key )
             throws ContextException
         {
-            return PLEXUS.equals( key ) ? PlexusContainerAdapter.this : null;
+            return PlexusConstants.PLEXUS_KEY.equals( key ) ? 
PlexusContainerAdapter.this : null;
         }
 
         /**

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=631995&r1=631994&r2=631995&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 07:16:09 2008
@@ -25,8 +25,6 @@
 
 import org.springframework.context.ConfigurableApplicationContext;
 
-;
-
 /**
  * Mimic org.codehaus.plexus.PlexusTestCase as simple replacement for test
  * cases.

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=631995&r1=631994&r2=631995&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 07:16:09 2008
@@ -36,7 +36,6 @@
  * Utility method to convert plexus descriptors to spring bean context.
  *
  * @author <a href="mailto:[EMAIL PROTECTED]">Nicolas De Loof</a>
- * @since 1.1
  */
 public class PlexusToSpringUtils
 {

Added: 
maven/archiva/branches/springy/plexus-spring/src/main/java/org/codehaus/plexus/spring/PlexusWebApplicationContext.java
URL: 
http://svn.apache.org/viewvc/maven/archiva/branches/springy/plexus-spring/src/main/java/org/codehaus/plexus/spring/PlexusWebApplicationContext.java?rev=631995&view=auto
==============================================================================
--- 
maven/archiva/branches/springy/plexus-spring/src/main/java/org/codehaus/plexus/spring/PlexusWebApplicationContext.java
 (added)
+++ 
maven/archiva/branches/springy/plexus-spring/src/main/java/org/codehaus/plexus/spring/PlexusWebApplicationContext.java
 Thu Feb 28 07:16:09 2008
@@ -0,0 +1,75 @@
+package org.codehaus.plexus.spring;
+
+/*
+ * 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 org.springframework.beans.BeansException;
+import 
org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
+import org.springframework.beans.factory.xml.XmlBeanDefinitionReader;
+import org.springframework.web.context.support.XmlWebApplicationContext;
+
+/**
+ * A custom XmlWebApplicationContext to support plexus
+ * <tr>components.xml</tt> descriptors in Spring, with no changes required to
+ * neither plexus nor spring beans.
+ *
+ * @author <a href="mailto:[EMAIL PROTECTED]">Nicolas De Loof</a>
+ */
+public class PlexusWebApplicationContext
+    extends XmlWebApplicationContext
+{
+    private static PlexusApplicationContextDelegate delegate = new 
PlexusApplicationContextDelegate();
+
+    /**
+     * [EMAIL PROTECTED]
+     *
+     * @see 
org.springframework.context.support.AbstractXmlApplicationContext#loadBeanDefinitions(org.springframework.beans.factory.xml.XmlBeanDefinitionReader)
+     */
+    protected void loadBeanDefinitions( XmlBeanDefinitionReader reader )
+        throws BeansException, IOException
+    {
+        delegate.loadBeanDefinitions( reader );
+        super.loadBeanDefinitions( reader );
+    }
+
+    /**
+     * [EMAIL PROTECTED]
+     *
+     * @see 
org.springframework.context.support.AbstractApplicationContext#postProcessBeanFactory(org.springframework.beans.factory.config.ConfigurableListableBeanFactory)
+     */
+    protected void postProcessBeanFactory( ConfigurableListableBeanFactory 
beanFactory )
+    {
+        delegate.postProcessBeanFactory( beanFactory, this );
+        super.postProcessBeanFactory( beanFactory );
+    }
+
+    /**
+     * [EMAIL PROTECTED]
+     *
+     * @see 
org.springframework.context.support.AbstractApplicationContext#doClose()
+     */
+    protected void doClose()
+    {
+        delegate.doClose();
+        super.doClose();
+    }
+
+}

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

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

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

Modified: 
maven/archiva/branches/springy/plexus-spring/src/main/resources/org/codehaus/plexus/spring/PlexusBeanDefinitionDocumentReader.xsl
URL: 
http://svn.apache.org/viewvc/maven/archiva/branches/springy/plexus-spring/src/main/resources/org/codehaus/plexus/spring/PlexusBeanDefinitionDocumentReader.xsl?rev=631995&r1=631994&r2=631995&view=diff
==============================================================================
--- 
maven/archiva/branches/springy/plexus-spring/src/main/resources/org/codehaus/plexus/spring/PlexusBeanDefinitionDocumentReader.xsl
 (original)
+++ 
maven/archiva/branches/springy/plexus-spring/src/main/resources/org/codehaus/plexus/spring/PlexusBeanDefinitionDocumentReader.xsl
 Thu Feb 28 07:16:09 2008
@@ -29,14 +29,14 @@
   to handle IoC containers incompatibilities.
  -->
 
-<xsl:template match="/component-set" >
+<xsl:template match="/" >
 <spring:beans xmlns:spring="http://www.springframework.org/schema/beans";
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
        xmlns="http://plexus.codehaus.org/spring";
        xsi:schemaLocation="http://www.springframework.org/schema/beans 
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
                            http://plexus.codehaus.org/spring 
http://plexus.codehaus.org/schemas/spring-1.0.xsd";
        default-lazy-init="true">
-  <xsl:for-each select="components/component">
+  <xsl:for-each select="//component">
 
     <component>
       <xsl:attribute name="role">

Modified: 
maven/archiva/branches/springy/plexus-spring/src/test/resources/testInjectMapForRole.xml
URL: 
http://svn.apache.org/viewvc/maven/archiva/branches/springy/plexus-spring/src/test/resources/testInjectMapForRole.xml?rev=631995&r1=631994&r2=631995&view=diff
==============================================================================
--- 
maven/archiva/branches/springy/plexus-spring/src/test/resources/testInjectMapForRole.xml
 (original)
+++ 
maven/archiva/branches/springy/plexus-spring/src/test/resources/testInjectMapForRole.xml
 Thu Feb 28 07:16:09 2008
@@ -1,4 +1,7 @@
-<component-set>
+<?xml version="1.0" encoding="UTF-8"?>
+
+<plexus>
+
   <components>
     <component>
       <role>org.codehaus.plexus.spring.PlexusBean</role>
@@ -16,4 +19,5 @@
       </requirements>
     </component>
   </components>
-</component-set>
+
+</plexus>


Reply via email to