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 2011/06/27 18:47:17 UTC
svn commit: r1140233 - in /james/server/trunk:
lmtpserver/src/main/java/org/apache/james/lmtpserver/netty/
pop3server/src/main/java/org/apache/james/pop3server/netty/
protocols-library/src/main/java/org/apache/james/protocols/lib/
protocols-library/src...
Author: norman
Date: Mon Jun 27 16:47:16 2011
New Revision: 1140233
URL: http://svn.apache.org/viewvc?rev=1140233&view=rev
Log:
Refactor server classes to share more code
Added:
james/server/trunk/protocols-library/src/main/java/org/apache/james/protocols/lib/netty/AbstractProtocolAsyncServer.java
Modified:
james/server/trunk/lmtpserver/src/main/java/org/apache/james/lmtpserver/netty/LMTPServer.java
james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/netty/POP3Server.java
james/server/trunk/protocols-library/src/main/java/org/apache/james/protocols/lib/ProtocolHandlerChainImpl.java
james/server/trunk/protocols-library/src/main/java/org/apache/james/protocols/lib/netty/AbstractConfigurableAsyncServer.java
james/server/trunk/smtpserver/src/main/java/org/apache/james/smtpserver/netty/SMTPServer.java
Modified: james/server/trunk/lmtpserver/src/main/java/org/apache/james/lmtpserver/netty/LMTPServer.java
URL: http://svn.apache.org/viewvc/james/server/trunk/lmtpserver/src/main/java/org/apache/james/lmtpserver/netty/LMTPServer.java?rev=1140233&r1=1140232&r2=1140233&view=diff
==============================================================================
--- james/server/trunk/lmtpserver/src/main/java/org/apache/james/lmtpserver/netty/LMTPServer.java (original)
+++ james/server/trunk/lmtpserver/src/main/java/org/apache/james/lmtpserver/netty/LMTPServer.java Mon Jun 27 16:47:16 2011
@@ -18,52 +18,31 @@
****************************************************************/
package org.apache.james.lmtpserver.netty;
-import javax.annotation.Resource;
import javax.net.ssl.SSLContext;
import org.apache.commons.configuration.ConfigurationException;
import org.apache.commons.configuration.HierarchicalConfiguration;
import org.apache.james.lmtpserver.CoreCmdHandlerLoader;
import org.apache.james.lmtpserver.jmx.JMXHandlersLoader;
-import org.apache.james.protocols.api.ProtocolHandlerLoader;
-import org.apache.james.protocols.lib.ProtocolHandlerChainImpl;
-import org.apache.james.protocols.lib.netty.AbstractConfigurableAsyncServer;
+import org.apache.james.protocols.api.HandlersPackage;
+import org.apache.james.protocols.lib.netty.AbstractProtocolAsyncServer;
import org.apache.james.protocols.smtp.SMTPConfiguration;
import org.apache.james.smtpserver.netty.SMTPChannelUpstreamHandler;
import org.apache.james.smtpserver.netty.SMTPResponseEncoder;
import org.jboss.netty.channel.ChannelUpstreamHandler;
import org.jboss.netty.handler.codec.oneone.OneToOneEncoder;
-public class LMTPServer extends AbstractConfigurableAsyncServer implements LMTPServerMBean {
+public class LMTPServer extends AbstractProtocolAsyncServer implements LMTPServerMBean {
/**
* The maximum message size allowed by this SMTP server. The default value,
* 0, means no limit.
*/
private long maxMessageSize = 0;
- private ProtocolHandlerChainImpl handlerChain;
private LMTPConfiguration lmtpConfig = new LMTPConfiguration();
private String lmtpGreeting;
- private ProtocolHandlerLoader loader;
- private HierarchicalConfiguration config;
- @Resource(name = "protocolhandlerloader")
- public void setProtocolHandlerLoader(ProtocolHandlerLoader loader) {
- this.loader = loader;
- }
- @Override
- protected void preInit() throws Exception {
- super.preInit();
- handlerChain = new ProtocolHandlerChainImpl(loader, config.configurationAt("handlerchain"), jmxName, CoreCmdHandlerLoader.class.getName(), JMXHandlersLoader.class.getName());
- handlerChain.init();
- }
-
- @Override
- protected void postDestroy() {
- super.postDestroy();
- handlerChain.destroy();
- }
/*
* (non-Javadoc)
*
@@ -85,6 +64,7 @@ public class LMTPServer extends Abstract
}
public void doConfigure(final HierarchicalConfiguration configuration) throws ConfigurationException {
+ super.doConfigure(configuration);
if (isEnabled()) {
// get the message size limit from the conf file and multiply
@@ -100,7 +80,6 @@ public class LMTPServer extends Abstract
lmtpGreeting = configuration.getString("lmtpGreeting", null);
}
- this.config = configuration;
}
/**
@@ -185,16 +164,6 @@ public class LMTPServer extends Abstract
* (non-Javadoc)
*
* @see
- * org.apache.james.protocols.smtp.SMTPServerMBean#getNetworkInterface()
- */
- public String getNetworkInterface() {
- return "unknown";
- }
-
- /*
- * (non-Javadoc)
- *
- * @see
* org.apache.james.protocols.lib.netty.AbstractConfigurableAsyncServer#
* getDefaultJMXName()
*/
@@ -224,7 +193,7 @@ public class LMTPServer extends Abstract
@Override
protected ChannelUpstreamHandler createCoreHandler() {
- return new SMTPChannelUpstreamHandler(handlerChain, lmtpConfig, getLogger());
+ return new SMTPChannelUpstreamHandler(getProtocolHandlerChain(), lmtpConfig, getLogger());
}
@Override
@@ -242,4 +211,14 @@ public class LMTPServer extends Abstract
return false;
}
+ @Override
+ protected Class<? extends HandlersPackage> getCoreHandlersPackage() {
+ return CoreCmdHandlerLoader.class;
+ }
+
+ @Override
+ protected Class<? extends HandlersPackage> getJMXHandlersPackage() {
+ return JMXHandlersLoader.class;
+ }
+
}
Modified: james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/netty/POP3Server.java
URL: http://svn.apache.org/viewvc/james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/netty/POP3Server.java?rev=1140233&r1=1140232&r2=1140233&view=diff
==============================================================================
--- james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/netty/POP3Server.java (original)
+++ james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/netty/POP3Server.java Mon Jun 27 16:47:16 2011
@@ -18,66 +18,30 @@
****************************************************************/
package org.apache.james.pop3server.netty;
-import javax.annotation.Resource;
-
-import org.apache.commons.configuration.ConfigurationException;
-import org.apache.commons.configuration.HierarchicalConfiguration;
import org.apache.james.pop3server.POP3HandlerConfigurationData;
import org.apache.james.pop3server.core.CoreCmdHandlerLoader;
import org.apache.james.pop3server.jmx.JMXHandlersLoader;
-import org.apache.james.protocols.api.ProtocolHandlerLoader;
-import org.apache.james.protocols.lib.ProtocolHandlerChainImpl;
-import org.apache.james.protocols.lib.netty.AbstractConfigurableAsyncServer;
+import org.apache.james.protocols.api.HandlersPackage;
+import org.apache.james.protocols.lib.netty.AbstractProtocolAsyncServer;
import org.jboss.netty.channel.ChannelUpstreamHandler;
import org.jboss.netty.handler.codec.oneone.OneToOneEncoder;
/**
* NIO POP3 Server which use Netty
*/
-public class POP3Server extends AbstractConfigurableAsyncServer implements POP3ServerMBean {
+public class POP3Server extends AbstractProtocolAsyncServer implements POP3ServerMBean {
/**
* The configuration data to be passed to the handler
*/
private POP3HandlerConfigurationData theConfigData = new POP3HandlerConfigurationDataImpl();
- private ProtocolHandlerChainImpl handlerChain;
-
- private ProtocolHandlerLoader loader;
-
- private HierarchicalConfiguration config;
-
- @Resource(name = "protocolhandlerloader")
- public void setProtocolHandlerLoader(ProtocolHandlerLoader loader) {
- this.loader = loader;
- }
-
- @Override
- protected void preInit() throws Exception {
- super.preInit();
- handlerChain = new ProtocolHandlerChainImpl(loader, config.configurationAt("handlerchain"), jmxName, CoreCmdHandlerLoader.class.getName(), JMXHandlersLoader.class.getName());
- handlerChain.init();
- }
-
- @Override
- protected void doConfigure(HierarchicalConfiguration config) throws ConfigurationException {
- super.doConfigure(config);
- this.config = config;
- }
-
@Override
protected int getDefaultPort() {
return 110;
}
-
- @Override
- protected void postDestroy() {
- super.postDestroy();
- handlerChain.destroy();
- }
-
/*
* (non-Javadoc)
*
@@ -121,7 +85,7 @@ public class POP3Server extends Abstract
@Override
protected ChannelUpstreamHandler createCoreHandler() {
- return new POP3ChannelUpstreamHandler(handlerChain, theConfigData, getLogger(), getSSLContext(), getEnabledCipherSuites());
+ return new POP3ChannelUpstreamHandler(getProtocolHandlerChain(), theConfigData, getLogger(), getSSLContext(), getEnabledCipherSuites());
}
@Override
@@ -129,4 +93,15 @@ public class POP3Server extends Abstract
return new POP3ResponseEncoder();
}
+
+ @Override
+ protected Class<? extends HandlersPackage> getCoreHandlersPackage() {
+ return CoreCmdHandlerLoader.class;
+ }
+
+
+ @Override
+ protected Class<? extends HandlersPackage> getJMXHandlersPackage() {
+ return JMXHandlersLoader.class;
+ }
}
Modified: james/server/trunk/protocols-library/src/main/java/org/apache/james/protocols/lib/ProtocolHandlerChainImpl.java
URL: http://svn.apache.org/viewvc/james/server/trunk/protocols-library/src/main/java/org/apache/james/protocols/lib/ProtocolHandlerChainImpl.java?rev=1140233&r1=1140232&r2=1140233&view=diff
==============================================================================
--- james/server/trunk/protocols-library/src/main/java/org/apache/james/protocols/lib/ProtocolHandlerChainImpl.java (original)
+++ james/server/trunk/protocols-library/src/main/java/org/apache/james/protocols/lib/ProtocolHandlerChainImpl.java Mon Jun 27 16:47:16 2011
@@ -44,12 +44,12 @@ public class ProtocolHandlerChainImpl im
private String jmxHandlersPackage;
private List<Object> handlers = new LinkedList<Object>();
- public ProtocolHandlerChainImpl(ProtocolHandlerLoader loader, HierarchicalConfiguration handlerchainConfig, String jmxName, String coreHandlersPackage, String jmxHandlersPackage) {
+ public ProtocolHandlerChainImpl(ProtocolHandlerLoader loader, HierarchicalConfiguration handlerchainConfig, String jmxName, Class<? extends HandlersPackage> coreHandlersPackage, Class<? extends HandlersPackage> jmxHandlersPackage) {
this.loader = loader;
this.handlerchainConfig = handlerchainConfig;
this.jmxName = jmxName;
- this.coreHandlersPackage = coreHandlersPackage;
- this.jmxHandlersPackage = jmxHandlersPackage;
+ this.coreHandlersPackage = coreHandlersPackage.getName();
+ this.jmxHandlersPackage = jmxHandlersPackage.getName();
}
@SuppressWarnings("unchecked")
Modified: james/server/trunk/protocols-library/src/main/java/org/apache/james/protocols/lib/netty/AbstractConfigurableAsyncServer.java
URL: http://svn.apache.org/viewvc/james/server/trunk/protocols-library/src/main/java/org/apache/james/protocols/lib/netty/AbstractConfigurableAsyncServer.java?rev=1140233&r1=1140232&r2=1140233&view=diff
==============================================================================
--- james/server/trunk/protocols-library/src/main/java/org/apache/james/protocols/lib/netty/AbstractConfigurableAsyncServer.java (original)
+++ james/server/trunk/protocols-library/src/main/java/org/apache/james/protocols/lib/netty/AbstractConfigurableAsyncServer.java Mon Jun 27 16:47:16 2011
@@ -266,7 +266,7 @@ public abstract class AbstractConfigurab
}
protected void postDestroy() {
-
+ // override me
}
Added: james/server/trunk/protocols-library/src/main/java/org/apache/james/protocols/lib/netty/AbstractProtocolAsyncServer.java
URL: http://svn.apache.org/viewvc/james/server/trunk/protocols-library/src/main/java/org/apache/james/protocols/lib/netty/AbstractProtocolAsyncServer.java?rev=1140233&view=auto
==============================================================================
--- james/server/trunk/protocols-library/src/main/java/org/apache/james/protocols/lib/netty/AbstractProtocolAsyncServer.java (added)
+++ james/server/trunk/protocols-library/src/main/java/org/apache/james/protocols/lib/netty/AbstractProtocolAsyncServer.java Mon Jun 27 16:47:16 2011
@@ -0,0 +1,90 @@
+/****************************************************************
+ * 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.protocols.lib.netty;
+
+import javax.annotation.Resource;
+
+import org.apache.commons.configuration.ConfigurationException;
+import org.apache.commons.configuration.HierarchicalConfiguration;
+import org.apache.james.protocols.api.HandlersPackage;
+import org.apache.james.protocols.api.ProtocolHandler;
+import org.apache.james.protocols.api.ProtocolHandlerChain;
+import org.apache.james.protocols.api.ProtocolHandlerLoader;
+import org.apache.james.protocols.lib.ProtocolHandlerChainImpl;
+
+/**
+ * Abstract base class which use a {@link ProtocolHandlerLoader} for loading the {@link ProtocolHandler}
+ *
+ *
+ */
+public abstract class AbstractProtocolAsyncServer extends AbstractConfigurableAsyncServer{
+
+ private ProtocolHandlerChainImpl handlerChain;
+
+ private ProtocolHandlerLoader loader;
+
+ private HierarchicalConfiguration config;
+
+ @Resource(name = "protocolhandlerloader")
+ public void setProtocolHandlerLoader(ProtocolHandlerLoader loader) {
+ this.loader = loader;
+ }
+
+ @Override
+ protected void preInit() throws Exception {
+ super.preInit();
+ handlerChain = new ProtocolHandlerChainImpl(loader, config.configurationAt("handlerchain"), jmxName, getCoreHandlersPackage(), getJMXHandlersPackage());
+ handlerChain.init();
+ }
+
+ @Override
+ protected void doConfigure(HierarchicalConfiguration config) throws ConfigurationException {
+ super.doConfigure(config);
+ this.config = config;
+ }
+
+ @Override
+ protected void postDestroy() {
+ super.postDestroy();
+ handlerChain.destroy();
+ }
+
+ /**
+ * Return the {@link ProtocolHandlerChain} which contains all loaded handlers
+ *
+ * @return chain
+ */
+ protected ProtocolHandlerChain getProtocolHandlerChain() {
+ return handlerChain;
+ }
+
+ /**
+ * Return the {@link HandlersPackage} which is responsible to load the core {@link ProtocolHandler}
+ *
+ * @return core
+ */
+ protected abstract Class< ? extends HandlersPackage> getCoreHandlersPackage();
+
+ /**
+ * Return the {@link HandlersPackage} which is responsible to load the jmx {@link ProtocolHandler}
+ *
+ * @return jmx
+ */
+ protected abstract Class< ? extends HandlersPackage> getJMXHandlersPackage();
+}
Modified: james/server/trunk/smtpserver/src/main/java/org/apache/james/smtpserver/netty/SMTPServer.java
URL: http://svn.apache.org/viewvc/james/server/trunk/smtpserver/src/main/java/org/apache/james/smtpserver/netty/SMTPServer.java?rev=1140233&r1=1140232&r2=1140233&view=diff
==============================================================================
--- james/server/trunk/smtpserver/src/main/java/org/apache/james/smtpserver/netty/SMTPServer.java (original)
+++ james/server/trunk/smtpserver/src/main/java/org/apache/james/smtpserver/netty/SMTPServer.java Mon Jun 27 16:47:16 2011
@@ -24,9 +24,8 @@ import org.apache.commons.configuration.
import org.apache.commons.configuration.HierarchicalConfiguration;
import org.apache.james.dnsservice.api.DNSService;
import org.apache.james.dnsservice.library.netmatcher.NetMatcher;
-import org.apache.james.protocols.api.ProtocolHandlerLoader;
-import org.apache.james.protocols.lib.ProtocolHandlerChainImpl;
-import org.apache.james.protocols.lib.netty.AbstractConfigurableAsyncServer;
+import org.apache.james.protocols.api.HandlersPackage;
+import org.apache.james.protocols.lib.netty.AbstractProtocolAsyncServer;
import org.apache.james.protocols.smtp.SMTPConfiguration;
import org.apache.james.smtpserver.CoreCmdHandlerLoader;
import org.apache.james.smtpserver.jmx.JMXHandlersLoader;
@@ -36,14 +35,7 @@ import org.jboss.netty.handler.codec.one
/**
* NIO SMTPServer which use Netty
*/
-public class SMTPServer extends AbstractConfigurableAsyncServer implements SMTPServerMBean {
-
- /**
- * The handler chain - SMTPhandlers can lookup handlerchain to obtain
- * Command handlers , Message handlers and connection handlers Constructed
- * during initialisation to allow dependency injection.
- */
- private ProtocolHandlerChainImpl handlerChain;
+public class SMTPServer extends AbstractProtocolAsyncServer implements SMTPServerMBean {
/**
* Whether authentication is required to use this SMTP server.
@@ -90,23 +82,15 @@ public class SMTPServer extends Abstract
private boolean verifyIdentity;
- private ProtocolHandlerLoader loader;
-
- private HierarchicalConfiguration configuration;
-
private DNSService dns;
- @Resource(name = "protocolhandlerloader")
- public void setProtocolHandlerLoader(ProtocolHandlerLoader loader) {
- this.loader = loader;
- }
-
@Resource(name = "dnsservice")
public void setDNSService(DNSService dns) {
this.dns = dns;
}
public void doConfigure(final HierarchicalConfiguration configuration) throws ConfigurationException {
+ super.doConfigure(configuration);
if (isEnabled()) {
String authRequiredString = configuration.getString("authRequired", "false").trim().toLowerCase();
if (authRequiredString.equals("true"))
@@ -175,20 +159,6 @@ public class SMTPServer extends Abstract
verifyIdentity = configuration.getBoolean("verifyIdentity", true);
}
- this.configuration = configuration;
- }
-
- @Override
- protected void postDestroy() {
- super.postDestroy();
- handlerChain.destroy();
- }
-
- @Override
- protected void preInit() throws Exception {
- super.preInit();
- handlerChain = new ProtocolHandlerChainImpl(loader, configuration.configurationAt("handlerchain"), jmxName, CoreCmdHandlerLoader.class.getName(), JMXHandlersLoader.class.getName());
- handlerChain.init();
}
/**
@@ -325,17 +295,7 @@ public class SMTPServer extends Abstract
public boolean getHeloEhloEnforcement() {
return heloEhloEnforcement;
}
-
- /*
- * (non-Javadoc)
- *
- * @see
- * org.apache.james.protocols.smtp.SMTPServerMBean#getNetworkInterface()
- */
- public String getNetworkInterface() {
- return "unknown";
- }
-
+
/*
* (non-Javadoc)
*
@@ -390,7 +350,7 @@ public class SMTPServer extends Abstract
@Override
protected ChannelUpstreamHandler createCoreHandler() {
- return new SMTPChannelUpstreamHandler(handlerChain, theConfigData, getLogger(), getSSLContext(), getEnabledCipherSuites());
+ return new SMTPChannelUpstreamHandler(getProtocolHandlerChain(), theConfigData, getLogger(), getSSLContext(), getEnabledCipherSuites());
}
@Override
@@ -398,4 +358,14 @@ public class SMTPServer extends Abstract
return new SMTPResponseEncoder();
}
+ @Override
+ protected Class<? extends HandlersPackage> getCoreHandlersPackage() {
+ return CoreCmdHandlerLoader.class;
+ }
+
+ @Override
+ protected Class<? extends HandlersPackage> getJMXHandlersPackage() {
+ return JMXHandlersLoader.class;
+ }
+
}
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org