Author: nicolas
Date: Thu Feb 28 07:48:18 2008
New Revision: 632030
URL: http://svn.apache.org/viewvc?rev=632030&view=rev
Log:
add support for Properties as plexus <configuration>
Added:
maven/archiva/branches/springy/plexus-spring/src/main/java/org/codehaus/plexus/spring/PropertiesPropertyEditor.java
(with props)
maven/archiva/branches/springy/plexus-spring/src/test/java/org/codehaus/plexus/spring/PropertiesPlexusBean.java
(with props)
maven/archiva/branches/springy/plexus-spring/src/test/resources/testInjectProperties.xml
(with props)
Modified:
maven/archiva/branches/springy/plexus-spring/src/main/java/org/codehaus/plexus/spring/PlexusApplicationContextDelegate.java
maven/archiva/branches/springy/plexus-spring/src/main/java/org/codehaus/plexus/spring/PlexusNamespaceHandler.java
maven/archiva/branches/springy/plexus-spring/src/test/java/org/codehaus/plexus/spring/PlexusClassPathXmlApplicationContextTest.java
Modified:
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=632030&r1=632029&r2=632030&view=diff
==============================================================================
---
maven/archiva/branches/springy/plexus-spring/src/main/java/org/codehaus/plexus/spring/PlexusApplicationContextDelegate.java
(original)
+++
maven/archiva/branches/springy/plexus-spring/src/main/java/org/codehaus/plexus/spring/PlexusApplicationContextDelegate.java
Thu Feb 28 07:48:18 2008
@@ -80,6 +80,7 @@
// Register a PorpertyEditor to support plexus XML <configuration> set
as CDATA in
// a spring context XML file.
beanFactory.addPropertyEditorRegistrar( new
PlexusConfigurationPropertyEditor() );
+ beanFactory.addPropertyEditorRegistrar( new PropertiesPropertyEditor()
);
}
/**
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=632030&r1=632029&r2=632030&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 07:48:18 2008
@@ -170,7 +170,11 @@
for ( int i = 0; i < childNodes.getLength(); i++ )
{
Node node = childNodes.item( i );
- if (node.getNodeType() == Node.ELEMENT_NODE )
+ if (node.getNodeType() == Node.TEXT_NODE )
+ {
+ out.print( node.getTextContent() );
+ }
+ else if (node.getNodeType() == Node.ELEMENT_NODE )
{
flatten( (Element) node, out );
}
Added:
maven/archiva/branches/springy/plexus-spring/src/main/java/org/codehaus/plexus/spring/PropertiesPropertyEditor.java
URL:
http://svn.apache.org/viewvc/maven/archiva/branches/springy/plexus-spring/src/main/java/org/codehaus/plexus/spring/PropertiesPropertyEditor.java?rev=632030&view=auto
==============================================================================
---
maven/archiva/branches/springy/plexus-spring/src/main/java/org/codehaus/plexus/spring/PropertiesPropertyEditor.java
(added)
+++
maven/archiva/branches/springy/plexus-spring/src/main/java/org/codehaus/plexus/spring/PropertiesPropertyEditor.java
Thu Feb 28 07:48:18 2008
@@ -0,0 +1,94 @@
+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.beans.PropertyEditorSupport;
+import java.io.StringReader;
+import java.util.Iterator;
+import java.util.Properties;
+
+import org.apache.commons.lang.StringUtils;
+import org.dom4j.Document;
+import org.dom4j.Element;
+import org.dom4j.io.SAXReader;
+import org.springframework.beans.PropertyEditorRegistrar;
+import org.springframework.beans.PropertyEditorRegistry;
+
+/**
+ * @author <a href="mailto:[EMAIL PROTECTED]">Nicolas De Loof</a>
+ */
+public class PropertiesPropertyEditor
+ extends PropertyEditorSupport
+ implements PropertyEditorRegistrar
+{
+
+ /**
+ * [EMAIL PROTECTED]
+ *
+ * @see
org.springframework.beans.PropertyEditorRegistrar#registerCustomEditors(org.springframework.beans.PropertyEditorRegistry)
+ */
+ public void registerCustomEditors( PropertyEditorRegistry registry )
+ {
+ registry.registerCustomEditor( Properties.class, this );
+ }
+
+ /**
+ * [EMAIL PROTECTED]
+ * <p>
+ * Support for plexus properties injection
+ * <pre>
+ * <fieldName>
+ * <property>
+ * <name>key</name>
+ * <value>true</value>
+ * </property>
+ * ...
+ * </pre>
+ *
+ * @see java.beans.PropertyEditorSupport#setAsText(java.lang.String)
+ */
+ public void setAsText( String text )
+ throws IllegalArgumentException
+ {
+ if ( StringUtils.isBlank( text ) )
+ {
+ setValue( null );
+ return;
+ }
+ Properties properties = new Properties();
+ try
+ {
+ SAXReader reader = new SAXReader();
+ Document doc = reader.read( new StringReader( text ) );
+ Element root = doc.getRootElement();
+ for ( Iterator i = root.elementIterator(); i.hasNext(); )
+ {
+ Element element = (Element) i.next();
+ properties.setProperty( element.element( "name" ).getText(),
element.element( "value" ).getText() );
+ }
+ }
+ catch ( Exception e )
+ {
+ throw new IllegalArgumentException( "Failed to convert to
Properties", e );
+ }
+ setValue( properties );
+ }
+
+}
Propchange:
maven/archiva/branches/springy/plexus-spring/src/main/java/org/codehaus/plexus/spring/PropertiesPropertyEditor.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
maven/archiva/branches/springy/plexus-spring/src/main/java/org/codehaus/plexus/spring/PropertiesPropertyEditor.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Propchange:
maven/archiva/branches/springy/plexus-spring/src/main/java/org/codehaus/plexus/spring/PropertiesPropertyEditor.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=632030&r1=632029&r2=632030&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 07:48:18 2008
@@ -98,4 +98,14 @@
assertEquals( "expected", plexusBean.getConfig().getChild( "xml"
).getAttribute( "test" ) );
}
+ public void testInjectProperties()
+ throws Exception
+ {
+ ConfigurableApplicationContext applicationContext =
+ new PlexusClassPathXmlApplicationContext( new String[] {
+ "testInjectProperties.xml" } );
+ PropertiesPlexusBean plexusBean = (PropertiesPlexusBean)
applicationContext.getBean( "plexusBean" );
+ assertEquals( "expected", plexusBean.getProperties().getProperty(
"test" ) );
+ }
+
}
Added:
maven/archiva/branches/springy/plexus-spring/src/test/java/org/codehaus/plexus/spring/PropertiesPlexusBean.java
URL:
http://svn.apache.org/viewvc/maven/archiva/branches/springy/plexus-spring/src/test/java/org/codehaus/plexus/spring/PropertiesPlexusBean.java?rev=632030&view=auto
==============================================================================
---
maven/archiva/branches/springy/plexus-spring/src/test/java/org/codehaus/plexus/spring/PropertiesPlexusBean.java
(added)
+++
maven/archiva/branches/springy/plexus-spring/src/test/java/org/codehaus/plexus/spring/PropertiesPlexusBean.java
Thu Feb 28 07:48:18 2008
@@ -0,0 +1,40 @@
+package org.codehaus.plexus.spring;
+
+import java.util.Properties;
+
+/*
+ * 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 PropertiesPlexusBean
+{
+ private Properties properties;
+
+ public Properties getProperties()
+ {
+ return properties;
+ }
+
+
+
+}
Propchange:
maven/archiva/branches/springy/plexus-spring/src/test/java/org/codehaus/plexus/spring/PropertiesPlexusBean.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
maven/archiva/branches/springy/plexus-spring/src/test/java/org/codehaus/plexus/spring/PropertiesPlexusBean.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Propchange:
maven/archiva/branches/springy/plexus-spring/src/test/java/org/codehaus/plexus/spring/PropertiesPlexusBean.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added:
maven/archiva/branches/springy/plexus-spring/src/test/resources/testInjectProperties.xml
URL:
http://svn.apache.org/viewvc/maven/archiva/branches/springy/plexus-spring/src/test/resources/testInjectProperties.xml?rev=632030&view=auto
==============================================================================
---
maven/archiva/branches/springy/plexus-spring/src/test/resources/testInjectProperties.xml
(added)
+++
maven/archiva/branches/springy/plexus-spring/src/test/resources/testInjectProperties.xml
Thu Feb 28 07:48:18 2008
@@ -0,0 +1,20 @@
+<component-set>
+ <components>
+ <component>
+ <role>org.codehaus.plexus.spring.PlexusBean</role>
+
<implementation>org.codehaus.plexus.spring.PropertiesPlexusBean</implementation>
+ <configuration>
+ <properties>
+ <property>
+ <name>test</name>
+ <value>expected</value>
+ </property>
+ <property>
+ <name>other</name>
+ <value>value</value>
+ </property>
+ </properties>
+ </configuration>
+ </component>
+ </components>
+</component-set>
Propchange:
maven/archiva/branches/springy/plexus-spring/src/test/resources/testInjectProperties.xml
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
maven/archiva/branches/springy/plexus-spring/src/test/resources/testInjectProperties.xml
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Propchange:
maven/archiva/branches/springy/plexus-spring/src/test/resources/testInjectProperties.xml
------------------------------------------------------------------------------
svn:mime-type = text/xml