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

Reply via email to