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]