svn commit: r1175769 - /james/server/trunk/queue-file/src/main/java/org/apache/james/queue/file/FileMailQueue.java
Author: norman Date: Mon Sep 26 10:10:50 2011 New Revision: 1175769 URL: http://svn.apache.org/viewvc?rev=1175769view=rev Log: Fix management operations. See JAMES-1316 Modified: james/server/trunk/queue-file/src/main/java/org/apache/james/queue/file/FileMailQueue.java Modified: james/server/trunk/queue-file/src/main/java/org/apache/james/queue/file/FileMailQueue.java URL: http://svn.apache.org/viewvc/james/server/trunk/queue-file/src/main/java/org/apache/james/queue/file/FileMailQueue.java?rev=1175769r1=1175768r2=1175769view=diff == --- james/server/trunk/queue-file/src/main/java/org/apache/james/queue/file/FileMailQueue.java (original) +++ james/server/trunk/queue-file/src/main/java/org/apache/james/queue/file/FileMailQueue.java Mon Sep 26 10:10:50 2011 @@ -28,6 +28,8 @@ import java.io.InputStream; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.util.Iterator; +import java.util.Map.Entry; +import java.util.NoSuchElementException; import java.util.concurrent.BlockingQueue; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.Executors; @@ -424,15 +426,31 @@ public class FileMailQueue implements Ma return i; } -/** - * TODO: implement me - * - * @return - * @throws MailQueueException - */ @Override public long clear() throws MailQueueException { -throw new MailQueueException(Not supported yet); +final IteratorEntryString, FileItem items = keyMappings.entrySet().iterator(); +long count = 0; +while(items.hasNext()) { +EntryString, FileItem entry = items.next(); +FileItem item = entry.getValue(); +String key = entry.getKey(); +File msgFile = new File(item.getMessageFile()); +File objectFile = new File(item.getObjectFile()); +if (objectFile.exists()) { +if (!objectFile.delete()) { +throw new MailQueueException(Unable to delete mail + key); +} +} +keyMappings.remove(key); +count++; +if (msgFile.exists()) { +if (!msgFile.delete()) { +log.debug(Remove of msg file for mail + key + failed); +} + +} +} +return count; } /** @@ -449,15 +467,78 @@ public class FileMailQueue implements Ma } -/** - * TODO: implement me - * - * @return - * @throws MailQueueException - */ @Override public MailQueueIterator browse() throws MailQueueException { -throw new MailQueueException(Not supported yet); +final IteratorFileItem items = keyMappings.values().iterator(); +return new MailQueueIterator() { +private MailQueueItemView item = null; + +@Override +public void remove() { +throw new UnsupportedOperationException(Read-only); +} + +@Override +public MailQueueItemView next() { +if (hasNext()) { +MailQueueItemView vitem = item; +item = null; +return vitem; +} else { + +throw new NoSuchElementException(); +} +} + +@Override +public boolean hasNext() { +if (item == null) { +while (items.hasNext()) { +ObjectInputStream in = null; +try { +in = new ObjectInputStream(new FileInputStream(items.next().getObjectFile())); +final Mail mail = (Mail) in.readObject(); +item = new MailQueueItemView() { + +@Override +public long getNextDelivery() { +return (Long) mail.getAttribute(NEXT_DELIVERY); +} + +@Override +public Mail getMail() { +return mail; +} +}; +return true; +} catch (FileNotFoundException e) { +log.info(Unable to load mail, e); +} catch (IOException e) { +log.info(Unable to load mail, e); + +} catch (ClassNotFoundException e) { +log.info(Unable to load mail, e); +} finally { +if (in != null) { +try { +in.close
svn commit: r1175811 - /james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/AbstractSession.java
Author: norman Date: Mon Sep 26 11:52:44 2011 New Revision: 1175811 URL: http://svn.apache.org/viewvc?rev=1175811view=rev Log: Use extra hashmap to store state of session Modified: james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/AbstractSession.java Modified: james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/AbstractSession.java URL: http://svn.apache.org/viewvc/james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/AbstractSession.java?rev=1175811r1=1175810r2=1175811view=diff == --- james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/AbstractSession.java (original) +++ james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/AbstractSession.java Mon Sep 26 11:52:44 2011 @@ -30,13 +30,11 @@ import org.apache.james.protocols.api.Re import org.slf4j.Logger; /** - * Abstract implementation of TLSSupportedSession which use Netty + * Abstract implementation of {@link ProtocolSession} * * */ public abstract class AbstractSession implements ProtocolSession { -/** the Session state */ -final static String SESSION_STATE_MAP = SESSION_STATE_MAP; protected InetSocketAddress socketAddress; private Logger logger; @@ -48,6 +46,7 @@ public abstract class AbstractSession im protected ProtocolTransport transport; private MapString, Object connectionState; +private MapString, Object sessionState; public AbstractSession(Logger logger, ProtocolTransport transport) { @@ -56,61 +55,69 @@ public abstract class AbstractSession im this.logger = logger; this.id = transport.getId(); this.connectionState = new HashMapString, Object(); +this.sessionState = new HashMapString, Object(); + } -/** - * @see org.apache.james.api.protocol.TLSSupportedSession#getRemoteHost() +/* + * (non-Javadoc) + * @see org.apache.james.protocols.api.ProtocolSession#getRemoteHost() */ public String getRemoteHost() { return socketAddress.getHostName(); } -/** - * @see org.apache.james.api.protocol.TLSSupportedSession#getRemoteIPAddress() +/* + * (non-Javadoc) + * @see org.apache.james.protocols.api.ProtocolSession#getRemoteIPAddress() */ public String getRemoteIPAddress() { return socketAddress.getAddress().getHostAddress(); } -/** - * @see org.apache.james.api.protocol.TLSSupportedSession#getUser() +/* + * (non-Javadoc) + * @see org.apache.james.protocols.api.ProtocolSession#getUser() */ public String getUser() { return user; } -/** - * @see org.apache.james.api.protocol.TLSSupportedSession#setUser(java.lang.String) +/* + * (non-Javadoc) + * @see org.apache.james.protocols.api.ProtocolSession#setUser(java.lang.String) */ public void setUser(String user) { this.user = user; } -/** - * Return underlying {@link ProtocolTransport} +/* * - * @return session */ public ProtocolTransport getProtocolTransport() { return transport; } -/** - * @see org.apache.james.api.protocol.TLSSupportedSession#isStartTLSSupported() +/* + * (non-Javadoc) + * @see org.apache.james.protocols.api.ProtocolSession#isStartTLSSupported() */ public boolean isStartTLSSupported() { return transport.isStartTLSSupported(); } -/** - * @see org.apache.james.api.protocol.TLSSupportedSession#isTLSStarted() +/* + * (non-Javadoc) + * @see org.apache.james.protocols.api.ProtocolSession#isTLSStarted() */ public boolean isTLSStarted() { return transport.isTLSStarted(); } -/** - * @see org.apache.james.api.protocol.ProtocolSession#getLogger() + +/* + * (non-Javadoc) + * @see org.apache.james.protocols.api.ProtocolSession#getLogger() */ public Logger getLogger() { if (pLog == null) { @@ -146,24 +153,22 @@ public abstract class AbstractSession im } -/** - * @see org.apache.james.protocols.smtp.SMTPSession#getConnectionState() + +/* + * (non-Javadoc) + * @see org.apache.james.protocols.api.ProtocolSession#getConnectionState() */ public MapString, Object getConnectionState() { return connectionState; } -/** - * @see org.apache.james.protocols.smtp.SMTPSession#getState() +/* + * (non-Javadoc) + * @see org.apache.james.protocols.api.ProtocolSession#getState() */ @SuppressWarnings(unchecked) public MapString, Object getState() { -MapString, Object res = (MapString, Object) getConnectionState().get(SESSION_STATE_MAP); -if (res == null) { -res = new HashMapString, Object(); -getConnectionState().put(SESSION_STATE_MAP, res
svn commit: r1175825 - in /james/protocols/trunk: api/src/main/java/org/apache/james/protocols/api/ impl/src/main/java/org/apache/james/protocols/impl/
Author: norman Date: Mon Sep 26 12:26:03 2011 New Revision: 1175825 URL: http://svn.apache.org/viewvc?rev=1175825view=rev Log: Remove ProtocolSession.writeResponse(...). See PROTOCOLS-35 Modified: james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/AbstractSession.java james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/ProtocolSession.java james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/BasicChannelUpstreamHandler.java james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/LineHandlerUpstreamHandler.java james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/NettyProtocolTransport.java Modified: james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/AbstractSession.java URL: http://svn.apache.org/viewvc/james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/AbstractSession.java?rev=1175825r1=1175824r2=1175825view=diff == --- james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/AbstractSession.java (original) +++ james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/AbstractSession.java Mon Sep 26 12:26:03 2011 @@ -24,9 +24,7 @@ import java.util.HashMap; import java.util.Map; -import org.apache.james.protocols.api.FutureResponse.ResponseListener; import org.apache.james.protocols.api.ProtocolTransport; -import org.apache.james.protocols.api.Response; import org.slf4j.Logger; /** @@ -129,23 +127,6 @@ public abstract class AbstractSession im /* * (non-Javadoc) - * @see org.apache.james.api.protocol.ProtocolSession#writeResponse(org.apache.james.api.protocol.Response) - */ -public void writeResponse(final Response response) { -if (response instanceof FutureResponse) { -((FutureResponse) response).addListener(new ResponseListener() { - -public void onResponse(Response response) { -transport.writeResponse(response, AbstractSession.this); -} -}); -} else { -transport.writeResponse(response, this); -} -} - -/* - * (non-Javadoc) * @see org.apache.james.protocols.api.ProtocolSession#getSessionID() */ public String getSessionID() { Modified: james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/ProtocolSession.java URL: http://svn.apache.org/viewvc/james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/ProtocolSession.java?rev=1175825r1=1175824r2=1175825view=diff == --- james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/ProtocolSession.java (original) +++ james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/ProtocolSession.java Mon Sep 26 12:26:03 2011 @@ -58,14 +58,6 @@ public interface ProtocolSession { */ void resetState(); -/** - * Write the response back to the client. Special care MUST be take to handle {@link StartTlsResponse} instances. - * - * - * @param response - */ -void writeResponse(Response response); - /** * Returns host name of the client Modified: james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/BasicChannelUpstreamHandler.java URL: http://svn.apache.org/viewvc/james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/BasicChannelUpstreamHandler.java?rev=1175825r1=1175824r2=1175825view=diff == --- james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/BasicChannelUpstreamHandler.java (original) +++ james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/BasicChannelUpstreamHandler.java Mon Sep 26 12:26:03 2011 @@ -24,6 +24,7 @@ import java.util.List; import javax.net.ssl.SSLContext; import javax.net.ssl.SSLEngine; +import org.apache.james.protocols.api.AbstractSession; import org.apache.james.protocols.api.ProtocolSession; import org.apache.james.protocols.api.ProtocolSessionFactory; import org.apache.james.protocols.api.Response; @@ -102,7 +103,7 @@ public class BasicChannelUpstreamHandler resultHandlers.get(a).onResponse(session, executionTime, cHandler); } if (response != null) { -session.writeResponse(response); + ((AbstractSession)session).getProtocolTransport().writeResponse(response, session); } } @@ -158,7 +159,7 @@ public class BasicChannelUpstreamHandler resultHandlers.get(i).onResponse(pSession, executionTime, lHandler); } if (response != null
svn commit: r1175826 - /james/server/trunk/lmtpserver/src/main/java/org/apache/james/lmtpserver/DataLineLMTPMessageHookHandler.java
Author: norman Date: Mon Sep 26 12:26:58 2011 New Revision: 1175826 URL: http://svn.apache.org/viewvc?rev=1175826view=rev Log: Remove ProtocolSession.writeResponse(...). See PROTOCOLS-35 Modified: james/server/trunk/lmtpserver/src/main/java/org/apache/james/lmtpserver/DataLineLMTPMessageHookHandler.java Modified: james/server/trunk/lmtpserver/src/main/java/org/apache/james/lmtpserver/DataLineLMTPMessageHookHandler.java URL: http://svn.apache.org/viewvc/james/server/trunk/lmtpserver/src/main/java/org/apache/james/lmtpserver/DataLineLMTPMessageHookHandler.java?rev=1175826r1=1175825r2=1175826view=diff == --- james/server/trunk/lmtpserver/src/main/java/org/apache/james/lmtpserver/DataLineLMTPMessageHookHandler.java (original) +++ james/server/trunk/lmtpserver/src/main/java/org/apache/james/lmtpserver/DataLineLMTPMessageHookHandler.java Mon Sep 26 12:26:58 2011 @@ -103,7 +103,7 @@ public class DataLineLMTPMessageHookHand } catch (MessagingException e) { // TODO probably return a temporary problem session.getLogger().info(Unexpected error handling DATA stream, e); -session.writeResponse(new SMTPResponse(SMTPRetCode.LOCAL_ERROR, Unexpected error handling DATA stream.)); +return new SMTPResponse(SMTPRetCode.LOCAL_ERROR, Unexpected error handling DATA stream.); } finally { LifecycleUtil.dispose(mimeMessageCopyOnWriteProxy); LifecycleUtil.dispose(mmiss); - To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org
[jira] [Created] (PROTOCOLS-36) NettyProtocolSession.writeResponse(...) does not maintain order of written Responses if FutureResponse and Response is mixed
NettyProtocolSession.writeResponse(...) does not maintain order of written Responses if FutureResponse and Response is mixed Key: PROTOCOLS-36 URL: https://issues.apache.org/jira/browse/PROTOCOLS-36 Project: JAMES Protocols Issue Type: Bug Affects Versions: 1.6 Reporter: Norman Maurer Assignee: Norman Maurer Fix For: 1.6 If we mix FutureResponse and Response implementation we MUST ensure that the right order of responses is maintained. This basicly means that we need to put responses in a queue and dequeue them in the right order (respecting the FutureResponse async nature) -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira - To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org
svn commit: r1176210 - in /james/protocols/trunk: api/src/main/java/org/apache/james/protocols/api/handler/ impl/src/main/java/org/apache/james/protocols/impl/ impl/src/main/java/org/apache/james/prot
Author: norman Date: Tue Sep 27 05:54:29 2011 New Revision: 1176210 URL: http://svn.apache.org/viewvc?rev=1176210view=rev Log: Just use one interface for result handling Added: james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/handler/ProtocolHandlerResultHandler.java - copied, changed from r1175675, james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/handler/CommandHandlerResultHandler.java Removed: james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/handler/CommandHandlerResultHandler.java james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/handler/ConnectHandlerResultHandler.java james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/handler/LineHandlerResultHandler.java Modified: james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/handler/AbstractCommandDispatcher.java james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/BasicChannelUpstreamHandler.java james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/log/AbstractCommandHandlerResultLogger.java Modified: james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/handler/AbstractCommandDispatcher.java URL: http://svn.apache.org/viewvc/james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/handler/AbstractCommandDispatcher.java?rev=1176210r1=1176209r2=1176210view=diff == --- james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/handler/AbstractCommandDispatcher.java (original) +++ james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/handler/AbstractCommandDispatcher.java Tue Sep 27 05:54:29 2011 @@ -45,7 +45,7 @@ public abstract class AbstractCommandDis */ private HashMapString, ListCommandHandlerSession commandHandlerMap = new HashMapString, ListCommandHandlerSession(); -private ListCommandHandlerResultHandlerResponse, Session rHandlers = new ArrayListCommandHandlerResultHandlerResponse, Session(); +private ListProtocolHandlerResultHandlerResponse, Session rHandlers = new ArrayListProtocolHandlerResultHandlerResponse, Session(); private final Charset charset = Charset.forName(getLineDecodingCharset()); @@ -93,7 +93,7 @@ public abstract class AbstractCommandDis */ @SuppressWarnings(unchecked) public void wireExtensions(Class interfaceName, List extension) throws WiringException { -if (interfaceName.equals(CommandHandlerResultHandler.class)) { +if (interfaceName.equals(ProtocolHandlerResultHandler.class)) { rHandlers.addAll(extension); } if (interfaceName.equals(CommandHandler.class)) { @@ -149,6 +149,7 @@ public abstract class AbstractCommandDis BaseRequest request = new BaseRequest(curCommandName, curCommandArgument); IteratorCommandHandlerSession handlers = commandHandlers.iterator(); + while (handlers.hasNext()) { final long start = System.currentTimeMillis(); CommandHandlerSession cHandler = handlers.next(); @@ -181,7 +182,7 @@ public abstract class AbstractCommandDis public ListClass? getMarkerInterfaces() { List res = new LinkedList(); res.add(CommandHandler.class); -res.add(CommandHandlerResultHandler.class); +res.add(ProtocolHandlerResultHandler.class); return res; } Copied: james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/handler/ProtocolHandlerResultHandler.java (from r1175675, james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/handler/CommandHandlerResultHandler.java) URL: http://svn.apache.org/viewvc/james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/handler/ProtocolHandlerResultHandler.java?p2=james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/handler/ProtocolHandlerResultHandler.javap1=james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/handler/CommandHandlerResultHandler.javar1=1175675r2=1176210rev=1176210view=diff == --- james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/handler/CommandHandlerResultHandler.java (original) +++ james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/handler/ProtocolHandlerResultHandler.java Tue Sep 27 05:54:29 2011 @@ -22,15 +22,15 @@ package org.apache.james.protocols.api.h import org.apache.james.protocols.api.ProtocolSession; import org.apache.james.protocols.api.Response; -public interface CommandHandlerResultHandlerR extends Response, S extends ProtocolSession extends ProtocolHandler{ +public interface ProtocolHandlerResultHandlerR extends Response, S extends ProtocolSession extends ProtocolHandler
svn commit: r1176211 - in /james/server/trunk: pop3server/src/main/java/org/apache/james/pop3server/jmx/ protocols-library/src/main/java/org/apache/james/protocols/lib/jmx/ smtpserver/src/main/java/or
Author: norman Date: Tue Sep 27 05:55:31 2011 New Revision: 1176211 URL: http://svn.apache.org/viewvc?rev=1176211view=rev Log: Just use one interface for result handling Modified: james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/jmx/ConnectHandlerResultJMXMonitor.java james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/jmx/LineHandlerResultJMXMonitor.java james/server/trunk/protocols-library/src/main/java/org/apache/james/protocols/lib/jmx/AbstractCommandHandlerResultJMXMonitor.java james/server/trunk/protocols-library/src/main/java/org/apache/james/protocols/lib/jmx/AbstractConnectHandlerResultJMXMonitor.java james/server/trunk/protocols-library/src/main/java/org/apache/james/protocols/lib/jmx/AbstractLineHandlerResultJMXMonitor.java james/server/trunk/protocols-library/src/main/java/org/apache/james/protocols/lib/jmx/ConnectHandlerStats.java james/server/trunk/protocols-library/src/main/java/org/apache/james/protocols/lib/jmx/LineHandlerStats.java james/server/trunk/smtpserver/src/main/java/org/apache/james/smtpserver/jmx/ConnectHandlerResultJMXMonitor.java james/server/trunk/smtpserver/src/main/java/org/apache/james/smtpserver/jmx/LineHandlerResultJMXMonitor.java Modified: james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/jmx/ConnectHandlerResultJMXMonitor.java URL: http://svn.apache.org/viewvc/james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/jmx/ConnectHandlerResultJMXMonitor.java?rev=1176211r1=1176210r2=1176211view=diff == --- james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/jmx/ConnectHandlerResultJMXMonitor.java (original) +++ james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/jmx/ConnectHandlerResultJMXMonitor.java Tue Sep 27 05:55:31 2011 @@ -18,10 +18,11 @@ / package org.apache.james.pop3server.jmx; +import org.apache.james.pop3server.POP3Response; import org.apache.james.pop3server.POP3Session; import org.apache.james.protocols.lib.jmx.AbstractConnectHandlerResultJMXMonitor; -public class ConnectHandlerResultJMXMonitor extends AbstractConnectHandlerResultJMXMonitorPOP3Session { +public class ConnectHandlerResultJMXMonitor extends AbstractConnectHandlerResultJMXMonitorPOP3Response, POP3Session { /* * (non-Javadoc) Modified: james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/jmx/LineHandlerResultJMXMonitor.java URL: http://svn.apache.org/viewvc/james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/jmx/LineHandlerResultJMXMonitor.java?rev=1176211r1=1176210r2=1176211view=diff == --- james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/jmx/LineHandlerResultJMXMonitor.java (original) +++ james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/jmx/LineHandlerResultJMXMonitor.java Tue Sep 27 05:55:31 2011 @@ -18,10 +18,11 @@ / package org.apache.james.pop3server.jmx; +import org.apache.james.pop3server.POP3Response; import org.apache.james.pop3server.POP3Session; import org.apache.james.protocols.lib.jmx.AbstractLineHandlerResultJMXMonitor; -public class LineHandlerResultJMXMonitor extends AbstractLineHandlerResultJMXMonitorPOP3Session { +public class LineHandlerResultJMXMonitor extends AbstractLineHandlerResultJMXMonitorPOP3Response, POP3Session { /* * (non-Javadoc) Modified: james/server/trunk/protocols-library/src/main/java/org/apache/james/protocols/lib/jmx/AbstractCommandHandlerResultJMXMonitor.java URL: http://svn.apache.org/viewvc/james/server/trunk/protocols-library/src/main/java/org/apache/james/protocols/lib/jmx/AbstractCommandHandlerResultJMXMonitor.java?rev=1176211r1=1176210r2=1176211view=diff == --- james/server/trunk/protocols-library/src/main/java/org/apache/james/protocols/lib/jmx/AbstractCommandHandlerResultJMXMonitor.java (original) +++ james/server/trunk/protocols-library/src/main/java/org/apache/james/protocols/lib/jmx/AbstractCommandHandlerResultJMXMonitor.java Tue Sep 27 05:55:31 2011 @@ -29,7 +29,8 @@ import org.apache.commons.configuration. import org.apache.james.protocols.api.ProtocolSession; import org.apache.james.protocols.api.Response; import org.apache.james.protocols.api.handler.CommandHandler; -import org.apache.james.protocols.api.handler.CommandHandlerResultHandler; +import org.apache.james.protocols.api.handler.ProtocolHandler; +import org.apache.james.protocols.api.handler.ProtocolHandlerResultHandler; import org.apache.james.protocols.api.handler.ExtensibleHandler; import
svn commit: r1175345 - /james/server/trunk/lmtpserver/src/main/java/org/apache/james/lmtpserver/DataLineLMTPMessageHookHandler.java
Author: norman Date: Sun Sep 25 09:23:17 2011 New Revision: 1175345 URL: http://svn.apache.org/viewvc?rev=1175345view=rev Log: LineHandler and ConnectHandler now return Response. See PROTOCOLS-34 Modified: james/server/trunk/lmtpserver/src/main/java/org/apache/james/lmtpserver/DataLineLMTPMessageHookHandler.java Modified: james/server/trunk/lmtpserver/src/main/java/org/apache/james/lmtpserver/DataLineLMTPMessageHookHandler.java URL: http://svn.apache.org/viewvc/james/server/trunk/lmtpserver/src/main/java/org/apache/james/lmtpserver/DataLineLMTPMessageHookHandler.java?rev=1175345r1=1175344r2=1175345view=diff == --- james/server/trunk/lmtpserver/src/main/java/org/apache/james/lmtpserver/DataLineLMTPMessageHookHandler.java (original) +++ james/server/trunk/lmtpserver/src/main/java/org/apache/james/lmtpserver/DataLineLMTPMessageHookHandler.java Sun Sep 25 09:23:17 2011 @@ -36,6 +36,7 @@ import org.apache.james.mailbox.MailboxE import org.apache.james.mailbox.MailboxManager; import org.apache.james.mailbox.MailboxPath; import org.apache.james.mailbox.MailboxSession; +import org.apache.james.protocols.api.Response; import org.apache.james.protocols.api.handler.LineHandler; import org.apache.james.protocols.smtp.SMTPResponse; import org.apache.james.protocols.smtp.SMTPRetCode; @@ -66,7 +67,7 @@ public class DataLineLMTPMessageHookHand } @SuppressWarnings(unchecked) -public void onLine(SMTPSession session, byte[] line, LineHandlerSMTPSession next) { +public Response onLine(SMTPSession session, byte[] line, LineHandlerSMTPSession next) { MimeMessageInputStreamSource mmiss = (MimeMessageInputStreamSource) session.getState().get(SMTPConstants.DATA_MIMEMESSAGE_STREAMSOURCE); try { @@ -124,9 +125,11 @@ public class DataLineLMTPMessageHookHand SMTPResponse response = new SMTPResponse(SMTPRetCode.LOCAL_ERROR, DSNStatus.getStatus(DSNStatus.TRANSIENT, DSNStatus.UNDEFINED_STATUS) + Error processing message: + e.getMessage()); session.getLogger().error(Unknown error occurred while processing DATA., e); -session.writeResponse(response); -return; +return response; } + +// TODO: Fix me as we should better return the response all the time +return null; } /** - To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org
svn commit: r1175419 - in /james/server/trunk/lmtpserver/src/main/java/org/apache/james/lmtpserver: DataLineLMTPMessageHookHandler.java LMTPMultiResponse.java netty/LMTPServer.java
Author: norman Date: Sun Sep 25 16:06:40 2011 New Revision: 1175419 URL: http://svn.apache.org/viewvc?rev=1175419view=rev Log: LineHandler and ConnectHandler now return Response. See PROTOCOLS-34 Added: james/server/trunk/lmtpserver/src/main/java/org/apache/james/lmtpserver/LMTPMultiResponse.java (with props) Modified: james/server/trunk/lmtpserver/src/main/java/org/apache/james/lmtpserver/DataLineLMTPMessageHookHandler.java james/server/trunk/lmtpserver/src/main/java/org/apache/james/lmtpserver/netty/LMTPServer.java Modified: james/server/trunk/lmtpserver/src/main/java/org/apache/james/lmtpserver/DataLineLMTPMessageHookHandler.java URL: http://svn.apache.org/viewvc/james/server/trunk/lmtpserver/src/main/java/org/apache/james/lmtpserver/DataLineLMTPMessageHookHandler.java?rev=1175419r1=1175418r2=1175419view=diff == --- james/server/trunk/lmtpserver/src/main/java/org/apache/james/lmtpserver/DataLineLMTPMessageHookHandler.java (original) +++ james/server/trunk/lmtpserver/src/main/java/org/apache/james/lmtpserver/DataLineLMTPMessageHookHandler.java Sun Sep 25 16:06:40 2011 @@ -91,12 +91,14 @@ public class DataLineLMTPMessageHookHand mimeMessageCopyOnWriteProxy = new MimeMessageCopyOnWriteProxy(mmiss); mail.setMessage(mimeMessageCopyOnWriteProxy); -deliverMail(session, mail); +Response response = deliverMail(session, mail); session.popLineHandler(); // do the clean up session.resetState(); + +return response; } catch (MessagingException e) { // TODO probably return a temporary problem @@ -128,7 +130,6 @@ public class DataLineLMTPMessageHookHand return response; } -// TODO: Fix me as we should better return the response all the time return null; } @@ -139,7 +140,9 @@ public class DataLineLMTPMessageHookHand * @param mail */ @SuppressWarnings(unchecked) -protected void deliverMail(SMTPSession session, Mail mail) { +protected LMTPMultiResponse deliverMail(SMTPSession session, Mail mail) { +LMTPMultiResponse mResponse = null; + IteratorMailAddress recipients = mail.getRecipients().iterator(); while (recipients.hasNext()) { MailAddress recipient = recipients.next(); @@ -177,8 +180,13 @@ public class DataLineLMTPMessageHookHand session.getLogger().info(Unexpected error handling DATA stream, e); response = new SMTPResponse(SMTPRetCode.LOCAL_ERROR, DSNStatus.getStatus(DSNStatus.TRANSIENT, DSNStatus.UNDEFINED_STATUS) + Temporary error deliver message to + recipient); } -session.writeResponse(response); +if (mResponse == null) { +mResponse = new LMTPMultiResponse(response); +} else { +mResponse.addResponse(response); +} } +return mResponse; } Added: james/server/trunk/lmtpserver/src/main/java/org/apache/james/lmtpserver/LMTPMultiResponse.java URL: http://svn.apache.org/viewvc/james/server/trunk/lmtpserver/src/main/java/org/apache/james/lmtpserver/LMTPMultiResponse.java?rev=1175419view=auto == --- james/server/trunk/lmtpserver/src/main/java/org/apache/james/lmtpserver/LMTPMultiResponse.java (added) +++ james/server/trunk/lmtpserver/src/main/java/org/apache/james/lmtpserver/LMTPMultiResponse.java Sun Sep 25 16:06:40 2011 @@ -0,0 +1,79 @@ +/ + * 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
svn commit: r1175434 - in /james/protocols/trunk: api/src/main/java/org/apache/james/protocols/api/AbstractResponse.java api/src/main/java/org/apache/james/protocols/api/Response.java impl/src/main/ja
Author: norman Date: Sun Sep 25 17:28:54 2011 New Revision: 1175434 URL: http://svn.apache.org/viewvc?rev=1175434view=rev Log: Remove Response.getRawLine() Added: james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/NettyConstants.java (with props) Modified: james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/AbstractResponse.java james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/Response.java Modified: james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/AbstractResponse.java URL: http://svn.apache.org/viewvc/james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/AbstractResponse.java?rev=1175434r1=1175433r2=1175434view=diff == --- james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/AbstractResponse.java (original) +++ james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/AbstractResponse.java Sun Sep 25 17:28:54 2011 @@ -32,7 +32,6 @@ public abstract class AbstractResponse i private String retCode = null; protected final ListCharSequence lines = new LinkedListCharSequence();; -protected String rawLine = null; private boolean endSession = false; protected AbstractResponse() { @@ -50,7 +49,6 @@ public abstract class AbstractResponse i if (code == null) throw new IllegalArgumentException(code can not be null); this.setRetCode(code); this.appendLine(description); -this.rawLine = code + + description; } @@ -84,15 +82,6 @@ public abstract class AbstractResponse i /** - * Return the raw representation of the Stored SMTPResponse - * - * @return rawLine the raw SMTPResponse - */ -public String getRawLine() { -return rawLine; -} - -/** * Return true if the session is ended * * @return true if session is ended Modified: james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/Response.java URL: http://svn.apache.org/viewvc/james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/Response.java?rev=1175434r1=1175433r2=1175434view=diff == --- james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/Response.java (original) +++ james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/Response.java Sun Sep 25 17:28:54 2011 @@ -43,10 +43,6 @@ public interface Response { return Collections.EMPTY_LIST; } -public String getRawLine() { -return ; -} - public boolean isEndSession() { return true; } @@ -69,12 +65,6 @@ public interface Response { */ ListCharSequence getLines(); -/** - * Return the raw representation of the stored Response - * - * @return rawLine the raw Response - */ -String getRawLine(); /** * Return true if the session is ended Added: james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/NettyConstants.java URL: http://svn.apache.org/viewvc/james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/NettyConstants.java?rev=1175434view=auto == --- james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/NettyConstants.java (added) +++ james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/NettyConstants.java Sun Sep 25 17:28:54 2011 @@ -0,0 +1,7 @@ +package org.apache.james.protocols.impl; + +public interface NettyConstants { + + public final static String TRANSPORT = TRANSPORT; + public final static String SESSION = SESSION; +} Propchange: james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/NettyConstants.java -- svn:mime-type = text/plain - To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org
svn commit: r1175435 - /james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/esmtp/MailSizeEsmtpExtension.java
Author: norman Date: Sun Sep 25 17:31:13 2011 New Revision: 1175435 URL: http://svn.apache.org/viewvc?rev=1175435view=rev Log: Remove not needed castings Modified: james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/esmtp/MailSizeEsmtpExtension.java Modified: james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/esmtp/MailSizeEsmtpExtension.java URL: http://svn.apache.org/viewvc/james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/esmtp/MailSizeEsmtpExtension.java?rev=1175435r1=1175434r2=1175435view=diff == --- james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/esmtp/MailSizeEsmtpExtension.java (original) +++ james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/esmtp/MailSizeEsmtpExtension.java Sun Sep 25 17:31:13 2011 @@ -22,9 +22,9 @@ package org.apache.james.protocols.smtp. import java.util.LinkedList; import java.util.List; +import org.apache.james.protocols.api.Response; import org.apache.james.protocols.api.handler.LineHandler; import org.apache.james.protocols.smtp.MailEnvelope; -import org.apache.james.protocols.smtp.SMTPResponse; import org.apache.james.protocols.smtp.SMTPRetCode; import org.apache.james.protocols.smtp.SMTPSession; import org.apache.james.protocols.smtp.core.DataLineFilter; @@ -137,8 +137,8 @@ public class MailSizeEsmtpExtension impl * (non-Javadoc) * @see org.apache.james.smtpserver.protocol.core.DataLineFilter#onLine(org.apache.james.smtpserver.protocol.SMTPSession, byte[], org.apache.james.api.protocol.LineHandler) */ -public SMTPResponse onLine(SMTPSession session, byte[] line, LineHandlerSMTPSession next) { -SMTPResponse response = null; +public Response onLine(SMTPSession session, byte[] line, LineHandlerSMTPSession next) { +Response response = null; Boolean failed = (Boolean) session.getState().get(MESG_FAILED); // If we already defined we failed and sent a reply we should simply // wait for a CRLF.CRLF to be sent by the client. @@ -146,7 +146,7 @@ public class MailSizeEsmtpExtension impl // TODO } else { if (line.length == 3 line[0] == 46) { -response = (SMTPResponse) next.onLine(session, line); +response = next.onLine(session, line); } else { Long currentSize = (Long) session.getState().get(CURRENT_SIZE); Long newSize; @@ -164,9 +164,9 @@ public class MailSizeEsmtpExtension impl session.getState().put(MESG_FAILED, Boolean.TRUE); // then let the client know that the size // limit has been hit. -response = (SMTPResponse) next.onLine(session, .\r\n.getBytes()); +response = next.onLine(session, .\r\n.getBytes()); } else { -response = (SMTPResponse) next.onLine(session, line); +response = next.onLine(session, line); } session.getState().put(CURRENT_SIZE, newSize); - To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org
svn commit: r1175436 - /james/server/trunk/lmtpserver/src/main/java/org/apache/james/lmtpserver/LMTPMultiResponse.java
Author: norman Date: Sun Sep 25 17:32:12 2011 New Revision: 1175436 URL: http://svn.apache.org/viewvc?rev=1175436view=rev Log: Remove Response.getRawLine() Modified: james/server/trunk/lmtpserver/src/main/java/org/apache/james/lmtpserver/LMTPMultiResponse.java Modified: james/server/trunk/lmtpserver/src/main/java/org/apache/james/lmtpserver/LMTPMultiResponse.java URL: http://svn.apache.org/viewvc/james/server/trunk/lmtpserver/src/main/java/org/apache/james/lmtpserver/LMTPMultiResponse.java?rev=1175436r1=1175435r2=1175436view=diff == --- james/server/trunk/lmtpserver/src/main/java/org/apache/james/lmtpserver/LMTPMultiResponse.java (original) +++ james/server/trunk/lmtpserver/src/main/java/org/apache/james/lmtpserver/LMTPMultiResponse.java Sun Sep 25 17:32:12 2011 @@ -20,7 +20,6 @@ package org.apache.james.lmtpserver; import java.util.ArrayList; -import java.util.Iterator; import java.util.List; import org.apache.james.protocols.api.Response; @@ -52,19 +51,6 @@ public class LMTPMultiResponse implement return lines; } -@Override -public String getRawLine() { -StringBuilder sb = new StringBuilder(); -IteratorResponse rIt = responses.iterator(); -while(rIt.hasNext()) { -Response response = rIt.next(); -sb.append(response.getRawLine()); -if (rIt.hasNext()) { -sb.append(\r\n); -} -} -return sb.toString(); -} @Override public boolean isEndSession() { - To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org
svn commit: r1175439 - in /james/protocols/trunk: api/src/main/java/org/apache/james/protocols/api/ smtp/src/main/java/org/apache/james/protocols/smtp/
Author: norman Date: Sun Sep 25 17:36:43 2011 New Revision: 1175439 URL: http://svn.apache.org/viewvc?rev=1175439view=rev Log: Move getConnectionState() to the ProtocolSession and add implementation to AbstractSession Modified: james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/AbstractSession.java james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/ProtocolSession.java james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/SMTPSession.java james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/SMTPSessionImpl.java Modified: james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/AbstractSession.java URL: http://svn.apache.org/viewvc/james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/AbstractSession.java?rev=1175439r1=1175438r2=1175439view=diff == --- james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/AbstractSession.java (original) +++ james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/AbstractSession.java Sun Sep 25 17:36:43 2011 @@ -20,6 +20,8 @@ package org.apache.james.protocols.api; import java.net.InetSocketAddress; +import java.util.HashMap; +import java.util.Map; import org.apache.james.protocols.api.FutureResponse.ResponseListener; @@ -33,6 +35,9 @@ import org.slf4j.Logger; * */ public abstract class AbstractSession implements ProtocolSession { +/** the Session state */ +final static String SESSION_STATE_MAP = SESSION_STATE_MAP; + protected InetSocketAddress socketAddress; private Logger logger; private SessionLog pLog = null; @@ -42,12 +47,15 @@ public abstract class AbstractSession im private String id; protected ProtocolTransport transport; +private MapString, Object connectionState; + public AbstractSession(Logger logger, ProtocolTransport transport) { this.transport = transport; this.socketAddress = transport.getRemoteAddress(); this.logger = logger; this.id = transport.getId(); +this.connectionState = new HashMapString, Object(); } /** @@ -138,5 +146,24 @@ public abstract class AbstractSession im } +/** + * @see org.apache.james.protocols.smtp.SMTPSession#getConnectionState() + */ +public MapString, Object getConnectionState() { +return connectionState; +} + +/** + * @see org.apache.james.protocols.smtp.SMTPSession#getState() + */ +@SuppressWarnings(unchecked) +public MapString, Object getState() { +MapString, Object res = (MapString, Object) getConnectionState().get(SESSION_STATE_MAP); +if (res == null) { +res = new HashMapString, Object(); +getConnectionState().put(SESSION_STATE_MAP, res); +} +return res; +} } Modified: james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/ProtocolSession.java URL: http://svn.apache.org/viewvc/james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/ProtocolSession.java?rev=1175439r1=1175438r2=1175439view=diff == --- james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/ProtocolSession.java (original) +++ james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/ProtocolSession.java Sun Sep 25 17:36:43 2011 @@ -44,6 +44,15 @@ public interface ProtocolSession { */ MapString, Object getState(); + +/** + * Returns Map that consists of the state of the {@link ProtocolSession} per connection + * + * @return map of the current {@link ProtocolSession} state per connection + */ +MapString,Object getConnectionState(); + + /** * Reset the state */ Modified: james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/SMTPSession.java URL: http://svn.apache.org/viewvc/james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/SMTPSession.java?rev=1175439r1=1175438r2=1175439view=diff == --- james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/SMTPSession.java (original) +++ james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/SMTPSession.java Sun Sep 25 17:36:43 2011 @@ -19,8 +19,6 @@ package org.apache.james.protocols.smtp; -import java.util.Map; - import org.apache.james.protocols.api.ProtocolSession; import org.apache.james.protocols.api.handler.LineHandler; @@ -39,8 +37,6 @@ public interface SMTPSession extends Pro /** HELO or EHLO */ final static String CURRENT_HELO_MODE = CURRENT_HELO_MODE; final static String CURRENT_HELO_NAME = CURRENT_HELO_NAME; -/** the Session state
svn commit: r1175441 - /james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/POP3SessionImpl.java
Author: norman Date: Sun Sep 25 17:38:32 2011 New Revision: 1175441 URL: http://svn.apache.org/viewvc?rev=1175441view=rev Log: (empty) Modified: james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/POP3SessionImpl.java Modified: james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/POP3SessionImpl.java URL: http://svn.apache.org/viewvc/james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/POP3SessionImpl.java?rev=1175441r1=1175440r2=1175441view=diff == --- james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/POP3SessionImpl.java (original) +++ james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/POP3SessionImpl.java Sun Sep 25 17:38:32 2011 @@ -18,9 +18,6 @@ / package org.apache.james.pop3server; -import java.util.HashMap; -import java.util.Map; - import org.apache.james.mailbox.MessageManager; import org.apache.james.protocols.api.AbstractSession; import org.apache.james.protocols.api.ProtocolTransport; @@ -33,8 +30,6 @@ import org.slf4j.Logger; public class POP3SessionImpl extends AbstractSession implements POP3Session { private POP3HandlerConfiguration configData; -private MapString, Object state = new HashMapString, Object(); - private int handlerState; private MessageManager mailbox; @@ -63,14 +58,6 @@ public class POP3SessionImpl extends Abs return handlerState; } -/* - * (non-Javadoc) - * - * @see org.apache.james.api.protocol.TLSSupportedSession#getState() - */ -public MapString, Object getState() { -return state; -} /* * (non-Javadoc) @@ -87,7 +74,7 @@ public class POP3SessionImpl extends Abs * @see org.apache.james.api.protocol.TLSSupportedSession#resetState() */ public void resetState() { -state.clear(); +getState().clear(); setHandlerState(AUTHENTICATION_READY); } - To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org
svn commit: r1175443 - in /james/protocols/trunk/smtp/src: main/java/org/apache/james/protocols/smtp/ main/java/org/apache/james/protocols/smtp/core/fastfail/ test/java/org/apache/james/protocols/smtp
Author: norman Date: Sun Sep 25 17:42:51 2011 New Revision: 1175443 URL: http://svn.apache.org/viewvc?rev=1175443view=rev Log: Remove SMTPSession.sleep(...) Removed: james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/TarpitHandler.java james/protocols/trunk/smtp/src/test/java/org/apache/james/protocols/smtp/core/fastfail/TarpitHandlerTest.java Modified: james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/SMTPSession.java james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/SMTPSessionImpl.java Modified: james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/SMTPSession.java URL: http://svn.apache.org/viewvc/james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/SMTPSession.java?rev=1175443r1=1175442r2=1175443view=diff == --- james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/SMTPSession.java (original) +++ james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/SMTPSession.java Sun Sep 25 17:42:51 2011 @@ -120,12 +120,6 @@ public interface SMTPSession extends Pro */ int getPushedLineHandlerCount(); -/** - * Sleep for the given ms - * - * @param ms the time to sleep in milliseconds - */ -void sleep(long ms); } Modified: james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/SMTPSessionImpl.java URL: http://svn.apache.org/viewvc/james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/SMTPSessionImpl.java?rev=1175443r1=1175442r2=1175443view=diff == --- james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/SMTPSessionImpl.java (original) +++ james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/SMTPSessionImpl.java Sun Sep 25 17:42:51 2011 @@ -133,14 +133,6 @@ public class SMTPSessionImpl extends Abs } /** - * @see org.apache.james.protocols.smtp.SMTPSession#sleep(long) - */ -public void sleep(long ms) { -// session.getFilterChain().addAfter(connectionFilter, -// tarpitFilter,new TarpitFilter(ms)); -} - -/** * @see org.apache.james.protocols.smtp.SMTPSession#useAddressBracketsEnforcement() */ public boolean useAddressBracketsEnforcement() { - To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org
svn commit: r1175444 - /james/server/trunk/smtpserver/src/main/java/org/apache/james/smtpserver/fastfail/TarpitHandler.java
Author: norman Date: Sun Sep 25 17:43:07 2011 New Revision: 1175444 URL: http://svn.apache.org/viewvc?rev=1175444view=rev Log: Remove SMTPSession.sleep(...) Removed: james/server/trunk/smtpserver/src/main/java/org/apache/james/smtpserver/fastfail/TarpitHandler.java - To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org
svn commit: r1175445 - in /james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api: BaseRequest.java ProtocolSession.java ProtocolSessionFactory.java ProtocolTransport.java
Author: norman Date: Sun Sep 25 17:55:58 2011 New Revision: 1175445 URL: http://svn.apache.org/viewvc?rev=1175445view=rev Log: Add javadocs Modified: james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/BaseRequest.java james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/ProtocolSession.java james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/ProtocolSessionFactory.java james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/ProtocolTransport.java Modified: james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/BaseRequest.java URL: http://svn.apache.org/viewvc/james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/BaseRequest.java?rev=1175445r1=1175444r2=1175445view=diff == --- james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/BaseRequest.java (original) +++ james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/BaseRequest.java Sun Sep 25 17:55:58 2011 @@ -51,6 +51,7 @@ public class BaseRequest implements Requ } +@Override public String toString() { if (argument == null) { return command; Modified: james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/ProtocolSession.java URL: http://svn.apache.org/viewvc/james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/ProtocolSession.java?rev=1175445r1=1175444r2=1175445view=diff == --- james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/ProtocolSession.java (original) +++ james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/ProtocolSession.java Sun Sep 25 17:55:58 2011 @@ -90,14 +90,16 @@ public interface ProtocolSession { /** * Define a response object to be used as reply for a too long input line - * @return Response + * + * @return Response or null if no response should be written before closing the connection */ Response newLineTooLongResponse(); /** * Define a response object to be used as reply during a fatal error. * Connection will be closed after this response. - * @return Response + * + * @return Response or null if no response should be written before closing the connection */ Response newFatalErrorResponse(); Modified: james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/ProtocolSessionFactory.java URL: http://svn.apache.org/viewvc/james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/ProtocolSessionFactory.java?rev=1175445r1=1175444r2=1175445view=diff == --- james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/ProtocolSessionFactory.java (original) +++ james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/ProtocolSessionFactory.java Sun Sep 25 17:55:58 2011 @@ -19,8 +19,19 @@ package org.apache.james.protocols.api; +/** + * Factory which is responsible for creating new {@link ProtocolSession}'s + * + * + */ public interface ProtocolSessionFactory { +/** + * Create a new {@link ProtocolSession} for the given {@link ProtocolTransport} + * + * @param transport + * @return session + */ ProtocolSession newSession(ProtocolTransport transport); } Modified: james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/ProtocolTransport.java URL: http://svn.apache.org/viewvc/james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/ProtocolTransport.java?rev=1175445r1=1175444r2=1175445view=diff == --- james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/ProtocolTransport.java (original) +++ james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/ProtocolTransport.java Sun Sep 25 17:55:58 2011 @@ -29,20 +29,62 @@ import org.apache.james.protocols.api.ha */ public interface ProtocolTransport { +/** + * Return the {@link InetSocketAddress} of the remote peer + * + * @return address + */ InetSocketAddress getRemoteAddress(); +/** + * Return the unique id. The id MUST NOT be 100 % unique for ever. It just should just not have the same + * id when having concurrent connections + * + * @return id + */ String getId(); +/** + * Return codetrue/code if codeTLS/code encryption is active + * + * @return tlsStarted + */ boolean isTLSStarted(); +/** + * Return codetrue/code if codeSTARTTLS/code is supported by this {@link ProtocolTransport} + * + * @return tlsSupprted + */ boolean isStartTLSSupported
svn commit: r1175447 - /james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/NettyConstants.java
Author: norman Date: Sun Sep 25 18:00:33 2011 New Revision: 1175447 URL: http://svn.apache.org/viewvc?rev=1175447view=rev Log: Committed by mistake Removed: james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/NettyConstants.java - To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org
svn commit: r1175448 - /james/protocols/trunk/impl/src/main/java/org/jboss/
Author: norman Date: Sun Sep 25 18:02:31 2011 New Revision: 1175448 URL: http://svn.apache.org/viewvc?rev=1175448view=rev Log: Remove empty package Removed: james/protocols/trunk/impl/src/main/java/org/jboss/ - To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org
[jira] [Resolved] (PROTOCOLS-32) Add a lower-level api which allows Handlers to return a Response in a async fashion
[ https://issues.apache.org/jira/browse/PROTOCOLS-32?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Norman Maurer resolved PROTOCOLS-32. Resolution: Fixed Fix Version/s: 1.6 Add a lower-level api which allows Handlers to return a Response in a async fashion --- Key: PROTOCOLS-32 URL: https://issues.apache.org/jira/browse/PROTOCOLS-32 Project: JAMES Protocols Issue Type: New Feature Components: api, smtp Affects Versions: 1.5 Reporter: Norman Maurer Assignee: Norman Maurer Fix For: 1.6 At the moment we let our handlers return the response. This may not the best thing todo as sometimes we could benefit from doing this in a async manner. We should add some api for that but still support the old (and simple) way -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira - To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org
svn commit: r1175459 - /james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/esmtp/AuthCmdHandler.java
Author: norman Date: Sun Sep 25 18:14:10 2011 New Revision: 1175459 URL: http://svn.apache.org/viewvc?rev=1175459view=rev Log: Make AUTH login more useful on FAIL. Thanks to Thomas UNG for the patch. See PROTOCOLS-26 Modified: james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/esmtp/AuthCmdHandler.java Modified: james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/esmtp/AuthCmdHandler.java URL: http://svn.apache.org/viewvc/james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/esmtp/AuthCmdHandler.java?rev=1175459r1=1175458r2=1175459view=diff == --- james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/esmtp/AuthCmdHandler.java (original) +++ james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/esmtp/AuthCmdHandler.java Sun Sep 25 18:14:10 2011 @@ -351,8 +351,7 @@ public class AuthCmdHandler } res = new SMTPResponse(SMTPRetCode.AUTH_FAILED, Authentication Failed); -// TODO: Make this string a more useful error message -session.getLogger().error(AUTH method +authType+ failed); +session.getLogger().error(AUTH method +authType+ failed from + user + @ + session.getRemoteIPAddress()); return res; } - To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org
[jira] [Resolved] (PROTOCOLS-26) Make AUTH method failed string a more useful error message
[ https://issues.apache.org/jira/browse/PROTOCOLS-26?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Norman Maurer resolved PROTOCOLS-26. Resolution: Fixed Fix Version/s: (was: 1.5) 1.6 Committed. Sorry for the delay and thanks for the patch! Make AUTH method failed string a more useful error message -- Key: PROTOCOLS-26 URL: https://issues.apache.org/jira/browse/PROTOCOLS-26 Project: JAMES Protocols Issue Type: Improvement Components: smtp Affects Versions: 1.5 Reporter: Thomas UNG Assignee: Norman Maurer Priority: Minor Labels: patch Fix For: 1.6 Attachments: AuthCmdHandler.java Original Estimate: 24h Remaining Estimate: 24h Have security sensitive information in log when auth login has failed - // TODO: Make this string a more useful error message - session.getLogger().error(AUTH method +authType+ failed); + session.getLogger().error(AUTH method +authType+ failed from + user + @ + session.getRemoteIPAddress()); -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira - To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org
[jira] [Resolved] (PROTOCOLS-31) Add a simple netty bases SMTPServer implementation
[ https://issues.apache.org/jira/browse/PROTOCOLS-31?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Norman Maurer resolved PROTOCOLS-31. Resolution: Fixed done Add a simple netty bases SMTPServer implementation -- Key: PROTOCOLS-31 URL: https://issues.apache.org/jira/browse/PROTOCOLS-31 Project: JAMES Protocols Issue Type: New Feature Components: smtp Affects Versions: 1.5 Reporter: Norman Maurer Assignee: Norman Maurer Fix For: 1.6 At the moment we only ship the api for the SMTP-Server + some transport independent stuff. It would be nice if we could also include some simple SMTPServer which can be used in an easy way. Something like subetha-smtp or mailster. -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira - To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org
[jira] [Created] (PROTOCOLS-34) LineHandler/ConnectHandler should return a Response
LineHandler/ConnectHandler should return a Response --- Key: PROTOCOLS-34 URL: https://issues.apache.org/jira/browse/PROTOCOLS-34 Project: JAMES Protocols Issue Type: Task Reporter: Norman Maurer Assignee: Norman Maurer LineHandler and ConectHandler should return a Response object if they want to write a Msg back to the client and not use ProtocolSession.writeResponse(...). This will make the contract much more clear and also allows us to remove the writeResponse from it. this wilmguard us from strange side effects in the future.. -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira - To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org
[jira] [Created] (PROTOCOLS-35) Remove ProtocolSession.writeResponse(...)
Remove ProtocolSession.writeResponse(...) -- Key: PROTOCOLS-35 URL: https://issues.apache.org/jira/browse/PROTOCOLS-35 Project: JAMES Protocols Issue Type: Task Components: api Affects Versions: 1.5 Reporter: Norman Maurer Assignee: Norman Maurer Fix For: 1.6 We should remove ProtocolSession.writeResponse(...) method and just use on ProtocolTransport.write(...) if needed. -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira - To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org
svn commit: r1175162 - in /james/protocols/trunk: api/src/main/java/org/apache/james/protocols/api/ api/src/main/java/org/apache/james/protocols/api/handler/ impl/src/main/java/org/apache/james/protoc
Author: norman Date: Sat Sep 24 12:02:47 2011 New Revision: 1175162 URL: http://svn.apache.org/viewvc?rev=1175162view=rev Log: LineHandler and ConnectHandler now return Response. See PROTOCOLS-34 Modified: james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/Response.java james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/handler/AbstractCommandDispatcher.java james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/handler/ConnectHandler.java james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/handler/LineHandler.java james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/BasicChannelUpstreamHandler.java james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/DataCmdHandler.java james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/DataLineFilter.java james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/DataLineMessageHookHandler.java james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/ReceivedDataLineFilter.java james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/WelcomeMessageHandler.java james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/esmtp/AuthCmdHandler.java james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/esmtp/MailSizeEsmtpExtension.java james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/DNSRBLHandler.java james/protocols/trunk/smtp/src/test/java/org/apache/james/protocols/smtp/core/fastfail/DNSRBLHandlerTest.java Modified: james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/Response.java URL: http://svn.apache.org/viewvc/james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/Response.java?rev=1175162r1=1175161r2=1175162view=diff == --- james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/Response.java (original) +++ james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/Response.java Sat Sep 24 12:02:47 2011 @@ -19,6 +19,7 @@ package org.apache.james.protocols.api; +import java.util.Collections; import java.util.List; /** @@ -27,6 +28,32 @@ import java.util.List; * */ public interface Response { + +/** + * Special {@link Response} implementation which will just disconnect the client + */ +public static final Response DISCONNECT = new Response() { + +public String getRetCode() { +return ; +} + +@SuppressWarnings(unchecked) +public ListCharSequence getLines() { +return Collections.EMPTY_LIST; +} + +public String getRawLine() { +return ; +} + +public boolean isEndSession() { +return true; +} + +}; + + /** * Return return-code * @return Modified: james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/handler/AbstractCommandDispatcher.java URL: http://svn.apache.org/viewvc/james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/handler/AbstractCommandDispatcher.java?rev=1175162r1=1175161r2=1175162view=diff == --- james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/handler/AbstractCommandDispatcher.java (original) +++ james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/handler/AbstractCommandDispatcher.java Sat Sep 24 12:02:47 2011 @@ -19,7 +19,7 @@ package org.apache.james.protocols.api.handler; -import java.io.UnsupportedEncodingException; +import java.nio.charset.Charset; import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; @@ -29,10 +29,7 @@ import java.util.List; import java.util.Locale; import org.apache.james.protocols.api.BaseRequest; -import org.apache.james.protocols.api.FutureResponse; -import org.apache.james.protocols.api.FutureResponse.ResponseListener; import org.apache.james.protocols.api.ProtocolSession; -import org.apache.james.protocols.api.Request; import org.apache.james.protocols.api.Response; @@ -49,6 +46,9 @@ public abstract class AbstractCommandDis private HashMapString, ListCommandHandlerSession commandHandlerMap = new HashMapString, ListCommandHandlerSession(); private ListCommandHandlerResultHandlerResponse, Session rHandlers = new ArrayListCommandHandlerResultHandlerResponse, Session(); + +private final Charset charset = Charset.forName(getLineDecodingCharset()); + /** * Add it to map (key as command name, value is an array list of CommandHandlers) * @@ -128,76 +128,48 @@ public abstract class AbstractCommandDis * (non
svn commit: r1175163 - in /james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/core: POP3CommandDispatcherLineHandler.java WelcomeMessageHandler.java
Author: norman Date: Sat Sep 24 12:03:52 2011 New Revision: 1175163 URL: http://svn.apache.org/viewvc?rev=1175163view=rev Log: LineHandler and ConnectHandler now return Response. See PROTOCOLS-34 Modified: james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/core/POP3CommandDispatcherLineHandler.java james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/core/WelcomeMessageHandler.java Modified: james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/core/POP3CommandDispatcherLineHandler.java URL: http://svn.apache.org/viewvc/james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/core/POP3CommandDispatcherLineHandler.java?rev=1175163r1=1175162r2=1175163view=diff == --- james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/core/POP3CommandDispatcherLineHandler.java (original) +++ james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/core/POP3CommandDispatcherLineHandler.java Sat Sep 24 12:03:52 2011 @@ -27,6 +27,7 @@ import javax.annotation.Resource; import org.apache.james.mailbox.MailboxManager; import org.apache.james.mailbox.MailboxSession; import org.apache.james.pop3server.POP3Session; +import org.apache.james.protocols.api.Response; import org.apache.james.protocols.api.handler.AbstractCommandDispatcher; import org.apache.james.protocols.api.handler.CommandHandler; @@ -66,18 +67,19 @@ public class POP3CommandDispatcherLineHa @Override -public void onLine(POP3Session session, byte[] line) { +public Response onLine(POP3Session session, byte[] line) { MailboxSession mSession = (MailboxSession) session.getState().get(POP3Session.MAILBOX_SESSION); // notify the mailboxmanager about the start of the processing manager.startProcessingRequest(mSession); // do the processing -super.onLine(session, line); +Response response = super.onLine(session, line); // notify the mailboxmanager about the end of the processing manager.endProcessingRequest(mSession); +return response; } } Modified: james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/core/WelcomeMessageHandler.java URL: http://svn.apache.org/viewvc/james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/core/WelcomeMessageHandler.java?rev=1175163r1=1175162r2=1175163view=diff == --- james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/core/WelcomeMessageHandler.java (original) +++ james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/core/WelcomeMessageHandler.java Sat Sep 24 12:03:52 2011 @@ -21,6 +21,7 @@ package org.apache.james.pop3server.core import org.apache.james.pop3server.POP3Response; import org.apache.james.pop3server.POP3Session; +import org.apache.james.protocols.api.Response; import org.apache.james.protocols.api.handler.ConnectHandler; public class WelcomeMessageHandler implements ConnectHandlerPOP3Session { @@ -31,13 +32,13 @@ public class WelcomeMessageHandler imple /** * @see org.apache.james.pop3server.ConnectHandler#onConnect(org.apache.james.pop3server.POP3Session) */ -public void onConnect(POP3Session session) { +public Response onConnect(POP3Session session) { StringBuilder responseBuffer = new StringBuilder(); // Initially greet the connector // Format is: Sat, 24 Jan 1998 13:16:09 -0500 responseBuffer.append(session.getConfigurationData().getHelloName()).append( POP3 server ().append(softwaretype).append() ready ); POP3Response response = new POP3Response(POP3Response.OK_RESPONSE, responseBuffer.toString()); -session.writeResponse(response); +return response; } } - To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org
svn commit: r1175165 - in /james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl: BasicChannelUpstreamHandler.java LineHandlerUpstreamHandler.java
Author: norman Date: Sat Sep 24 12:23:18 2011 New Revision: 1175165 URL: http://svn.apache.org/viewvc?rev=1175165view=rev Log: LineHandler and ConnectHandler now return Response. See PROTOCOLS-34 Modified: james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/BasicChannelUpstreamHandler.java james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/LineHandlerUpstreamHandler.java Modified: james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/BasicChannelUpstreamHandler.java URL: http://svn.apache.org/viewvc/james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/BasicChannelUpstreamHandler.java?rev=1175165r1=1175164r2=1175165view=diff == --- james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/BasicChannelUpstreamHandler.java (original) +++ james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/BasicChannelUpstreamHandler.java Sat Sep 24 12:23:18 2011 @@ -226,6 +226,7 @@ public class BasicChannelUpstreamHandler } else { logger.debug(Unable to process request, e.getCause()); } +e.getCause().printStackTrace(); cleanup(ctx); } } Modified: james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/LineHandlerUpstreamHandler.java URL: http://svn.apache.org/viewvc/james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/LineHandlerUpstreamHandler.java?rev=1175165r1=1175164r2=1175165view=diff == --- james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/LineHandlerUpstreamHandler.java (original) +++ james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/LineHandlerUpstreamHandler.java Sat Sep 24 12:23:18 2011 @@ -19,6 +19,7 @@ package org.apache.james.protocols.impl; import org.apache.james.protocols.api.ProtocolSession; +import org.apache.james.protocols.api.Response; import org.apache.james.protocols.api.handler.LineHandler; import org.jboss.netty.buffer.ChannelBuffer; import org.jboss.netty.channel.ChannelHandlerContext; @@ -53,7 +54,10 @@ public class LineHandlerUpstreamHandler buf.getBytes(0, line); } -handler.onLine(session, line); +Response response = handler.onLine(session, line); +if (response != null) { +session.writeResponse(response); +} } } - To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org
svn commit: r1175223 - in /james/protocols/trunk: impl/src/main/java/org/apache/james/protocols/impl/ smtp/src/main/java/org/apache/james/protocols/smtp/core/ smtp/src/main/java/org/apache/james/proto
Author: norman Date: Sat Sep 24 19:10:11 2011 New Revision: 1175223 URL: http://svn.apache.org/viewvc?rev=1175223view=rev Log: LineHandler and ConnectHandler now return Response. See PROTOCOLS-34 Modified: james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/BasicChannelUpstreamHandler.java james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/ReceivedDataLineFilter.java james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/esmtp/MailSizeEsmtpExtension.java Modified: james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/BasicChannelUpstreamHandler.java URL: http://svn.apache.org/viewvc/james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/BasicChannelUpstreamHandler.java?rev=1175223r1=1175222r2=1175223view=diff == --- james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/BasicChannelUpstreamHandler.java (original) +++ james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/BasicChannelUpstreamHandler.java Sat Sep 24 19:10:11 2011 @@ -226,7 +226,6 @@ public class BasicChannelUpstreamHandler } else { logger.debug(Unable to process request, e.getCause()); } -e.getCause().printStackTrace(); cleanup(ctx); } } Modified: james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/ReceivedDataLineFilter.java URL: http://svn.apache.org/viewvc/james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/ReceivedDataLineFilter.java?rev=1175223r1=1175222r2=1175223view=diff == --- james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/ReceivedDataLineFilter.java (original) +++ james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/ReceivedDataLineFilter.java Sat Sep 24 19:10:11 2011 @@ -18,19 +18,21 @@ / package org.apache.james.protocols.smtp.core; -import java.io.UnsupportedEncodingException; +import java.nio.charset.Charset; import java.util.Collection; import java.util.Date; import java.util.List; +import org.apache.james.protocols.api.Response; import org.apache.james.protocols.api.handler.LineHandler; -import org.apache.james.protocols.smtp.SMTPResponse; import org.apache.james.protocols.smtp.SMTPSession; import org.apache.mailet.base.RFC2822Headers; import org.apache.mailet.base.RFC822DateFormat; public class ReceivedDataLineFilter implements DataLineFilter { +private final static Charset CHARSET = Charset.forName(US-ASCII); + private final static String SOFTWARE_TYPE = JAMES SMTP Server ; // Replace this with something usefull @@ -47,15 +49,21 @@ public class ReceivedDataLineFilter impl * (non-Javadoc) * @see org.apache.james.smtpserver.protocol.core.DataLineFilter#onLine(org.apache.james.smtpserver.protocol.SMTPSession, byte[], org.apache.james.api.protocol.LineHandler) */ -public SMTPResponse onLine(SMTPSession session, byte[] line, LineHandlerSMTPSession next) { +public Response onLine(SMTPSession session, byte[] line, LineHandlerSMTPSession next) { if (session.getState().containsKey(HEADERS_WRITTEN) == false) { -addNewReceivedMailHeaders(session, next); +Response response = addNewReceivedMailHeaders(session, next); + session.getState().put(HEADERS_WRITTEN, true); + +if (response != null) { +return response; +} } -return (SMTPResponse) next.onLine(session, line); +Response resp = next.onLine(session, line); +return resp; } -private void addNewReceivedMailHeaders(SMTPSession session, LineHandlerSMTPSession next) { +private Response addNewReceivedMailHeaders(SMTPSession session, LineHandlerSMTPSession next) { StringBuilder headerLineBuffer = new StringBuilder(); String heloMode = (String) session.getConnectionState().get( @@ -74,11 +82,10 @@ public class ReceivedDataLineFilter impl headerLineBuffer.append( ([).append(session.getRemoteIPAddress()) .append(])).append(\r\n); -try { -next.onLine(session, headerLineBuffer.toString().getBytes(US-ASCII)); -} catch (UnsupportedEncodingException e1) { -// should never happen -e1.printStackTrace(); + +Response response = next.onLine(session, headerLineBuffer.toString().getBytes(CHARSET)); +if (response != null) { +return response; } headerLineBuffer.delete(0, headerLineBuffer.length()); @@ -104,38 +111,38 @@ public class
svn commit: r1175224 - in /james/server/trunk/smtpserver/src/main/java/org/apache/james/smtpserver: DataLineJamesMessageHookHandler.java POP3BeforeSMTPHandler.java
Author: norman Date: Sat Sep 24 19:11:43 2011 New Revision: 1175224 URL: http://svn.apache.org/viewvc?rev=1175224view=rev Log: LineHandler and ConnectHandler now return Response. See PROTOCOLS-34 Modified: james/server/trunk/smtpserver/src/main/java/org/apache/james/smtpserver/DataLineJamesMessageHookHandler.java james/server/trunk/smtpserver/src/main/java/org/apache/james/smtpserver/POP3BeforeSMTPHandler.java Modified: james/server/trunk/smtpserver/src/main/java/org/apache/james/smtpserver/DataLineJamesMessageHookHandler.java URL: http://svn.apache.org/viewvc/james/server/trunk/smtpserver/src/main/java/org/apache/james/smtpserver/DataLineJamesMessageHookHandler.java?rev=1175224r1=1175223r2=1175224view=diff == --- james/server/trunk/smtpserver/src/main/java/org/apache/james/smtpserver/DataLineJamesMessageHookHandler.java (original) +++ james/server/trunk/smtpserver/src/main/java/org/apache/james/smtpserver/DataLineJamesMessageHookHandler.java Sat Sep 24 19:11:43 2011 @@ -33,6 +33,7 @@ import org.apache.james.core.MailImpl; import org.apache.james.core.MimeMessageCopyOnWriteProxy; import org.apache.james.core.MimeMessageInputStreamSource; import org.apache.james.lifecycle.api.LifecycleUtil; +import org.apache.james.protocols.api.Response; import org.apache.james.protocols.api.handler.ExtensibleHandler; import org.apache.james.protocols.api.handler.LineHandler; import org.apache.james.protocols.api.handler.WiringException; @@ -69,7 +70,7 @@ public final class DataLineJamesMessageH * .james.smtpserver.protocol.SMTPSession, byte[], * org.apache.james.api.protocol.LineHandler) */ -public void onLine(SMTPSession session, byte[] line, LineHandlerSMTPSession next) { +public Response onLine(SMTPSession session, byte[] line, LineHandlerSMTPSession next) { MimeMessageInputStreamSource mmiss = (MimeMessageInputStreamSource) session.getState().get(SMTPConstants.DATA_MIMEMESSAGE_STREAMSOURCE); try { @@ -93,15 +94,15 @@ public final class DataLineJamesMessageH mimeMessageCopyOnWriteProxy = new MimeMessageCopyOnWriteProxy(mmiss); mail.setMessage(mimeMessageCopyOnWriteProxy); -processExtensions(session, mail); +Response response = processExtensions(session, mail); -session.popLineHandler(); -// next.onLine(session, line); +session.popLineHandler(); +return response; } catch (MessagingException e) { // TODO probably return a temporary problem session.getLogger().info(Unexpected error handling DATA stream, e); -session.writeResponse(new SMTPResponse(SMTPRetCode.LOCAL_ERROR, Unexpected error handling DATA stream.)); +return new SMTPResponse(SMTPRetCode.LOCAL_ERROR, Unexpected error handling DATA stream.); } finally { LifecycleUtil.dispose(mimeMessageCopyOnWriteProxy); LifecycleUtil.dispose(mmiss); @@ -121,19 +122,19 @@ public final class DataLineJamesMessageH } catch (IOException e) { LifecycleUtil.dispose(mmiss); -SMTPResponse response; -response = new SMTPResponse(SMTPRetCode.LOCAL_ERROR, DSNStatus.getStatus(DSNStatus.TRANSIENT, DSNStatus.UNDEFINED_STATUS) + Error processing message: + e.getMessage()); +SMTPResponse response = new SMTPResponse(SMTPRetCode.LOCAL_ERROR, DSNStatus.getStatus(DSNStatus.TRANSIENT, DSNStatus.UNDEFINED_STATUS) + Error processing message: + e.getMessage()); session.getLogger().error(Unknown error occurred while processing DATA., e); -session.writeResponse(response); -return; + +return response; } +return null; } /** * @param session */ -private void processExtensions(SMTPSession session, Mail mail) { +private Response processExtensions(SMTPSession session, Mail mail) { if (mail != null messageHandlers != null) { try { MimeMessageInputStreamSource mmiss = (MimeMessageInputStreamSource) session.getState().get(SMTPConstants.DATA_MIMEMESSAGE_STREAMSOURCE); @@ -164,8 +165,7 @@ public final class DataLineJamesMessageH // if the response is received, stop processing of command // handlers if (response != null) { -session.writeResponse(response); -return; +return response; } } @@ -189,8 +189,7 @@ public final class DataLineJamesMessageH // if the response is received, stop processing of command
[jira] [Resolved] (PROTOCOLS-34) LineHandler/ConnectHandler should return a Response
[ https://issues.apache.org/jira/browse/PROTOCOLS-34?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Norman Maurer resolved PROTOCOLS-34. Resolution: Fixed Fix Version/s: 1.6 done... LineHandler/ConnectHandler should return a Response --- Key: PROTOCOLS-34 URL: https://issues.apache.org/jira/browse/PROTOCOLS-34 Project: JAMES Protocols Issue Type: Task Reporter: Norman Maurer Assignee: Norman Maurer Fix For: 1.6 LineHandler and ConectHandler should return a Response object if they want to write a Msg back to the client and not use ProtocolSession.writeResponse(...). This will make the contract much more clear and also allows us to remove the writeResponse from it. this wilmguard us from strange side effects in the future.. -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira - To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org
svn commit: r1175228 - /james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/AbstractResponse.java
Author: norman Date: Sat Sep 24 19:53:49 2011 New Revision: 1175228 URL: http://svn.apache.org/viewvc?rev=1175228view=rev Log: Fix possible NPE Modified: james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/AbstractResponse.java Modified: james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/AbstractResponse.java URL: http://svn.apache.org/viewvc/james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/AbstractResponse.java?rev=1175228r1=1175227r2=1175228view=diff == --- james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/AbstractResponse.java (original) +++ james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/AbstractResponse.java Sat Sep 24 19:53:49 2011 @@ -31,7 +31,7 @@ public abstract class AbstractResponse i private String retCode = null; -protected ListCharSequence lines = null; +protected ListCharSequence lines = new LinkedListCharSequence();; protected String rawLine = null; private boolean endSession = false; @@ -61,9 +61,6 @@ public abstract class AbstractResponse i * @param line the responseLine to append */ public void appendLine(CharSequence line) { -if (lines == null) { -lines = new LinkedListCharSequence(); -} lines.add(line); } - To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org
svn commit: r1175229 - /james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/AbstractResponse.java
Author: norman Date: Sat Sep 24 19:55:07 2011 New Revision: 1175229 URL: http://svn.apache.org/viewvc?rev=1175229view=rev Log: Mark final Modified: james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/AbstractResponse.java Modified: james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/AbstractResponse.java URL: http://svn.apache.org/viewvc/james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/AbstractResponse.java?rev=1175229r1=1175228r2=1175229view=diff == --- james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/AbstractResponse.java (original) +++ james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/AbstractResponse.java Sat Sep 24 19:55:07 2011 @@ -31,7 +31,7 @@ public abstract class AbstractResponse i private String retCode = null; -protected ListCharSequence lines = new LinkedListCharSequence();; +protected final ListCharSequence lines = new LinkedListCharSequence();; protected String rawLine = null; private boolean endSession = false; - To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org
svn commit: r1175230 - /james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/Response.java
Author: norman Date: Sat Sep 24 19:56:52 2011 New Revision: 1175230 URL: http://svn.apache.org/viewvc?rev=1175230view=rev Log: Adjust javadocs Modified: james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/Response.java Modified: james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/Response.java URL: http://svn.apache.org/viewvc/james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/Response.java?rev=1175230r1=1175229r2=1175230view=diff == --- james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/Response.java (original) +++ james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/Response.java Sat Sep 24 19:56:52 2011 @@ -62,7 +62,8 @@ public interface Response { /** - * Return a List of all response lines stored in this Response + * Return a List of all response lines stored in this Response. This should be used for encoding + * the {@link Response} before sending it to the client. * * @return all responseLines */ - To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org
svn commit: r1174533 - in /james/protocols/trunk: api/src/main/java/org/apache/james/protocols/api/AbstractResponse.java smtp/src/main/java/org/apache/james/protocols/smtp/SMTPResponse.java
Author: norman Date: Fri Sep 23 06:05:05 2011 New Revision: 1174533 URL: http://svn.apache.org/viewvc?rev=1174533view=rev Log: Allow to have a null constructor for sub-classes Modified: james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/AbstractResponse.java james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/SMTPResponse.java Modified: james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/AbstractResponse.java URL: http://svn.apache.org/viewvc/james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/AbstractResponse.java?rev=1174533r1=1174532r2=1174533view=diff == --- james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/AbstractResponse.java (original) +++ james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/AbstractResponse.java Fri Sep 23 06:05:05 2011 @@ -35,6 +35,10 @@ public abstract class AbstractResponse i protected String rawLine = null; private boolean endSession = false; +protected AbstractResponse() { + +} + /** * Construct a new SMTPResponse. The given code and description can not be null, if null an IllegalArgumentException * get thrown Modified: james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/SMTPResponse.java URL: http://svn.apache.org/viewvc/james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/SMTPResponse.java?rev=1174533r1=1174532r2=1174533view=diff == --- james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/SMTPResponse.java (original) +++ james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/SMTPResponse.java Fri Sep 23 06:05:05 2011 @@ -29,6 +29,9 @@ import org.apache.james.protocols.api.Ab */ public class SMTPResponse extends AbstractResponse { +protected SMTPResponse() { + +} /** * Construct a new SMTPResponse. The given code and description can not be null, if null an IllegalArgumentException * get thrown - To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org
svn commit: r1174606 - /james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/DataLineMessageHookHandler.java
Author: norman Date: Fri Sep 23 09:24:36 2011 New Revision: 1174606 URL: http://svn.apache.org/viewvc?rev=1174606view=rev Log: Allow to extend this class Modified: james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/DataLineMessageHookHandler.java Modified: james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/DataLineMessageHookHandler.java URL: http://svn.apache.org/viewvc/james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/DataLineMessageHookHandler.java?rev=1174606r1=1174605r2=1174606view=diff == --- james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/DataLineMessageHookHandler.java (original) +++ james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/DataLineMessageHookHandler.java Fri Sep 23 09:24:36 2011 @@ -44,7 +44,7 @@ import org.apache.james.protocols.smtp.h * error to the client to report the problem while trying to queue the message * */ -public final class DataLineMessageHookHandler implements DataLineFilter, ExtensibleHandler { +public class DataLineMessageHookHandler implements DataLineFilter, ExtensibleHandler { private List messageHandlers; @@ -66,8 +66,7 @@ public final class DataLineMessageHookHa out.flush(); out.close(); -processExtensions(session, env); -session.popLineHandler(); +session.writeResponse(processExtensions(session, env)); // DotStuffing. } else if (line[0] == 46 line[1] == 46) { @@ -89,6 +88,9 @@ public final class DataLineMessageHookHa Unknown error occurred while processing DATA., e); session.writeResponse(response); return; +} finally { +// do the clean up +session.resetState(); } } @@ -96,13 +98,13 @@ public final class DataLineMessageHookHa /** * @param session */ -private void processExtensions(SMTPSession session, MailEnvelopeImpl mail) { -boolean match = false; -if(mail != null messageHandlers != null) { -try { +protected SMTPResponse processExtensions(SMTPSession session, MailEnvelopeImpl mail) { +try { + +if (mail != null messageHandlers != null) { int count = messageHandlers.size(); -for(int i =0; i count; i++) { -MessageHook rawHandler = (MessageHook) messageHandlers.get(i); +for (int i = 0; i count; i++) { +MessageHook rawHandler = (MessageHook) messageHandlers.get(i); session.getLogger().debug(executing message handler + rawHandler); long start = System.currentTimeMillis(); @@ -113,34 +115,33 @@ public final class DataLineMessageHookHa for (int i2 = 0; i2 rHooks.size(); i2++) { Object rHook = rHooks.get(i2); session.getLogger().debug(executing hook + rHook); - + hRes = ((HookResultHook) rHook).onHookResult(session, hRes, executionTime, rawHandler); } } - + SMTPResponse response = AbstractHookableCmdHandler.calcDefaultSMTPResponse(hRes); - -//if the response is received, stop processing of command handlers -if(response != null) { -session.writeResponse(response); -match = true; -break; + +// if the response is received, stop processing of command +// handlers +if (response != null) { +return response; } } -if (match == false) { -// Not queue the message! -SMTPResponse response = AbstractHookableCmdHandler.calcDefaultSMTPResponse(new HookResult(HookReturnCode.DENY)); -session.writeResponse(response); - -} -} finally { - -//do the clean up -session.resetState(); + +// Not queue the message! +SMTPResponse response = AbstractHookableCmdHandler.calcDefaultSMTPResponse(new HookResult(HookReturnCode.DENY)); +return response; + + } +} finally { + +session.popLineHandler(); } +return null; } - + /** * @see org.apache.james.protocols.api.handler.ExtensibleHandler#wireExtensions(java.lang.Class, java.util.List
svn commit: r1174647 - /james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/DataLineMessageHookHandler.java
Author: norman Date: Fri Sep 23 10:53:15 2011 New Revision: 1174647 URL: http://svn.apache.org/viewvc?rev=1174647view=rev Log: Allow to extend this class and handle FutureResponse Modified: james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/DataLineMessageHookHandler.java Modified: james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/DataLineMessageHookHandler.java URL: http://svn.apache.org/viewvc/james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/DataLineMessageHookHandler.java?rev=1174647r1=1174646r2=1174647view=diff == --- james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/DataLineMessageHookHandler.java (original) +++ james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/DataLineMessageHookHandler.java Fri Sep 23 10:53:15 2011 @@ -26,6 +26,9 @@ import java.io.OutputStream; import java.util.LinkedList; import java.util.List; +import org.apache.james.protocols.api.FutureResponse; +import org.apache.james.protocols.api.FutureResponse.ResponseListener; +import org.apache.james.protocols.api.Response; import org.apache.james.protocols.api.handler.ExtensibleHandler; import org.apache.james.protocols.api.handler.LineHandler; import org.apache.james.protocols.api.handler.WiringException; @@ -56,7 +59,7 @@ public class DataLineMessageHookHandler * (non-Javadoc) * @see org.apache.james.smtpserver.protocol.core.DataLineFilter#onLine(org.apache.james.smtpserver.protocol.SMTPSession, byte[], org.apache.james.api.protocol.LineHandler) */ -public void onLine(SMTPSession session, byte[] line, LineHandlerSMTPSession next) { +public void onLine(final SMTPSession session, byte[] line, LineHandlerSMTPSession next) { MailEnvelopeImpl env = (MailEnvelopeImpl) session.getState().get(DataCmdHandler.MAILENV); OutputStream out = env.getMessageOutputStream(); try { @@ -66,7 +69,18 @@ public class DataLineMessageHookHandler out.flush(); out.close(); -session.writeResponse(processExtensions(session, env)); +SMTPResponse response = processExtensions(session, env); +if (response instanceof FutureResponse) { +((FutureResponse) response).addListener(new ResponseListener() { + +public void onResponse(Response response) { +session.resetState(); +} +}); +} else { +session.resetState(); +} +session.writeResponse(response); // DotStuffing. } else if (line[0] == 46 line[1] == 46) { @@ -87,11 +101,8 @@ public class DataLineMessageHookHandler session.getLogger().error( Unknown error occurred while processing DATA., e); session.writeResponse(response); -return; -} finally { -// do the clean up session.resetState(); -} +} } - To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org
svn commit: r1174670 - /james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/MailEnvelopeImpl.java
Author: norman Date: Fri Sep 23 11:32:55 2011 New Revision: 1174670 URL: http://svn.apache.org/viewvc?rev=1174670view=rev Log: Fix MailEnvelopeImpl outputstream creation Modified: james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/MailEnvelopeImpl.java Modified: james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/MailEnvelopeImpl.java URL: http://svn.apache.org/viewvc/james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/MailEnvelopeImpl.java?rev=1174670r1=1174669r2=1174670view=diff == --- james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/MailEnvelopeImpl.java (original) +++ james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/MailEnvelopeImpl.java Fri Sep 23 11:32:55 2011 @@ -90,7 +90,9 @@ public class MailEnvelopeImpl implements * @see org.apache.james.smtpserver.protocol.MailEnvelope#getMessageOutputStream() */ public OutputStream getMessageOutputStream() { -this.outputStream = new ByteArrayOutputStream(10); +if (outputStream == null) { +this.outputStream = new ByteArrayOutputStream(10); +} return outputStream; } - To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org
svn commit: r1174671 - /james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/DataCmdHandler.java
Author: norman Date: Fri Sep 23 11:36:28 2011 New Revision: 1174671 URL: http://svn.apache.org/viewvc?rev=1174671view=rev Log: Allow to overwrite MailEnvelope creation Modified: james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/DataCmdHandler.java Modified: james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/DataCmdHandler.java URL: http://svn.apache.org/viewvc/james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/DataCmdHandler.java?rev=1174671r1=1174670r2=1174671view=diff == --- james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/DataCmdHandler.java (original) +++ james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/DataCmdHandler.java Fri Sep 23 11:36:28 2011 @@ -29,6 +29,7 @@ import org.apache.james.protocols.api.ha import org.apache.james.protocols.api.handler.ExtensibleHandler; import org.apache.james.protocols.api.handler.LineHandler; import org.apache.james.protocols.api.handler.WiringException; +import org.apache.james.protocols.smtp.MailEnvelope; import org.apache.james.protocols.smtp.MailEnvelopeImpl; import org.apache.james.protocols.smtp.SMTPResponse; import org.apache.james.protocols.smtp.SMTPRetCode; @@ -107,15 +108,21 @@ public class DataCmdHandler implements C */ @SuppressWarnings(unchecked) protected SMTPResponse doDATA(SMTPSession session, String argument) { -MailEnvelopeImpl env = new MailEnvelopeImpl(); -env.setRecipients(new ArrayListMailAddress((Collection)session.getState().get(SMTPSession.RCPT_LIST))); -env.setSender((MailAddress) session.getState().get(SMTPSession.SENDER)); +MailEnvelope env = createEnvelope(session, (MailAddress) session.getState().get(SMTPSession.SENDER), new ArrayListMailAddress((Collection)session.getState().get(SMTPSession.RCPT_LIST))); session.getState().put(MAILENV, env); session.pushLineHandler(lineHandler); return new SMTPResponse(SMTPRetCode.DATA_READY, Ok Send data ending with CRLF.CRLF); } +protected MailEnvelope createEnvelope(SMTPSession session, MailAddress sender, ListMailAddress recipients) { +MailEnvelopeImpl env = new MailEnvelopeImpl(); +env.setRecipients(recipients); +env.setSender(sender); +return env; +} + + /** * @see org.apache.james.smtpserver.protocol.CommandHandler#getImplCommands() */ - To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org
svn commit: r1174093 - /james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/Response.java
Author: norman Date: Thu Sep 22 12:38:47 2011 New Revision: 1174093 URL: http://svn.apache.org/viewvc?rev=1174093view=rev Log: Remove setters from the interface. The setters should only be present in the impls Modified: james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/Response.java Modified: james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/Response.java URL: http://svn.apache.org/viewvc/james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/Response.java?rev=1174093r1=1174092r2=1174093view=diff == --- james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/Response.java (original) +++ james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/Response.java Thu Sep 22 12:38:47 2011 @@ -33,20 +33,6 @@ public interface Response { */ String getRetCode(); - -/** - * Set the return-code used for this response - * - * @param retCode - */ -void setRetCode(String retCode); - -/** - * Append line to response - * - * @param line - */ -void appendLine(CharSequence line); /** * Return a List of all response lines stored in this Response @@ -68,11 +54,5 @@ public interface Response { * @return true if session is ended */ boolean isEndSession(); -/** - * Set to true to end the session - * - * @param endSession - */ -void setEndSession(boolean endSession); } - To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org
svn commit: r1174095 - /james/server/trunk/queue-file/src/main/java/org/apache/james/queue/file/FileMailQueue.java
Author: norman Date: Thu Sep 22 12:40:33 2011 New Revision: 1174095 URL: http://svn.apache.org/viewvc?rev=1174095view=rev Log: Make sure the FileMailQueue also handles messages with delay the right way. See JAMES-1316 Modified: james/server/trunk/queue-file/src/main/java/org/apache/james/queue/file/FileMailQueue.java Modified: james/server/trunk/queue-file/src/main/java/org/apache/james/queue/file/FileMailQueue.java URL: http://svn.apache.org/viewvc/james/server/trunk/queue-file/src/main/java/org/apache/james/queue/file/FileMailQueue.java?rev=1174095r1=1174094r2=1174095view=diff == --- james/server/trunk/queue-file/src/main/java/org/apache/james/queue/file/FileMailQueue.java (original) +++ james/server/trunk/queue-file/src/main/java/org/apache/james/queue/file/FileMailQueue.java Thu Sep 22 12:40:33 2011 @@ -34,6 +34,7 @@ import java.util.concurrent.Executors; import java.util.concurrent.LinkedBlockingQueue; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; +import java.util.concurrent.atomic.AtomicLong; import javax.mail.MessagingException; import javax.mail.util.SharedFileInputStream; @@ -61,7 +62,7 @@ public class FileMailQueue implements Ma private ConcurrentHashMapString, FileItem keyMappings = new ConcurrentHashMapString, FileMailQueue.FileItem(); private BlockingQueueString inmemoryQueue = new LinkedBlockingQueueString(); private ScheduledExecutorService scheduler = Executors.newSingleThreadScheduledExecutor(); - +private final static AtomicLong COUNTER = new AtomicLong(); private final String queuename; private final File parentDir; private String queueDirName; @@ -69,6 +70,7 @@ public class FileMailQueue implements Ma private boolean sync; private final static String MSG_EXTENSION = .msg; private final static String OBJECT_EXTENSION = .obj; +private final static String NEXT_DELIVERY = FileQueueNextDelivery; public FileMailQueue(File parentDir, String queuename, boolean sync, Logger log) throws IOException { this.queuename = queuename; @@ -91,26 +93,34 @@ public class FileMailQueue implements Ma @Override public boolean accept(File dir, String name) { -if (name.endsWith(MSG_EXTENSION)) { -if (new File(dir, name.substring(0, name.length() -MSG_EXTENSION.length()) + OBJECT_EXTENSION).exists()) { -return true; -} +if (name.endsWith(OBJECT_EXTENSION)) { +return true; } return false; } }); for (int a = 0; a files.length; a++) { final String name = files[a]; +ObjectInputStream oin = null; -int i = name.indexOf(-); -if ( i -1) { -final String objectFilename = name.substring(0, name.length() - MSG_EXTENSION.length()) + OBJECT_EXTENSION; -long next = Long.parseLong(name.substring(0,i)); -final String key = name.substring(i +1, name.length() - MSG_EXTENSION.length()); -FileItem item = new FileItem(queueDirName + / + objectFilename, queueDirName + / + name); + +try { +final String msgFileName = name.substring(0, name.length() - OBJECT_EXTENSION.length()) + MSG_EXTENSION; + +FileItem item = new FileItem(queueDirName + / + name, queueDirName + / + msgFileName); + +oin = new ObjectInputStream(new FileInputStream(item.getObjectFile())); +Mail mail = (Mail) oin.readObject(); +Long next = (Long) mail.getAttribute(NEXT_DELIVERY); +if (next == null) { +next = 0L; +} + + +final String key = mail.getName(); keyMappings.put(key, item); if (next = System.currentTimeMillis()) { - + try { inmemoryQueue.put(key); } catch (InterruptedException e) { @@ -118,10 +128,11 @@ public class FileMailQueue implements Ma throw new RuntimeException(Unable to init, e); } } else { - -// Schedule a task which will put the mail in the queue for processing after a given delay + +// Schedule a task which will put the mail in the queue +// for processing after a given delay scheduler.schedule(new Runnable
svn commit: r1174122 - in /james/protocols/trunk: api/src/main/java/org/apache/james/protocols/api/ api/src/main/java/org/apache/james/protocols/api/handler/ impl/src/main/java/org/apache/james/protoc
Author: norman Date: Thu Sep 22 13:27:35 2011 New Revision: 1174122 URL: http://svn.apache.org/viewvc?rev=1174122view=rev Log: Remove return value from ConnectHandler/LineHandler as it makes no sense. Not sure why I thought it would make sense before.. Beside this I added special type of FutureResponse which allows to handle Responses in a async fashion. This is more for the skilled dev but there are use cases (stay tuned) Added: james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/FutureResponse.java (with props) Removed: james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/log/ConnectHandlerResultLogger.java james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/log/LineHandlerResultLogger.java Modified: james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/handler/AbstractCommandDispatcher.java james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/handler/ConnectHandler.java james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/handler/ConnectHandlerResultHandler.java james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/handler/LineHandler.java james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/handler/LineHandlerResultHandler.java james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/BasicChannelUpstreamHandler.java james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/LineHandlerUpstreamHandler.java james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/DataCmdHandler.java james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/WelcomeMessageHandler.java james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/esmtp/AuthCmdHandler.java james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/DNSRBLHandler.java Added: james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/FutureResponse.java URL: http://svn.apache.org/viewvc/james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/FutureResponse.java?rev=1174122view=auto == --- james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/FutureResponse.java (added) +++ james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/FutureResponse.java Thu Sep 22 13:27:35 2011 @@ -0,0 +1,66 @@ +/ + * 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.api; + +/** + * An special {@link Response} which allows to populate it in an async fashion. It also allows to register listeners which will get notified once the + * {@link FutureResponse} is ready + * + * + */ +public interface FutureResponse extends Response{ + +/** + * Add a {@link ResponseListener} which will get notified once {@link #isReady()} is true + * + * @param listener + */ +public void addListener(ResponseListener listener); + +/** + * Remote a {@link ResponseListener} + * + * @param listener + */ +public void removeListener(ResponseListener listener); + +/** + * Return codetrue/code once the {@link FutureResponse} is ready and calling any of the get methods will not block any more. + * + * @return ready + */ +public boolean isReady(); + + +/** + * Listener which will get notified once the {@link FutureResponse#isReady()} returns codetrue/code + * + * + */ +public interface ResponseListener { + +/** + * The {@link Response} is ready for processing + * + * @param response + */ +public
svn commit: r1174123 - in /james/server/trunk: lmtpserver/src/main/java/org/apache/james/lmtpserver/ pop3server/src/main/java/org/apache/james/pop3server/core/ protocols-library/src/main/java/org/apac
Author: norman Date: Thu Sep 22 13:28:58 2011 New Revision: 1174123 URL: http://svn.apache.org/viewvc?rev=1174123view=rev Log: Adjust for latest protocol changes Modified: james/server/trunk/lmtpserver/src/main/java/org/apache/james/lmtpserver/CoreCmdHandlerLoader.java james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/core/CoreCmdHandlerLoader.java james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/core/POP3CommandDispatcherLineHandler.java james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/core/WelcomeMessageHandler.java james/server/trunk/protocols-library/src/main/java/org/apache/james/protocols/lib/jmx/AbstractConnectHandlerResultJMXMonitor.java james/server/trunk/protocols-library/src/main/java/org/apache/james/protocols/lib/jmx/AbstractLineHandlerResultJMXMonitor.java james/server/trunk/protocols-library/src/main/java/org/apache/james/protocols/lib/jmx/ConnectHandlerStats.java james/server/trunk/protocols-library/src/main/java/org/apache/james/protocols/lib/jmx/LineHandlerStats.java james/server/trunk/smtpserver/src/main/java/org/apache/james/smtpserver/CoreCmdHandlerLoader.java james/server/trunk/smtpserver/src/main/java/org/apache/james/smtpserver/POP3BeforeSMTPHandler.java Modified: james/server/trunk/lmtpserver/src/main/java/org/apache/james/lmtpserver/CoreCmdHandlerLoader.java URL: http://svn.apache.org/viewvc/james/server/trunk/lmtpserver/src/main/java/org/apache/james/lmtpserver/CoreCmdHandlerLoader.java?rev=1174123r1=1174122r2=1174123view=diff == --- james/server/trunk/lmtpserver/src/main/java/org/apache/james/lmtpserver/CoreCmdHandlerLoader.java (original) +++ james/server/trunk/lmtpserver/src/main/java/org/apache/james/lmtpserver/CoreCmdHandlerLoader.java Thu Sep 22 13:28:58 2011 @@ -23,8 +23,6 @@ import java.util.LinkedList; import java.util.List; import org.apache.james.protocols.api.handler.HandlersPackage; -import org.apache.james.protocols.impl.log.ConnectHandlerResultLogger; -import org.apache.james.protocols.impl.log.LineHandlerResultLogger; import org.apache.james.protocols.smtp.core.ExpnCmdHandler; import org.apache.james.protocols.smtp.core.log.HookResultLogger; import org.apache.james.protocols.smtp.core.NoopCmdHandler; @@ -68,8 +66,6 @@ public class CoreCmdHandlerLoader implem // logging stuff private final String COMMANDHANDLERRESULTLOGGER = SMTPCommandHandlerResultLogger.class.getName(); -private final String CONNECTHANDLERRESULTLOGGER = ConnectHandlerResultLogger.class.getName(); -private final String LINEHANDLERRESULTLOGGER = LineHandlerResultLogger.class.getName(); private final String HOOKRESULTLOGGER = HookResultLogger.class.getName(); private final ListString commands = new LinkedListString(); @@ -96,8 +92,6 @@ public class CoreCmdHandlerLoader implem // Add logging stuff commands.add(COMMANDHANDLERRESULTLOGGER); -commands.add(CONNECTHANDLERRESULTLOGGER); -commands.add(LINEHANDLERRESULTLOGGER); commands.add(HOOKRESULTLOGGER); } Modified: james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/core/CoreCmdHandlerLoader.java URL: http://svn.apache.org/viewvc/james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/core/CoreCmdHandlerLoader.java?rev=1174123r1=1174122r2=1174123view=diff == --- james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/core/CoreCmdHandlerLoader.java (original) +++ james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/core/CoreCmdHandlerLoader.java Thu Sep 22 13:28:58 2011 @@ -23,8 +23,6 @@ import java.util.LinkedList; import java.util.List; import org.apache.james.protocols.api.handler.HandlersPackage; -import org.apache.james.protocols.impl.log.ConnectHandlerResultLogger; -import org.apache.james.protocols.impl.log.LineHandlerResultLogger; public class CoreCmdHandlerLoader implements HandlersPackage { @@ -48,8 +46,7 @@ public class CoreCmdHandlerLoader implem // logging stuff private final String COMMANDHANDLERRESULTLOGGER = POP3CommandHandlerResultLogger.class.getName(); -private final String CONNECTHANDLERRESULTLOGGER = ConnectHandlerResultLogger.class.getName(); -private final String LINEHANDLERRESULTLOGGER = LineHandlerResultLogger.class.getName(); + private final ListString commands = new LinkedListString(); @@ -75,8 +72,6 @@ public class CoreCmdHandlerLoader implem // Add logging stuff commands.add(COMMANDHANDLERRESULTLOGGER); -commands.add(CONNECTHANDLERRESULTLOGGER); -commands.add(LINEHANDLERRESULTLOGGER); } /* Modified: james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/core
[jira] [Resolved] (JAMES-1316) Add a file based MailQueue implementation
[ https://issues.apache.org/jira/browse/JAMES-1316?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Norman Maurer resolved JAMES-1316. -- Resolution: Fixed FileMailQueue is in trunk now Add a file based MailQueue implementation - Key: JAMES-1316 URL: https://issues.apache.org/jira/browse/JAMES-1316 Project: JAMES Server Issue Type: New Feature Components: Queue Affects Versions: 3.0-beta3 Reporter: Norman Maurer Assignee: Norman Maurer Fix For: 3.0-beta4 We should switch back to a file based MailQueue implementation as default as ActiveMQ just seems to be not stable enough for our needs. -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira - To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org
[jira] [Resolved] (JAMES-1317) Mail spooled but not processed
[ https://issues.apache.org/jira/browse/JAMES-1317?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Norman Maurer resolved JAMES-1317. -- Resolution: Fixed Fix Version/s: 3.0-beta4 I think its fixed by JAMES-1319. Could you try with latest snapshots ? Mail spooled but not processed -- Key: JAMES-1317 URL: https://issues.apache.org/jira/browse/JAMES-1317 Project: JAMES Server Issue Type: Bug Components: SpoolManager Processors Affects Versions: 3.0-M1, 3.0-M2, 3.0-beta3 Reporter: Raju Buchi Priority: Critical Fix For: 3.0-beta4 Attachments: jstack.zip Mails sent to James server are spooled but they are not processed and sent out. The issue is similar to the one faced by Zach. The server seems to be working fine for a few hours or few days, but some time all the mails are spooled but they will not be processed and sent out. Restarted the server several times and some time a few of the mails will be processed and all the others are lost. As Norman suggested I have took a jstack trace. Please let me how we can resolve this issue Thanks - Raju -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira - To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org
svn commit: r1174304 - /james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/AbstractSession.java
Author: norman Date: Thu Sep 22 18:34:18 2011 New Revision: 1174304 URL: http://svn.apache.org/viewvc?rev=1174304view=rev Log: Correctly handle FutureResponse Modified: james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/AbstractSession.java Modified: james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/AbstractSession.java URL: http://svn.apache.org/viewvc/james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/AbstractSession.java?rev=1174304r1=1174303r2=1174304view=diff == --- james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/AbstractSession.java (original) +++ james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/AbstractSession.java Thu Sep 22 18:34:18 2011 @@ -22,6 +22,7 @@ package org.apache.james.protocols.api; import java.net.InetSocketAddress; +import org.apache.james.protocols.api.FutureResponse.ResponseListener; import org.apache.james.protocols.api.ProtocolTransport; import org.apache.james.protocols.api.Response; import org.slf4j.Logger; @@ -116,7 +117,16 @@ public abstract class AbstractSession im * @see org.apache.james.api.protocol.ProtocolSession#writeResponse(org.apache.james.api.protocol.Response) */ public void writeResponse(final Response response) { -transport.writeResponse(response, this); +if (response instanceof FutureResponse) { +((FutureResponse) response).addListener(new ResponseListener() { + +public void onResponse(Response response) { +transport.writeResponse(response, AbstractSession.this); +} +}); +} else { +transport.writeResponse(response, this); +} } /* - To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org
[jira] [Commented] (JAMES-1317) Mail spooled but not processed
[ https://issues.apache.org/jira/browse/JAMES-1317?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13112845#comment-13112845 ] Norman Maurer commented on JAMES-1317: -- Yes that should be right Mail spooled but not processed -- Key: JAMES-1317 URL: https://issues.apache.org/jira/browse/JAMES-1317 Project: JAMES Server Issue Type: Bug Components: SpoolManager Processors Affects Versions: 3.0-M1, 3.0-M2, 3.0-beta3 Reporter: Raju Buchi Priority: Critical Fix For: 3.0-beta4 Attachments: jstack.zip Mails sent to James server are spooled but they are not processed and sent out. The issue is similar to the one faced by Zach. The server seems to be working fine for a few hours or few days, but some time all the mails are spooled but they will not be processed and sent out. Restarted the server several times and some time a few of the mails will be processed and all the others are lost. As Norman suggested I have took a jstack trace. Please let me how we can resolve this issue Thanks - Raju -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira - To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org
svn commit: r1174512 - /james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/SMTPResponse.java
Author: norman Date: Fri Sep 23 04:04:06 2011 New Revision: 1174512 URL: http://svn.apache.org/viewvc?rev=1174512view=rev Log: Allow to only set the return code as this is valid in smtp Modified: james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/SMTPResponse.java Modified: james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/SMTPResponse.java URL: http://svn.apache.org/viewvc/james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/SMTPResponse.java?rev=1174512r1=1174511r2=1174512view=diff == --- james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/SMTPResponse.java (original) +++ james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/SMTPResponse.java Fri Sep 23 04:04:06 2011 @@ -38,8 +38,6 @@ public class SMTPResponse extends Abstra */ public SMTPResponse(String code, CharSequence description) { super(code, description); -if (code == null) throw new IllegalArgumentException(SMTPResponse code can not be null); -if (description == null) throw new IllegalArgumentException(SMTPResponse description can not be null); } /** @@ -55,7 +53,7 @@ public class SMTPResponse extends Abstra * @param rawLine the raw SMTPResponse */ public SMTPResponse(String rawLine) { -super(extractCode(rawLine), extractResponse(rawLine)); +this(extractCode(rawLine), extractResponse(rawLine)); } @@ -75,7 +73,7 @@ public class SMTPResponse extends Abstra return args[2]; } else { -throw new IllegalArgumentException(Invalid Response format. Format should be [Code Description]); +return null; } } /* - To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org
Re: New app development based on James 3M3 database...
Hi there, for what you want todo its not needed (mailbox-adapter). About the FetchGroup: public static final int MINIMAL = 0x00; - includes UID, SIZE, FLAGS, etc of the message (the metadata) public static final int MIME_DESCRIPTOR = 0x01; - Only interesting for IMAP public static final int HEADERS = 0x100; -includes MINIMAL + message headers public static final int FULL_CONTENT = 0x200; - includes MINIMAL and the full message content public static final int BODY_CONTENT = 0x400; - includes MINIMAL and the message body public static final int MIME_HEADERS = 0x800;- Only interesting for IMAP public static final int MIME_CONTENT = 0x1000;- Only interesting for IMAP I will add some javadocs... Bye, Norman 2011/9/21 Luc Saulière luc.sauli...@gmail.com: Thx for helping. The M2 dependency in my pom is the mailbox-adapter, the version is the latest given by maven. Is this dependency still needed for what I want to do? (use the messageManager) Ps: Could you explain me how the messageManager can get a message from a mailbox? I use the getmessages() method but I cannot find any good implementation (or explanation:) of the FetchGroup interface needed... Thx again Luc. Le 15 sept. 2011 à 18:52, Eric Charles eric.umg.char...@gmail.com a écrit : Hi Luc, The code seems good, but you are mixing M2 and beta3 dependencies in you pom. Thx. On 14/09/11 19:07, Luc Saulière wrote: and I forgot the dependancies... dependency groupIdorg.springframework/groupId artifactIdspring-orm/artifactId version3.0.6.RELEASE/version typejar/type scopecompile/scope /dependency dependency groupIdorg.apache.james/groupId artifactIdjames-server-mailbox-adapter/artifactId version3.0-M2/version typejar/type scopecompile/scope /dependency dependency groupIdorg.apache.james/groupId artifactIdjames-server-core/artifactId version3.0-beta3/version typejar/type scopecompile/scope /dependency dependency groupIdcommons-dbcp/groupId artifactIdcommons-dbcp/artifactId version20030825.184428/version typejar/type scopecompile/scope /dependency dependency groupIdorg.apache.james/groupId artifactIdapache-james-mailbox-jpa/artifactId version0.3/version typejar/type scopecompile/scope /dependency dependency groupIdorg.apache.james/groupId artifactIdapache-james-mailbox-store/artifactId version0.3/version typejar/type scopecompile/scope /dependency 2011/9/15 Luc Saulièreluc.sauli...@gmail.com I think I've find a way... I load : bean id=*datasource* class=*org.apache.commons.dbcp.BasicDataSource* destroy-method=*close* property name=*driverClassName* value=*${database.driverClassName}* / property name=*url* value=*${database.url}* / property name=*username* value=*${database.username}* / property name=*password* value=*${database.password}* / /bean import resource=*file:///path-to/james-mailbox-jpa-context.xml* / bean id=*authenticator* class=* org.apache.james.adapter.mailbox.store.UserRepositoryAuthenticator*/ bean id=*entityManagerFactory* class=* org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean* property name=*dataSource* ref=*datasource*/ property name=*jpaVendorAdapter* ref=*vendorAdapter*/ property name=*persistenceXmlLocation* value=*file:///path-to /META-INF/persistence.xml*/ /bean bean id=*vendorAdapter* class=* org.springframework.orm.jpa.vendor.OpenJpaVendorAdapter* property name=*database* value=*${vendorAdapter.database}*/ !-- set this to true for debugging purposes -- property name=*showSql* value=*false*/ /bean and it works pretty well... Is it the easyest/fastest way to do so? Thx...for reading me ;) Luc. 2011/9/14 Luc Saulièreluc.sauli...@gmail.com Let's use the beta3 then! We want to store message in a users's mailbox using methods : user is the String name of my user, message is my MimeMessage to be stored, mailboxManager is a MailboxManager loaded in my context, logger is a logger... *new *MailboxSession *mailboxSession* = mailboxManager .createSystemSession(user, logger); *new *MailboxPath mailboxPath = MailboxPath.*inbox*(*mailboxSession*); mailboxManager.startProcessingRequest(*mailboxSession*); *try* { mailboxManager.createMailbox(mailboxPath, *mailboxSession*); } *catch* (MailboxExistsException e) { logger.info(Mailbox already exists...); } mailboxManager.endProcessingRequest(*mailboxSession*); *new *MessageManager messageManager = mailboxManager.getMailbox(mailboxPath, *mailboxSession*); MimeMessageInputStream mmis = *new *MimeMessageInputStream(message); Date date = *new* Date(); messageManager.appendMessage(mmis, date, *mailboxSession*, *true*,*new*Flags()); It worked well for the M2 but I don't know which MailboxManager bean to load on my context for the M3... Is it still the same method to store mails? Thx Luc. 2011
[jira] [Created] (PROTOCOLS-33) Encoder/Decoder should be generic
Encoder/Decoder should be generic - Key: PROTOCOLS-33 URL: https://issues.apache.org/jira/browse/PROTOCOLS-33 Project: JAMES Protocols Issue Type: Improvement Components: api Affects Versions: 1.5 Reporter: Norman Maurer Assignee: Norman Maurer Fix For: 1.6 For Netty we have an Encoder and Decoder to convert stuff to a Request and from a Response. This kind of Encoder / Decoder should not depend on netty and are generic as we also need it when using other transport implementations. The best thing would be to decode from byte[] to Response and encode from Request to byte[]. This will make it reusable with any transport impl. -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira - To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org
svn commit: r1173013 - in /james/protocols/trunk: api/src/main/java/org/apache/james/protocols/api/AbstractResponse.java smtp/src/main/java/org/apache/james/protocols/smtp/SMTPResponse.java
Author: norman Date: Tue Sep 20 07:44:16 2011 New Revision: 1173013 URL: http://svn.apache.org/viewvc?rev=1173013view=rev Log: Add Abstract implementation of Response Added: james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/AbstractResponse.java (with props) Modified: james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/SMTPResponse.java Added: james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/AbstractResponse.java URL: http://svn.apache.org/viewvc/james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/AbstractResponse.java?rev=1173013view=auto == --- james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/AbstractResponse.java (added) +++ james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/AbstractResponse.java Tue Sep 20 07:44:16 2011 @@ -0,0 +1,119 @@ +/ + * 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.api; + +import java.util.LinkedList; +import java.util.List; + +/** + * Abstract base implementation of {@link Response} + * + * + */ +public abstract class AbstractResponse implements Response{ + + +private String retCode = null; +protected ListCharSequence lines = null; +protected String rawLine = null; +private boolean endSession = false; + +/** + * Construct a new SMTPResponse. The given code and description can not be null, if null an IllegalArgumentException + * get thrown + * + * @param code the returnCode + * @param description the description + */ +public AbstractResponse(String code, CharSequence description) { +if (code == null) throw new IllegalArgumentException(code can not be null); +this.setRetCode(code); +this.appendLine(description); +this.rawLine = code + + description; +} + + + +/** + * Append the responseLine to the SMTPResponse + * + * @param line the responseLine to append + */ +public void appendLine(CharSequence line) { +if (lines == null) { +lines = new LinkedListCharSequence(); +} +lines.add(line); +} + +/** + * Return the SMTPCode + * + * @return the SMTPCode + */ +public String getRetCode() { +return retCode; +} + +/** + * Set the SMTPCode + * + * @param retCode the SMTPCode + */ +public void setRetCode(String retCode) { +this.retCode = retCode; +} + + +/** + * Return the raw representation of the Stored SMTPResponse + * + * @return rawLine the raw SMTPResponse + */ +public String getRawLine() { +return rawLine; +} + +/** + * Return true if the session is ended + * + * @return true if session is ended + */ +public boolean isEndSession() { +return endSession; +} + +/** + * Set to true to end the session + * + * @param endSession + */ +public void setEndSession(boolean endSession) { +this.endSession = endSession; +} + +/** + * @see java.lang.Object#toString() + */ +public String toString() { +return getLines().toString(); +} + +} Propchange: james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/AbstractResponse.java -- svn:mime-type = text/plain Modified: james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/SMTPResponse.java URL: http://svn.apache.org/viewvc/james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/SMTPResponse.java?rev=1173013r1=1173012r2=1173013view=diff
svn commit: r1173014 - /james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/POP3Response.java
Author: norman Date: Tue Sep 20 07:44:27 2011 New Revision: 1173014 URL: http://svn.apache.org/viewvc?rev=1173014view=rev Log: Add Abstract implementation of Response Modified: james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/POP3Response.java Modified: james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/POP3Response.java URL: http://svn.apache.org/viewvc/james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/POP3Response.java?rev=1173014r1=1173013r2=1173014view=diff == --- james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/POP3Response.java (original) +++ james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/POP3Response.java Tue Sep 20 07:44:27 2011 @@ -20,15 +20,14 @@ package org.apache.james.pop3server; import java.util.ArrayList; -import java.util.LinkedList; import java.util.List; -import org.apache.james.protocols.api.Response; +import org.apache.james.protocols.api.AbstractResponse; /** - * Contains an SMTP result + * Contains an POP3 result */ -public class POP3Response implements Response { +public class POP3Response extends AbstractResponse { // POP3 response prefixes /** OK response. Requested content will follow */ @@ -40,11 +39,6 @@ public class POP3Response implements Res */ public final static String ERR_RESPONSE = -ERR; -private String retCode = null; -private ListCharSequence lines = null; -private String rawLine = null; -private boolean endSession = false; - /** * Construct a new POP3Response. The given code and description can not be * null, if null an IllegalArgumentException get thrown @@ -55,43 +49,13 @@ public class POP3Response implements Res *the description */ public POP3Response(String code, CharSequence description) { -if (code == null) -throw new IllegalArgumentException(POP3Response code can not be null); - -this.setRetCode(code); -if (description == null) { -description = ; -} -this.rawLine = code + + description; - -this.appendLine(description); - +super(code, description); } public POP3Response(String code) { this(code, null); } -/** - * Append the responseLine to the SMTPResponse - * - * @param line - *the responseLine to append - */ -public void appendLine(CharSequence line) { -if (lines == null) { -lines = new LinkedListCharSequence(); -} -lines.add(line); -} - -public String getRetCode() { -return retCode; -} - -public void setRetCode(String retCode) { -this.retCode = retCode; -} /** * Return a List of all responseLines stored in this POP3Response @@ -110,37 +74,4 @@ public class POP3Response implements Res return responseList; } -/** - * Return the raw representation of the Stored POP3Response - * - * @return rawLine the raw POP3Response - */ -public String getRawLine() { -return rawLine; -} - -/** - * Return true if the session is ended - * - * @return true if session is ended - */ -public boolean isEndSession() { -return endSession; -} - -/** - * Set to true to end the session - * - * @param endSession - */ -public void setEndSession(boolean endSession) { -this.endSession = endSession; -} - -/** - * @see java.lang.Object#toString() - */ -public String toString() { -return getRetCode() + + getLines(); -} } - To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org
[jira] [Resolved] (JAMES-1303) IMAPServer / SMTPServer / POP3Server MAY close the Channel before all messages are flushed out
[ https://issues.apache.org/jira/browse/JAMES-1303?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Norman Maurer resolved JAMES-1303. -- Resolution: Fixed was done... IMAPServer / SMTPServer / POP3Server MAY close the Channel before all messages are flushed out -- Key: JAMES-1303 URL: https://issues.apache.org/jira/browse/JAMES-1303 Project: JAMES Server Issue Type: Bug Components: IMAPServer, POP3Server, SMTPServer Affects Versions: 3.0-beta3 Reporter: Norman Maurer Assignee: Norman Maurer Fix For: 3.0-beta4 At the moment we call Channel.close(); to close the channel. This will close the channel without make sure that all currently queued message are flushed out to the client. This can lead to some strange side effects as we may not write all data for the response out to the client before doing so. See: http://netty-forums-and-mailing-lists.685743.n2.nabble.com/Flush-channel-before-close-td5634777.html http://netty-forums-and-mailing-lists.685743.n2.nabble.com/Netty-behavior-when-disconnecting-a-channel-td5861795.html#a5862024 -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira - To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org
[jira] [Resolved] (JAMES-1302) SMTPNettySession.sleep(...) is not implemented
[ https://issues.apache.org/jira/browse/JAMES-1302?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Norman Maurer resolved JAMES-1302. -- Resolution: Invalid SMTPSession.sleep(..) was removed SMTPNettySession.sleep(...) is not implemented -- Key: JAMES-1302 URL: https://issues.apache.org/jira/browse/JAMES-1302 Project: JAMES Server Issue Type: Bug Components: SMTPServer Affects Versions: 3.0-beta3 Reporter: Norman Maurer Priority: Minor Fix For: 3.0-beta4 SMTPNettySession.sleep(..) is not implemented and so not usable. At the moment it just do nothing. -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira - To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org
svn commit: r1173499 - /james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/esmtp/EhloCmdHandler.java
Author: norman Date: Wed Sep 21 05:06:46 2011 New Revision: 1173499 URL: http://svn.apache.org/viewvc?rev=1173499view=rev Log: EhloCommandHandler should hook in its extensions also Modified: james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/esmtp/EhloCmdHandler.java Modified: james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/esmtp/EhloCmdHandler.java URL: http://svn.apache.org/viewvc/james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/esmtp/EhloCmdHandler.java?rev=1173499r1=1173498r2=1173499view=diff == --- james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/esmtp/EhloCmdHandler.java (original) +++ james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/esmtp/EhloCmdHandler.java Wed Sep 21 05:06:46 2011 @@ -23,6 +23,7 @@ import java.util.ArrayList; import java.util.Collection; import java.util.List; +import org.apache.james.protocols.api.handler.WiringException; import org.apache.james.protocols.smtp.SMTPResponse; import org.apache.james.protocols.smtp.SMTPRetCode; import org.apache.james.protocols.smtp.SMTPSession; @@ -34,7 +35,7 @@ import org.apache.james.protocols.smtp.h /** * Handles EHLO command */ -public class EhloCmdHandler extends AbstractHookableCmdHandlerHeloHook { +public class EhloCmdHandler extends AbstractHookableCmdHandlerHeloHook implements EhloExtension{ /** * The name of the command handled by the command handler @@ -63,10 +64,7 @@ public class EhloCmdHandler extends Abst processExtensions(session, resp); -resp.appendLine(PIPELINING); -resp.appendLine(ENHANCEDSTATUSCODES); -// see http://issues.apache.org/jira/browse/JAMES-419 -resp.appendLine(8BITMIME); + return resp; @@ -166,4 +164,19 @@ public class EhloCmdHandler extends Abst return rawHook.doHelo(session, parameters); } + + +/* + * (non-Javadoc) + * @see org.apache.james.protocols.smtp.core.esmtp.EhloExtension#getImplementedEsmtpFeatures(org.apache.james.protocols.smtp.SMTPSession) + */ +public ListString getImplementedEsmtpFeatures(SMTPSession session) { +ListString extensions = new ArrayListString(); +extensions.add(PIPELINING); +extensions.add(ENHANCEDSTATUSCODES); +// see http://issues.apache.org/jira/browse/JAMES-419 +extensions.add(8BITMIME); +return extensions; +} + } - To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org
svn commit: r1173506 - /james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/SMTPProtocolHandlerChain.java
Author: norman Date: Wed Sep 21 05:58:24 2011 New Revision: 1173506 URL: http://svn.apache.org/viewvc?rev=1173506view=rev Log: Allow to overwrite default handlers Modified: james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/SMTPProtocolHandlerChain.java Modified: james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/SMTPProtocolHandlerChain.java URL: http://svn.apache.org/viewvc/james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/SMTPProtocolHandlerChain.java?rev=1173506r1=1173505r2=1173506view=diff == --- james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/SMTPProtocolHandlerChain.java (original) +++ james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/SMTPProtocolHandlerChain.java Wed Sep 21 05:58:24 2011 @@ -66,6 +66,14 @@ public class SMTPProtocolHandlerChain ex private boolean authHandler = false; public SMTPProtocolHandlerChain() throws WiringException { +defaultHandlers.addAll(initDefaultHandlers()); +copy(); + +wireExtensibleHandlers(); +} + +protected ListObject initDefaultHandlers() { +ListObject defaultHandlers = new ArrayListObject(); defaultHandlers.add(new SMTPCommandDispatcherLineHandler()); defaultHandlers.add(new ExpnCmdHandler()); defaultHandlers.add(new EhloCmdHandler()); @@ -84,10 +92,9 @@ public class SMTPProtocolHandlerChain ex defaultHandlers.add(new ReceivedDataLineFilter()); defaultHandlers.add(new DataLineMessageHookHandler()); defaultHandlers.add(new StartTlsCmdHandler()); -copy(); - -wireExtensibleHandlers(); +return defaultHandlers; } + /** * Add the hook to the chain - To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org
svn commit: r1172483 - in /james/protocols/trunk: api/src/main/java/org/apache/james/protocols/api/ smtp/src/main/java/org/apache/james/protocols/smtp/
Author: norman Date: Mon Sep 19 06:44:49 2011 New Revision: 1172483 URL: http://svn.apache.org/viewvc?rev=1172483view=rev Log: Merge TLSSupportedSession with ProtocolSession Removed: james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/TLSSupportedSession.java Modified: james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/AbstractSession.java james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/ProtocolSession.java james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/SMTPSession.java Modified: james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/AbstractSession.java URL: http://svn.apache.org/viewvc/james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/AbstractSession.java?rev=1172483r1=1172482r2=1172483view=diff == --- james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/AbstractSession.java (original) +++ james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/AbstractSession.java Mon Sep 19 06:44:49 2011 @@ -21,9 +21,9 @@ package org.apache.james.protocols.api; import java.net.InetSocketAddress; + import org.apache.james.protocols.api.ProtocolTransport; import org.apache.james.protocols.api.Response; -import org.apache.james.protocols.api.TLSSupportedSession; import org.slf4j.Logger; /** @@ -31,7 +31,7 @@ import org.slf4j.Logger; * * */ -public abstract class AbstractSession implements TLSSupportedSession { +public abstract class AbstractSession implements ProtocolSession { protected InetSocketAddress socketAddress; private Logger logger; private SessionLog pLog = null; Modified: james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/ProtocolSession.java URL: http://svn.apache.org/viewvc/james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/ProtocolSession.java?rev=1172483r1=1172482r2=1172483view=diff == --- james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/ProtocolSession.java (original) +++ james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/ProtocolSession.java Mon Sep 19 06:44:49 2011 @@ -50,7 +50,8 @@ public interface ProtocolSession { void resetState(); /** - * Write the response back to the client + * Write the response back to the client. Special care MUST be take to handle {@link StartTlsResponse} instances. + * * * @param response */ @@ -90,4 +91,33 @@ public interface ProtocolSession { * @return Response */ Response newFatalErrorResponse(); + +/** + * Returns the user name associated with this interaction. + * + * @return the user name + */ +String getUser(); + +/** + * Sets the user name associated with this interaction. + * + * @param user the user name + */ +void setUser(String user); + +/** + * Return true if StartTLS is supported by the configuration + * + * @return supported + */ +boolean isStartTLSSupported(); + +/** + * Return true if the starttls was started + * + * @return true + */ +boolean isTLSStarted(); + } Modified: james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/SMTPSession.java URL: http://svn.apache.org/viewvc/james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/SMTPSession.java?rev=1172483r1=1172482r2=1172483view=diff == --- james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/SMTPSession.java (original) +++ james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/SMTPSession.java Mon Sep 19 06:44:49 2011 @@ -22,14 +22,14 @@ package org.apache.james.protocols.smtp; import java.util.Map; import org.apache.james.protocols.api.LineHandler; -import org.apache.james.protocols.api.TLSSupportedSession; +import org.apache.james.protocols.api.ProtocolSession; /** * All the handlers access this interface to communicate with * SMTPHandler object */ -public interface SMTPSession extends TLSSupportedSession{ +public interface SMTPSession extends ProtocolSession{ // Keys used to store/lookup data in the internal state hash map /** Sender's email address */ - To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org
svn commit: r1172484 - /james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/POP3Session.java
Author: norman Date: Mon Sep 19 06:45:33 2011 New Revision: 1172484 URL: http://svn.apache.org/viewvc?rev=1172484view=rev Log: Merge TLSSupportedSession with ProtocolSession Modified: james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/POP3Session.java 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=1172484r1=1172483r2=1172484view=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 Mon Sep 19 06:45:33 2011 @@ -20,13 +20,13 @@ package org.apache.james.pop3server; import org.apache.james.mailbox.MessageManager; -import org.apache.james.protocols.api.TLSSupportedSession; +import org.apache.james.protocols.api.ProtocolSession; /** * All the handlers access this interface to communicate with POP3Handler object */ -public interface POP3Session extends TLSSupportedSession { +public interface POP3Session extends ProtocolSession { final static String UID_LIST = UID_LIST; final static String DELETED_UID_LIST = DELETED_UID_LIST; - To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org
svn commit: r1172488 - in /james/protocols/trunk: api/src/main/java/org/apache/james/protocols/api/ api/src/main/java/org/apache/james/protocols/api/handler/ smtp/src/main/java/org/apache/james/protoc
Author: norman Date: Mon Sep 19 06:53:03 2011 New Revision: 1172488 URL: http://svn.apache.org/viewvc?rev=1172488view=rev Log: Move Handler stuff to extra package Added: james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/handler/WiringException.java - copied, changed from r1172468, james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/WiringException.java Removed: james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/WiringException.java Modified: james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/handler/AbstractCommandDispatcher.java james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/handler/AbstractProtocolHandlerChain.java james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/handler/ExtensibleHandler.java james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/SMTPProtocolHandlerChain.java james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/DataCmdHandler.java james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/DataLineMessageHookHandler.java james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/esmtp/AuthCmdHandler.java Modified: james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/handler/AbstractCommandDispatcher.java URL: http://svn.apache.org/viewvc/james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/handler/AbstractCommandDispatcher.java?rev=1172488r1=1172487r2=1172488view=diff == --- james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/handler/AbstractCommandDispatcher.java (original) +++ james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/handler/AbstractCommandDispatcher.java Mon Sep 19 06:53:03 2011 @@ -31,7 +31,6 @@ import java.util.Locale; import org.apache.james.protocols.api.BaseRequest; import org.apache.james.protocols.api.ProtocolSession; import org.apache.james.protocols.api.Response; -import org.apache.james.protocols.api.WiringException; Modified: james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/handler/AbstractProtocolHandlerChain.java URL: http://svn.apache.org/viewvc/james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/handler/AbstractProtocolHandlerChain.java?rev=1172488r1=1172487r2=1172488view=diff == --- james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/handler/AbstractProtocolHandlerChain.java (original) +++ james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/handler/AbstractProtocolHandlerChain.java Mon Sep 19 06:53:03 2011 @@ -22,7 +22,6 @@ import java.util.Iterator; import java.util.LinkedList; import java.util.List; -import org.apache.james.protocols.api.WiringException; /** * Abstract base class for {@link ProtocolHandlerChain} implementations Modified: james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/handler/ExtensibleHandler.java URL: http://svn.apache.org/viewvc/james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/handler/ExtensibleHandler.java?rev=1172488r1=1172487r2=1172488view=diff == --- james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/handler/ExtensibleHandler.java (original) +++ james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/handler/ExtensibleHandler.java Mon Sep 19 06:53:03 2011 @@ -21,7 +21,6 @@ package org.apache.james.protocols.api.h import java.util.List; -import org.apache.james.protocols.api.WiringException; Copied: james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/handler/WiringException.java (from r1172468, james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/WiringException.java) URL: http://svn.apache.org/viewvc/james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/handler/WiringException.java?p2=james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/handler/WiringException.javap1=james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/WiringException.javar1=1172468r2=1172488rev=1172488view=diff == --- james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/WiringException.java (original) +++ james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/handler/WiringException.java Mon Sep 19 06:53:03 2011 @@ -16,7 +16,7 @@ * specific language governing permissions and limitations * * under the License
svn commit: r1172489 - in /james/server/trunk: pop3server/src/main/java/org/apache/james/pop3server/core/ protocols-library/src/main/java/org/apache/james/protocols/lib/ protocols-library/src/main/jav
Author: norman Date: Mon Sep 19 06:53:39 2011 New Revision: 1172489 URL: http://svn.apache.org/viewvc?rev=1172489view=rev Log: Move Handler stuff to extra package Modified: james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/core/CapaCmdHandler.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/jmx/AbstractCommandHandlerResultJMXMonitor.java james/server/trunk/protocols-library/src/main/java/org/apache/james/protocols/lib/jmx/AbstractConnectHandlerResultJMXMonitor.java james/server/trunk/protocols-library/src/main/java/org/apache/james/protocols/lib/jmx/AbstractLineHandlerResultJMXMonitor.java james/server/trunk/smtpserver/src/main/java/org/apache/james/smtpserver/DataLineJamesMessageHookHandler.java james/server/trunk/smtpserver/src/main/java/org/apache/james/smtpserver/jmx/HookResultJMXMonitor.java Modified: james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/core/CapaCmdHandler.java URL: http://svn.apache.org/viewvc/james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/core/CapaCmdHandler.java?rev=1172489r1=1172488r2=1172489view=diff == --- james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/core/CapaCmdHandler.java (original) +++ james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/core/CapaCmdHandler.java Mon Sep 19 06:53:39 2011 @@ -27,9 +27,9 @@ import org.apache.james.pop3server.POP3R import org.apache.james.pop3server.POP3Session; import org.apache.james.protocols.api.Request; import org.apache.james.protocols.api.Response; -import org.apache.james.protocols.api.WiringException; import org.apache.james.protocols.api.handler.CommandHandler; import org.apache.james.protocols.api.handler.ExtensibleHandler; +import org.apache.james.protocols.api.handler.WiringException; /** * This handler is used to handle CAPA commands 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=1172489r1=1172488r2=1172489view=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 Sep 19 06:53:39 2011 @@ -28,12 +28,12 @@ import org.apache.commons.configuration. import org.apache.commons.configuration.DefaultConfigurationBuilder; import org.apache.commons.configuration.HierarchicalConfiguration; -import org.apache.james.protocols.api.WiringException; import org.apache.james.protocols.api.handler.ExtensibleHandler; import org.apache.james.protocols.api.handler.HandlersPackage; import org.apache.james.protocols.api.handler.LifecycleAwareProtocolHandler; import org.apache.james.protocols.api.handler.ProtocolHandlerChain; import org.apache.james.protocols.api.handler.ProtocolHandlerLoader; +import org.apache.james.protocols.api.handler.WiringException; public class ProtocolHandlerChainImpl implements ProtocolHandlerChain{ Modified: james/server/trunk/protocols-library/src/main/java/org/apache/james/protocols/lib/jmx/AbstractCommandHandlerResultJMXMonitor.java URL: http://svn.apache.org/viewvc/james/server/trunk/protocols-library/src/main/java/org/apache/james/protocols/lib/jmx/AbstractCommandHandlerResultJMXMonitor.java?rev=1172489r1=1172488r2=1172489view=diff == --- james/server/trunk/protocols-library/src/main/java/org/apache/james/protocols/lib/jmx/AbstractCommandHandlerResultJMXMonitor.java (original) +++ james/server/trunk/protocols-library/src/main/java/org/apache/james/protocols/lib/jmx/AbstractCommandHandlerResultJMXMonitor.java Mon Sep 19 06:53:39 2011 @@ -28,11 +28,11 @@ import org.apache.commons.configuration. import org.apache.commons.configuration.ConfigurationException; import org.apache.james.protocols.api.ProtocolSession; import org.apache.james.protocols.api.Response; -import org.apache.james.protocols.api.WiringException; import org.apache.james.protocols.api.handler.CommandHandler; import org.apache.james.protocols.api.handler.CommandHandlerResultHandler; import org.apache.james.protocols.api.handler.ExtensibleHandler; import org.apache.james.protocols.api.handler.LifecycleAwareProtocolHandler; +import org.apache.james.protocols.api.handler.WiringException; /** * Expose JMX statistics for {@link CommandHandler} Modified: james/server/trunk
svn commit: r1172981 - /james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/bean/factory/protocols/ProtocolHandlerLoaderBeanFactory.java
Author: norman Date: Tue Sep 20 05:52:16 2011 New Revision: 1172981 URL: http://svn.apache.org/viewvc?rev=1172981view=rev Log: Move Handler stuff to extra package Modified: james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/bean/factory/protocols/ProtocolHandlerLoaderBeanFactory.java Modified: james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/bean/factory/protocols/ProtocolHandlerLoaderBeanFactory.java URL: http://svn.apache.org/viewvc/james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/bean/factory/protocols/ProtocolHandlerLoaderBeanFactory.java?rev=1172981r1=1172980r2=1172981view=diff == --- james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/bean/factory/protocols/ProtocolHandlerLoaderBeanFactory.java (original) +++ james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/bean/factory/protocols/ProtocolHandlerLoaderBeanFactory.java Tue Sep 20 05:52:16 2011 @@ -21,9 +21,9 @@ package org.apache.james.container.sprin import org.apache.commons.configuration.Configuration; import org.apache.commons.configuration.ConfigurationException; import org.apache.james.container.spring.bean.AbstractBeanFactory; -import org.apache.james.protocols.api.LifecycleAwareProtocolHandler; -import org.apache.james.protocols.api.ProtocolHandler; -import org.apache.james.protocols.api.ProtocolHandlerLoader; +import org.apache.james.protocols.api.handler.LifecycleAwareProtocolHandler; +import org.apache.james.protocols.api.handler.ProtocolHandler; +import org.apache.james.protocols.api.handler.ProtocolHandlerLoader; import org.springframework.beans.BeansException; public class ProtocolHandlerLoaderBeanFactory extends AbstractBeanFactory implements ProtocolHandlerLoader{ - To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org
svn commit: r1172253 - /james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/LineHandlerUpstreamHandler.java
Author: norman Date: Sun Sep 18 11:24:15 2011 New Revision: 1172253 URL: http://svn.apache.org/viewvc?rev=1172253view=rev Log: Make sure all bytes are written to the client before closing the channel Modified: james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/LineHandlerUpstreamHandler.java Modified: james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/LineHandlerUpstreamHandler.java URL: http://svn.apache.org/viewvc/james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/LineHandlerUpstreamHandler.java?rev=1172253r1=1172252r2=1172253view=diff == --- james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/LineHandlerUpstreamHandler.java (original) +++ james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/LineHandlerUpstreamHandler.java Sun Sep 18 11:24:15 2011 @@ -21,6 +21,8 @@ package org.apache.james.protocols.impl; import org.apache.james.protocols.api.LineHandler; import org.apache.james.protocols.api.ProtocolSession; import org.jboss.netty.buffer.ChannelBuffer; +import org.jboss.netty.buffer.ChannelBuffers; +import org.jboss.netty.channel.ChannelFutureListener; import org.jboss.netty.channel.ChannelHandlerContext; import org.jboss.netty.channel.ChannelUpstreamHandler; import org.jboss.netty.channel.MessageEvent; @@ -54,7 +56,7 @@ public class LineHandlerUpstreamHandler } boolean disconnect = handler.onLine(session, line); -if (disconnect) ctx.getChannel().disconnect(); +if (disconnect) ctx.getChannel().write(ChannelBuffers.EMPTY_BUFFER).addListener(ChannelFutureListener.CLOSE); } - To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org
svn commit: r1172255 - in /james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl: AbstractChannelUpstreamHandler.java BasicChannelUpstreamHandler.java
Author: norman Date: Sun Sep 18 11:27:27 2011 New Revision: 1172255 URL: http://svn.apache.org/viewvc?rev=1172255view=rev Log: Merge AbstractChannelUpstreamHandler with BasicChannelUpstreamHandler as there is no need to have both Removed: james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/AbstractChannelUpstreamHandler.java Modified: james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/BasicChannelUpstreamHandler.java Modified: james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/BasicChannelUpstreamHandler.java URL: http://svn.apache.org/viewvc/james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/BasicChannelUpstreamHandler.java?rev=1172255r1=1172254r2=1172255view=diff == --- james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/BasicChannelUpstreamHandler.java (original) +++ james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/BasicChannelUpstreamHandler.java Sun Sep 18 11:27:27 2011 @@ -18,22 +18,33 @@ / package org.apache.james.protocols.impl; +import java.util.LinkedList; +import java.util.List; + import javax.net.ssl.SSLContext; import javax.net.ssl.SSLEngine; +import org.apache.james.protocols.api.ConnectHandler; +import org.apache.james.protocols.api.ConnectHandlerResultHandler; +import org.apache.james.protocols.api.DisconnectHandler; +import org.apache.james.protocols.api.LineHandler; +import org.apache.james.protocols.api.LineHandlerResultHandler; import org.apache.james.protocols.api.ProtocolHandlerChain; import org.apache.james.protocols.api.ProtocolSession; import org.apache.james.protocols.api.ProtocolSessionFactory; import org.apache.james.protocols.api.Response; -import org.apache.james.protocols.impl.AbstractChannelUpstreamHandler; import org.apache.james.protocols.impl.NettyProtocolTransport; +import org.jboss.netty.buffer.ChannelBuffer; import org.jboss.netty.buffer.ChannelBuffers; import org.jboss.netty.channel.Channel; import org.jboss.netty.channel.ChannelFutureListener; import org.jboss.netty.channel.ChannelHandler.Sharable; import org.jboss.netty.channel.ChannelHandlerContext; +import org.jboss.netty.channel.ChannelStateEvent; import org.jboss.netty.channel.ChannelUpstreamHandler; import org.jboss.netty.channel.ExceptionEvent; +import org.jboss.netty.channel.MessageEvent; +import org.jboss.netty.channel.SimpleChannelUpstreamHandler; import org.jboss.netty.handler.codec.frame.TooLongFrameException; import org.slf4j.Logger; @@ -41,25 +52,145 @@ import org.slf4j.Logger; * {@link ChannelUpstreamHandler} which is used by the SMTPServer and other line based protocols */ @Sharable -public class BasicChannelUpstreamHandler extends AbstractChannelUpstreamHandler { +public class BasicChannelUpstreamHandler extends SimpleChannelUpstreamHandler { protected final Logger logger; protected final SSLContext context; protected String[] enabledCipherSuites; protected ProtocolSessionFactory sessionFactory; +protected ProtocolHandlerChain chain; public BasicChannelUpstreamHandler(ProtocolHandlerChain chain, ProtocolSessionFactory sessionFactory, Logger logger) { this(chain, sessionFactory, logger, null, null); } public BasicChannelUpstreamHandler(ProtocolHandlerChain chain, ProtocolSessionFactory sessionFactory, Logger logger, SSLContext context, String[] enabledCipherSuites) { -super(chain); +this.chain = chain; this.sessionFactory = sessionFactory; this.logger = logger; this.context = context; this.enabledCipherSuites = enabledCipherSuites; } + +@Override +public void channelBound(ChannelHandlerContext ctx, ChannelStateEvent e) throws Exception { +ctx.setAttachment(createSession(ctx)); +super.channelBound(ctx, e); +} + + + +/** + * Call the {@link ConnectHandler} instances which are stored in the {@link ProtocolHandlerChain} + */ +@SuppressWarnings(unchecked) +@Override +public void channelConnected(ChannelHandlerContext ctx, ChannelStateEvent e) throws Exception { +ListConnectHandler connectHandlers = chain.getHandlers(ConnectHandler.class); +ListConnectHandlerResultHandler resultHandlers = chain.getHandlers(ConnectHandlerResultHandler.class); +ProtocolSession session = (ProtocolSession) ctx.getAttachment(); +session.getLogger().info(Connection established from + session.getRemoteHost() + ( + session.getRemoteIPAddress()+ )); +if (connectHandlers != null) { +for (int i = 0; i connectHandlers.size(); i++) { +ConnectHandler cHandler = connectHandlers.get(i); + +long start = System.currentTimeMillis
svn commit: r1172256 - in /james/protocols/trunk/impl/src/main/java/org: apache/james/protocols/impl/ jboss/netty/handler/connection/
Author: norman Date: Sun Sep 18 11:28:56 2011 New Revision: 1172256 URL: http://svn.apache.org/viewvc?rev=1172256view=rev Log: Remove jboss package Added: james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/ConnectionLimitUpstreamHandler.java - copied, changed from r1172017, james/protocols/trunk/impl/src/main/java/org/jboss/netty/handler/connection/ConnectionLimitUpstreamHandler.java james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/ConnectionPerIpLimitUpstreamHandler.java - copied, changed from r1172017, james/protocols/trunk/impl/src/main/java/org/jboss/netty/handler/connection/ConnectionPerIpLimitUpstreamHandler.java Removed: james/protocols/trunk/impl/src/main/java/org/jboss/netty/handler/connection/ConnectionLimitUpstreamHandler.java james/protocols/trunk/impl/src/main/java/org/jboss/netty/handler/connection/ConnectionPerIpLimitUpstreamHandler.java Modified: james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/AbstractChannelPipelineFactory.java Modified: james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/AbstractChannelPipelineFactory.java URL: http://svn.apache.org/viewvc/james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/AbstractChannelPipelineFactory.java?rev=1172256r1=1172255r2=1172256view=diff == --- james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/AbstractChannelPipelineFactory.java (original) +++ james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/AbstractChannelPipelineFactory.java Sun Sep 18 11:28:56 2011 @@ -28,8 +28,6 @@ import org.jboss.netty.channel.group.Cha import org.jboss.netty.handler.codec.frame.DelimiterBasedFrameDecoder; import org.jboss.netty.handler.codec.frame.Delimiters; import org.jboss.netty.handler.codec.oneone.OneToOneEncoder; -import org.jboss.netty.handler.connection.ConnectionLimitUpstreamHandler; -import org.jboss.netty.handler.connection.ConnectionPerIpLimitUpstreamHandler; import org.jboss.netty.handler.execution.ExecutionHandler; import org.jboss.netty.handler.stream.ChunkedWriteHandler; import org.jboss.netty.util.HashedWheelTimer; Copied: james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/ConnectionLimitUpstreamHandler.java (from r1172017, james/protocols/trunk/impl/src/main/java/org/jboss/netty/handler/connection/ConnectionLimitUpstreamHandler.java) URL: http://svn.apache.org/viewvc/james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/ConnectionLimitUpstreamHandler.java?p2=james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/ConnectionLimitUpstreamHandler.javap1=james/protocols/trunk/impl/src/main/java/org/jboss/netty/handler/connection/ConnectionLimitUpstreamHandler.javar1=1172017r2=1172256rev=1172256view=diff == --- james/protocols/trunk/impl/src/main/java/org/jboss/netty/handler/connection/ConnectionLimitUpstreamHandler.java (original) +++ james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/ConnectionLimitUpstreamHandler.java Sun Sep 18 11:28:56 2011 @@ -16,7 +16,7 @@ * specific language governing permissions and limitations * * under the License. * / -package org.jboss.netty.handler.connection; +package org.apache.james.protocols.impl; import java.util.concurrent.atomic.AtomicInteger; Copied: james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/ConnectionPerIpLimitUpstreamHandler.java (from r1172017, james/protocols/trunk/impl/src/main/java/org/jboss/netty/handler/connection/ConnectionPerIpLimitUpstreamHandler.java) URL: http://svn.apache.org/viewvc/james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/ConnectionPerIpLimitUpstreamHandler.java?p2=james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/ConnectionPerIpLimitUpstreamHandler.javap1=james/protocols/trunk/impl/src/main/java/org/jboss/netty/handler/connection/ConnectionPerIpLimitUpstreamHandler.javar1=1172017r2=1172256rev=1172256view=diff == --- james/protocols/trunk/impl/src/main/java/org/jboss/netty/handler/connection/ConnectionPerIpLimitUpstreamHandler.java (original) +++ james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/ConnectionPerIpLimitUpstreamHandler.java Sun Sep 18 11:28:56 2011 @@ -16,7 +16,7 @@ * specific language governing permissions and limitations * * under the License. * / -package org.jboss.netty.handler.connection; +package
svn commit: r1172257 - /james/server/trunk/imapserver/src/main/java/org/apache/james/imapserver/netty/IMAPServer.java
Author: norman Date: Sun Sep 18 11:29:20 2011 New Revision: 1172257 URL: http://svn.apache.org/viewvc?rev=1172257view=rev Log: Adjust for latest protocol changes Modified: james/server/trunk/imapserver/src/main/java/org/apache/james/imapserver/netty/IMAPServer.java Modified: james/server/trunk/imapserver/src/main/java/org/apache/james/imapserver/netty/IMAPServer.java URL: http://svn.apache.org/viewvc/james/server/trunk/imapserver/src/main/java/org/apache/james/imapserver/netty/IMAPServer.java?rev=1172257r1=1172256r2=1172257view=diff == --- james/server/trunk/imapserver/src/main/java/org/apache/james/imapserver/netty/IMAPServer.java (original) +++ james/server/trunk/imapserver/src/main/java/org/apache/james/imapserver/netty/IMAPServer.java Sun Sep 18 11:29:20 2011 @@ -32,6 +32,8 @@ import org.apache.james.imap.api.process import org.apache.james.imap.decode.ImapDecoder; import org.apache.james.imap.encode.ImapEncoder; import org.apache.james.protocols.impl.ChannelGroupHandler; +import org.apache.james.protocols.impl.ConnectionLimitUpstreamHandler; +import org.apache.james.protocols.impl.ConnectionPerIpLimitUpstreamHandler; import org.apache.james.protocols.lib.netty.AbstractConfigurableAsyncServer; import org.jboss.netty.channel.ChannelPipeline; import org.jboss.netty.channel.ChannelPipelineFactory; @@ -40,8 +42,6 @@ import org.jboss.netty.channel.group.Cha import org.jboss.netty.handler.codec.frame.DelimiterBasedFrameDecoder; import org.jboss.netty.handler.codec.frame.Delimiters; import org.jboss.netty.handler.codec.oneone.OneToOneEncoder; -import org.jboss.netty.handler.connection.ConnectionLimitUpstreamHandler; -import org.jboss.netty.handler.connection.ConnectionPerIpLimitUpstreamHandler; import org.jboss.netty.handler.execution.ExecutionHandler; import org.jboss.netty.handler.ssl.SslHandler; import org.jboss.netty.handler.stream.ChunkedWriteHandler; - To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org
svn commit: r1172306 - /james/server/trunk/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/impl/camel/CamelMailetProcessor.java
Author: norman Date: Sun Sep 18 17:35:16 2011 New Revision: 1172306 URL: http://svn.apache.org/viewvc?rev=1172306view=rev Log: Don't use parallel processing when splitting the Mail. See JAMES-1319 Modified: james/server/trunk/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/impl/camel/CamelMailetProcessor.java Modified: james/server/trunk/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/impl/camel/CamelMailetProcessor.java URL: http://svn.apache.org/viewvc/james/server/trunk/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/impl/camel/CamelMailetProcessor.java?rev=1172306r1=1172305r2=1172306view=diff == --- james/server/trunk/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/impl/camel/CamelMailetProcessor.java (original) +++ james/server/trunk/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/impl/camel/CamelMailetProcessor.java Sun Sep 18 17:35:16 2011 @@ -169,7 +169,7 @@ public class CamelMailetProcessor extend processorDef.setProperty(MatcherSplitter.MATCHER_PROPERTY, constant(matcher)).setProperty(MatcherSplitter.ON_MATCH_EXCEPTION_PROPERTY, constant(onMatchException)).setProperty(MatcherSplitter.MAILETCONTAINER_PROPERTY, constant(CamelMailetProcessor.this)) // do splitting of the mail based on the stored matcher - .split().method(MatcherSplitter.class).aggregationStrategy(aggr).parallelProcessing() + .split().method(MatcherSplitter.class).aggregationStrategy(aggr) .choice().when(new MatcherMatch()).process(mailetProccessor).end() - To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org
[jira] [Created] (JAMES-1319) CamelMailetProcessor MAY use more threads as expected and so has some side-effects
CamelMailetProcessor MAY use more threads as expected and so has some side-effects -- Key: JAMES-1319 URL: https://issues.apache.org/jira/browse/JAMES-1319 Project: JAMES Server Issue Type: Bug Components: SpoolManager Processors Affects Versions: 3.0-beta3 Reporter: Norman Maurer Assignee: Norman Maurer Fix For: 3.0-beta4 In CamelMailetProcessor we use parallel processing when splitting the mail because of Matcher's. This leads to spawn extra threads within camel which is not what most users expect. To mimic more the old behavoir and also make sure we don't run into issues we should remove the parallel processing. -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira - To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org
[jira] [Resolved] (JAMES-1319) CamelMailetProcessor MAY use more threads as expected and so has some side-effects
[ https://issues.apache.org/jira/browse/JAMES-1319?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Norman Maurer resolved JAMES-1319. -- Resolution: Fixed CamelMailetProcessor MAY use more threads as expected and so has some side-effects -- Key: JAMES-1319 URL: https://issues.apache.org/jira/browse/JAMES-1319 Project: JAMES Server Issue Type: Bug Components: SpoolManager Processors Affects Versions: 3.0-beta3 Reporter: Norman Maurer Assignee: Norman Maurer Fix For: 3.0-beta4 In CamelMailetProcessor we use parallel processing when splitting the mail because of Matcher's. This leads to spawn extra threads within camel which is not what most users expect. To mimic more the old behavoir and also make sure we don't run into issues we should remove the parallel processing. -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira - To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org
svn commit: r1172326 - /james/server/trunk/core/src/main/java/org/apache/james/core/MimeMessageWrapper.java
Author: norman Date: Sun Sep 18 19:30:33 2011 New Revision: 1172326 URL: http://svn.apache.org/viewvc?rev=1172326view=rev Log: Don't call saveChanges() if not needed. See JAMES-1320 Modified: james/server/trunk/core/src/main/java/org/apache/james/core/MimeMessageWrapper.java Modified: james/server/trunk/core/src/main/java/org/apache/james/core/MimeMessageWrapper.java URL: http://svn.apache.org/viewvc/james/server/trunk/core/src/main/java/org/apache/james/core/MimeMessageWrapper.java?rev=1172326r1=1172325r2=1172326view=diff == --- james/server/trunk/core/src/main/java/org/apache/james/core/MimeMessageWrapper.java (original) +++ james/server/trunk/core/src/main/java/org/apache/james/core/MimeMessageWrapper.java Sun Sep 18 19:30:33 2011 @@ -291,9 +291,7 @@ public class MimeMessageWrapper extends } public synchronized void writeTo(OutputStream headerOs, OutputStream bodyOs, String[] ignoreList, boolean preLoad) throws IOException, MessagingException { -if (!saved) -saveChanges(); - + if (preLoad == false source != null !isBodyModified()) { // We do not want to instantiate the message... just read from // source @@ -309,6 +307,10 @@ public class MimeMessageWrapper extends if (isHeaderModified() == false) { myHeaders = parsedHeaders; } else { +// The headers was modified so we need to call saveChanges() just to be sure +// See JAMES-1320 +if (!saved) +saveChanges(); myHeaders = headers; } IOUtils.copy(new InternetHeadersInputStream(myHeaders.getNonMatchingHeaderLines(ignoreList)), headerOs); @@ -317,6 +319,11 @@ public class MimeMessageWrapper extends IOUtils.closeQuietly(in); } } else { +// save the changes as the message was modified +// See JAMES-1320 +if (!saved) +saveChanges(); + // MimeMessageUtil.writeToInternal(this, headerOs, bodyOs, // ignoreList); if (headers == null) { - To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org
[jira] [Resolved] (JAMES-1320) MimeMessageWrapper.writeTo(...) calls saveChanges() even if not needed
[ https://issues.apache.org/jira/browse/JAMES-1320?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Norman Maurer resolved JAMES-1320. -- Resolution: Fixed done MimeMessageWrapper.writeTo(...) calls saveChanges() even if not needed -- Key: JAMES-1320 URL: https://issues.apache.org/jira/browse/JAMES-1320 Project: JAMES Server Issue Type: Improvement Affects Versions: 3.0-beta3 Reporter: Norman Maurer Assignee: Norman Maurer Fix For: 3.0-beta4 When MimeMessageWrapper.writeTo(...) is called we call saveChanges() everytime even when the messagewas not modified at all. This is not neeed and also can throw exceptions on malformated messages. See the related stacktrace: org.apache.james.queue.api.MailQueue$MailQueueException: Unable to enqueue mail; nested exception is: javax.mail.internet.ParseException: Expected ';', got windows-1250 at org.apache.james.queue.file.FileMailQueue.enQueue(FileMailQueue.java:193) at org.apache.james.queue.file.FileMailQueue.enQueue(FileMailQueue.java:230) at org.apache.james.smtpserver.SendMailHandler.onMessage(SendMailHandler.java:64) at org.apache.james.smtpserver.DataLineJamesMessageHookHandler.processExtensions(DataLineJamesMessageHookHandler.java:178) at org.apache.james.smtpserver.DataLineJamesMessageHookHandler.onLine(DataLineJamesMessageHookHandler.java:96) at org.apache.james.protocols.smtp.core.DataCmdHandler$DataLineFilterWrapper.onLine(DataCmdHandler.java:76) at org.apache.james.protocols.smtp.core.DataCmdHandler$DataLineFilterWrapper.onLine(DataCmdHandler.java:61) at org.apache.james.protocols.smtp.core.ReceivedDataLineFilter.onLine(ReceivedDataLineFilter.java:54) at org.apache.james.protocols.smtp.core.DataCmdHandler$DataLineFilterWrapper.onLine(DataCmdHandler.java:76) at org.apache.james.protocols.smtp.core.DataCmdHandler$DataLineFilterWrapper.onLine(DataCmdHandler.java:61) at org.apache.james.protocols.smtp.core.esmtp.MailSizeEsmtpExtension.onLine(MailSizeEsmtpExtension.java:147) at org.apache.james.protocols.smtp.core.DataCmdHandler$DataLineFilterWrapper.onLine(DataCmdHandler.java:76) at org.apache.james.protocols.smtp.core.DataCmdHandler$DataLineFilterWrapper.onLine(DataCmdHandler.java:61) at org.apache.james.protocols.impl.LineHandlerUpstreamHandler.messageReceived(LineHandlerUpstreamHandler.java:57) at org.jboss.netty.channel.SimpleChannelUpstreamHandler.handleUpstream(SimpleChannelUpstreamHandler.java:80) at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:545) at org.jboss.netty.channel.DefaultChannelPipeline$DefaultChannelHandlerContext.sendUpstream(DefaultChannelPipeline.java:754) at org.jboss.netty.handler.execution.ChannelEventRunnable.run(ChannelEventRunnable.java:69) at org.jboss.netty.handler.execution.OrderedMemoryAwareThreadPoolExecutor$ChildExecutor.run(OrderedMemoryAwareThreadPoolExecutor.java:316) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) at java.lang.Thread.run(Thread.java:679) Caused by: javax.mail.internet.ParseException: Expected ';', got windows-1250 at javax.mail.internet.ParameterList.init(ParameterList.java:289) at javax.mail.internet.ContentType.init(ContentType.java:114) at javax.mail.internet.MimeBodyPart.updateHeaders(MimeBodyPart.java:1322) at javax.mail.internet.MimeBodyPart.updateHeaders(MimeBodyPart.java:1021) at javax.mail.internet.MimeMultipart.updateHeaders(MimeMultipart.java:419) at javax.mail.internet.MimeBodyPart.updateHeaders(MimeBodyPart.java:1345) at javax.mail.internet.MimeBodyPart.updateHeaders(MimeBodyPart.java:1021) at javax.mail.internet.MimeMultipart.updateHeaders(MimeMultipart.java:419) at javax.mail.internet.MimeBodyPart.updateHeaders(MimeBodyPart.java:1345) at javax.mail.internet.MimeMessage.updateHeaders(MimeMessage.java:2106) at javax.mail.internet.MimeMessage.saveChanges(MimeMessage.java:2074) at org.apache.james.core.MimeMessageWrapper.writeTo(MimeMessageWrapper.java:295) at org.apache.james.core.MimeMessageWrapper.writeTo(MimeMessageWrapper.java:290) at org.apache.james.core.MimeMessageWrapper.writeTo(MimeMessageWrapper.java:286) at org.apache.james.core.MimeMessageWrapper.writeTo(MimeMessageWrapper.java:271) at org.apache.james.core.MimeMessageCopyOnWriteProxy.writeTo
[jira] [Created] (JAMES-1320) MimeMessageWrapper.writeTo(...) calls saveChanges() even if not needed
MimeMessageWrapper.writeTo(...) calls saveChanges() even if not needed -- Key: JAMES-1320 URL: https://issues.apache.org/jira/browse/JAMES-1320 Project: JAMES Server Issue Type: Improvement Affects Versions: 3.0-beta3 Reporter: Norman Maurer Assignee: Norman Maurer Fix For: 3.0-beta4 When MimeMessageWrapper.writeTo(...) is called we call saveChanges() everytime even when the messagewas not modified at all. This is not neeed and also can throw exceptions on malformated messages. See the related stacktrace: org.apache.james.queue.api.MailQueue$MailQueueException: Unable to enqueue mail; nested exception is: javax.mail.internet.ParseException: Expected ';', got windows-1250 at org.apache.james.queue.file.FileMailQueue.enQueue(FileMailQueue.java:193) at org.apache.james.queue.file.FileMailQueue.enQueue(FileMailQueue.java:230) at org.apache.james.smtpserver.SendMailHandler.onMessage(SendMailHandler.java:64) at org.apache.james.smtpserver.DataLineJamesMessageHookHandler.processExtensions(DataLineJamesMessageHookHandler.java:178) at org.apache.james.smtpserver.DataLineJamesMessageHookHandler.onLine(DataLineJamesMessageHookHandler.java:96) at org.apache.james.protocols.smtp.core.DataCmdHandler$DataLineFilterWrapper.onLine(DataCmdHandler.java:76) at org.apache.james.protocols.smtp.core.DataCmdHandler$DataLineFilterWrapper.onLine(DataCmdHandler.java:61) at org.apache.james.protocols.smtp.core.ReceivedDataLineFilter.onLine(ReceivedDataLineFilter.java:54) at org.apache.james.protocols.smtp.core.DataCmdHandler$DataLineFilterWrapper.onLine(DataCmdHandler.java:76) at org.apache.james.protocols.smtp.core.DataCmdHandler$DataLineFilterWrapper.onLine(DataCmdHandler.java:61) at org.apache.james.protocols.smtp.core.esmtp.MailSizeEsmtpExtension.onLine(MailSizeEsmtpExtension.java:147) at org.apache.james.protocols.smtp.core.DataCmdHandler$DataLineFilterWrapper.onLine(DataCmdHandler.java:76) at org.apache.james.protocols.smtp.core.DataCmdHandler$DataLineFilterWrapper.onLine(DataCmdHandler.java:61) at org.apache.james.protocols.impl.LineHandlerUpstreamHandler.messageReceived(LineHandlerUpstreamHandler.java:57) at org.jboss.netty.channel.SimpleChannelUpstreamHandler.handleUpstream(SimpleChannelUpstreamHandler.java:80) at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:545) at org.jboss.netty.channel.DefaultChannelPipeline$DefaultChannelHandlerContext.sendUpstream(DefaultChannelPipeline.java:754) at org.jboss.netty.handler.execution.ChannelEventRunnable.run(ChannelEventRunnable.java:69) at org.jboss.netty.handler.execution.OrderedMemoryAwareThreadPoolExecutor$ChildExecutor.run(OrderedMemoryAwareThreadPoolExecutor.java:316) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) at java.lang.Thread.run(Thread.java:679) Caused by: javax.mail.internet.ParseException: Expected ';', got windows-1250 at javax.mail.internet.ParameterList.init(ParameterList.java:289) at javax.mail.internet.ContentType.init(ContentType.java:114) at javax.mail.internet.MimeBodyPart.updateHeaders(MimeBodyPart.java:1322) at javax.mail.internet.MimeBodyPart.updateHeaders(MimeBodyPart.java:1021) at javax.mail.internet.MimeMultipart.updateHeaders(MimeMultipart.java:419) at javax.mail.internet.MimeBodyPart.updateHeaders(MimeBodyPart.java:1345) at javax.mail.internet.MimeBodyPart.updateHeaders(MimeBodyPart.java:1021) at javax.mail.internet.MimeMultipart.updateHeaders(MimeMultipart.java:419) at javax.mail.internet.MimeBodyPart.updateHeaders(MimeBodyPart.java:1345) at javax.mail.internet.MimeMessage.updateHeaders(MimeMessage.java:2106) at javax.mail.internet.MimeMessage.saveChanges(MimeMessage.java:2074) at org.apache.james.core.MimeMessageWrapper.writeTo(MimeMessageWrapper.java:295) at org.apache.james.core.MimeMessageWrapper.writeTo(MimeMessageWrapper.java:290) at org.apache.james.core.MimeMessageWrapper.writeTo(MimeMessageWrapper.java:286) at org.apache.james.core.MimeMessageWrapper.writeTo(MimeMessageWrapper.java:271) at org.apache.james.core.MimeMessageCopyOnWriteProxy.writeTo(MimeMessageCopyOnWriteProxy.java:184) at org.apache.james.queue.file.FileMailQueue.enQueue(FileMailQueue.java:161) -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira
svn commit: r1171926 - in /james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl: AbstractResponseEncoder.java NettyServer.java ResponseEncoder.java
Author: norman Date: Sat Sep 17 07:51:21 2011 New Revision: 1171926 URL: http://svn.apache.org/viewvc?rev=1171926view=rev Log: Rename AbstractResponseEncoder to ResponseEncoder Added: james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/ResponseEncoder.java - copied, changed from r1171924, james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/AbstractResponseEncoder.java Removed: james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/AbstractResponseEncoder.java Modified: james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/NettyServer.java Modified: james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/NettyServer.java URL: http://svn.apache.org/viewvc/james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/NettyServer.java?rev=1171926r1=1171925r2=1171926view=diff == --- james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/NettyServer.java (original) +++ james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/NettyServer.java Sat Sep 17 07:51:21 2011 @@ -25,7 +25,7 @@ import javax.net.ssl.SSLContext; import org.apache.james.protocols.api.Protocol; import org.apache.james.protocols.impl.AbstractAsyncServer; -import org.apache.james.protocols.impl.AbstractResponseEncoder; +import org.apache.james.protocols.impl.ResponseEncoder; import org.apache.james.protocols.impl.AbstractSSLAwareChannelPipelineFactory; import org.apache.james.protocols.impl.BasicChannelUpstreamHandler; import org.jboss.netty.channel.ChannelPipelineFactory; @@ -63,7 +63,7 @@ public class NettyServer extends Abstrac super(); this.protocol = protocol; this.context = context; -this.responseEncoder = new AbstractResponseEncoder(protocol.getResponseClass(), Charset.forName(US-ASCII)); +this.responseEncoder = new ResponseEncoder(protocol.getResponseClass(), Charset.forName(US-ASCII)); } protected ExecutionHandler createExecutionHandler(int size) { Copied: james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/ResponseEncoder.java (from r1171924, james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/AbstractResponseEncoder.java) URL: http://svn.apache.org/viewvc/james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/ResponseEncoder.java?p2=james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/ResponseEncoder.javap1=james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/AbstractResponseEncoder.javar1=1171924r2=1171926rev=1171926view=diff == --- james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/AbstractResponseEncoder.java (original) +++ james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/ResponseEncoder.java Sat Sep 17 07:51:21 2011 @@ -34,12 +34,12 @@ import org.jboss.netty.handler.codec.one * * @param R */ -public class AbstractResponseEncoder extends OneToOneEncoder{ +public class ResponseEncoder extends OneToOneEncoder{ private Class? extends Response classType; private Charset charset; -public AbstractResponseEncoder(Class ? extends Response classType, Charset charset) { +public ResponseEncoder(Class ? extends Response classType, Charset charset) { this.classType = classType; this.charset = charset; } - To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org
[jira] [Resolved] (PROTOCOLS-30) STARTTLS handling is not correct and can cause touble execution of the STARTTLS handling
[ https://issues.apache.org/jira/browse/PROTOCOLS-30?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Norman Maurer resolved PROTOCOLS-30. Resolution: Fixed done STARTTLS handling is not correct and can cause touble execution of the STARTTLS handling Key: PROTOCOLS-30 URL: https://issues.apache.org/jira/browse/PROTOCOLS-30 Project: JAMES Protocols Issue Type: Bug Components: api, smtp Affects Versions: 1.5 Reporter: Norman Maurer Assignee: Norman Maurer Fix For: 1.6 When we handler STARTTLS we are current write the Response to the client via Session.write(...) , then trigger Session.startTLS() and then return null from the CommandHandler. The problem is that returning null tells the LineHandler to execute the next CommandHandler as it things we was not able to handle the Request. It would be better to return a special type of Response and let the linehandler/Session handle all the other parts -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira - To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org
[jira] [Resolved] (PROTOCOLS-28) Use zero-file-copy if possible in AbstractSession.writeStream(...)
[ https://issues.apache.org/jira/browse/PROTOCOLS-28?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Norman Maurer resolved PROTOCOLS-28. Resolution: Won't Fix Writing a stream was removed from the abstract class Use zero-file-copy if possible in AbstractSession.writeStream(...) -- Key: PROTOCOLS-28 URL: https://issues.apache.org/jira/browse/PROTOCOLS-28 Project: JAMES Protocols Issue Type: Improvement Affects Versions: 1.4.0 Reporter: Norman Maurer Assignee: Norman Maurer Fix For: 1.5 We should make use of zero-file-copy if possible in AbstractSession.writeStream(...) -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira - To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org
[jira] [Resolved] (PROTOCOLS-3) Add some reusable implementation code
[ https://issues.apache.org/jira/browse/PROTOCOLS-3?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Norman Maurer resolved PROTOCOLS-3. --- Resolution: Fixed Fix Version/s: 1.6 I think this can get closed now Add some reusable implementation code - Key: PROTOCOLS-3 URL: https://issues.apache.org/jira/browse/PROTOCOLS-3 Project: JAMES Protocols Issue Type: Task Reporter: Norman Maurer Assignee: Norman Maurer Fix For: 1.6 -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira - To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org
svn commit: r1171965 - /james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/SMTPProtocol.java
Author: norman Date: Sat Sep 17 12:36:57 2011 New Revision: 1171965 URL: http://svn.apache.org/viewvc?rev=1171965view=rev Log: Allow to pass in a ProtocolHandlerChain to make it more reusable. Maybe we should restrict somehow but not sure how yet Modified: james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/SMTPProtocol.java Modified: james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/SMTPProtocol.java URL: http://svn.apache.org/viewvc/james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/SMTPProtocol.java?rev=1171965r1=1171964r2=1171965view=diff == --- james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/SMTPProtocol.java (original) +++ james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/SMTPProtocol.java Sat Sep 17 12:36:57 2011 @@ -26,7 +26,6 @@ import org.apache.james.protocols.api.Pr import org.apache.james.protocols.api.ProtocolTransport; import org.apache.james.protocols.api.Response; import org.apache.james.protocols.smtp.SMTPConfiguration; -import org.apache.james.protocols.smtp.SMTPProtocolHandlerChain; import org.apache.james.protocols.smtp.SMTPResponse; import org.apache.james.protocols.smtp.SMTPSessionImpl; import org.slf4j.Logger; @@ -34,12 +33,12 @@ import org.slf4j.LoggerFactory; public class SMTPProtocol implements Protocol { -private SMTPProtocolHandlerChain chain; +private ProtocolHandlerChain chain; private SMTPConfiguration config; private Logger logger = LoggerFactory.getLogger(SMTPProtocol.class); -public SMTPProtocol(SMTPProtocolHandlerChain chain, SMTPConfiguration config) { +public SMTPProtocol(ProtocolHandlerChain chain, SMTPConfiguration config) { this.chain = chain; this.config = config; } - To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org
svn commit: r1171969 - in /james/server/trunk/smtpserver/src/main/java/org/apache/james/smtpserver/netty: SMTPChannelUpstreamHandler.java SMTPNettySession.java SMTPServer.java
Author: norman Date: Sat Sep 17 12:47:07 2011 New Revision: 1171969 URL: http://svn.apache.org/viewvc?rev=1171969view=rev Log: Refactor smtpserver to for latest protocols refactoring Modified: 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/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=1171969r1=1171968r2=1171969view=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 Sat Sep 17 12:47:07 2011 @@ -19,53 +19,33 @@ package org.apache.james.smtpserver.netty; import javax.net.ssl.SSLContext; -import javax.net.ssl.SSLEngine; import org.apache.james.lifecycle.api.LifecycleUtil; import org.apache.james.protocols.api.ProtocolHandlerChain; -import org.apache.james.protocols.api.ProtocolSession; -import org.apache.james.protocols.impl.AbstractChannelUpstreamHandler; -import org.apache.james.protocols.smtp.SMTPConfiguration; -import org.apache.james.protocols.smtp.SMTPResponse; -import org.apache.james.protocols.smtp.SMTPRetCode; +import org.apache.james.protocols.api.ProtocolSessionFactory; +import org.apache.james.protocols.impl.BasicChannelUpstreamHandler; import org.apache.james.protocols.smtp.SMTPSession; import org.apache.james.smtpserver.SMTPConstants; -import org.jboss.netty.channel.Channel; -import org.jboss.netty.channel.ChannelFutureListener; +import org.jboss.netty.channel.ChannelHandler.Sharable; 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 org.apache.james.protocols.smtp.netty.SMTPChannelUpstreamHandler { +public class SMTPChannelUpstreamHandler extends BasicChannelUpstreamHandler { -public SMTPChannelUpstreamHandler(ProtocolHandlerChain chain, SMTPConfiguration conf, Logger logger, SSLContext context, String[] enabledCipherSuites) { -super(chain, conf, logger, context, enabledCipherSuites); -} -public SMTPChannelUpstreamHandler(ProtocolHandlerChain chain, SMTPConfiguration conf, Logger logger) { -super(chain, conf, logger); +public SMTPChannelUpstreamHandler(ProtocolHandlerChain chain, ProtocolSessionFactory sessionFactory, Logger logger, SSLContext context, String[] enabledCipherSuites) { +super(chain, sessionFactory, logger, context, enabledCipherSuites); } - - -@Override -protected ProtocolSession createSession(ChannelHandlerContext ctx) throws Exception { -if (context != null) { -SSLEngine engine = context.createSSLEngine(); -if (enabledCipherSuites != null enabledCipherSuites.length 0) { -engine.setEnabledCipherSuites(enabledCipherSuites); -} -return new SMTPNettySession(conf, logger, ctx.getChannel(), engine); -} else { -return new SMTPNettySession(conf, logger, ctx.getChannel()); -} + +public SMTPChannelUpstreamHandler(ProtocolHandlerChain chain, ProtocolSessionFactory sessionFactory, Logger logger) { +super(chain, sessionFactory, logger); } + /** * Cleanup temporary files * 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=1171969r1=1171968r2=1171969view=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 Sat Sep 17 12:47:07 2011 @@ -18,35 +18,26 @@ / package org.apache.james.smtpserver.netty; -import javax.net.ssl.SSLEngine; - +import org.apache.james.protocols.api.ProtocolTransport; import
svn commit: r1171971 - /james/server/trunk/lmtpserver/src/main/java/org/apache/james/lmtpserver/netty/LMTPServer.java
Author: norman Date: Sat Sep 17 13:10:46 2011 New Revision: 1171971 URL: http://svn.apache.org/viewvc?rev=1171971view=rev Log: Refactor lmtpserver for latest protocols refactoring Modified: james/server/trunk/lmtpserver/src/main/java/org/apache/james/lmtpserver/netty/LMTPServer.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=1171971r1=1171970r2=1171971view=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 Sat Sep 17 13:10:46 2011 @@ -18,6 +18,8 @@ / package org.apache.james.lmtpserver.netty; +import java.nio.charset.Charset; + import javax.net.ssl.SSLContext; import org.apache.commons.configuration.ConfigurationException; @@ -25,16 +27,18 @@ import org.apache.commons.configuration. import org.apache.james.lmtpserver.CoreCmdHandlerLoader; import org.apache.james.lmtpserver.jmx.JMXHandlersLoader; import org.apache.james.protocols.api.HandlersPackage; +import org.apache.james.protocols.impl.ResponseEncoder; import org.apache.james.protocols.lib.netty.AbstractProtocolAsyncServer; import org.apache.james.protocols.smtp.SMTPConfiguration; -import org.apache.james.protocols.smtp.netty.SMTPResponseEncoder; +import org.apache.james.protocols.smtp.SMTPProtocol; +import org.apache.james.protocols.smtp.SMTPResponse; import org.apache.james.smtpserver.netty.SMTPChannelUpstreamHandler; import org.jboss.netty.channel.ChannelUpstreamHandler; import org.jboss.netty.handler.codec.oneone.OneToOneEncoder; public class LMTPServer extends AbstractProtocolAsyncServer implements LMTPServerMBean { -private final static SMTPResponseEncoder ENCODER = new SMTPResponseEncoder(); +private final static ResponseEncoder ENCODER = new ResponseEncoder(SMTPResponse.class, Charset.forName(US-ASCII)); /** * The maximum message size allowed by this SMTP server. The default value, @@ -195,7 +199,8 @@ public class LMTPServer extends Abstract @Override protected ChannelUpstreamHandler createCoreHandler() { -return new SMTPChannelUpstreamHandler(getProtocolHandlerChain(), lmtpConfig, getLogger()); +SMTPProtocol protocol = new SMTPProtocol(getProtocolHandlerChain(), lmtpConfig); +return new SMTPChannelUpstreamHandler(getProtocolHandlerChain(), protocol.getProtocolSessionFactory(), getLogger()); } @Override - To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org
svn commit: r1171984 - in /james/server/trunk/pop3server/src: main/java/org/apache/james/pop3server/ main/java/org/apache/james/pop3server/core/ main/java/org/apache/james/pop3server/netty/ test/java/
Author: norman Date: Sat Sep 17 14:06:40 2011 New Revision: 1171984 URL: http://svn.apache.org/viewvc?rev=1171984view=rev Log: Refactor pop3server for latest protocols refactoring Added: james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/POP3Protocol.java (with props) james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/POP3SessionImpl.java - copied, changed from r1171924, 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/POP3StreamResponse.java (with props) Removed: 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 Modified: james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/POP3Response.java james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/POP3Session.java james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/core/RetrCmdHandler.java james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/core/TopCmdHandler.java james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/core/WelcomeMessageHandler.java james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/netty/POP3ResponseEncoder.java james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/netty/POP3Server.java james/server/trunk/pop3server/src/test/java/org/apache/james/pop3server/POP3ServerTest.java Added: james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/POP3Protocol.java URL: http://svn.apache.org/viewvc/james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/POP3Protocol.java?rev=1171984view=auto == --- james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/POP3Protocol.java (added) +++ james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/POP3Protocol.java Sat Sep 17 14:06:40 2011 @@ -0,0 +1,67 @@ +/ + * 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.pop3server; + +import org.apache.james.protocols.api.Protocol; +import org.apache.james.protocols.api.ProtocolHandlerChain; +import org.apache.james.protocols.api.ProtocolSession; +import org.apache.james.protocols.api.ProtocolSessionFactory; +import org.apache.james.protocols.api.ProtocolTransport; +import org.apache.james.protocols.api.Response; +import org.slf4j.Logger; + +public class POP3Protocol implements Protocol{ + +private ProtocolHandlerChain chain; +private POP3HandlerConfigurationData config; +private Logger logger; + +public POP3Protocol(ProtocolHandlerChain chain, POP3HandlerConfigurationData config, Logger logger) { +this.chain = chain; +this.config = config; +this.logger = logger; +} +@Override +public ProtocolHandlerChain getProtocolChain() { +return chain; +} + +@Override +public ProtocolSessionFactory getProtocolSessionFactory() { +return new ProtocolSessionFactory() { + +@Override +public ProtocolSession newSession(ProtocolTransport transport) { +return new POP3SessionImpl(logger, transport, config); +} +}; +} + +@Override +public boolean isStartTLSSupported() { +return config.isStartTLSSupported(); +} + +@Override +public Class? extends Response getResponseClass() { +return POP3Response.class; +} + +} Propchange: james/server/trunk/pop3server/src/main/java
svn commit: r1171986 - /james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/BasicChannelUpstreamHandler.java
Author: norman Date: Sat Sep 17 14:08:52 2011 New Revision: 1171986 URL: http://svn.apache.org/viewvc?rev=1171986view=rev Log: make sure all buffers are written to the client before close the channel Modified: james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/BasicChannelUpstreamHandler.java Modified: james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/BasicChannelUpstreamHandler.java URL: http://svn.apache.org/viewvc/james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/BasicChannelUpstreamHandler.java?rev=1171986r1=1171985r2=1171986view=diff == --- james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/BasicChannelUpstreamHandler.java (original) +++ james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/BasicChannelUpstreamHandler.java Sat Sep 17 14:08:52 2011 @@ -27,6 +27,7 @@ import org.apache.james.protocols.api.Pr import org.apache.james.protocols.api.Response; import org.apache.james.protocols.impl.AbstractChannelUpstreamHandler; import org.apache.james.protocols.impl.NettyProtocolTransport; +import org.jboss.netty.buffer.ChannelBuffers; import org.jboss.netty.channel.Channel; import org.jboss.netty.channel.ChannelFutureListener; import org.jboss.netty.channel.ChannelHandler.Sharable; @@ -84,7 +85,7 @@ public class BasicChannelUpstreamHandler if (r != null) { ctx.getChannel().write(r).addListener(ChannelFutureListener.CLOSE); } else { -ctx.getChannel().close(); + ctx.getChannel().write(ChannelBuffers.EMPTY_BUFFER).addListener(ChannelFutureListener.CLOSE); } } if (session != null) { - To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org
svn commit: r1172016 - in /james/server/trunk/smtpserver/src/main/java/org/apache/james/smtpserver: ExtendedSMTPSession.java SenderAuthIdentifyVerificationRcptHook.java netty/SMTPNettySession.java net
Author: norman Date: Sat Sep 17 16:54:03 2011 New Revision: 1172016 URL: http://svn.apache.org/viewvc?rev=1172016view=rev Log: Rename SMTPNettySession to ExtendedSMTPSession and move it out of the netty package Added: james/server/trunk/smtpserver/src/main/java/org/apache/james/smtpserver/ExtendedSMTPSession.java - copied, changed from r1171969, james/server/trunk/smtpserver/src/main/java/org/apache/james/smtpserver/netty/SMTPNettySession.java Removed: james/server/trunk/smtpserver/src/main/java/org/apache/james/smtpserver/netty/SMTPNettySession.java Modified: james/server/trunk/smtpserver/src/main/java/org/apache/james/smtpserver/SenderAuthIdentifyVerificationRcptHook.java james/server/trunk/smtpserver/src/main/java/org/apache/james/smtpserver/netty/SMTPServer.java Copied: james/server/trunk/smtpserver/src/main/java/org/apache/james/smtpserver/ExtendedSMTPSession.java (from r1171969, 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/ExtendedSMTPSession.java?p2=james/server/trunk/smtpserver/src/main/java/org/apache/james/smtpserver/ExtendedSMTPSession.javap1=james/server/trunk/smtpserver/src/main/java/org/apache/james/smtpserver/netty/SMTPNettySession.javar1=1171969r2=1172016rev=1172016view=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/ExtendedSMTPSession.java Sat Sep 17 16:54:03 2011 @@ -16,23 +16,24 @@ * specific language governing permissions and limitations * * under the License. * / -package org.apache.james.smtpserver.netty; +package org.apache.james.smtpserver; import org.apache.james.protocols.api.ProtocolTransport; import org.apache.james.protocols.smtp.SMTPConfiguration; import org.apache.james.protocols.smtp.SMTPSession; +import org.apache.james.smtpserver.netty.SMTPServer; import org.apache.james.smtpserver.netty.SMTPServer.SMTPHandlerConfigurationDataImpl; import org.slf4j.Logger; /** * {@link SMTPSession} implementation for use with Netty */ -public class SMTPNettySession extends org.apache.james.protocols.smtp.SMTPSessionImpl { +public class ExtendedSMTPSession extends org.apache.james.protocols.smtp.SMTPSessionImpl { private SMTPConfiguration theConfigData; -public SMTPNettySession(SMTPConfiguration theConfigData, Logger logger, ProtocolTransport transport) { +public ExtendedSMTPSession(SMTPConfiguration theConfigData, Logger logger, ProtocolTransport transport) { super(theConfigData, logger, transport); this.theConfigData = theConfigData; } Modified: james/server/trunk/smtpserver/src/main/java/org/apache/james/smtpserver/SenderAuthIdentifyVerificationRcptHook.java URL: http://svn.apache.org/viewvc/james/server/trunk/smtpserver/src/main/java/org/apache/james/smtpserver/SenderAuthIdentifyVerificationRcptHook.java?rev=1172016r1=1172015r2=1172016view=diff == --- james/server/trunk/smtpserver/src/main/java/org/apache/james/smtpserver/SenderAuthIdentifyVerificationRcptHook.java (original) +++ james/server/trunk/smtpserver/src/main/java/org/apache/james/smtpserver/SenderAuthIdentifyVerificationRcptHook.java Sat Sep 17 16:54:03 2011 @@ -26,7 +26,6 @@ import org.apache.james.protocols.smtp.S import org.apache.james.protocols.smtp.core.AbstractSenderAuthIdentifyVerificationRcptHook; import org.apache.james.protocols.smtp.hook.HookResult; import org.apache.james.protocols.smtp.hook.HookReturnCode; -import org.apache.james.smtpserver.netty.SMTPNettySession; import org.apache.james.user.api.UsersRepository; import org.apache.james.user.api.UsersRepositoryException; import org.apache.mailet.MailAddress; @@ -51,7 +50,7 @@ public class SenderAuthIdentifyVerificat @Override public HookResult doRcpt(SMTPSession session, MailAddress sender, MailAddress rcpt) { -SMTPNettySession nSession = (SMTPNettySession) session; +ExtendedSMTPSession nSession = (ExtendedSMTPSession) session; if (nSession.verifyIdentity()) { return super.doRcpt(session, sender, rcpt); } else { 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=1172016r1=1172015r2=1172016view=diff == --- james/server/trunk/smtpserver/src/main/java/org
svn commit: r1172017 - in /james/server/trunk/imapserver/src/main/java/org/apache/james/imapserver/netty: ImapChannelUpstreamHandler.java NettyImapSession.java
Author: norman Date: Sat Sep 17 16:55:03 2011 New Revision: 1172017 URL: http://svn.apache.org/viewvc?rev=1172017view=rev Log: Fix imapserver for latest protocols refactoring Modified: james/server/trunk/imapserver/src/main/java/org/apache/james/imapserver/netty/ImapChannelUpstreamHandler.java james/server/trunk/imapserver/src/main/java/org/apache/james/imapserver/netty/NettyImapSession.java Modified: james/server/trunk/imapserver/src/main/java/org/apache/james/imapserver/netty/ImapChannelUpstreamHandler.java URL: http://svn.apache.org/viewvc/james/server/trunk/imapserver/src/main/java/org/apache/james/imapserver/netty/ImapChannelUpstreamHandler.java?rev=1172017r1=1172016r2=1172017view=diff == --- james/server/trunk/imapserver/src/main/java/org/apache/james/imapserver/netty/ImapChannelUpstreamHandler.java (original) +++ james/server/trunk/imapserver/src/main/java/org/apache/james/imapserver/netty/ImapChannelUpstreamHandler.java Sat Sep 17 16:55:03 2011 @@ -32,7 +32,7 @@ import org.apache.james.imap.encode.Imap import org.apache.james.imap.encode.ImapResponseComposer; import org.apache.james.imap.encode.base.ImapResponseComposerImpl; import org.apache.james.imap.main.ResponseEncoder; -import org.apache.james.protocols.impl.SessionLog; +import org.apache.james.protocols.api.SessionLog; import org.jboss.netty.buffer.ChannelBuffers; import org.jboss.netty.channel.Channel; import org.jboss.netty.channel.ChannelFutureListener; Modified: james/server/trunk/imapserver/src/main/java/org/apache/james/imapserver/netty/NettyImapSession.java URL: http://svn.apache.org/viewvc/james/server/trunk/imapserver/src/main/java/org/apache/james/imapserver/netty/NettyImapSession.java?rev=1172017r1=1172016r2=1172017view=diff == --- james/server/trunk/imapserver/src/main/java/org/apache/james/imapserver/netty/NettyImapSession.java (original) +++ james/server/trunk/imapserver/src/main/java/org/apache/james/imapserver/netty/NettyImapSession.java Sat Sep 17 16:55:03 2011 @@ -27,7 +27,7 @@ import org.apache.james.imap.api.ImapSes import org.apache.james.imap.api.process.ImapLineHandler; import org.apache.james.imap.api.process.ImapSession; import org.apache.james.imap.api.process.SelectedMailbox; -import org.apache.james.protocols.impl.SessionLog; +import org.apache.james.protocols.api.SessionLog; import org.jboss.netty.channel.Channel; import org.jboss.netty.handler.codec.compression.ZlibDecoder; import org.jboss.netty.handler.codec.compression.ZlibEncoder; - To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org
[jira] [Resolved] (JAMES-1318) RemoteDelivery tries to modify the returned Collection of Mail.getRecipients() directly
[ https://issues.apache.org/jira/browse/JAMES-1318?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Norman Maurer resolved JAMES-1318. -- Resolution: Fixed RemoteDelivery tries to modify the returned Collection of Mail.getRecipients() directly --- Key: JAMES-1318 URL: https://issues.apache.org/jira/browse/JAMES-1318 Project: JAMES Server Issue Type: Bug Components: Matchers/Mailets (bundled) Affects Versions: 3.0-beta3 Reporter: Norman Maurer Assignee: Norman Maurer Priority: Critical Fix For: 3.0-beta4 In RemoteDelivery we try to modify the returned Collection of Mail.getRecipients() directly. This may fail because a Collection can be read-only as remove etc is an optional implementation. We need to copy it and then set it via Mail.setRecipients(..) to be 100% sure. See this related stack trace: INFO 17:41:25,409 | james.mailetcontext | Exception caught in RemoteDelivery.run() org.apache.james.queue.api.MailQueue$MailQueueException: Unable to perform dequeue; nested exception is: java.lang.UnsupportedOperationException at org.apache.james.transport.mailets.RemoteDelivery.run(RemoteDelivery.java:768) at java.lang.Thread.run(Thread.java:679) Caused by: java.lang.UnsupportedOperationException at java.util.AbstractList.remove(AbstractList.java:161) at java.util.AbstractList$Itr.remove(AbstractList.java:375) at java.util.AbstractList.removeRange(AbstractList.java:572) at java.util.AbstractList.clear(AbstractList.java:234) at org.apache.james.transport.mailets.RemoteDelivery.deliver(RemoteDelivery.java:1132) at org.apache.james.transport.mailets.RemoteDelivery.run(RemoteDelivery.java:718) ... 1 more -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira - To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org
svn commit: r1172032 - /james/server/trunk/mailets/src/main/java/org/apache/james/transport/mailets/RemoteDelivery.java
Author: norman Date: Sat Sep 17 18:01:09 2011 New Revision: 1172032 URL: http://svn.apache.org/viewvc?rev=1172032view=rev Log: Copy the recipients collection before try to modify it. See JAMES-1318 Modified: james/server/trunk/mailets/src/main/java/org/apache/james/transport/mailets/RemoteDelivery.java Modified: james/server/trunk/mailets/src/main/java/org/apache/james/transport/mailets/RemoteDelivery.java URL: http://svn.apache.org/viewvc/james/server/trunk/mailets/src/main/java/org/apache/james/transport/mailets/RemoteDelivery.java?rev=1172032r1=1172031r2=1172032view=diff == --- james/server/trunk/mailets/src/main/java/org/apache/james/transport/mailets/RemoteDelivery.java (original) +++ james/server/trunk/mailets/src/main/java/org/apache/james/transport/mailets/RemoteDelivery.java Sat Sep 17 18:01:09 2011 @@ -1067,7 +1067,8 @@ public class RemoteDelivery extends Gene } catch (SendFailedException sfe) { logSendFailedException(sfe); -CollectionMailAddress recipients = mail.getRecipients(); +// Copy the recipients as direct modification may not be possible +CollectionMailAddress recipients = new ArrayListMailAddress(mail.getRecipients()); boolean deleteMessage = false; @@ -1139,6 +1140,9 @@ public class RemoteDelivery extends Gene log(Can't parse invalid address: + pe.getMessage()); } } +// Set the recipients for the mail +mail.setRecipients(recipients); + if (isDebug) log(Invalid recipients: + recipients); deleteMessage = failMessage(mail, sfe, true); @@ -1159,6 +1163,8 @@ public class RemoteDelivery extends Gene log(Can't parse unsent address: + pe.getMessage()); } } +// Set the recipients for the mail +mail.setRecipients(recipients); if (isDebug) log(Unsent recipients: + recipients); if (sfe.getClass().getName().endsWith(.SMTPSendFailedException)) { @@ -1169,7 +1175,8 @@ public class RemoteDelivery extends Gene } } } - + + return deleteMessage; } catch (MessagingException ex) { // We should do a better job checking this... if the failure is a - To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org
[jira] [Updated] (JAMES-1318) RemoteDelivery tries to modify the returned Collection of Mail.getRecipients() directly
[ https://issues.apache.org/jira/browse/JAMES-1318?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Norman Maurer updated JAMES-1318: - Component/s: Matchers/Mailets (bundled) Affects Version/s: 3.0-beta3 Fix Version/s: 3.0-beta4 Assignee: Norman Maurer RemoteDelivery tries to modify the returned Collection of Mail.getRecipients() directly --- Key: JAMES-1318 URL: https://issues.apache.org/jira/browse/JAMES-1318 Project: JAMES Server Issue Type: Bug Components: Matchers/Mailets (bundled) Affects Versions: 3.0-beta3 Reporter: Norman Maurer Assignee: Norman Maurer Priority: Critical Fix For: 3.0-beta4 In RemoteDelivery we try to modify the returned Collection of Mail.getRecipients() directly. This may fail because a Collection can be read-only as remove etc is an optional implementation. We need to copy it and then set it via Mail.setRecipients(..) to be 100% sure. See this related stack trace: INFO 17:41:25,409 | james.mailetcontext | Exception caught in RemoteDelivery.run() org.apache.james.queue.api.MailQueue$MailQueueException: Unable to perform dequeue; nested exception is: java.lang.UnsupportedOperationException at org.apache.james.transport.mailets.RemoteDelivery.run(RemoteDelivery.java:768) at java.lang.Thread.run(Thread.java:679) Caused by: java.lang.UnsupportedOperationException at java.util.AbstractList.remove(AbstractList.java:161) at java.util.AbstractList$Itr.remove(AbstractList.java:375) at java.util.AbstractList.removeRange(AbstractList.java:572) at java.util.AbstractList.clear(AbstractList.java:234) at org.apache.james.transport.mailets.RemoteDelivery.deliver(RemoteDelivery.java:1132) at org.apache.james.transport.mailets.RemoteDelivery.run(RemoteDelivery.java:718) ... 1 more -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira - To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org
[jira] [Created] (JAMES-1318) RemoteDelivery tries to modify the returned Collection of Mail.getRecipients() directly
RemoteDelivery tries to modify the returned Collection of Mail.getRecipients() directly --- Key: JAMES-1318 URL: https://issues.apache.org/jira/browse/JAMES-1318 Project: JAMES Server Issue Type: Bug Reporter: Norman Maurer Priority: Critical In RemoteDelivery we try to modify the returned Collection of Mail.getRecipients() directly. This may fail because a Collection can be read-only as remove etc is an optional implementation. We need to copy it and then set it via Mail.setRecipients(..) to be 100% sure. See this related stack trace: INFO 17:41:25,409 | james.mailetcontext | Exception caught in RemoteDelivery.run() org.apache.james.queue.api.MailQueue$MailQueueException: Unable to perform dequeue; nested exception is: java.lang.UnsupportedOperationException at org.apache.james.transport.mailets.RemoteDelivery.run(RemoteDelivery.java:768) at java.lang.Thread.run(Thread.java:679) Caused by: java.lang.UnsupportedOperationException at java.util.AbstractList.remove(AbstractList.java:161) at java.util.AbstractList$Itr.remove(AbstractList.java:375) at java.util.AbstractList.removeRange(AbstractList.java:572) at java.util.AbstractList.clear(AbstractList.java:234) at org.apache.james.transport.mailets.RemoteDelivery.deliver(RemoteDelivery.java:1132) at org.apache.james.transport.mailets.RemoteDelivery.run(RemoteDelivery.java:718) ... 1 more -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira - To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org
svn commit: r1172041 - in /james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/netty: POP3ChannelUpstreamHandler.java POP3ProtocolTransport.java POP3ResponseEncoder.java POP3Server
Author: norman Date: Sat Sep 17 18:33:25 2011 New Revision: 1172041 URL: http://svn.apache.org/viewvc?rev=1172041view=rev Log: Fix race-condition in pop3server. Now it works again without deadlocking Added: james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/netty/POP3ChannelUpstreamHandler.java (with props) james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/netty/POP3ProtocolTransport.java (with props) Modified: james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/netty/POP3ResponseEncoder.java james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/netty/POP3Server.java Added: 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=1172041view=auto == --- james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/netty/POP3ChannelUpstreamHandler.java (added) +++ james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/netty/POP3ChannelUpstreamHandler.java Sat Sep 17 18:33:25 2011 @@ -0,0 +1,60 @@ +/ + * 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.pop3server.netty; + +import javax.net.ssl.SSLContext; +import javax.net.ssl.SSLEngine; + +import org.apache.james.protocols.api.ProtocolHandlerChain; +import org.apache.james.protocols.api.ProtocolSession; +import org.apache.james.protocols.api.ProtocolSessionFactory; +import org.apache.james.protocols.impl.BasicChannelUpstreamHandler; +import org.jboss.netty.channel.ChannelHandlerContext; +import org.slf4j.Logger; + +public class POP3ChannelUpstreamHandler extends BasicChannelUpstreamHandler{ + +private boolean zeroCopy; + +public POP3ChannelUpstreamHandler(ProtocolHandlerChain chain, ProtocolSessionFactory sessionFactory, Logger logger, boolean zeroCopy) { +super(chain, sessionFactory, logger); +this.zeroCopy = zeroCopy; +} + +public POP3ChannelUpstreamHandler(ProtocolHandlerChain chain, ProtocolSessionFactory sessionFactory, Logger logger, SSLContext context, String[] enabledCipherSuites, boolean zeroCopy) { +super(chain, sessionFactory, logger, context, enabledCipherSuites); +this.zeroCopy = zeroCopy; +} + +@Override +protected ProtocolSession createSession(ChannelHandlerContext ctx) throws Exception { +SSLEngine engine = null; +if (context != null) { +engine = context.createSSLEngine(); +if (enabledCipherSuites != null enabledCipherSuites.length 0) { +engine.setEnabledCipherSuites(enabledCipherSuites); +} +} + +return sessionFactory.newSession(new POP3ProtocolTransport(ctx.getChannel(), engine, zeroCopy)); +} + + +} Propchange: james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/netty/POP3ChannelUpstreamHandler.java -- svn:mime-type = text/plain Added: james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/netty/POP3ProtocolTransport.java URL: http://svn.apache.org/viewvc/james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/netty/POP3ProtocolTransport.java?rev=1172041view=auto == --- james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/netty/POP3ProtocolTransport.java (added) +++ james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/netty/POP3ProtocolTransport.java Sat Sep 17
svn commit: r1172042 - /james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/netty/POP3ResponseEncoder.java
Author: norman Date: Sat Sep 17 18:35:12 2011 New Revision: 1172042 URL: http://svn.apache.org/viewvc?rev=1172042view=rev Log: Not needed anymore Removed: james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/netty/POP3ResponseEncoder.java - To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org
svn commit: r1172045 - in /james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server: POP3HandlerConfiguration.java POP3HandlerConfigurationData.java POP3Protocol.java POP3Session.java P
Author: norman Date: Sat Sep 17 18:44:33 2011 New Revision: 1172045 URL: http://svn.apache.org/viewvc?rev=1172045view=rev Log: Rename POP3HandlerConfigurationData to POP3HandlerConfiguration and remove one not needed method Added: james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/POP3HandlerConfiguration.java (contents, props changed) - copied, changed from r1171924, james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/POP3HandlerConfigurationData.java Removed: james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/POP3HandlerConfigurationData.java Modified: james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/POP3Protocol.java james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/POP3Session.java james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/POP3SessionImpl.java james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/netty/POP3Server.java Copied: james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/POP3HandlerConfiguration.java (from r1171924, james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/POP3HandlerConfigurationData.java) URL: http://svn.apache.org/viewvc/james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/POP3HandlerConfiguration.java?p2=james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/POP3HandlerConfiguration.javap1=james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/POP3HandlerConfigurationData.javar1=1171924r2=1172045rev=1172045view=diff == --- james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/POP3HandlerConfigurationData.java (original) +++ james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/POP3HandlerConfiguration.java Sat Sep 17 18:44:33 2011 @@ -22,7 +22,7 @@ package org.apache.james.pop3server; /** * Provides a number of server-wide constant values to the POP3Handlers */ -public interface POP3HandlerConfigurationData { +public interface POP3HandlerConfiguration { /** * Returns the service wide hello name @@ -32,13 +32,6 @@ public interface POP3HandlerConfiguratio String getHelloName(); /** - * Returns the service wide reset length in bytes. - * - * @return the reset length - */ -int getResetLength(); - -/** * Return if starttls is supported by the POP3Server * * @return startTLSSupported Propchange: james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/POP3HandlerConfiguration.java -- cvs2svn:cvs-rev = 1.1.4.3 Propchange: james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/POP3HandlerConfiguration.java -- svn:eol-style = native Propchange: james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/POP3HandlerConfiguration.java -- svn:keywords = Author Date Id Revision Modified: james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/POP3Protocol.java URL: http://svn.apache.org/viewvc/james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/POP3Protocol.java?rev=1172045r1=1172044r2=1172045view=diff == --- james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/POP3Protocol.java (original) +++ james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/POP3Protocol.java Sat Sep 17 18:44:33 2011 @@ -30,10 +30,10 @@ import org.slf4j.Logger; public class POP3Protocol implements Protocol{ private ProtocolHandlerChain chain; -private POP3HandlerConfigurationData config; +private POP3HandlerConfiguration config; private Logger logger; -public POP3Protocol(ProtocolHandlerChain chain, POP3HandlerConfigurationData config, Logger logger) { +public POP3Protocol(ProtocolHandlerChain chain, POP3HandlerConfiguration config, Logger logger) { this.chain = chain; this.config = config; this.logger = logger; 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=1172045r1=1172044r2=1172045view=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
svn commit: r1172046 - in /james/protocols/trunk: api/src/main/java/org/apache/james/protocols/api/ impl/src/main/java/org/apache/james/protocols/impl/log/ smtp/src/main/java/org/apache/james/protocol
Author: norman Date: Sat Sep 17 18:47:43 2011 New Revision: 1172046 URL: http://svn.apache.org/viewvc?rev=1172046view=rev Log: Merge RetCodeResponse with Response interface Removed: james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/RetCodeResponse.java Modified: james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/Response.java james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/log/AbstractCommandHandlerResultLogger.java james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/SMTPResponse.java james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/MailCmdHandler.java Modified: james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/Response.java URL: http://svn.apache.org/viewvc/james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/Response.java?rev=1172046r1=1172045r2=1172046view=diff == --- james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/Response.java (original) +++ james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/Response.java Sat Sep 17 18:47:43 2011 @@ -27,7 +27,19 @@ import java.util.List; * */ public interface Response { +/** + * Return return-code + * @return + */ +String getRetCode(); + +/** + * Set the return-code used for this response + * + * @param retCode + */ +void setRetCode(String retCode); /** * Append line to response Modified: james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/log/AbstractCommandHandlerResultLogger.java URL: http://svn.apache.org/viewvc/james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/log/AbstractCommandHandlerResultLogger.java?rev=1172046r1=1172045r2=1172046view=diff == --- james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/log/AbstractCommandHandlerResultLogger.java (original) +++ james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/log/AbstractCommandHandlerResultLogger.java Sat Sep 17 18:47:43 2011 @@ -22,14 +22,13 @@ import org.apache.james.protocols.api.Co import org.apache.james.protocols.api.CommandHandlerResultHandler; import org.apache.james.protocols.api.ProtocolSession; import org.apache.james.protocols.api.Response; -import org.apache.james.protocols.api.RetCodeResponse; /** * * * */ -public abstract class AbstractCommandHandlerResultLoggerR extends RetCodeResponse, S extends ProtocolSession implements CommandHandlerResultHandlerR, S { +public abstract class AbstractCommandHandlerResultLoggerR extends Response, S extends ProtocolSession implements CommandHandlerResultHandlerR, S { Modified: james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/SMTPResponse.java URL: http://svn.apache.org/viewvc/james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/SMTPResponse.java?rev=1172046r1=1172045r2=1172046view=diff == --- james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/SMTPResponse.java (original) +++ james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/SMTPResponse.java Sat Sep 17 18:47:43 2011 @@ -23,12 +23,12 @@ import java.util.ArrayList; import java.util.LinkedList; import java.util.List; -import org.apache.james.protocols.api.RetCodeResponse; +import org.apache.james.protocols.api.Response; /** * Contains an SMTP result */ -public class SMTPResponse implements RetCodeResponse { +public class SMTPResponse implements Response { private String retCode = null; private ListCharSequence lines = null; Modified: james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/MailCmdHandler.java URL: http://svn.apache.org/viewvc/james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/MailCmdHandler.java?rev=1172046r1=1172045r2=1172046view=diff == --- james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/MailCmdHandler.java (original) +++ james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/MailCmdHandler.java Sat Sep 17 18:47:43 2011 @@ -30,7 +30,6 @@ import java.util.StringTokenizer; import org.apache.james.protocols.api.Request; import org.apache.james.protocols.api.Response; -import org.apache.james.protocols.api.RetCodeResponse; import org.apache.james.protocols.smtp.SMTPResponse; import org.apache.james.protocols.smtp.SMTPRetCode; import org.apache.james.protocols.smtp.SMTPSession; @@ -61,7 +60,7 @@ public class MailCmdHandler extends Abst public Response
svn commit: r1172047 - /james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/POP3Response.java
Author: norman Date: Sat Sep 17 18:48:10 2011 New Revision: 1172047 URL: http://svn.apache.org/viewvc?rev=1172047view=rev Log: Merge RetCodeResponse with Response interface Modified: james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/POP3Response.java Modified: james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/POP3Response.java URL: http://svn.apache.org/viewvc/james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/POP3Response.java?rev=1172047r1=1172046r2=1172047view=diff == --- james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/POP3Response.java (original) +++ james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/POP3Response.java Sat Sep 17 18:48:10 2011 @@ -23,12 +23,12 @@ import java.util.ArrayList; import java.util.LinkedList; import java.util.List; -import org.apache.james.protocols.api.RetCodeResponse; +import org.apache.james.protocols.api.Response; /** * Contains an SMTP result */ -public class POP3Response implements RetCodeResponse { +public class POP3Response implements Response { // POP3 response prefixes /** OK response. Requested content will follow */ - To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org
[jira] [Commented] (IMAP-340) James don't preserve UID order when copying messages
[ https://issues.apache.org/jira/browse/IMAP-340?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13107213#comment-13107213 ] Norman Maurer commented on IMAP-340: I think this should be moved to MAILBOX. James don't preserve UID order when copying messages Key: IMAP-340 URL: https://issues.apache.org/jira/browse/IMAP-340 Project: JAMES Imap Issue Type: Bug Components: Mailbox Affects Versions: 0.2.1 Reporter: Wojtek Strzalka Assignee: Wojtek Strzalka Fix For: 0.2.1 When copying messages in bulks, mailbox implementation don't preserve UID's order by usage of HashMap which don't guarantee elements order. -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira - To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org
[jira] [Created] (PROTOCOLS-30) STARTTLS handling is not correct and can cause touble execution of the STARTTLS handling
STARTTLS handling is not correct and can cause touble execution of the STARTTLS handling Key: PROTOCOLS-30 URL: https://issues.apache.org/jira/browse/PROTOCOLS-30 Project: JAMES Protocols Issue Type: Bug Components: api, smtp Affects Versions: 1.5 Reporter: Norman Maurer Assignee: Norman Maurer Fix For: 1.6 When we handler STARTTLS we are current write the Response to the client via Session.write(...) , then trigger Session.startTLS() and then return null from the CommandHandler. The problem is that returning null tells the LineHandler to execute the next CommandHandler as it things we was not able to handle the Request. It would be better to return a special type of Response and let the linehandler/Session handle all the other parts -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira - To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org
[jira] [Created] (PROTOCOLS-31) Add a simple netty bases SMTPServer implementation
Add a simple netty bases SMTPServer implementation -- Key: PROTOCOLS-31 URL: https://issues.apache.org/jira/browse/PROTOCOLS-31 Project: JAMES Protocols Issue Type: New Feature Components: smtp Affects Versions: 1.5 Reporter: Norman Maurer Assignee: Norman Maurer Fix For: 1.6 At the moment we only ship the api for the SMTP-Server + some transport independent stuff. It would be nice if we could also include some simple SMTPServer which can be used in an easy way. Something like subetha-smtp or mailster. -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira - To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org
svn commit: r1171499 - in /james/protocols/trunk: api/src/main/java/org/apache/james/protocols/api/ impl/src/main/java/org/apache/james/protocols/impl/ smtp/src/main/java/org/apache/james/protocols/sm
Author: norman Date: Fri Sep 16 10:54:43 2011 New Revision: 1171499 URL: http://svn.apache.org/viewvc?rev=1171499view=rev Log: Handle STARTTLS correctly by use an special interface for the SMTPStartTlsResponse. See PROTOCOLS-30 Added: james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/StartTlsResponse.java (with props) james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/SMTPStartTLSResponse.java (with props) Modified: james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/TLSSupportedSession.java james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/AbstractSession.java james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/SMTPResponse.java james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/esmtp/StartTlsCmdHandler.java Added: james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/StartTlsResponse.java URL: http://svn.apache.org/viewvc/james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/StartTlsResponse.java?rev=1171499view=auto == --- james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/StartTlsResponse.java (added) +++ james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/StartTlsResponse.java Fri Sep 16 10:54:43 2011 @@ -0,0 +1,30 @@ +/ + * 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.api; + +/** + * An special sub-type of {@link Response} which makes it possible to detect a response to a STARTTLS request. + * + * After writing this response its a MUST to enable STARTTLS before further processing + * + */ +public interface StartTlsResponse extends Response { + +} Propchange: james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/StartTlsResponse.java -- svn:mime-type = text/plain Modified: james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/TLSSupportedSession.java URL: http://svn.apache.org/viewvc/james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/TLSSupportedSession.java?rev=1171499r1=1171498r2=1171499view=diff == --- james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/TLSSupportedSession.java (original) +++ james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/TLSSupportedSession.java Fri Sep 16 10:54:43 2011 @@ -20,10 +20,12 @@ package org.apache.james.protocols.api; -import java.io.IOException; /** - * Session which supports TLS + * Session which supports STARTTLS. Implementations of this interface must take special + * care of handling {@link StartTlsResponse}'s. Once such a response was written to the client + * the server MUST take care of start the TLS encryption before do any futher processing + * * * */ @@ -58,11 +60,13 @@ public interface TLSSupportedSession ext */ boolean isTLSStarted(); + /** - * Start TLS encryption + * Write the response back to the client. Special care MUST be take to handle {@link StartTlsResponse} instances. + * * - * @throws IOException + * @param response */ -void startTLS() throws IOException; +void writeResponse(Response response); } Modified: james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/AbstractSession.java URL: http://svn.apache.org/viewvc/james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/AbstractSession.java?rev=1171499r1=1171498r2=1171499view=diff
svn commit: r1171500 - in /james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server: StartTlsPop3Response.java core/StlsCmdHandler.java
Author: norman Date: Fri Sep 16 10:56:13 2011 New Revision: 1171500 URL: http://svn.apache.org/viewvc?rev=1171500view=rev Log: Handle STARTTLS correctly. See PROTOCOLS-30 Added: james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/StartTlsPop3Response.java (with props) Modified: james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/core/StlsCmdHandler.java Added: james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/StartTlsPop3Response.java URL: http://svn.apache.org/viewvc/james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/StartTlsPop3Response.java?rev=1171500view=auto == --- james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/StartTlsPop3Response.java (added) +++ james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/StartTlsPop3Response.java Fri Sep 16 10:56:13 2011 @@ -0,0 +1,39 @@ +/ + * 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.pop3server; + +import org.apache.james.protocols.api.StartTlsResponse; + +/** + * Special sub-type of {@link POP3Response} which will trigger the start of TLS after the response was written to the client + * + * + */ +public class StartTlsPop3Response extends POP3Response implements StartTlsResponse{ + +public StartTlsPop3Response(String code, CharSequence description) { +super(code, description); +} + +public StartTlsPop3Response(String code) { +super(code); +} + +} Propchange: james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/StartTlsPop3Response.java -- svn:mime-type = text/plain Modified: james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/core/StlsCmdHandler.java URL: http://svn.apache.org/viewvc/james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/core/StlsCmdHandler.java?rev=1171500r1=1171499r2=1171500view=diff == --- james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/core/StlsCmdHandler.java (original) +++ james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/core/StlsCmdHandler.java Fri Sep 16 10:56:13 2011 @@ -19,13 +19,13 @@ package org.apache.james.pop3server.core; -import java.io.IOException; import java.util.ArrayList; import java.util.Collection; import java.util.List; import org.apache.james.pop3server.POP3Response; import org.apache.james.pop3server.POP3Session; +import org.apache.james.pop3server.StartTlsPop3Response; import org.apache.james.protocols.api.CommandHandler; import org.apache.james.protocols.api.Request; import org.apache.james.protocols.api.Response; @@ -49,23 +49,13 @@ public class StlsCmdHandler implements C // check if starttls is supported, the state is the right one and it was // not started before if (session.isStartTLSSupported() session.getHandlerState() == POP3Session.AUTHENTICATION_READY session.isTLSStarted() == false) { -response = new POP3Response(POP3Response.OK_RESPONSE, Begin TLS negotiation); -session.writeResponse(response); -try { -session.startTLS(); -} catch (IOException e) { -session.getLogger().info(Error while trying to secure connection, e); - -// disconnect -response = new POP3Response(POP3Response.ERR_RESPONSE); -response.setEndSession(true); -return response; -} +response = new StartTlsPop3Response(POP3Response.OK_RESPONSE, Begin TLS
svn commit: r1171501 - in /james/protocols/trunk/smtp-netty: ./ src/ src/main/ src/main/java/ src/main/java/org/ src/main/java/org/apache/ src/main/java/org/apache/james/ src/main/java/org/apache/jame
Author: norman Date: Fri Sep 16 10:57:30 2011 New Revision: 1171501 URL: http://svn.apache.org/viewvc?rev=1171501view=rev Log: Add simple SMTPServer by using netty. See PROTOCOLS-31 Added: james/protocols/trunk/smtp-netty/ (with props) james/protocols/trunk/smtp-netty/.classpath (with props) james/protocols/trunk/smtp-netty/.project (with props) james/protocols/trunk/smtp-netty/pom.xml (with props) james/protocols/trunk/smtp-netty/src/ james/protocols/trunk/smtp-netty/src/main/ james/protocols/trunk/smtp-netty/src/main/java/ james/protocols/trunk/smtp-netty/src/main/java/org/ james/protocols/trunk/smtp-netty/src/main/java/org/apache/ james/protocols/trunk/smtp-netty/src/main/java/org/apache/james/ james/protocols/trunk/smtp-netty/src/main/java/org/apache/james/protocols/ james/protocols/trunk/smtp-netty/src/main/java/org/apache/james/protocols/smtp/ james/protocols/trunk/smtp-netty/src/main/java/org/apache/james/protocols/smtp/netty/ james/protocols/trunk/smtp-netty/src/main/java/org/apache/james/protocols/smtp/netty/SMTPChannelUpstreamHandler.java (with props) james/protocols/trunk/smtp-netty/src/main/java/org/apache/james/protocols/smtp/netty/SMTPNettySession.java (with props) james/protocols/trunk/smtp-netty/src/main/java/org/apache/james/protocols/smtp/netty/SMTPResponseEncoder.java (with props) james/protocols/trunk/smtp-netty/src/main/java/org/apache/james/protocols/smtp/netty/SMTPServer.java (with props) Propchange: james/protocols/trunk/smtp-netty/ -- --- svn:ignore (added) +++ svn:ignore Fri Sep 16 10:57:30 2011 @@ -0,0 +1 @@ +target Added: james/protocols/trunk/smtp-netty/.classpath URL: http://svn.apache.org/viewvc/james/protocols/trunk/smtp-netty/.classpath?rev=1171501view=auto == --- james/protocols/trunk/smtp-netty/.classpath (added) +++ james/protocols/trunk/smtp-netty/.classpath Fri Sep 16 10:57:30 2011 @@ -0,0 +1,8 @@ +?xml version=1.0 encoding=UTF-8? +classpath + classpathentry kind=src path=src/main/java/ + classpathentry kind=src path=src/test/java/ + classpathentry kind=con path=org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5/ + classpathentry kind=con path=org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER/ + classpathentry kind=output path=target/classes/ +/classpath Propchange: james/protocols/trunk/smtp-netty/.classpath -- svn:mime-type = text/plain Added: james/protocols/trunk/smtp-netty/.project URL: http://svn.apache.org/viewvc/james/protocols/trunk/smtp-netty/.project?rev=1171501view=auto == --- james/protocols/trunk/smtp-netty/.project (added) +++ james/protocols/trunk/smtp-netty/.project Fri Sep 16 10:57:30 2011 @@ -0,0 +1,24 @@ +?xml version=1.0 encoding=UTF-8? +projectDescription + nameprotocols-smtp-netty/name + comment/comment + projects + /projects + buildSpec + buildCommand + nameorg.eclipse.jdt.core.javabuilder/name + arguments + /arguments + /buildCommand + buildCommand + nameorg.eclipse.m2e.core.maven2Builder/name + arguments + /arguments + /buildCommand + /buildSpec + natures + natureorg.eclipse.pde.PluginNature/nature + natureorg.eclipse.jdt.core.javanature/nature + natureorg.eclipse.m2e.core.maven2Nature/nature + /natures +/projectDescription Propchange: james/protocols/trunk/smtp-netty/.project -- svn:mime-type = text/plain Added: james/protocols/trunk/smtp-netty/pom.xml URL: http://svn.apache.org/viewvc/james/protocols/trunk/smtp-netty/pom.xml?rev=1171501view=auto == --- james/protocols/trunk/smtp-netty/pom.xml (added) +++ james/protocols/trunk/smtp-netty/pom.xml Fri Sep 16 10:57:30 2011 @@ -0,0 +1,103 @@ +?xml version=1.0 encoding=ISO-8859-15? +!-- + 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
svn commit: r1171502 - in /james/protocols/trunk: impl/src/main/java/org/apache/james/protocols/impl/ smtp/src/main/java/org/apache/james/protocols/smtp/ smtp/src/main/java/org/apache/james/protocols/
Author: norman Date: Fri Sep 16 10:58:43 2011 New Revision: 1171502 URL: http://svn.apache.org/viewvc?rev=1171502view=rev Log: Add simple SMTPServer by using netty. See PROTOCOLS-31 Added: james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/SMTPConfigurationImpl.java (with props) james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/hook/SimpleHook.java (with props) Modified: james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/AbstractChannelPipelineFactory.java james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/AbstractSSLAwareChannelPipelineFactory.java james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/SMTPConfiguration.java james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/SMTPProtocolHandlerChain.java Modified: james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/AbstractChannelPipelineFactory.java URL: http://svn.apache.org/viewvc/james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/AbstractChannelPipelineFactory.java?rev=1171502r1=1171501r2=1171502view=diff == --- james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/AbstractChannelPipelineFactory.java (original) +++ james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/AbstractChannelPipelineFactory.java Fri Sep 16 10:58:43 2011 @@ -30,6 +30,7 @@ import org.jboss.netty.handler.codec.fra import org.jboss.netty.handler.codec.oneone.OneToOneEncoder; import org.jboss.netty.handler.connection.ConnectionLimitUpstreamHandler; import org.jboss.netty.handler.connection.ConnectionPerIpLimitUpstreamHandler; +import org.jboss.netty.handler.execution.ExecutionHandler; import org.jboss.netty.handler.stream.ChunkedWriteHandler; import org.jboss.netty.util.HashedWheelTimer; @@ -46,14 +47,22 @@ public abstract class AbstractChannelPip private final HashedWheelTimer timer = new HashedWheelTimer(); private ChannelGroupHandler groupHandler; private int timeout; +private ExecutionHandler eHandler; public AbstractChannelPipelineFactory(int timeout, int maxConnections, int maxConnectsPerIp, ChannelGroup channels) { +this(timeout, maxConnections, maxConnectsPerIp, channels, null); +} + +public AbstractChannelPipelineFactory(int timeout, int maxConnections, int maxConnectsPerIp, ChannelGroup channels, ExecutionHandler eHandler) { connectionLimitHandler = new ConnectionLimitUpstreamHandler(maxConnections); connectionPerIpLimitHandler = new ConnectionPerIpLimitUpstreamHandler(maxConnectsPerIp); groupHandler = new ChannelGroupHandler(channels); this.timeout = timeout; +this.eHandler = eHandler; } + + /* * (non-Javadoc) * @see org.jboss.netty.channel.ChannelPipelineFactory#getPipeline() @@ -77,6 +86,10 @@ public abstract class AbstractChannelPip pipeline.addLast(streamer, new ChunkedWriteHandler()); pipeline.addLast(timeoutHandler, new TimeoutHandler(timer, timeout)); +if (eHandler != null) { +pipeline.addLast(executionHandler, eHandler); +} + pipeline.addLast(coreHandler, createHandler()); Modified: james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/AbstractSSLAwareChannelPipelineFactory.java URL: http://svn.apache.org/viewvc/james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/AbstractSSLAwareChannelPipelineFactory.java?rev=1171502r1=1171501r2=1171502view=diff == --- james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/AbstractSSLAwareChannelPipelineFactory.java (original) +++ james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/AbstractSSLAwareChannelPipelineFactory.java Fri Sep 16 10:58:43 2011 @@ -23,6 +23,7 @@ import javax.net.ssl.SSLEngine; import org.jboss.netty.channel.ChannelPipeline; import org.jboss.netty.channel.group.ChannelGroup; +import org.jboss.netty.handler.execution.ExecutionHandler; import org.jboss.netty.handler.ssl.SslHandler; /** @@ -36,13 +37,13 @@ public abstract class AbstractSSLAwareCh private String[] enabledCipherSuites = null; public AbstractSSLAwareChannelPipelineFactory(int timeout, -int maxConnections, int maxConnectsPerIp, ChannelGroup group) { -super(timeout, maxConnections, maxConnectsPerIp, group); +int maxConnections, int maxConnectsPerIp, ChannelGroup group, ExecutionHandler eHandler) { +super(timeout, maxConnections, maxConnectsPerIp, group, eHandler); } public AbstractSSLAwareChannelPipelineFactory(int timeout, -int maxConnections, int maxConnectsPerIp
svn commit: r1171509 - /james/protocols/trunk/smtp-netty/src/main/java/org/apache/james/protocols/smtp/netty/SMTPChannelUpstreamHandler.java
Author: norman Date: Fri Sep 16 11:27:01 2011 New Revision: 1171509 URL: http://svn.apache.org/viewvc?rev=1171509view=rev Log: Mark some stuff protected Modified: james/protocols/trunk/smtp-netty/src/main/java/org/apache/james/protocols/smtp/netty/SMTPChannelUpstreamHandler.java Modified: james/protocols/trunk/smtp-netty/src/main/java/org/apache/james/protocols/smtp/netty/SMTPChannelUpstreamHandler.java URL: http://svn.apache.org/viewvc/james/protocols/trunk/smtp-netty/src/main/java/org/apache/james/protocols/smtp/netty/SMTPChannelUpstreamHandler.java?rev=1171509r1=1171508r2=1171509view=diff == --- james/protocols/trunk/smtp-netty/src/main/java/org/apache/james/protocols/smtp/netty/SMTPChannelUpstreamHandler.java (original) +++ james/protocols/trunk/smtp-netty/src/main/java/org/apache/james/protocols/smtp/netty/SMTPChannelUpstreamHandler.java Fri Sep 16 11:27:01 2011 @@ -42,10 +42,10 @@ import org.slf4j.Logger; */ @Sharable public class SMTPChannelUpstreamHandler extends AbstractChannelUpstreamHandler { -private final Logger logger; -private final SMTPConfiguration conf; -private final SSLContext context; -private String[] enabledCipherSuites; +protected final Logger logger; +protected final SMTPConfiguration conf; +protected final SSLContext context; +protected String[] enabledCipherSuites; public SMTPChannelUpstreamHandler(ProtocolHandlerChain chain, SMTPConfiguration conf, Logger logger) { this(chain, conf, logger, null, null); - To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org
svn commit: r1171510 - in /james/server/trunk: ./ protocols-library/src/main/java/org/apache/james/protocols/lib/netty/ smtpserver/ smtpserver/src/main/java/org/apache/james/smtpserver/netty/
Author: norman Date: Fri Sep 16 11:27:54 2011 New Revision: 1171510 URL: http://svn.apache.org/viewvc?rev=1171510view=rev Log: Reuse protocols-smtp-netty jar Modified: james/server/trunk/pom.xml james/server/trunk/protocols-library/src/main/java/org/apache/james/protocols/lib/netty/AbstractConfigurableAsyncServer.java james/server/trunk/protocols-library/src/main/java/org/apache/james/protocols/lib/netty/AbstractExecutorAwareChannelPipelineFactory.java james/server/trunk/smtpserver/pom.xml 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/SMTPResponseEncoder.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=1171510r1=1171509r2=1171510view=diff == --- james/server/trunk/pom.xml (original) +++ james/server/trunk/pom.xml Fri Sep 16 11:27:54 2011 @@ -632,7 +632,11 @@ artifactIdprotocols-smtp/artifactId version${protocols.version}/version /dependency - +dependency + groupIdorg.apache.james.protocols/groupId + artifactIdprotocols-smtp-netty/artifactId + version${protocols.version}/version +/dependency dependency groupIdorg.apache.james/groupId 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=1171510r1=1171509r2=1171510view=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 Fri Sep 16 11:27:54 2011 @@ -239,8 +239,8 @@ public abstract class AbstractConfigurab @PostConstruct public final void init() throws Exception { if (isEnabled()) { -preInit(); buildSSLContext(); +preInit(); executionHandler = createExecutionHander(); bind(); @@ -378,6 +378,8 @@ public abstract class AbstractConfigurab */ private void buildSSLContext() throws Exception { +System.out.println(useStartTLS); + if (useStartTLS || useSSL) { FileInputStream fis = null; try { @@ -575,7 +577,7 @@ public abstract class AbstractConfigurab @Override protected ChannelPipelineFactory createPipelineFactory(ChannelGroup group) { -return new AbstractExecutorAwareChannelPipelineFactory(getTimeout(), connectionLimit, connPerIP, group, enabledCipherSuites) { +return new AbstractExecutorAwareChannelPipelineFactory(getTimeout(), connectionLimit, connPerIP, group, enabledCipherSuites, getExecutionHandler()) { @Override protected SSLContext getSSLContext() { return AbstractConfigurableAsyncServer.this.getSSLContext(); @@ -604,11 +606,6 @@ public abstract class AbstractConfigurab return AbstractConfigurableAsyncServer.this.getConnectionCountHandler(); } -@Override -protected ExecutionHandler getExecutionHandler() { -return AbstractConfigurableAsyncServer.this.getExecutionHandler(); -} - }; } Modified: james/server/trunk/protocols-library/src/main/java/org/apache/james/protocols/lib/netty/AbstractExecutorAwareChannelPipelineFactory.java URL: http://svn.apache.org/viewvc/james/server/trunk/protocols-library/src/main/java/org/apache/james/protocols/lib/netty/AbstractExecutorAwareChannelPipelineFactory.java?rev=1171510r1=1171509r2=1171510view=diff == --- james/server/trunk/protocols-library/src/main/java/org/apache/james/protocols/lib/netty/AbstractExecutorAwareChannelPipelineFactory.java (original) +++ james/server/trunk/protocols-library/src/main/java/org/apache/james/protocols/lib/netty/AbstractExecutorAwareChannelPipelineFactory.java Fri Sep 16 11:27:54 2011 @@ -31,30 +31,20 @@ import org.jboss.netty.handler.execution public abstract class AbstractExecutorAwareChannelPipelineFactory extends AbstractSSLAwareChannelPipelineFactory{ -public AbstractExecutorAwareChannelPipelineFactory(int timeout, int maxConnections, int maxConnectsPerIp, ChannelGroup