Author: norman
Date: Thu Sep 15 10:30:11 2011
New Revision: 1171033
URL: http://svn.apache.org/viewvc?rev=1171033&view=rev
Log:
Move to latest PROTOCOLS snapshot and adjust code to use it
Modified:
james/server/trunk/pom.xml
james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/POP3Session.java
james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/netty/POP3ChannelUpstreamHandler.java
james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/netty/POP3NettySession.java
james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/netty/POP3Server.java
james/server/trunk/smtpserver/src/main/java/org/apache/james/smtpserver/netty/SMTPChannelUpstreamHandler.java
james/server/trunk/smtpserver/src/main/java/org/apache/james/smtpserver/netty/SMTPNettySession.java
james/server/trunk/smtpserver/src/main/java/org/apache/james/smtpserver/netty/SMTPServer.java
Modified: james/server/trunk/pom.xml
URL:
http://svn.apache.org/viewvc/james/server/trunk/pom.xml?rev=1171033&r1=1171032&r2=1171033&view=diff
==============================================================================
--- james/server/trunk/pom.xml (original)
+++ james/server/trunk/pom.xml Thu Sep 15 10:30:11 2011
@@ -1065,7 +1065,7 @@
<dependency>
<groupId>dnsjava</groupId>
<artifactId>dnsjava</artifactId>
- <version>2.1.2</version>
+ <version>2.1.1</version>
</dependency>
<dependency>
@@ -1427,7 +1427,7 @@
<mailbox.version>0.4-SNAPSHOT</mailbox.version>
<imap.version>0.3-SNAPSHOT</imap.version>
<james.server.version>${project.version}</james.server.version>
- <protocols.version>1.5</protocols.version>
+ <protocols.version>1.6-SNAPSHOT</protocols.version>
<jsieve.version>0.4</jsieve.version>
<jackrabbit.version>2.2.5</jackrabbit.version>
<hbase.version>0.90.3</hbase.version>
Modified:
james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/POP3Session.java
URL:
http://svn.apache.org/viewvc/james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/POP3Session.java?rev=1171033&r1=1171032&r2=1171033&view=diff
==============================================================================
---
james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/POP3Session.java
(original)
+++
james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/POP3Session.java
Thu Sep 15 10:30:11 2011
@@ -19,6 +19,8 @@
package org.apache.james.pop3server;
+import java.io.InputStream;
+
import org.apache.james.mailbox.MessageManager;
import org.apache.james.protocols.api.TLSSupportedSession;
@@ -79,4 +81,6 @@ public interface POP3Session extends TLS
* mailbox
*/
void setUserMailbox(MessageManager mailbox);
+
+ void writeStream(InputStream in);
}
Modified:
james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/netty/POP3ChannelUpstreamHandler.java
URL:
http://svn.apache.org/viewvc/james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/netty/POP3ChannelUpstreamHandler.java?rev=1171033&r1=1171032&r2=1171033&view=diff
==============================================================================
---
james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/netty/POP3ChannelUpstreamHandler.java
(original)
+++
james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/netty/POP3ChannelUpstreamHandler.java
Thu Sep 15 10:30:11 2011
@@ -28,11 +28,13 @@ import org.apache.james.protocols.impl.A
import org.jboss.netty.channel.ChannelHandlerContext;
import org.jboss.netty.channel.ChannelUpstreamHandler;
import org.jboss.netty.channel.ExceptionEvent;
+import org.jboss.netty.channel.ChannelHandler.Sharable;
import org.slf4j.Logger;
/**
* {@link ChannelUpstreamHandler} which is used for the POP3 Server
*/
+@Sharable
public class POP3ChannelUpstreamHandler extends AbstractChannelUpstreamHandler
{
private final Logger logger;
@@ -59,15 +61,15 @@ public class POP3ChannelUpstreamHandler
if (enabledCipherSuites != null && enabledCipherSuites.length > 0)
{
engine.setEnabledCipherSuites(enabledCipherSuites);
}
- return new POP3NettySession(conf, logger, ctx, engine);
+ return new POP3NettySession(conf, logger, ctx.getChannel(),
engine);
} else {
- return new POP3NettySession(conf, logger, ctx);
+ return new POP3NettySession(conf, logger, ctx.getChannel());
}
}
@Override
public void exceptionCaught(ChannelHandlerContext ctx, ExceptionEvent e)
throws Exception {
- Object obj = attributes.get(ctx.getChannel());
+ Object obj = ctx.getAttachment();
if (obj != null) {
((POP3NettySession) obj).getLogger().debug("Unable to process pop3
request", e.getCause());
} else {
Modified:
james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/netty/POP3NettySession.java
URL:
http://svn.apache.org/viewvc/james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/netty/POP3NettySession.java?rev=1171033&r1=1171032&r2=1171033&view=diff
==============================================================================
---
james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/netty/POP3NettySession.java
(original)
+++
james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/netty/POP3NettySession.java
Thu Sep 15 10:30:11 2011
@@ -30,16 +30,12 @@ import javax.net.ssl.SSLEngine;
import org.apache.james.mailbox.MessageManager;
import org.apache.james.pop3server.POP3HandlerConfigurationData;
import org.apache.james.pop3server.POP3Session;
-import org.apache.james.protocols.api.Response;
import org.apache.james.protocols.impl.AbstractSession;
import org.jboss.netty.channel.Channel;
-import org.jboss.netty.channel.ChannelFuture;
-import org.jboss.netty.channel.ChannelFutureListener;
-import org.jboss.netty.channel.ChannelHandlerContext;
import org.jboss.netty.channel.DefaultFileRegion;
import org.jboss.netty.channel.socket.nio.NioServerSocketChannelFactory;
-import org.jboss.netty.handler.ssl.SslHandler;
import org.jboss.netty.handler.stream.ChunkedNioFile;
+import org.jboss.netty.handler.stream.ChunkedStream;
import org.slf4j.Logger;
/**
@@ -56,16 +52,16 @@ public class POP3NettySession extends Ab
private boolean zeroCopy;
- public POP3NettySession(POP3HandlerConfigurationData configData, Logger
logger, ChannelHandlerContext handlerContext) {
- this(configData, logger, handlerContext, null);
+ public POP3NettySession(POP3HandlerConfigurationData configData, Logger
logger, Channel channel) {
+ this(configData, logger, channel, null);
}
- public POP3NettySession(POP3HandlerConfigurationData configData, Logger
logger, ChannelHandlerContext handlerContext, SSLEngine engine) {
- this(configData, logger, handlerContext, engine, true);
+ public POP3NettySession(POP3HandlerConfigurationData configData, Logger
logger, Channel channel, SSLEngine engine) {
+ this(configData, logger, channel, engine, true);
}
- public POP3NettySession(POP3HandlerConfigurationData configData, Logger
logger, ChannelHandlerContext handlerContext, SSLEngine engine, boolean
zeroCopy) {
- super(logger, handlerContext, engine);
+ public POP3NettySession(POP3HandlerConfigurationData configData, Logger
logger, Channel channel, SSLEngine engine, boolean zeroCopy) {
+ super(logger, channel, engine);
this.configData = configData;
this.zeroCopy = zeroCopy;
}
@@ -137,46 +133,29 @@ public class POP3NettySession extends Ab
this.mailbox = mailbox;
}
- /**
- * Remove this once a version of protocols is released which includes
PROTOCOLS-28
+ /*
+ * (non-Javadoc)
+ * @see
org.apache.james.protocols.api.ProtocolSession#writeStream(java.io.InputStream)
*/
- @Override
public void writeStream(InputStream stream) {
- Channel channel = getChannelHandlerContext().getChannel();
- if (stream instanceof FileInputStream && channel.getFactory()
instanceof NioServerSocketChannelFactory) {
- FileChannel fc = ((FileInputStream) stream).getChannel();
- try {
- // Zero-copy is only possible if no SSL/TLS is in place
- //
- // See JAMES-1305
- if (zeroCopy && channel.getPipeline().get(SslHandler.class) ==
null) {
- channel.write(new DefaultFileRegion(fc, fc.position(),
fc.size()));
- } else {
- channel.write(new ChunkedNioFile(fc, 8192));
+ if (stream != null && channel.isConnected()) {
+
+ if (stream instanceof FileInputStream && channel.getFactory()
instanceof NioServerSocketChannelFactory) {
+ FileChannel fc = ((FileInputStream) stream).getChannel();
+ try {
+ if (zeroCopy) {
+ channel.write(new DefaultFileRegion(fc, fc.position(),
fc.size()));
+ } else {
+ channel.write(new ChunkedNioFile(fc, 8192));
+ }
+ } catch (IOException e) {
+ // Catch the exception and just pass it so we get the
exception later
+ channel.write(new ChunkedStream(stream));
}
- } catch (IOException e) {
- // Catch the exception and just pass it so we get the
exception later
- super.writeStream(stream);
+ } else {
+ channel.write(new ChunkedStream(stream));
}
- } else {
- super.writeStream(stream);
}
}
-
- /**
- * Remove this once a version of protocols is released which includes
PROTOCOLS-27
- */
- public void writeResponse(final Response response) {
- Channel channel = getChannelHandlerContext().getChannel();
- if (response != null && channel.isConnected()) {
- ChannelFuture cf = channel.write(response);
- if (response.isEndSession()) {
- // close the channel if needed after the message was written
out
- cf.addListener(ChannelFutureListener.CLOSE);
- }
- }
- }
-
-
}
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=1171033&r1=1171032&r2=1171033&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
Thu Sep 15 10:30:11 2011
@@ -36,7 +36,8 @@ public class POP3Server extends Abstract
* The configuration data to be passed to the handler
*/
private POP3HandlerConfigurationData theConfigData = new
POP3HandlerConfigurationDataImpl();
-
+ private POP3ChannelUpstreamHandler coreHandler;
+
@Override
protected int getDefaultPort() {
return 110;
@@ -80,13 +81,21 @@ public class POP3Server extends Abstract
}
@Override
+ protected void preInit() throws Exception {
+ super.preInit();
+ coreHandler = new
POP3ChannelUpstreamHandler(getProtocolHandlerChain(), theConfigData,
getLogger(), getSSLContext(), getEnabledCipherSuites());
+
+ }
+
+
+ @Override
protected String getDefaultJMXName() {
return "pop3server";
}
@Override
protected ChannelUpstreamHandler createCoreHandler() {
- return new POP3ChannelUpstreamHandler(getProtocolHandlerChain(),
theConfigData, getLogger(), getSSLContext(), getEnabledCipherSuites());
+ return coreHandler;
}
@Override
Modified:
james/server/trunk/smtpserver/src/main/java/org/apache/james/smtpserver/netty/SMTPChannelUpstreamHandler.java
URL:
http://svn.apache.org/viewvc/james/server/trunk/smtpserver/src/main/java/org/apache/james/smtpserver/netty/SMTPChannelUpstreamHandler.java?rev=1171033&r1=1171032&r2=1171033&view=diff
==============================================================================
---
james/server/trunk/smtpserver/src/main/java/org/apache/james/smtpserver/netty/SMTPChannelUpstreamHandler.java
(original)
+++
james/server/trunk/smtpserver/src/main/java/org/apache/james/smtpserver/netty/SMTPChannelUpstreamHandler.java
Thu Sep 15 10:30:11 2011
@@ -35,12 +35,14 @@ import org.jboss.netty.channel.ChannelFu
import org.jboss.netty.channel.ChannelHandlerContext;
import org.jboss.netty.channel.ChannelUpstreamHandler;
import org.jboss.netty.channel.ExceptionEvent;
+import org.jboss.netty.channel.ChannelHandler.Sharable;
import org.jboss.netty.handler.codec.frame.TooLongFrameException;
import org.slf4j.Logger;
/**
* {@link ChannelUpstreamHandler} which is used by the SMTPServer
*/
+@Sharable
public class SMTPChannelUpstreamHandler extends AbstractChannelUpstreamHandler
{
private final Logger logger;
private final SMTPConfiguration conf;
@@ -66,9 +68,9 @@ public class SMTPChannelUpstreamHandler
if (enabledCipherSuites != null && enabledCipherSuites.length > 0)
{
engine.setEnabledCipherSuites(enabledCipherSuites);
}
- return new SMTPNettySession(conf, logger, ctx, engine);
+ return new SMTPNettySession(conf, logger, ctx.getChannel(),
engine);
} else {
- return new SMTPNettySession(conf, logger, ctx);
+ return new SMTPNettySession(conf, logger, ctx.getChannel());
}
}
@@ -81,13 +83,13 @@ public class SMTPChannelUpstreamHandler
if (channel.isConnected()) {
ctx.getChannel().write(new
SMTPResponse(SMTPRetCode.LOCAL_ERROR, "Unable to process
request")).addListener(ChannelFutureListener.CLOSE);
}
- SMTPSession smtpSession = (SMTPSession) attributes.get(channel);
+ SMTPSession smtpSession = (SMTPSession) ctx.getAttachment();
if (smtpSession != null) {
smtpSession.getLogger().debug("Unable to process request",
e.getCause());
} else {
logger.debug("Unable to process request", e.getCause());
}
- cleanup(channel);
+ cleanup(ctx);
}
}
@@ -96,16 +98,16 @@ public class SMTPChannelUpstreamHandler
*
* @param channel
*/
- protected void cleanup(Channel channel) {
+ protected void cleanup(ChannelHandlerContext ctx) {
// Make sure we dispose everything on exit on session close
- SMTPSession smtpSession = (SMTPSession) attributes.get(channel);
+ SMTPSession smtpSession = (SMTPSession) ctx.getAttachment();
if (smtpSession != null) {
LifecycleUtil.dispose(smtpSession.getState().get(SMTPConstants.MAIL));
LifecycleUtil.dispose(smtpSession.getState().get(SMTPConstants.DATA_MIMEMESSAGE_STREAMSOURCE));
}
- super.cleanup(channel);
+ super.cleanup(ctx);
}
}
Modified:
james/server/trunk/smtpserver/src/main/java/org/apache/james/smtpserver/netty/SMTPNettySession.java
URL:
http://svn.apache.org/viewvc/james/server/trunk/smtpserver/src/main/java/org/apache/james/smtpserver/netty/SMTPNettySession.java?rev=1171033&r1=1171032&r2=1171033&view=diff
==============================================================================
---
james/server/trunk/smtpserver/src/main/java/org/apache/james/smtpserver/netty/SMTPNettySession.java
(original)
+++
james/server/trunk/smtpserver/src/main/java/org/apache/james/smtpserver/netty/SMTPNettySession.java
Thu Sep 15 10:30:11 2011
@@ -25,16 +25,12 @@ import java.util.Map;
import javax.net.ssl.SSLEngine;
import org.apache.james.protocols.api.LineHandler;
-import org.apache.james.protocols.api.Response;
import org.apache.james.protocols.impl.AbstractSession;
import org.apache.james.protocols.impl.LineHandlerUpstreamHandler;
import org.apache.james.protocols.smtp.SMTPConfiguration;
import org.apache.james.protocols.smtp.SMTPSession;
import
org.apache.james.smtpserver.netty.SMTPServer.SMTPHandlerConfigurationDataImpl;
import org.jboss.netty.channel.Channel;
-import org.jboss.netty.channel.ChannelFuture;
-import org.jboss.netty.channel.ChannelFutureListener;
-import org.jboss.netty.channel.ChannelHandlerContext;
import org.slf4j.Logger;
/**
@@ -51,16 +47,16 @@ public class SMTPNettySession extends Ab
private int lineHandlerCount = 0;
- public SMTPNettySession(SMTPConfiguration theConfigData, Logger logger,
ChannelHandlerContext handlerContext, SSLEngine engine) {
- super(logger, handlerContext, engine);
+ public SMTPNettySession(SMTPConfiguration theConfigData, Logger logger,
Channel channel, SSLEngine engine) {
+ super(logger, channel, engine);
this.theConfigData = theConfigData;
connectionState = new HashMap<String, Object>();
relayingAllowed =
theConfigData.isRelayingAllowed(getRemoteIPAddress());
}
- public SMTPNettySession(SMTPConfiguration theConfigData, Logger logger,
ChannelHandlerContext handlerContext) {
- this(theConfigData, logger, handlerContext, null);
+ public SMTPNettySession(SMTPConfiguration theConfigData, Logger logger,
Channel channel) {
+ this(theConfigData, logger, channel, null);
}
/**
@@ -110,7 +106,7 @@ public class SMTPNettySession extends Ab
*/
public void popLineHandler() {
if (lineHandlerCount > 0) {
- getChannelHandlerContext().getPipeline().remove("lineHandler" +
lineHandlerCount);
+ getChannel().getPipeline().remove("lineHandler" +
lineHandlerCount);
lineHandlerCount--;
}
}
@@ -124,7 +120,7 @@ public class SMTPNettySession extends Ab
// it is executed with the same ExecutorHandler as the coreHandler (if
one exist)
//
// See JAMES-1277
- getChannelHandlerContext().getPipeline().addBefore("coreHandler",
"lineHandler" + lineHandlerCount, new
LineHandlerUpstreamHandler<SMTPSession>(overrideCommandHandler));
+ getChannel().getPipeline().addBefore("coreHandler", "lineHandler" +
lineHandlerCount, new LineHandlerUpstreamHandler<SMTPSession>(this,
overrideCommandHandler));
}
/**
@@ -209,21 +205,6 @@ public class SMTPNettySession extends Ab
return lineHandlerCount;
}
- /**
- * Remove this once a version of protocols is released which includes
PROTOCOLS-27
- */
- public void writeResponse(final Response response) {
- Channel channel = getChannelHandlerContext().getChannel();
- if (response != null && channel.isConnected()) {
- ChannelFuture cf = channel.write(response);
- if (response.isEndSession()) {
- // close the channel if needed after the message was written
out
- cf.addListener(ChannelFutureListener.CLOSE);
- }
- }
- }
-
-
public boolean verifyIdentity() {
if (theConfigData instanceof SMTPHandlerConfigurationDataImpl) {
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=1171033&r1=1171032&r2=1171033&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
Thu Sep 15 10:30:11 2011
@@ -44,6 +44,7 @@ public class SMTPServer extends Abstract
private final static int AUTH_REQUIRED = 1;
private final static int AUTH_ANNOUNCE = 2;
private int authRequired = AUTH_DISABLED;
+
/**
* Whether the server needs helo to be send first
@@ -87,6 +88,8 @@ public class SMTPServer extends Abstract
private final static SMTPResponseEncoder SMTP_RESPONSE_ENCODER = new
SMTPResponseEncoder();
+ private SMTPChannelUpstreamHandler coreHandler;
+
@Resource(name = "dnsservice")
public void setDNSService(DNSService dns) {
this.dns = dns;
@@ -94,6 +97,7 @@ public class SMTPServer extends Abstract
@Override
protected void preInit() throws Exception {
+ super.preInit();
if (authorizedAddresses != null) {
java.util.StringTokenizer st = new
java.util.StringTokenizer(authorizedAddresses, ", ", false);
java.util.Collection<String> networks = new
java.util.ArrayList<String>();
@@ -103,7 +107,8 @@ public class SMTPServer extends Abstract
}
authorizedNetworks = new NetMatcher(networks, dns);
}
- super.preInit();
+ coreHandler = new
SMTPChannelUpstreamHandler(getProtocolHandlerChain(), theConfigData,
getLogger(), getSSLContext(), getEnabledCipherSuites());
+
}
@Override
@@ -359,7 +364,7 @@ public class SMTPServer extends Abstract
@Override
protected ChannelUpstreamHandler createCoreHandler() {
- return new SMTPChannelUpstreamHandler(getProtocolHandlerChain(),
theConfigData, getLogger(), getSSLContext(), getEnabledCipherSuites());
+ return coreHandler;
}
@Override
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]