Author: berndf
Date: Thu Aug 23 09:39:54 2007
New Revision: 569066
URL: http://svn.apache.org/viewvc?rev=569066&view=rev
Log:
refactored out configuration data structure traversal into abstract base class
added configuration interceptor replacing parts of configuration values
now, there are no longer directories created outside the working directory,
namely ../apps/$stuff now goes under ./var/$stuff
Added:
james/server/sandbox/spring-integration/spring-deployment/src/main/java/org/apache/james/container/spring/examples/configuration/StringRemapperConfigurationInterceptor.java
- copied, changed from r565286,
james/server/sandbox/spring-integration/spring-deployment/src/main/java/org/apache/james/container/spring/examples/configuration/UnprivilegedPortConfigurationInterceptor.java
james/server/sandbox/spring-integration/spring-deployment/src/main/java/org/apache/james/container/spring/examples/configuration/TraversingConfigurationInterceptor.java
Modified:
james/server/sandbox/spring-integration/spring-deployment/src/main/config/beans-base-config.xml
james/server/sandbox/spring-integration/spring-deployment/src/main/java/org/apache/james/container/spring/examples/configuration/UnprivilegedPortConfigurationInterceptor.java
Modified:
james/server/sandbox/spring-integration/spring-deployment/src/main/config/beans-base-config.xml
URL:
http://svn.apache.org/viewvc/james/server/sandbox/spring-integration/spring-deployment/src/main/config/beans-base-config.xml?rev=569066&r1=569065&r2=569066&view=diff
==============================================================================
---
james/server/sandbox/spring-integration/spring-deployment/src/main/config/beans-base-config.xml
(original)
+++
james/server/sandbox/spring-integration/spring-deployment/src/main/config/beans-base-config.xml
Thu Aug 23 09:39:54 2007
@@ -49,15 +49,29 @@
<!--
maps the default standard ports for SMTP, POP3, IMAP, NNTP to
non-privileged ports in the
- 9000's range
+ 9000's range (must be activated in "configurationProvider"-bean)
-->
- <bean id="exampleConfigurationInterceptor"
class="org.apache.james.container.spring.examples.configuration.UnprivilegedPortConfigurationInterceptor"
/>
+ <bean id="privilegedPortsConfigurationInterceptor"
class="org.apache.james.container.spring.examples.configuration.UnprivilegedPortConfigurationInterceptor"
/>
+ <!--
+ replaces strings in configuration values
+ -->
+ <bean id="stringRemapperConfigurationInterceptor"
class="org.apache.james.container.spring.examples.configuration.StringRemapperConfigurationInterceptor">
+ <property name="mappings">
+ <map>
+ <!-- avoid having folders be generated outside the working
directory -->
+ <entry key="../apps/" value="./var/"/>
+ </map>
+ </property>
+ </bean>
+
+
<bean id="configurationProvider"
class="org.apache.james.container.spring.adaptor.AvalonConfigurationFileProvider"
>
<property name="configurationPath"
value="src/main/config/james-config.xml" />
<property name="configurationInterceptors">
<list>
- <!--<ref bean="exampleConfigurationInterceptor" />-->
+ <ref bean="stringRemapperConfigurationInterceptor" />
+ <!--<ref bean="privilegedPortsConfigurationInterceptor" />-->
</list>
</property>
</bean>
Copied:
james/server/sandbox/spring-integration/spring-deployment/src/main/java/org/apache/james/container/spring/examples/configuration/StringRemapperConfigurationInterceptor.java
(from r565286,
james/server/sandbox/spring-integration/spring-deployment/src/main/java/org/apache/james/container/spring/examples/configuration/UnprivilegedPortConfigurationInterceptor.java)
URL:
http://svn.apache.org/viewvc/james/server/sandbox/spring-integration/spring-deployment/src/main/java/org/apache/james/container/spring/examples/configuration/StringRemapperConfigurationInterceptor.java?p2=james/server/sandbox/spring-integration/spring-deployment/src/main/java/org/apache/james/container/spring/examples/configuration/StringRemapperConfigurationInterceptor.java&p1=james/server/sandbox/spring-integration/spring-deployment/src/main/java/org/apache/james/container/spring/examples/configuration/UnprivilegedPortConfigurationInterceptor.java&r1=565286&r2=569066&rev=569066&view=diff
==============================================================================
---
james/server/sandbox/spring-integration/spring-deployment/src/main/java/org/apache/james/container/spring/examples/configuration/UnprivilegedPortConfigurationInterceptor.java
(original)
+++
james/server/sandbox/spring-integration/spring-deployment/src/main/java/org/apache/james/container/spring/examples/configuration/StringRemapperConfigurationInterceptor.java
Thu Aug 23 09:39:54 2007
@@ -18,37 +18,70 @@
****************************************************************/
package org.apache.james.container.spring.examples.configuration;
-import org.apache.avalon.framework.configuration.Configuration;
+import org.apache.avalon.framework.configuration.ConfigurationException;
import org.apache.avalon.framework.configuration.MutableConfiguration;
-import
org.apache.james.container.spring.configuration.ConfigurationInterceptor;
+import org.apache.commons.lang.StringUtils;
+
+import java.util.Iterator;
+import java.util.LinkedHashMap;
+import java.util.Map;
/**
- * re-maps all privileged ports into the 9000's range
+ * re-maps arbitrary string values. handles pure literal Strings, not Regular
Expressions
*/
-public class UnprivilegedPortConfigurationInterceptor implements
ConfigurationInterceptor {
+public class StringRemapperConfigurationInterceptor extends
TraversingConfigurationInterceptor {
- public Configuration intercept(Configuration configuration) {
- interceptInternal(configuration);
- return configuration;
+ private final Map mappings = new LinkedHashMap();
+
+ /**
+ * @param mappings - Map<String, String>, key being the string to be
replaced, value being the replacement
+ */
+ public void setMappings(Map mappings) {
+ this.mappings.putAll(mappings);
+ }
+
+ protected void process(MutableConfiguration mutableConfiguration) {
+
+ processAttributes(mutableConfiguration);
+ processValue(mutableConfiguration);
}
- private void interceptInternal(Configuration configuration) {
- String name = configuration.getName();
- if ("port".equals(name) && configuration instanceof
MutableConfiguration) {
- MutableConfiguration mutableConfiguration = (MutableConfiguration)
configuration;
- int port = configuration.getValueAsInteger(0);
- if (port > 0 && port < 1024) {
- // map privileged port to unprivileged in the 9000's range
- port += 9000;
+ private void processAttributes(MutableConfiguration mutableConfiguration) {
+ String[] attributeNames = mutableConfiguration.getAttributeNames();
+ for (int i = 0; i < attributeNames.length; i++) {
+ String attributeName = attributeNames[i];
+ String attributeValue = null;
+ try {
+ attributeValue =
mutableConfiguration.getAttribute(attributeName);
+ } catch (ConfigurationException e) {
+ continue; // if value is not accessible, skip it
}
- mutableConfiguration.setValue(port);
+
+ Iterator iterator = mappings.keySet().iterator();
+ while (iterator.hasNext()) {
+ String find = (String) iterator.next();
+ String replacement = (String) mappings.get(find);
+ String replaced = StringUtils.replace(attributeValue, find,
replacement);
+ mutableConfiguration.setAttribute(attributeName, replaced);
+ }
+ }
+ }
+
+ private void processValue(MutableConfiguration mutableConfiguration) {
+ String value = null;
+ try {
+ value = mutableConfiguration.getValue();
+ } catch (ConfigurationException e) {
+ return; // if value is inaccessible, we better skip it
}
+ if (value == null) return;
- // go deep.
- Configuration[] children = configuration.getChildren();
- for (int i = 0; i < children.length; i++) {
- Configuration childConfiguration = children[i];
- interceptInternal(childConfiguration);
+ Iterator iterator = mappings.keySet().iterator();
+ while (iterator.hasNext()) {
+ String find = (String) iterator.next();
+ String replacement = (String) mappings.get(find);
+ String replaced = StringUtils.replace(value, find, replacement);
+ mutableConfiguration.setValue(replaced);
}
}
-}
+}
\ No newline at end of file
Added:
james/server/sandbox/spring-integration/spring-deployment/src/main/java/org/apache/james/container/spring/examples/configuration/TraversingConfigurationInterceptor.java
URL:
http://svn.apache.org/viewvc/james/server/sandbox/spring-integration/spring-deployment/src/main/java/org/apache/james/container/spring/examples/configuration/TraversingConfigurationInterceptor.java?rev=569066&view=auto
==============================================================================
---
james/server/sandbox/spring-integration/spring-deployment/src/main/java/org/apache/james/container/spring/examples/configuration/TraversingConfigurationInterceptor.java
(added)
+++
james/server/sandbox/spring-integration/spring-deployment/src/main/java/org/apache/james/container/spring/examples/configuration/TraversingConfigurationInterceptor.java
Thu Aug 23 09:39:54 2007
@@ -0,0 +1,31 @@
+package org.apache.james.container.spring.examples.configuration;
+
+import
org.apache.james.container.spring.configuration.ConfigurationInterceptor;
+import org.apache.avalon.framework.configuration.Configuration;
+import org.apache.avalon.framework.configuration.MutableConfiguration;
+
+/**
+ * traverses over all configurations in the configuration tree
+ */
+public abstract class TraversingConfigurationInterceptor implements
ConfigurationInterceptor {
+ public Configuration intercept(Configuration configuration) {
+ interceptInternal(configuration);
+ return configuration;
+ }
+
+ private void interceptInternal(Configuration configuration) {
+ if (configuration instanceof MutableConfiguration) {
+ MutableConfiguration mutableConfiguration = (MutableConfiguration)
configuration;
+ process(mutableConfiguration);
+ }
+
+ // go deep.
+ Configuration[] children = configuration.getChildren();
+ for (int i = 0; i < children.length; i++) {
+ Configuration childConfiguration = children[i];
+ interceptInternal(childConfiguration);
+ }
+ }
+
+ protected abstract void process(MutableConfiguration mutableConfiguration);
+}
Modified:
james/server/sandbox/spring-integration/spring-deployment/src/main/java/org/apache/james/container/spring/examples/configuration/UnprivilegedPortConfigurationInterceptor.java
URL:
http://svn.apache.org/viewvc/james/server/sandbox/spring-integration/spring-deployment/src/main/java/org/apache/james/container/spring/examples/configuration/UnprivilegedPortConfigurationInterceptor.java?rev=569066&r1=569065&r2=569066&view=diff
==============================================================================
---
james/server/sandbox/spring-integration/spring-deployment/src/main/java/org/apache/james/container/spring/examples/configuration/UnprivilegedPortConfigurationInterceptor.java
(original)
+++
james/server/sandbox/spring-integration/spring-deployment/src/main/java/org/apache/james/container/spring/examples/configuration/UnprivilegedPortConfigurationInterceptor.java
Thu Aug 23 09:39:54 2007
@@ -18,37 +18,22 @@
****************************************************************/
package org.apache.james.container.spring.examples.configuration;
-import org.apache.avalon.framework.configuration.Configuration;
import org.apache.avalon.framework.configuration.MutableConfiguration;
-import
org.apache.james.container.spring.configuration.ConfigurationInterceptor;
/**
* re-maps all privileged ports into the 9000's range
*/
-public class UnprivilegedPortConfigurationInterceptor implements
ConfigurationInterceptor {
-
- public Configuration intercept(Configuration configuration) {
- interceptInternal(configuration);
- return configuration;
- }
+public class UnprivilegedPortConfigurationInterceptor extends
TraversingConfigurationInterceptor {
- private void interceptInternal(Configuration configuration) {
- String name = configuration.getName();
- if ("port".equals(name) && configuration instanceof
MutableConfiguration) {
- MutableConfiguration mutableConfiguration = (MutableConfiguration)
configuration;
- int port = configuration.getValueAsInteger(0);
+ protected void process(MutableConfiguration mutableConfiguration) {
+ String name = mutableConfiguration.getName();
+ if ("port".equals(name)) {
+ int port = mutableConfiguration.getValueAsInteger(0);
if (port > 0 && port < 1024) {
// map privileged port to unprivileged in the 9000's range
port += 9000;
}
mutableConfiguration.setValue(port);
- }
-
- // go deep.
- Configuration[] children = configuration.getChildren();
- for (int i = 0; i < children.length; i++) {
- Configuration childConfiguration = children[i];
- interceptInternal(childConfiguration);
}
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]