You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by no...@apache.org on 2009/11/26 20:57:25 UTC
svn commit: r884682 - in /james/server/trunk:
avalon-socket-library/src/main/java/org/apache/james/socket/
avalon-socket-library/src/main/resources/org/apache/james/socket/
common-util/src/main/java/org/apache/james/util/
fetchmail-function/src/main/ja...
Author: norman
Date: Thu Nov 26 19:57:23 2009
New Revision: 884682
URL: http://svn.apache.org/viewvc?rev=884682&view=rev
Log:
Fix config handling for MailetConfigImpl
Fix NPE in FetchMailScheduler
Fix dependencies in MailetLoader and MatcherLoader
More Avalon removal (JAMES-893)
Added:
james/server/trunk/avalon-socket-library/src/main/java/org/apache/james/socket/AvalonSimpleConnectionManager.java
james/server/trunk/avalon-socket-library/src/main/resources/org/apache/james/socket/AvalonSimpleConnectionManager.xinfo
- copied unchanged from r829946, james/server/trunk/avalon-socket-library/src/main/resources/org/apache/james/socket/SimpleConnectionManager.xinfo
Removed:
james/server/trunk/avalon-socket-library/src/main/resources/org/apache/james/socket/SimpleConnectionManager.xinfo
Modified:
james/server/trunk/avalon-socket-library/src/main/java/org/apache/james/socket/JamesConnectionBridge.java
james/server/trunk/avalon-socket-library/src/main/java/org/apache/james/socket/ServerConnection.java
james/server/trunk/avalon-socket-library/src/main/java/org/apache/james/socket/SimpleConnectionManager.java
james/server/trunk/common-util/src/main/java/org/apache/james/util/ConfigurationAdapter.java
james/server/trunk/fetchmail-function/src/main/java/org/apache/james/fetchmail/FetchScheduler.java
james/server/trunk/nntpserver-function/src/test/java/org/apache/james/nntpserver/NNTPServerTest.java
james/server/trunk/phoenix-deployment/src/conf/james-assembly.xml
james/server/trunk/phoenix-deployment/src/test/org/apache/james/smtpserver/SMTPServerRemoteDeliveryIntegrationTest.java
james/server/trunk/pop3server-function/src/test/java/org/apache/james/pop3server/POP3ServerTest.java
james/server/trunk/remotemanager-function/src/test/java/org/apache/james/remotemanager/RemoteManagerTest.java
james/server/trunk/smtpserver-function/src/test/java/org/apache/james/smtpserver/SMTPServerTest.java
james/server/trunk/spoolmanager-function/src/main/java/org/apache/james/transport/AbstractAvalonJamesLoader.java
james/server/trunk/spoolmanager-function/src/main/java/org/apache/james/transport/LinearProcessor.java
james/server/trunk/spoolmanager-function/src/main/java/org/apache/james/transport/MailetConfigImpl.java
james/server/trunk/spoolmanager-function/src/main/java/org/apache/james/transport/mailets/VirtualUserTable.java
james/server/trunk/spoolmanager-function/src/main/resources/org/apache/james/transport/AvalonJamesMailetLoader.xinfo
james/server/trunk/spoolmanager-function/src/main/resources/org/apache/james/transport/AvalonJamesMatcherLoader.xinfo
Added: james/server/trunk/avalon-socket-library/src/main/java/org/apache/james/socket/AvalonSimpleConnectionManager.java
URL: http://svn.apache.org/viewvc/james/server/trunk/avalon-socket-library/src/main/java/org/apache/james/socket/AvalonSimpleConnectionManager.java?rev=884682&view=auto
==============================================================================
--- james/server/trunk/avalon-socket-library/src/main/java/org/apache/james/socket/AvalonSimpleConnectionManager.java (added)
+++ james/server/trunk/avalon-socket-library/src/main/java/org/apache/james/socket/AvalonSimpleConnectionManager.java Thu Nov 26 19:57:23 2009
@@ -0,0 +1,135 @@
+/****************************************************************
+ * 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. *
+ ****************************************************************/
+package org.apache.james.socket;
+
+import java.net.ServerSocket;
+
+import org.apache.avalon.cornerstone.services.connection.ConnectionHandlerFactory;
+import org.apache.avalon.cornerstone.services.threads.ThreadManager;
+import org.apache.avalon.framework.activity.Initializable;
+import org.apache.avalon.framework.configuration.Configurable;
+import org.apache.avalon.framework.configuration.Configuration;
+import org.apache.avalon.framework.configuration.ConfigurationException;
+import org.apache.avalon.framework.logger.LogEnabled;
+import org.apache.avalon.framework.logger.Logger;
+import org.apache.avalon.framework.service.ServiceException;
+import org.apache.avalon.framework.service.ServiceManager;
+import org.apache.avalon.framework.service.Serviceable;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.impl.AvalonLogger;
+import org.apache.excalibur.thread.ThreadPool;
+import org.apache.james.bridge.GuiceInjected;
+import org.apache.james.util.ConfigurationAdapter;
+import org.guiceyfruit.jsr250.Jsr250Module;
+
+import com.google.inject.AbstractModule;
+import com.google.inject.Guice;
+import com.google.inject.name.Names;
+
+public class AvalonSimpleConnectionManager implements LogEnabled, Initializable, GuiceInjected, Serviceable, Configurable, JamesConnectionManager {
+
+ private AvalonLogger logger;
+ private ConfigurationAdapter config;
+ private ThreadManager threadManager;
+ private JamesConnectionManager manager;
+
+ /**
+ * @see org.apache.avalon.framework.logger.LogEnabled#enableLogging(org.apache.avalon.framework.logger.Logger)
+ */
+ public void enableLogging(Logger logger) {
+ this.logger = new AvalonLogger(logger);
+ }
+
+
+ /**
+ * @see org.apache.avalon.framework.configuration.Configurable#configure(org.apache.avalon.framework.configuration.Configuration)
+ */
+ public void configure(Configuration config) throws ConfigurationException {
+ try {
+ this.config = new ConfigurationAdapter(config);
+ } catch (org.apache.commons.configuration.ConfigurationException e) {
+ throw new ConfigurationException("Unable to convert configuration", e);
+ }
+ }
+
+
+ public void service(ServiceManager manager) throws ServiceException {
+ threadManager = (ThreadManager) manager.lookup(ThreadManager.ROLE);
+ }
+
+ public void connect(String name, ServerSocket socket, ConnectionHandlerFactory handlerFactory, ThreadPool threadPool, int maxOpenConnections) throws Exception {
+ manager.connect(name, socket, handlerFactory, threadPool, maxOpenConnections);
+
+ }
+
+ public void connect(String name, ServerSocket socket, ConnectionHandlerFactory handlerFactory, int maxOpenConnections) throws Exception {
+ manager.connect(name, socket, handlerFactory, maxOpenConnections);
+
+ }
+
+ public void connect(String name, ServerSocket socket, ConnectionHandlerFactory handlerFactory, ThreadPool threadPool) throws Exception {
+ manager.connect(name, socket, handlerFactory, threadPool);
+
+ }
+
+ public void connect(String name, ServerSocket socket, ConnectionHandlerFactory handlerFactory) throws Exception {
+ manager.connect(name, socket, handlerFactory);
+
+ }
+
+ public void connect(String name, ServerSocket socket, ConnectionHandlerFactory handlerFactory, ThreadPool threadPool, int maxOpenConnections, int maxOpenConnectionsPerIP) throws Exception {
+ manager.connect(name, socket, handlerFactory, threadPool, maxOpenConnections, maxOpenConnectionsPerIP);
+
+ }
+
+ public void connect(String name, ServerSocket socket, ConnectionHandlerFactory handlerFactory, int maxOpenConnections, int maxOpenConnectionsPerIP) throws Exception {
+ manager.connect(name, socket, handlerFactory, maxOpenConnections, maxOpenConnectionsPerIP);
+ }
+
+ public int getMaximumNumberOfOpenConnections() {
+ return manager.getMaximumNumberOfOpenConnections();
+ }
+
+ public int getMaximumNumberOfOpenConnectionsPerIP() {
+ return manager.getMaximumNumberOfOpenConnectionsPerIP();
+ }
+
+ public void disconnect(String arg0) throws Exception {
+ manager.disconnect(arg0);
+ }
+
+ public void disconnect(String arg0, boolean arg1) throws Exception {
+ manager.disconnect(arg0, arg1);
+ }
+
+
+ public void initialize() throws Exception {
+ manager = Guice.createInjector(new Jsr250Module() , new AbstractModule() {
+
+ @Override
+ protected void configure() {
+ bind(ThreadManager.class).annotatedWith(Names.named("org.apache.avalon.cornerstone.services.threads.ThreadManager")).toInstance(threadManager);
+ bind(org.apache.commons.configuration.HierarchicalConfiguration.class).annotatedWith(Names.named("org.apache.commons.configuration.Configuration")).toInstance(config);
+ bind(Log.class).annotatedWith(Names.named("org.apache.commons.logging.Log")).toInstance(logger);
+ }
+
+ }).getInstance(SimpleConnectionManager.class);
+ }
+
+}
Modified: james/server/trunk/avalon-socket-library/src/main/java/org/apache/james/socket/JamesConnectionBridge.java
URL: http://svn.apache.org/viewvc/james/server/trunk/avalon-socket-library/src/main/java/org/apache/james/socket/JamesConnectionBridge.java?rev=884682&r1=884681&r2=884682&view=diff
==============================================================================
--- james/server/trunk/avalon-socket-library/src/main/java/org/apache/james/socket/JamesConnectionBridge.java (original)
+++ james/server/trunk/avalon-socket-library/src/main/java/org/apache/james/socket/JamesConnectionBridge.java Thu Nov 26 19:57:23 2009
@@ -37,7 +37,6 @@
import org.apache.avalon.cornerstone.services.connection.ConnectionHandler;
import org.apache.avalon.excalibur.pool.Poolable;
import org.apache.avalon.framework.container.ContainerUtil;
-import org.apache.avalon.framework.logger.Logger;
import org.apache.commons.logging.Log;
import org.apache.james.api.dnsservice.DNSService;
import org.apache.james.socket.api.CRLFTerminatedReader;
Modified: james/server/trunk/avalon-socket-library/src/main/java/org/apache/james/socket/ServerConnection.java
URL: http://svn.apache.org/viewvc/james/server/trunk/avalon-socket-library/src/main/java/org/apache/james/socket/ServerConnection.java?rev=884682&r1=884681&r2=884682&view=diff
==============================================================================
--- james/server/trunk/avalon-socket-library/src/main/java/org/apache/james/socket/ServerConnection.java (original)
+++ james/server/trunk/avalon-socket-library/src/main/java/org/apache/james/socket/ServerConnection.java Thu Nov 26 19:57:23 2009
@@ -29,6 +29,8 @@
import java.util.ArrayList;
import java.util.Iterator;
+import javax.annotation.PostConstruct;
+
import org.apache.avalon.cornerstone.services.connection.ConnectionHandler;
import org.apache.avalon.cornerstone.services.connection.ConnectionHandlerFactory;
import org.apache.avalon.excalibur.pool.HardResourceLimitingPool;
@@ -36,9 +38,9 @@
import org.apache.avalon.excalibur.pool.Pool;
import org.apache.avalon.excalibur.pool.Poolable;
import org.apache.excalibur.thread.ThreadPool ;
-import org.apache.avalon.framework.activity.Initializable;
import org.apache.avalon.framework.container.ContainerUtil;
-import org.apache.avalon.framework.logger.AbstractLogEnabled;
+import org.apache.avalon.framework.logger.CommonsLogger;
+import org.apache.commons.logging.Log;
/**
@@ -47,8 +49,8 @@
* server socket that the connection manager is managing.
*
*/
-public class ServerConnection extends AbstractLogEnabled
- implements Initializable, Runnable {
+public class ServerConnection
+ implements Runnable {
/**
* This is a hack to deal with the fact that there appears to be
@@ -120,6 +122,8 @@
*/
private Thread serverConnectionThread;
+ private Log logger;
+
/**
* The sole constructor for a ServerConnection.
*
@@ -135,7 +139,7 @@
*/
public ServerConnection(ServerSocket serverSocket,
ConnectionHandlerFactory handlerFactory,
- ThreadPool threadPool,
+ ThreadPool threadPool, Log logger,
int timeout,
int maxOpenConn, int maxOpenConnPerIP) {
this.serverSocket = serverSocket;
@@ -144,15 +148,14 @@
socketTimeout = timeout;
this.maxOpenConn = maxOpenConn;
this.maxOpenConnPerIP = maxOpenConnPerIP;
+ this.logger = logger;
}
- /**
- * @see org.apache.avalon.framework.activity.Initializable#initialize()
- */
- public void initialize() throws Exception {
+ @PostConstruct
+ public void init() throws Exception {
runnerPool = new HardResourceLimitingPool(theRunnerFactory, 5, maxOpenConn);
connPerIpMap = new ConnectionPerIpMap();
- ContainerUtil.enableLogging(runnerPool,getLogger());
+ ContainerUtil.enableLogging(runnerPool,new CommonsLogger(logger,"Pool"));
ContainerUtil.initialize(runnerPool);
}
@@ -162,8 +165,8 @@
* everything to finish.
*/
public void dispose() {
- if (getLogger().isDebugEnabled()) {
- getLogger().debug("Disposing server connection..." + this.toString());
+ if (logger.isDebugEnabled()) {
+ logger.debug("Disposing server connection..." + this.toString());
}
synchronized( this ) {
if( null != serverConnectionThread ) {
@@ -200,7 +203,7 @@
runnerPool = null;
}
- getLogger().debug("Closed server connection - cleaning up clients - " + this.toString());
+ logger.debug("Closed server connection - cleaning up clients - " + this.toString());
synchronized (clientConnectionRunners) {
Iterator<ClientConnectionRunner> runnerIterator = clientConnectionRunners.iterator();
@@ -214,7 +217,7 @@
}
- getLogger().debug("Cleaned up clients - " + this.toString());
+ logger.debug("Cleaned up clients - " + this.toString());
}
@@ -227,8 +230,8 @@
synchronized (clientConnectionRunners) {
ClientConnectionRunner clientConnectionRunner = (ClientConnectionRunner)runnerPool.get();
clientConnectionRunners.add(clientConnectionRunner);
- if (getLogger().isDebugEnabled()) {
- getLogger().debug("Adding one connection for a total of " + clientConnectionRunners.size());
+ if (logger.isDebugEnabled()) {
+ logger.debug("Adding one connection for a total of " + clientConnectionRunners.size());
}
return clientConnectionRunner;
}
@@ -248,14 +251,14 @@
* this situation will result in a dead-lock on 'clientConnectionRunners'
*/
if( runnerPool == null ) {
- getLogger().info("ServerConnection.removeClientConnectionRunner - dispose has been called - so just return : " + clientConnectionRunner );
+ logger.info("ServerConnection.removeClientConnectionRunner - dispose has been called - so just return : " + clientConnectionRunner );
return;
}
synchronized (clientConnectionRunners) {
if (clientConnectionRunners.remove(clientConnectionRunner)) {
- if (getLogger().isDebugEnabled()) {
- getLogger().debug("Releasing one connection, leaving a total of " + clientConnectionRunners.size());
+ if (logger.isDebugEnabled()) {
+ logger.debug("Releasing one connection, leaving a total of " + clientConnectionRunners.size());
}
runnerPool.put(clientConnectionRunner);
}
@@ -280,21 +283,21 @@
// Ignored - for the moment
}
- if ((getLogger().isDebugEnabled()) && (serverConnectionThread != null)) {
+ if ((logger.isDebugEnabled()) && (serverConnectionThread != null)) {
StringBuilder debugBuffer =
new StringBuilder(128)
.append(serverConnectionThread.getName())
.append(" is listening on ")
.append(serverSocket.toString());
- getLogger().debug(debugBuffer.toString());
+ logger.debug(debugBuffer.toString());
}
while( !Thread.interrupted() && null != serverConnectionThread ) {
try {
Socket clientSocket = null;
try {
while (maxOpenConn > 0 && clientConnectionRunners.size() >= maxOpenConn) {
- if (getLogger().isInfoEnabled()) {
- getLogger().info("Maximum number of open connections (" + clientConnectionRunners.size() + ") in use.");
+ if (logger.isInfoEnabled()) {
+ logger.info("Maximum number of open connections (" + clientConnectionRunners.size() + ") in use.");
}
synchronized (this) { wait(10000); }
}
@@ -307,25 +310,25 @@
continue;
} catch( IOException se ) {
if (ioExceptionCount > 0) {
- getLogger().error( "Fatal exception while listening on server socket. Terminating connection.", se );
+ logger.error( "Fatal exception while listening on server socket. Terminating connection.", se );
break;
} else {
continue;
}
} catch( SecurityException se ) {
- getLogger().error( "Fatal exception while listening on server socket. Terminating connection.", se );
+ logger.error( "Fatal exception while listening on server socket. Terminating connection.", se );
break;
}
ClientConnectionRunner runner = null;
synchronized (clientConnectionRunners) {
if ((maxOpenConn > 0) && (clientConnectionRunners.size() >= maxOpenConn)) {
- if (getLogger().isWarnEnabled()) {
- getLogger().warn("Maximum number of open connections exceeded - refusing connection. Current number of connections is " + clientConnectionRunners.size());
- if (getLogger().isInfoEnabled()) {
+ if (logger.isWarnEnabled()) {
+ logger.warn("Maximum number of open connections exceeded - refusing connection. Current number of connections is " + clientConnectionRunners.size());
+ if (logger.isInfoEnabled()) {
Iterator<ClientConnectionRunner> runnerIterator = clientConnectionRunners.iterator();
- getLogger().info("Connections: ");
+ logger.info("Connections: ");
while( runnerIterator.hasNext() ) {
- getLogger().info(" " + runnerIterator.next());
+ logger.info(" " + runnerIterator.next());
}
}
}
@@ -336,8 +339,8 @@
}
continue;
} else if ((maxOpenConnPerIP > 0) && (connPerIpMap.getConnectionPerIP(clientSocket.getInetAddress().getHostAddress()) >= maxOpenConnPerIP)) {
- if (getLogger().isWarnEnabled()) {
- getLogger().warn("Maximum number of open connections per IP exceeded - refusing connection. Current number of connections for " + clientSocket.getInetAddress().getHostAddress() + " is " + connPerIpMap.getConnectionPerIP(clientSocket.getInetAddress().getHostAddress()));
+ if (logger.isWarnEnabled()) {
+ logger.warn("Maximum number of open connections per IP exceeded - refusing connection. Current number of connections for " + clientSocket.getInetAddress().getHostAddress() + " is " + connPerIpMap.getConnectionPerIP(clientSocket.getInetAddress().getHostAddress()));
}
try {
clientSocket.close();
@@ -354,14 +357,13 @@
}
}
- setupLogger( runner );
try {
connThreadPool.execute( runner );
} catch (Exception e) {
// This error indicates that the underlying thread pool
// is out of threads. For robustness, we catch this and
// cleanup
- getLogger().error("Internal error - insufficient threads available to service request. " +
+ logger.error("Internal error - insufficient threads available to service request. " +
Thread.activeCount() + " threads in service request pool.", e);
try {
connPerIpMap.removeConnectionPerIP(clientSocket.getInetAddress().getHostAddress());
@@ -374,9 +376,9 @@
removeClientConnectionRunner(runner);
}
} catch( IOException ioe ) {
- getLogger().error( "Exception accepting connection", ioe );
+ logger.error( "Exception accepting connection", ioe );
} catch( Throwable e ) {
- getLogger().error( "Exception executing client connection runner: " + e.getMessage(), e );
+ logger.error( "Exception executing client connection runner: " + e.getMessage(), e );
}
}
synchronized( this ) {
@@ -391,7 +393,7 @@
* that occurs upon a client connection.
*
*/
- class ClientConnectionRunner extends AbstractLogEnabled
+ class ClientConnectionRunner
implements Poolable, Runnable {
/**
@@ -458,21 +460,21 @@
handler = ServerConnection.this.handlerFactory.createConnectionHandler();
String connectionString = null;
- if( getLogger().isDebugEnabled() ) {
+ if( logger.isDebugEnabled() ) {
connectionString = getConnectionString();
String message = "Starting " + connectionString;
- getLogger().debug( message );
+ logger.debug( message );
}
handler.handleConnection(clientSocket);
- if( getLogger().isDebugEnabled() ) {
+ if( logger.isDebugEnabled() ) {
String message = "Ending " + connectionString;
- getLogger().debug( message );
+ logger.debug( message );
}
} catch( Throwable e ) {
- getLogger().error( "Error handling connection", e );
+ logger.error( "Error handling connection", e );
} finally {
// remove this connection from map!
@@ -484,7 +486,7 @@
clientSocket.close();
}
} catch( IOException ioe ) {
- getLogger().warn( "Error shutting down connection", ioe );
+ logger.warn( "Error shutting down connection", ioe );
}
clientSocket = null;
Modified: james/server/trunk/avalon-socket-library/src/main/java/org/apache/james/socket/SimpleConnectionManager.java
URL: http://svn.apache.org/viewvc/james/server/trunk/avalon-socket-library/src/main/java/org/apache/james/socket/SimpleConnectionManager.java?rev=884682&r1=884681&r2=884682&view=diff
==============================================================================
--- james/server/trunk/avalon-socket-library/src/main/java/org/apache/james/socket/SimpleConnectionManager.java (original)
+++ james/server/trunk/avalon-socket-library/src/main/java/org/apache/james/socket/SimpleConnectionManager.java Thu Nov 26 19:57:23 2009
@@ -22,27 +22,25 @@
package org.apache.james.socket;
import java.net.ServerSocket;
import java.util.HashMap;
+
+import javax.annotation.PostConstruct;
+import javax.annotation.PreDestroy;
+import javax.annotation.Resource;
+
+import org.apache.commons.configuration.ConfigurationException;
+import org.apache.commons.configuration.HierarchicalConfiguration;
+import org.apache.commons.logging.Log;
import org.apache.excalibur.thread.ThreadPool;
import org.apache.avalon.cornerstone.services.connection.ConnectionHandlerFactory;
import org.apache.avalon.cornerstone.services.threads.ThreadManager;
-import org.apache.avalon.framework.service.ServiceException;
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.avalon.framework.service.Serviceable;
-import org.apache.avalon.framework.configuration.Configurable;
-import org.apache.avalon.framework.configuration.Configuration;
-import org.apache.avalon.framework.configuration.ConfigurationException;
import org.apache.avalon.framework.container.ContainerUtil;
-import org.apache.avalon.framework.activity.Disposable;
-import org.apache.avalon.framework.logger.AbstractLogEnabled;
/**
* An implementation of ConnectionManager that supports configurable
* idle timeouts and a configurable value for the maximum number of
* client connections to a particular port.
*
*/
-public class SimpleConnectionManager
- extends AbstractLogEnabled
- implements JamesConnectionManager, Serviceable, Configurable, Disposable {
+public class SimpleConnectionManager implements JamesConnectionManager {
/**
* The default value for client socket idle timeouts. The
* Java default is 0, meaning no timeout. That's dangerous
@@ -89,18 +87,32 @@
* Whether the SimpleConnectionManager has been disposed.
*/
private volatile boolean disposed = false;
+ private Log logger;
+ private HierarchicalConfiguration configuration;
+ @Resource(name="org.apache.avalon.cornerstone.services.threads.ThreadManager")
public void setThreadManager(ThreadManager threadManager) {
this.threadManager = threadManager;
}
+
- /**
- * @see org.apache.avalon.framework.configuration.Configurable#configure(Configuration)
- */
- public void configure(final Configuration configuration) throws ConfigurationException {
- timeout = configuration.getChild("idle-timeout").getValueAsInteger(DEFAULT_SOCKET_TIMEOUT);
- maxOpenConn = configuration.getChild("max-connections").getValueAsInteger(DEFAULT_MAX_CONNECTIONS);
- maxOpenConnPerIP = configuration.getChild("max-connections-per-ip").getValueAsInteger(DEFAULT_MAX_CONNECTIONS_PER_IP);
+ @Resource(name="org.apache.commons.logging.Log")
+ public void setLog(Log logger) {
+ this.logger = logger;
+ }
+
+
+ @Resource(name="org.apache.commons.configuration.Configuration")
+ public void setConfiguration(HierarchicalConfiguration configuration) {
+ this.configuration = configuration;
+ }
+
+
+ @PostConstruct
+ public void init() throws Exception {
+ timeout = configuration.getInt("idle-timeout", DEFAULT_SOCKET_TIMEOUT);
+ maxOpenConn = configuration.getInt("max-connections", DEFAULT_MAX_CONNECTIONS);
+ maxOpenConnPerIP = configuration.getInt("max-connections-per-ip", DEFAULT_MAX_CONNECTIONS_PER_IP);
if (timeout < 0) {
StringBuilder exceptionBuffer =
new StringBuilder(128).append("Specified socket timeout value of ").append(timeout).append(
@@ -121,43 +133,38 @@
" is not a legal value.");
throw new ConfigurationException(exceptionBuffer.toString());
}
- if (getLogger().isDebugEnabled()) {
- getLogger().debug(
+ if (logger.isDebugEnabled()) {
+ logger.debug(
"Connection timeout is " + (timeout == 0 ? "unlimited" : Long.toString(timeout)));
- getLogger().debug(
+ logger.debug(
"The maximum number of simultaneously open connections is "
+ (maxOpenConn == 0 ? "unlimited" : Integer.toString(maxOpenConn)));
}
}
- /**
- * @see org.apache.avalon.framework.service.Serviceable#service(ServiceManager)
- */
- public void service(ServiceManager componentManager) throws ServiceException {
- setThreadManager((ThreadManager)componentManager.lookup(ThreadManager.ROLE));
- }
/**
* Disconnects all the underlying ServerConnections
*/
+ @PreDestroy
public void dispose() {
disposed = true;
- if (getLogger().isDebugEnabled()) {
- getLogger().debug("Starting SimpleConnectionManager dispose...");
+ if (logger.isDebugEnabled()) {
+ logger.debug("Starting SimpleConnectionManager dispose...");
}
final String[] names = (String[])connectionMap.keySet().toArray(new String[0]);
for (int i = 0; i < names.length; i++) {
try {
- if (getLogger().isDebugEnabled()) {
- getLogger().debug("Disconnecting ServerConnection " + names[i]);
+ if (logger.isDebugEnabled()) {
+ logger.debug("Disconnecting ServerConnection " + names[i]);
}
disconnect(names[i], true);
} catch (final Exception e) {
- getLogger().warn("Error disconnecting " + names[i], e);
+ logger.warn("Error disconnecting " + names[i], e);
}
}
- if (getLogger().isDebugEnabled()) {
- getLogger().debug("Finishing SimpleConnectionManager dispose...");
+ if (logger.isDebugEnabled()) {
+ logger.debug("Finishing SimpleConnectionManager dispose...");
}
}
@@ -196,9 +203,8 @@
throw new IllegalArgumentException("The maximum number of client connections (per IP) per server socket cannot be less that zero.");
}
ServerConnection runner =
- new ServerConnection(socket, handlerFactory, threadPool, timeout, maxOpenConnections, maxOpenConnectionsPerIP);
- setupLogger(runner);
- ContainerUtil.initialize(runner);
+ new ServerConnection(socket, handlerFactory, threadPool, logger, timeout, maxOpenConnections, maxOpenConnectionsPerIP);
+ runner.init();
connectionMap.put(name, runner);
threadPool.execute(runner);
}
Modified: james/server/trunk/common-util/src/main/java/org/apache/james/util/ConfigurationAdapter.java
URL: http://svn.apache.org/viewvc/james/server/trunk/common-util/src/main/java/org/apache/james/util/ConfigurationAdapter.java?rev=884682&r1=884681&r2=884682&view=diff
==============================================================================
--- james/server/trunk/common-util/src/main/java/org/apache/james/util/ConfigurationAdapter.java (original)
+++ james/server/trunk/common-util/src/main/java/org/apache/james/util/ConfigurationAdapter.java Thu Nov 26 19:57:23 2009
@@ -34,9 +34,11 @@
public ConfigurationAdapter(org.apache.avalon.framework.configuration.Configuration avalonConfig) throws ConfigurationException {
String config = ConfigurationUtil.toString(avalonConfig);
+ // thats needed because of our configuration style and needs to get applied before loading the config
+ setDelimiterParsingDisabled(false);
+
load(new ByteArrayInputStream(config.getBytes()));
- // thats needed because of our configuration style
- setDelimiterParsingDisabled(false);
+
}
}
Modified: james/server/trunk/fetchmail-function/src/main/java/org/apache/james/fetchmail/FetchScheduler.java
URL: http://svn.apache.org/viewvc/james/server/trunk/fetchmail-function/src/main/java/org/apache/james/fetchmail/FetchScheduler.java?rev=884682&r1=884681&r2=884682&view=diff
==============================================================================
--- james/server/trunk/fetchmail-function/src/main/java/org/apache/james/fetchmail/FetchScheduler.java (original)
+++ james/server/trunk/fetchmail-function/src/main/java/org/apache/james/fetchmail/FetchScheduler.java Thu Nov 26 19:57:23 2009
@@ -102,6 +102,13 @@
this.logger = logger;
}
+
+ @Resource(name="org.apache.commons.configuration.Configuration")
+ public final void setConfiguration(HierarchicalConfiguration config) {
+ this.conf = config;
+ }
+
+
@SuppressWarnings("unchecked")
@PostConstruct
public void init() throws Exception
Modified: james/server/trunk/nntpserver-function/src/test/java/org/apache/james/nntpserver/NNTPServerTest.java
URL: http://svn.apache.org/viewvc/james/server/trunk/nntpserver-function/src/test/java/org/apache/james/nntpserver/NNTPServerTest.java?rev=884682&r1=884681&r2=884682&view=diff
==============================================================================
--- james/server/trunk/nntpserver-function/src/test/java/org/apache/james/nntpserver/NNTPServerTest.java (original)
+++ james/server/trunk/nntpserver-function/src/test/java/org/apache/james/nntpserver/NNTPServerTest.java Thu Nov 26 19:57:23 2009
@@ -31,7 +31,7 @@
import org.apache.avalon.cornerstone.services.sockets.SocketManager;
import org.apache.avalon.cornerstone.services.threads.ThreadManager;
import org.apache.avalon.framework.container.ContainerUtil;
-import org.apache.avalon.framework.service.ServiceException;
+import org.apache.commons.configuration.DefaultConfigurationBuilder;
import org.apache.commons.logging.impl.SimpleLog;
import org.apache.commons.net.nntp.NNTPClient;
import org.apache.james.api.dnsservice.AbstractDNSServer;
@@ -46,7 +46,6 @@
import org.apache.james.socket.AvalonProtocolServer;
import org.apache.james.socket.JamesConnectionManager;
import org.apache.james.socket.SimpleConnectionManager;
-import org.apache.james.test.mock.avalon.MockLogger;
import org.apache.james.test.mock.avalon.MockSocketManager;
import org.apache.james.test.mock.avalon.MockThreadManager;
import org.apache.james.test.mock.james.MockFileSystem;
@@ -116,7 +115,7 @@
protoserver.init();
}
- protected void setUpServiceManager() throws ServiceException {
+ protected void setUpServiceManager() throws Exception {
serviceManager = new FakeLoader();
m_usersRepository = new MockUsersRepository();
m_mailServer = new MockMailServer(m_usersRepository);
@@ -140,10 +139,7 @@
m_nntpRepos.setFileSystem(fs);
- connectionManager = new SimpleConnectionManager();
- ContainerUtil.enableLogging(connectionManager, new MockLogger());
-
- serviceManager.put(JamesConnectionManager.ROLE, connectionManager);
+
serviceManager.put(MailServer.ROLE, m_mailServer);
serviceManager.put(UsersRepository.ROLE, m_usersRepository);
@@ -153,6 +149,15 @@
threadManager = new MockThreadManager();
serviceManager.put(ThreadManager.ROLE, threadManager);
+
+ connectionManager = new SimpleConnectionManager();
+ connectionManager.setThreadManager(threadManager);
+ connectionManager.setLog(new SimpleLog("CM"));
+ connectionManager.setConfiguration(new DefaultConfigurationBuilder());
+ connectionManager.init();
+
+ serviceManager.put(JamesConnectionManager.ROLE, connectionManager);
+
nntpRepos = new MockNNTPRepository();
serviceManager.put(NNTPRepository.ROLE, nntpRepos);
Modified: james/server/trunk/phoenix-deployment/src/conf/james-assembly.xml
URL: http://svn.apache.org/viewvc/james/server/trunk/phoenix-deployment/src/conf/james-assembly.xml?rev=884682&r1=884681&r2=884682&view=diff
==============================================================================
--- james/server/trunk/phoenix-deployment/src/conf/james-assembly.xml (original)
+++ james/server/trunk/phoenix-deployment/src/conf/james-assembly.xml Thu Nov 26 19:57:23 2009
@@ -77,6 +77,9 @@
<provide name="defaultvirtualusertable"
role="org.apache.james.api.vut.VirtualUserTable" />
<provide name="virtualusertable-store" role="org.apache.james.api.vut.VirtualUserTableStore"/>
+ <provide name="imapserver" role="org.apache.jsieve.mailet.Poster"/>
+ <provide name="mailstore" role="org.apache.avalon.cornerstone.services.store.Store"/>
+ <provide name="users-store" role="org.apache.james.api.user.UsersStore"/>
<proxy disable='true'/>
</block>
@@ -90,6 +93,9 @@
<provide name="defaultvirtualusertable"
role="org.apache.james.api.vut.VirtualUserTable" />
<provide name="virtualusertable-store" role="org.apache.james.api.vut.VirtualUserTableStore"/>
+ <provide name="imapserver" role="org.apache.jsieve.mailet.Poster"/>
+ <provide name="mailstore" role="org.apache.avalon.cornerstone.services.store.Store"/>
+ <provide name="users-store" role="org.apache.james.api.user.UsersStore"/>
<proxy disable='true'/>
</block>
@@ -372,7 +378,7 @@
<!-- The Connection Manager block -->
<block name="connections"
- class="org.apache.james.socket.SimpleConnectionManager" >
+ class="org.apache.james.socket.AvalonSimpleConnectionManager" >
<provide name="thread-manager"
role="org.apache.avalon.cornerstone.services.threads.ThreadManager" />
<proxy disable='true'/>
Modified: james/server/trunk/phoenix-deployment/src/test/org/apache/james/smtpserver/SMTPServerRemoteDeliveryIntegrationTest.java
URL: http://svn.apache.org/viewvc/james/server/trunk/phoenix-deployment/src/test/org/apache/james/smtpserver/SMTPServerRemoteDeliveryIntegrationTest.java?rev=884682&r1=884681&r2=884682&view=diff
==============================================================================
--- james/server/trunk/phoenix-deployment/src/test/org/apache/james/smtpserver/SMTPServerRemoteDeliveryIntegrationTest.java (original)
+++ james/server/trunk/phoenix-deployment/src/test/org/apache/james/smtpserver/SMTPServerRemoteDeliveryIntegrationTest.java Thu Nov 26 19:57:23 2009
@@ -41,6 +41,7 @@
import org.apache.avalon.cornerstone.services.store.Store;
import org.apache.avalon.cornerstone.services.threads.ThreadManager;
import org.apache.avalon.framework.container.ContainerUtil;
+import org.apache.commons.configuration.DefaultConfigurationBuilder;
import org.apache.commons.logging.impl.SimpleLog;
import org.apache.james.Constants;
import org.apache.james.api.dnsservice.DNSService;
@@ -227,9 +228,7 @@
private FakeLoader setUpServiceManager() throws Exception {
m_serviceManager = new FakeLoader();
- connectionManager = new SimpleConnectionManager();
- ContainerUtil.enableLogging(connectionManager, new MockLogger());
- m_serviceManager.put(JamesConnectionManager.ROLE, connectionManager);
+
mailetContext = new FakeMailContext();
m_serviceManager.put(MailetContext.class.getName(), mailetContext);
m_mailServer = new MockMailServer(new MockUsersRepository());
@@ -243,6 +242,14 @@
m_serviceManager.put(SocketManager.ROLE, socketManager);
threadManager = new MockThreadManager();
m_serviceManager.put(ThreadManager.ROLE,threadManager );
+
+ connectionManager = new SimpleConnectionManager();
+ connectionManager.setThreadManager(threadManager);
+ connectionManager.setLog(new SimpleLog("CM"));
+ connectionManager.setConfiguration(new DefaultConfigurationBuilder());
+ connectionManager.init();
+ m_serviceManager.put(SimpleConnectionManager.ROLE, connectionManager);
+
m_dnsServer = new AlterableDNSServer();
m_serviceManager.put(DNSService.ROLE, m_dnsServer);
m_serviceManager.put("dnsserver", m_dnsServer);
Modified: james/server/trunk/pop3server-function/src/test/java/org/apache/james/pop3server/POP3ServerTest.java
URL: http://svn.apache.org/viewvc/james/server/trunk/pop3server-function/src/test/java/org/apache/james/pop3server/POP3ServerTest.java?rev=884682&r1=884681&r2=884682&view=diff
==============================================================================
--- james/server/trunk/pop3server-function/src/test/java/org/apache/james/pop3server/POP3ServerTest.java (original)
+++ james/server/trunk/pop3server-function/src/test/java/org/apache/james/pop3server/POP3ServerTest.java Thu Nov 26 19:57:23 2009
@@ -19,10 +19,23 @@
package org.apache.james.pop3server;
+import java.io.InputStream;
+import java.io.Reader;
+import java.net.InetAddress;
+import java.net.UnknownHostException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+import javax.mail.MessagingException;
+import javax.mail.util.SharedByteArrayInputStream;
+
+import junit.framework.TestCase;
+
import org.apache.avalon.cornerstone.services.sockets.SocketManager;
import org.apache.avalon.cornerstone.services.threads.ThreadManager;
import org.apache.avalon.framework.container.ContainerUtil;
-import org.apache.avalon.framework.service.ServiceException;
+import org.apache.commons.configuration.DefaultConfigurationBuilder;
import org.apache.commons.logging.impl.SimpleLog;
import org.apache.commons.net.pop3.POP3Client;
import org.apache.commons.net.pop3.POP3MessageInfo;
@@ -35,8 +48,7 @@
import org.apache.james.services.MailRepository;
import org.apache.james.services.MailServer;
import org.apache.james.socket.AvalonProtocolServer;
-import org.apache.james.socket.JamesConnectionManager;
-import org.apache.james.test.mock.avalon.MockLogger;
+import org.apache.james.socket.SimpleConnectionManager;
import org.apache.james.test.mock.avalon.MockSocketManager;
import org.apache.james.test.mock.avalon.MockThreadManager;
import org.apache.james.test.mock.james.InMemorySpoolRepository;
@@ -46,22 +58,8 @@
import org.apache.james.userrepository.MockUsersRepository;
import org.apache.james.util.ConfigurationAdapter;
import org.apache.james.util.POP3BeforeSMTPHelper;
-import org.apache.james.socket.SimpleConnectionManager;
import org.apache.mailet.MailAddress;
-import javax.mail.MessagingException;
-import javax.mail.util.SharedByteArrayInputStream;
-
-import java.io.InputStream;
-import java.io.Reader;
-import java.net.InetAddress;
-import java.net.UnknownHostException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-
-import junit.framework.TestCase;
-
/**
* Tests the org.apache.james.smtpserver.SMTPServer unit
*/
@@ -128,11 +126,9 @@
protoserver.init();
}
- protected void setUpServiceManager() throws ServiceException {
+ protected void setUpServiceManager() throws Exception {
serviceManager = new FakeLoader();
- connectionManager = new SimpleConnectionManager();
- ContainerUtil.enableLogging(connectionManager, new MockLogger());
- serviceManager.put(JamesConnectionManager.ROLE, connectionManager);
+
m_mailServer = new MockMailServer(m_usersRepository);
serviceManager.put(MailServer.ROLE, m_mailServer);
serviceManager.put(UsersRepository.ROLE,
@@ -141,6 +137,14 @@
serviceManager.put(SocketManager.ROLE, socketManager);
threadManager = new MockThreadManager();
serviceManager.put(ThreadManager.ROLE, threadManager);
+
+ connectionManager = new SimpleConnectionManager();
+ connectionManager.setThreadManager(threadManager);
+ connectionManager.setLog(new SimpleLog("CM"));
+ connectionManager.setConfiguration(new DefaultConfigurationBuilder());
+ connectionManager.init();
+ serviceManager.put(SimpleConnectionManager.ROLE, connectionManager);
+
dnsservice = setUpDNSServer();
serviceManager.put(DNSService.ROLE, setUpDNSServer());
fSystem = new MockFileSystem();
Modified: james/server/trunk/remotemanager-function/src/test/java/org/apache/james/remotemanager/RemoteManagerTest.java
URL: http://svn.apache.org/viewvc/james/server/trunk/remotemanager-function/src/test/java/org/apache/james/remotemanager/RemoteManagerTest.java?rev=884682&r1=884681&r2=884682&view=diff
==============================================================================
--- james/server/trunk/remotemanager-function/src/test/java/org/apache/james/remotemanager/RemoteManagerTest.java (original)
+++ james/server/trunk/remotemanager-function/src/test/java/org/apache/james/remotemanager/RemoteManagerTest.java Thu Nov 26 19:57:23 2009
@@ -21,10 +21,25 @@
package org.apache.james.remotemanager;
+import java.io.BufferedInputStream;
+import java.io.BufferedOutputStream;
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.net.InetAddress;
+import java.net.UnknownHostException;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import javax.mail.MessagingException;
+
+import junit.framework.TestCase;
+
import org.apache.avalon.cornerstone.services.sockets.SocketManager;
import org.apache.avalon.cornerstone.services.threads.ThreadManager;
import org.apache.avalon.framework.container.ContainerUtil;
-import org.apache.avalon.framework.service.ServiceException;
+import org.apache.commons.configuration.DefaultConfigurationBuilder;
import org.apache.commons.logging.impl.SimpleLog;
import org.apache.commons.net.telnet.TelnetClient;
import org.apache.james.api.dnsservice.AbstractDNSServer;
@@ -46,39 +61,18 @@
import org.apache.james.management.SpoolManagementService;
import org.apache.james.services.MailServer;
import org.apache.james.socket.AvalonProtocolServer;
-import org.apache.james.socket.JamesConnectionManager;
import org.apache.james.socket.SimpleConnectionManager;
-import org.apache.james.test.mock.avalon.MockLogger;
import org.apache.james.test.mock.avalon.MockSocketManager;
import org.apache.james.test.mock.avalon.MockStore;
import org.apache.james.test.mock.avalon.MockThreadManager;
import org.apache.james.test.mock.james.MockFileSystem;
import org.apache.james.test.mock.james.MockMailServer;
import org.apache.james.test.mock.james.MockUsersStore;
-import org.apache.james.test.mock.james.MockVirtualUserTableManagementImpl;
-import org.apache.james.test.mock.james.MockVirtualUserTableStore;
import org.apache.james.test.util.Util;
import org.apache.james.userrepository.MockUsersRepository;
import org.apache.james.util.ConfigurationAdapter;
import org.apache.james.util.InternetPrintWriter;
-import java.io.BufferedInputStream;
-import java.io.BufferedOutputStream;
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.net.InetAddress;
-import java.net.UnknownHostException;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-import javax.mail.MessagingException;
-
-import junit.framework.TestCase;
-
/**
* Tests the org.apache.james.remotemanager.RemoteManager
* TODO: impl missing command tests for:
@@ -209,11 +203,8 @@
readAnswer(3);
}
- protected void setUpServiceManager() throws ServiceException {
+ protected void setUpServiceManager() throws Exception {
serviceManager = new FakeLoader();
- connectionManager = new SimpleConnectionManager();
- ContainerUtil.enableLogging(connectionManager, new MockLogger());
- serviceManager.put(JamesConnectionManager.ROLE, connectionManager);
m_mockUsersRepository = new MockUsersRepository();
@@ -232,6 +223,14 @@
threadManager = new MockThreadManager();
serviceManager.put(ThreadManager.ROLE, threadManager);
+
+ connectionManager = new SimpleConnectionManager();
+ connectionManager.setThreadManager(threadManager);
+ connectionManager.setLog(new SimpleLog("CM"));
+ connectionManager.setConfiguration(new DefaultConfigurationBuilder());
+ connectionManager.init();
+ serviceManager.put(SimpleConnectionManager.ROLE, connectionManager);
+
dnsservice = setUpDNSServer();
serviceManager.put(DNSService.ROLE, dnsservice);
vutManagement = new MockVirtualUserTableManagementService();
Modified: james/server/trunk/smtpserver-function/src/test/java/org/apache/james/smtpserver/SMTPServerTest.java
URL: http://svn.apache.org/viewvc/james/server/trunk/smtpserver-function/src/test/java/org/apache/james/smtpserver/SMTPServerTest.java?rev=884682&r1=884681&r2=884682&view=diff
==============================================================================
--- james/server/trunk/smtpserver-function/src/test/java/org/apache/james/smtpserver/SMTPServerTest.java (original)
+++ james/server/trunk/smtpserver-function/src/test/java/org/apache/james/smtpserver/SMTPServerTest.java Thu Nov 26 19:57:23 2009
@@ -43,6 +43,7 @@
import org.apache.avalon.cornerstone.services.store.Store;
import org.apache.avalon.cornerstone.services.threads.ThreadManager;
import org.apache.avalon.framework.container.ContainerUtil;
+import org.apache.commons.configuration.DefaultConfigurationBuilder;
import org.apache.commons.logging.impl.SimpleLog;
import org.apache.commons.net.smtp.SMTPClient;
import org.apache.commons.net.smtp.SMTPReply;
@@ -54,11 +55,9 @@
import org.apache.james.services.MailServer;
import org.apache.james.smtpserver.integration.SMTPServerDNSServiceAdapter;
import org.apache.james.socket.AvalonProtocolServer;
-import org.apache.james.socket.JamesConnectionManager;
import org.apache.james.socket.SimpleConnectionManager;
import org.apache.james.test.mock.DummyDataSourceSelector;
import org.apache.james.test.mock.DummyVirtualUserTableStore;
-import org.apache.james.test.mock.avalon.MockLogger;
import org.apache.james.test.mock.avalon.MockSocketManager;
import org.apache.james.test.mock.avalon.MockStore;
import org.apache.james.test.mock.avalon.MockThreadManager;
@@ -158,7 +157,7 @@
protected final int m_smtpListenerPort;
protected MockMailServer m_mailServer;
protected SMTPTestConfiguration m_testConfiguration;
- protected JamesConnectionManager connectionManager;
+ protected SimpleConnectionManager connectionManager;
protected SMTPServerProtocolHandlerFactory m_smtpServer;
protected MockUsersRepository m_usersRepository = new MockUsersRepository();
protected FakeLoader m_serviceManager;
@@ -239,10 +238,6 @@
protected FakeLoader setUpServiceManager() throws Exception {
m_serviceManager = new FakeLoader();
- connectionManager = new SimpleConnectionManager();
- ContainerUtil.enableLogging(connectionManager, new MockLogger());
-
- m_serviceManager.put(JamesConnectionManager.ROLE, connectionManager);
mailetContext = new FakeMailContext();
m_serviceManager.put(MailetContext.class.getName(),mailetContext);
m_mailServer = new MockMailServer(new MockUsersRepository());
@@ -254,6 +249,15 @@
threadManager = new MockThreadManager();
m_serviceManager.put(ThreadManager.ROLE, threadManager);
+
+
+ connectionManager = new SimpleConnectionManager();
+ connectionManager.setThreadManager(threadManager);
+ connectionManager.setLog(new SimpleLog("CM"));
+ connectionManager.setConfiguration(new DefaultConfigurationBuilder());
+ connectionManager.init();
+ m_serviceManager.put(SimpleConnectionManager.ROLE, connectionManager);
+
m_dnsServer = new AlterableDNSServer();
m_serviceManager.put(DNSService.ROLE, m_dnsServer);
Modified: james/server/trunk/spoolmanager-function/src/main/java/org/apache/james/transport/AbstractAvalonJamesLoader.java
URL: http://svn.apache.org/viewvc/james/server/trunk/spoolmanager-function/src/main/java/org/apache/james/transport/AbstractAvalonJamesLoader.java?rev=884682&r1=884681&r2=884682&view=diff
==============================================================================
--- james/server/trunk/spoolmanager-function/src/main/java/org/apache/james/transport/AbstractAvalonJamesLoader.java (original)
+++ james/server/trunk/spoolmanager-function/src/main/java/org/apache/james/transport/AbstractAvalonJamesLoader.java Thu Nov 26 19:57:23 2009
@@ -21,6 +21,7 @@
package org.apache.james.transport;
import org.apache.avalon.cornerstone.services.datasources.DataSourceSelector;
+import org.apache.avalon.cornerstone.services.store.Store;
import org.apache.avalon.framework.activity.Initializable;
import org.apache.avalon.framework.configuration.Configurable;
import org.apache.avalon.framework.configuration.Configuration;
@@ -35,6 +36,8 @@
import org.apache.james.api.dnsservice.DNSService;
import org.apache.james.api.kernel.LoaderService;
import org.apache.james.api.user.UsersRepository;
+import org.apache.james.api.user.UsersStore;
+import org.apache.james.api.vut.VirtualUserTable;
import org.apache.james.api.vut.VirtualUserTableStore;
import org.apache.james.bridge.GuiceInjected;
import org.apache.james.services.MailServer;
@@ -62,6 +65,9 @@
private UsersRepository userRepos;
private DataSourceSelector dselector;
private VirtualUserTableStore vutStore;
+ private Store store;
+ private VirtualUserTable vut;
+ private UsersStore usersStore;
/**
* @see org.apache.avalon.framework.configuration.Configurable#configure(org.apache.avalon.framework.configuration.Configuration)
@@ -83,7 +89,10 @@
userRepos = (UsersRepository) manager.lookup(UsersRepository.ROLE);
dselector = (DataSourceSelector) manager.lookup(DataSourceSelector.ROLE);
vutStore = (VirtualUserTableStore) manager.lookup(VirtualUserTableStore.ROLE);
-
+ store = (Store) manager.lookup(Store.ROLE);
+ vut = (VirtualUserTable) manager.lookup(VirtualUserTable.ROLE);
+ usersStore = (UsersStore) manager.lookup(UsersStore.ROLE);
+
}
@@ -107,7 +116,10 @@
bind(MailServer.class).annotatedWith(Names.named("org.apache.james.services.MailServer")).toInstance(mailserver);
bind(UsersRepository.class).annotatedWith(Names.named("org.apache.james.api.user.UsersRepository")).toInstance(userRepos);
bind(DataSourceSelector.class).annotatedWith(Names.named("org.apache.avalon.cornerstone.services.datasources.DataSourceSelector")).toInstance(dselector);
+ bind(VirtualUserTable.class).annotatedWith(Names.named("org.apache.james.api.vut.VirtualUserTable")).toInstance(vut);
bind(VirtualUserTableStore.class).annotatedWith(Names.named("org.apache.james.api.vut.VirtualUserTableStore")).toInstance(vutStore);
+ bind(Store.class).annotatedWith(Names.named("org.apache.avalon.cornerstone.services.store.Store")).toInstance(store);
+ bind(UsersStore.class).annotatedWith(Names.named("org.apache.james.api.user.UsersStore")).toInstance(usersStore);
bind(LoaderService.class).annotatedWith(Names.named("org.apache.james.LoaderService")).toProvider(new Provider<LoaderService>() {
public LoaderService get() {
Modified: james/server/trunk/spoolmanager-function/src/main/java/org/apache/james/transport/LinearProcessor.java
URL: http://svn.apache.org/viewvc/james/server/trunk/spoolmanager-function/src/main/java/org/apache/james/transport/LinearProcessor.java?rev=884682&r1=884681&r2=884682&view=diff
==============================================================================
--- james/server/trunk/spoolmanager-function/src/main/java/org/apache/james/transport/LinearProcessor.java (original)
+++ james/server/trunk/spoolmanager-function/src/main/java/org/apache/james/transport/LinearProcessor.java Thu Nov 26 19:57:23 2009
@@ -582,7 +582,7 @@
@SuppressWarnings("unchecked")
protected void configure(HierarchicalConfiguration processorConf) throws ConfigurationException {
openProcessorList();
-
+
final List<HierarchicalConfiguration> mailetConfs
= processorConf.configurationsAt( "mailet" );
// Loop through the mailet configuration, load
@@ -591,6 +591,8 @@
for ( int j = 0; j < mailetConfs.size(); j++ )
{
HierarchicalConfiguration c = mailetConfs.get(j);
+
+ // We need to set this because of correctly parsing comma
String mailetClassName = c.getString("[@class]");
String matcherName = c.getString("[@match]",null);
String invertedMatcherName = c.getString("[@notmatch]",null);
Modified: james/server/trunk/spoolmanager-function/src/main/java/org/apache/james/transport/MailetConfigImpl.java
URL: http://svn.apache.org/viewvc/james/server/trunk/spoolmanager-function/src/main/java/org/apache/james/transport/MailetConfigImpl.java?rev=884682&r1=884681&r2=884682&view=diff
==============================================================================
--- james/server/trunk/spoolmanager-function/src/main/java/org/apache/james/transport/MailetConfigImpl.java (original)
+++ james/server/trunk/spoolmanager-function/src/main/java/org/apache/james/transport/MailetConfigImpl.java Thu Nov 26 19:57:23 2009
@@ -25,7 +25,9 @@
import org.apache.mailet.MailetConfig;
import org.apache.mailet.MailetContext;
+import java.util.ArrayList;
import java.util.Iterator;
+import java.util.List;
/**
* Implements the configuration object for a Mailet.
@@ -77,7 +79,15 @@
*/
@SuppressWarnings("unchecked")
public Iterator<String> getInitParameterNames() {
- return configuration.getKeys();
+ Iterator<String> it = configuration.getKeys();
+ List<String> params = new ArrayList<String>();
+ while (it.hasNext()) {
+ String param = it.next();
+ if ((param.startsWith("[@") && param.endsWith("]")) == false) {
+ params.add(param);
+ }
+ }
+ return params.iterator();
}
/**
Modified: james/server/trunk/spoolmanager-function/src/main/java/org/apache/james/transport/mailets/VirtualUserTable.java
URL: http://svn.apache.org/viewvc/james/server/trunk/spoolmanager-function/src/main/java/org/apache/james/transport/mailets/VirtualUserTable.java?rev=884682&r1=884681&r2=884682&view=diff
==============================================================================
--- james/server/trunk/spoolmanager-function/src/main/java/org/apache/james/transport/mailets/VirtualUserTable.java (original)
+++ james/server/trunk/spoolmanager-function/src/main/java/org/apache/james/transport/mailets/VirtualUserTable.java Thu Nov 26 19:57:23 2009
@@ -76,7 +76,7 @@
* Sets the virtual table store.
* @param vutStore the vutStore to set, possibly null
*/
- @Resource(name="org.apache.james.api.vut.VirtualUserTable")
+ @Resource(name="org.apache.james.api.vut.VirtualUserTableStore")
public final void setVutStore(VirtualUserTableStore vutStore) {
this.vutStore = vutStore;
}
Modified: james/server/trunk/spoolmanager-function/src/main/resources/org/apache/james/transport/AvalonJamesMailetLoader.xinfo
URL: http://svn.apache.org/viewvc/james/server/trunk/spoolmanager-function/src/main/resources/org/apache/james/transport/AvalonJamesMailetLoader.xinfo?rev=884682&r1=884681&r2=884682&view=diff
==============================================================================
--- james/server/trunk/spoolmanager-function/src/main/resources/org/apache/james/transport/AvalonJamesMailetLoader.xinfo (original)
+++ james/server/trunk/spoolmanager-function/src/main/resources/org/apache/james/transport/AvalonJamesMailetLoader.xinfo Thu Nov 26 19:57:23 2009
@@ -60,6 +60,9 @@
<dependency>
<service name="org.apache.james.services.MailServer" version="1.0"/>
</dependency>
+ <dependency>
+ <service name="org.apache.jsieve.mailet.Poster" version="1.0"/>
+ </dependency>
</dependencies>
</blockinfo>
Modified: james/server/trunk/spoolmanager-function/src/main/resources/org/apache/james/transport/AvalonJamesMatcherLoader.xinfo
URL: http://svn.apache.org/viewvc/james/server/trunk/spoolmanager-function/src/main/resources/org/apache/james/transport/AvalonJamesMatcherLoader.xinfo?rev=884682&r1=884681&r2=884682&view=diff
==============================================================================
--- james/server/trunk/spoolmanager-function/src/main/resources/org/apache/james/transport/AvalonJamesMatcherLoader.xinfo (original)
+++ james/server/trunk/spoolmanager-function/src/main/resources/org/apache/james/transport/AvalonJamesMatcherLoader.xinfo Thu Nov 26 19:57:23 2009
@@ -60,6 +60,9 @@
<dependency>
<service name="org.apache.james.services.MailServer" version="1.0"/>
</dependency>
+ <dependency>
+ <service name="org.apache.jsieve.mailet.Poster" version="1.0"/>
+ </dependency>
</dependencies>
</blockinfo>
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org