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: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org