Author: norman
Date: Wed Sep  9 09:33:36 2009
New Revision: 812854

URL: http://svn.apache.org/viewvc?rev=812854&view=rev
Log:
Use Xquery to get only inject the relevant configuration part to the handlers 
(JAMES-918)

Modified:
    james/server/trunk/pom.xml
    james/server/trunk/smtpserver-function/pom.xml
    
james/server/trunk/smtpserver-function/src/main/java/org/apache/james/smtpserver/JamesConfiguration.java
    
james/server/trunk/smtpserver-function/src/main/java/org/apache/james/smtpserver/SMTPHandlerChain.java

Modified: james/server/trunk/pom.xml
URL: 
http://svn.apache.org/viewvc/james/server/trunk/pom.xml?rev=812854&r1=812853&r2=812854&view=diff
==============================================================================
--- james/server/trunk/pom.xml (original)
+++ james/server/trunk/pom.xml Wed Sep  9 09:33:36 2009
@@ -988,6 +988,13 @@
       <artifactId>cornerstone-datasources-api</artifactId>
       <version>2.2.2</version>
     </dependency>
+    <dependency>
+        <groupId>commons-jxpath</groupId>
+        <artifactId>commons-jxpath</artifactId>
+        <version>1.3</version>
+        <scope>runtime</scope>
+    </dependency> 
+    
     <!-- Used by Mime4J -->
     <dependency>
       <groupId>commons-io</groupId>

Modified: james/server/trunk/smtpserver-function/pom.xml
URL: 
http://svn.apache.org/viewvc/james/server/trunk/smtpserver-function/pom.xml?rev=812854&r1=812853&r2=812854&view=diff
==============================================================================
--- james/server/trunk/smtpserver-function/pom.xml (original)
+++ james/server/trunk/smtpserver-function/pom.xml Wed Sep  9 09:33:36 2009
@@ -105,7 +105,11 @@
       <groupId>org.apache.james</groupId>
       <artifactId>apache-jspf</artifactId>
     </dependency>
-    
+        <dependency>
+        <groupId>commons-jxpath</groupId>
+        <artifactId>commons-jxpath</artifactId>
+        <scope>runtime</scope>
+    </dependency> 
     <dependency>
       <groupId>org.apache.james</groupId>
       <artifactId>james-server-core-library</artifactId>

Modified: 
james/server/trunk/smtpserver-function/src/main/java/org/apache/james/smtpserver/JamesConfiguration.java
URL: 
http://svn.apache.org/viewvc/james/server/trunk/smtpserver-function/src/main/java/org/apache/james/smtpserver/JamesConfiguration.java?rev=812854&r1=812853&r2=812854&view=diff
==============================================================================
--- 
james/server/trunk/smtpserver-function/src/main/java/org/apache/james/smtpserver/JamesConfiguration.java
 (original)
+++ 
james/server/trunk/smtpserver-function/src/main/java/org/apache/james/smtpserver/JamesConfiguration.java
 Wed Sep  9 09:33:36 2009
@@ -24,6 +24,7 @@
 import org.apache.avalon.framework.configuration.ConfigurationUtil;
 import org.apache.commons.configuration.ConfigurationException;
 import org.apache.commons.configuration.XMLConfiguration;
+import org.apache.commons.configuration.tree.xpath.XPathExpressionEngine;
 
 /**
  *
@@ -39,5 +40,8 @@
        public 
JamesConfiguration(org.apache.avalon.framework.configuration.Configuration 
avalonConfig) throws ConfigurationException {
                String config = ConfigurationUtil.toString(avalonConfig);
                load(new ByteArrayInputStream(config.getBytes()));
+               
+               setExpressionEngine(new XPathExpressionEngine());
+
        }
 }

Modified: 
james/server/trunk/smtpserver-function/src/main/java/org/apache/james/smtpserver/SMTPHandlerChain.java
URL: 
http://svn.apache.org/viewvc/james/server/trunk/smtpserver-function/src/main/java/org/apache/james/smtpserver/SMTPHandlerChain.java?rev=812854&r1=812853&r2=812854&view=diff
==============================================================================
--- 
james/server/trunk/smtpserver-function/src/main/java/org/apache/james/smtpserver/SMTPHandlerChain.java
 (original)
+++ 
james/server/trunk/smtpserver-function/src/main/java/org/apache/james/smtpserver/SMTPHandlerChain.java
 Wed Sep  9 09:33:36 2009
@@ -50,7 +50,7 @@
 
     /** Configuration for this chain */
     private Configuration configuration;
-    private org.apache.commons.configuration.Configuration commonsConf;
+    private JamesConfiguration commonsConf;
     
     private List<Object> handlers = new LinkedList<Object>();
 
@@ -213,7 +213,10 @@
         ContainerUtil.configure(handler, config);
         
         if (handler instanceof org.apache.james.smtpserver.Configurable) {
-               ((org.apache.james.smtpserver.Configurable) 
handler).configure(commonsConf);
+               // Inject only the configuration part which is necessary for 
the handler
+               // we use xquery to get this, maybe the query should get 
tweaked for better perfomance..
+               org.apache.commons.configuration.Configuration handlerConf = 
commonsConf.configurationAt("//handl...@class='" +className+"']");
+               ((org.apache.james.smtpserver.Configurable) 
handler).configure(handlerConf);
         }
 
         // if it is a commands handler add it to the map with key as command



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to