Author: berndf
Date: Sun Aug  5 07:28:50 2007
New Revision: 562874

URL: http://svn.apache.org/viewvc?view=rev&rev=562874
Log:
introduce configuration interception facility

Added:
    
james/server/sandbox/spring-integration/spring-deployment/src/main/java/org/apache/james/container/spring/configuration/
    
james/server/sandbox/spring-integration/spring-deployment/src/main/java/org/apache/james/container/spring/configuration/ConfigurationInterceptor.java
    
james/server/sandbox/spring-integration/spring-deployment/src/main/java/org/apache/james/container/spring/examples/
Modified:
    
james/server/sandbox/spring-integration/spring-deployment/src/main/config/beans-base-config.xml
    
james/server/sandbox/spring-integration/spring-deployment/src/main/config/james-config.xml
    
james/server/sandbox/spring-integration/spring-deployment/src/main/java/org/apache/james/container/spring/adaptor/AvalonConfigurationFileProvider.java
    
james/server/sandbox/spring-integration/spring-deployment/src/main/java/org/apache/james/container/spring/adaptor/ConfigurationProvider.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?view=diff&rev=562874&r1=562873&r2=562874
==============================================================================
--- 
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
 Sun Aug  5 07:28:50 2007
@@ -35,8 +35,19 @@
         <property name="logWorker" ref="logWorker" />
     </bean>
 
+    <!-- 
+         maps the default standard ports for SMTP, POP3, IMAP, NNTP to 
non-privileged ports in the
+         9000's range
+    -->
+    <bean id="exampleConfigurationInterceptor" 
class="org.apache.james.container.spring.examples.configuration.UnprivilegedPortConfigurationInterceptor"
 />
+    
     <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" />-->
+            </list>
+        </property>
     </bean>
 
     <bean id="avalonContext" 
class="org.apache.james.container.spring.adaptor.AvalonContext" >

Modified: 
james/server/sandbox/spring-integration/spring-deployment/src/main/config/james-config.xml
URL: 
http://svn.apache.org/viewvc/james/server/sandbox/spring-integration/spring-deployment/src/main/config/james-config.xml?view=diff&rev=562874&r1=562873&r2=562874
==============================================================================
--- 
james/server/sandbox/spring-integration/spring-deployment/src/main/config/james-config.xml
 (original)
+++ 
james/server/sandbox/spring-integration/spring-deployment/src/main/config/james-config.xml
 Sun Aug  5 07:28:50 2007
@@ -187,7 +187,7 @@
    <imapserver enabled="true">
       <!-- port 993 is the well-known/IANA registered port for IMAPs ie over 
SSL/TLS -->
       <!-- port 143 is the well-known/IANA registered port for Standard IMAP4 
-->
-      <port>10143</port>
+      <port>143</port>
       <handler>
        <!-- RFC 3501 requires a minimum timeout of 30 minutes -->
        <connectiontimeout>1800000</connectiontimeout>         
@@ -940,7 +940,7 @@
    <pop3server enabled="true">
       <!-- port 995 is the well-known/IANA registered port for POP3S  ie over 
SSL/TLS -->
       <!-- port 110 is the well-known/IANA registered port for Standard POP3 
-->
-      <port>10110</port>
+      <port>110</port>
 
       <!-- Uncomment this if you want to bind to a specific inetaddress -->
       <!--
@@ -967,7 +967,7 @@
     <!-- but does not free as many resources as removing them would -->
    <smtpserver enabled="true">
       <!-- port 25 is the well-known/IANA registered port for SMTP -->
-      <port>10025</port>
+      <port>25</port>
 
       <!-- Uncomment this if you want to bind to a specific inetaddress -->
       <!-- Please NOTE: you should add this IP also to your 
RemoteAddrNotInNetwork -->
@@ -1067,7 +1067,7 @@
         service.  -->
       <!-- port 563 is the well-known/IANA registered port for NNTP over 
SSL/TLS -->
       <!-- port 119 is the well-known/IANA registered port for Standard NNTP 
-->
-      <port>10119</port>
+      <port>119</port>
 
       <!-- Uncomment this if you want to bind to a specific inetaddress -->
       <!--

Modified: 
james/server/sandbox/spring-integration/spring-deployment/src/main/java/org/apache/james/container/spring/adaptor/AvalonConfigurationFileProvider.java
URL: 
http://svn.apache.org/viewvc/james/server/sandbox/spring-integration/spring-deployment/src/main/java/org/apache/james/container/spring/adaptor/AvalonConfigurationFileProvider.java?view=diff&rev=562874&r1=562873&r2=562874
==============================================================================
--- 
james/server/sandbox/spring-integration/spring-deployment/src/main/java/org/apache/james/container/spring/adaptor/AvalonConfigurationFileProvider.java
 (original)
+++ 
james/server/sandbox/spring-integration/spring-deployment/src/main/java/org/apache/james/container/spring/adaptor/AvalonConfigurationFileProvider.java
 Sun Aug  5 07:28:50 2007
@@ -20,8 +20,12 @@
 
 import org.apache.avalon.framework.configuration.Configuration;
 import org.apache.avalon.phoenix.tools.configuration.ConfigurationBuilder;
+import 
org.apache.james.container.spring.configuration.ConfigurationInterceptor;
 import org.xml.sax.InputSource;
 
+import java.util.List;
+import java.util.Iterator;
+
 /**
  * loads the well-known classic James configuration file
  *
@@ -30,6 +34,8 @@
 public class AvalonConfigurationFileProvider implements ConfigurationProvider {
 
     private String absoluteFilePath;
+    private List configurationInterceptors;
+    private Iterator interceptorsIterator;
 
     public void setConfigurationPath(String absoluteFilePath) {
         this.absoluteFilePath = absoluteFilePath;
@@ -38,10 +44,10 @@
 
     public Configuration getConfiguration() {
         InputSource inputSource = new InputSource(absoluteFilePath);
+        Configuration configuration;
         try
         {
-            Configuration configuration = 
ConfigurationBuilder.build(inputSource, null, null);
-            return configuration;
+            configuration = ConfigurationBuilder.build(inputSource, null, 
null);
         }
         catch( final Exception e )
         {
@@ -49,5 +55,19 @@
             throw new RuntimeException("failed loading configuration ", e);
         }
 
+        // apply all interceptors
+        if (configuration != null && configurationInterceptors != null) {
+            interceptorsIterator = configurationInterceptors.iterator();
+            while (interceptorsIterator.hasNext()) {
+                ConfigurationInterceptor configurationInterceptor = 
(ConfigurationInterceptor) interceptorsIterator.next();
+                configuration = 
configurationInterceptor.intercept(configuration);
+            }
+        }
+        
+        return configuration;
+    }
+
+    public void setConfigurationInterceptors(List configurationInterceptors) {
+        this.configurationInterceptors = configurationInterceptors;
     }
 }

Modified: 
james/server/sandbox/spring-integration/spring-deployment/src/main/java/org/apache/james/container/spring/adaptor/ConfigurationProvider.java
URL: 
http://svn.apache.org/viewvc/james/server/sandbox/spring-integration/spring-deployment/src/main/java/org/apache/james/container/spring/adaptor/ConfigurationProvider.java?view=diff&rev=562874&r1=562873&r2=562874
==============================================================================
--- 
james/server/sandbox/spring-integration/spring-deployment/src/main/java/org/apache/james/container/spring/adaptor/ConfigurationProvider.java
 (original)
+++ 
james/server/sandbox/spring-integration/spring-deployment/src/main/java/org/apache/james/container/spring/adaptor/ConfigurationProvider.java
 Sun Aug  5 07:28:50 2007
@@ -20,6 +20,8 @@
 
 import org.apache.avalon.framework.configuration.Configuration;
 
+import java.util.List;
+
 /**
  * interface for providing a Avalon configuration to replace the default 
(legacy) mechanism implemented by
  * AvalonConfigurationFileProvider
@@ -27,5 +29,7 @@
 public interface ConfigurationProvider {
 
     Configuration getConfiguration();
+
+    void setConfigurationInterceptors(List configurationInterceptors);
 
 }

Added: 
james/server/sandbox/spring-integration/spring-deployment/src/main/java/org/apache/james/container/spring/configuration/ConfigurationInterceptor.java
URL: 
http://svn.apache.org/viewvc/james/server/sandbox/spring-integration/spring-deployment/src/main/java/org/apache/james/container/spring/configuration/ConfigurationInterceptor.java?view=auto&rev=562874
==============================================================================
--- 
james/server/sandbox/spring-integration/spring-deployment/src/main/java/org/apache/james/container/spring/configuration/ConfigurationInterceptor.java
 (added)
+++ 
james/server/sandbox/spring-integration/spring-deployment/src/main/java/org/apache/james/container/spring/configuration/ConfigurationInterceptor.java
 Sun Aug  5 07:28:50 2007
@@ -0,0 +1,17 @@
+package org.apache.james.container.spring.configuration;
+
+import org.apache.avalon.framework.configuration.Configuration;
+
+/**
+ * interface for modifying configurations
+ */
+public interface ConfigurationInterceptor {
+
+    /**
+     * gets a configuration, inspects and eventually changes it.
+     * @param configuration
+     * @return changed configuration
+     */
+    Configuration intercept(Configuration configuration);
+}
+



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to