Author: norman
Date: Thu Dec 9 19:29:18 2010
New Revision: 1044103
URL: http://svn.apache.org/viewvc?rev=1044103&view=rev
Log:
Move logging support stuff to protocols
Added:
james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/ProtocolSessionLog.java
james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/log/
james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/log/AbstractCommandHandlerResultLogger.java
- copied, changed from r1044025,
james/server/trunk/smtpserver/src/main/java/org/apache/james/smtpserver/log/CommandHandlerResultLogger.java
james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/log/ConnectHandlerResultLogger.java
- copied, changed from r1044025,
james/server/trunk/smtpserver/src/main/java/org/apache/james/smtpserver/log/ConnectHandlerResultLogger.java
james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/log/LineHandlerResultLogger.java
- copied, changed from r1044025,
james/server/trunk/smtpserver/src/main/java/org/apache/james/smtpserver/log/LineHandlerResultLogger.java
james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/log/
james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/log/HookResultLogger.java
- copied, changed from r1044025,
james/server/trunk/smtpserver/src/main/java/org/apache/james/smtpserver/log/HookResultLogger.java
james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/log/SMTPCommandHandlerResultLogger.java
Modified:
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/AbstractSession.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/ProtocolSession.java
URL:
http://svn.apache.org/viewvc/james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/ProtocolSession.java?rev=1044103&r1=1044102&r2=1044103&view=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
Thu Dec 9 19:29:18 2010
@@ -78,4 +78,11 @@ public interface ProtocolSession {
* @return host ip address of the client
*/
public String getRemoteIPAddress();
+
+ /**
+ * Return the ID for the session
+ *
+ * @return id
+ */
+ public String getSessionID();
}
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=1044103&r1=1044102&r2=1044103&view=diff
==============================================================================
---
james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/AbstractSession.java
(original)
+++
james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/AbstractSession.java
Thu Dec 9 19:29:18 2010
@@ -22,6 +22,7 @@ package org.apache.james.protocols.impl;
import java.io.IOException;
import java.io.InputStream;
import java.net.InetSocketAddress;
+import java.util.Random;
import javax.net.ssl.SSLEngine;
@@ -39,18 +40,25 @@ import org.jboss.netty.handler.stream.Ch
*
*/
public abstract class AbstractSession implements TLSSupportedSession {
+ private static Random random = new Random();
protected ChannelHandlerContext handlerContext;
protected InetSocketAddress socketAddress;
- protected Log logger;
+ private Log logger;
+ private ProtocolSessionLog pLog = null;
+
protected SSLEngine engine;
protected String user;
+ private String id;
+
public AbstractSession(Log logger, ChannelHandlerContext handlerContext,
SSLEngine engine) {
this.handlerContext = handlerContext;
this.socketAddress = (InetSocketAddress)
handlerContext.getChannel().getRemoteAddress();
this.logger = logger;
this.engine = engine;
+ this.id = random.nextInt(1024) + "";
+
}
public AbstractSession(Log logger, ChannelHandlerContext handlerContext) {
@@ -132,7 +140,10 @@ public abstract class AbstractSession im
* @see org.apache.james.api.protocol.ProtocolSession#getLogger()
*/
public Log getLogger() {
- return logger;
+ if (pLog == null) {
+ pLog = new ProtocolSessionLog(this, logger);
+ }
+ return pLog;
}
@@ -160,6 +171,14 @@ public abstract class AbstractSession im
channel.write(new ChunkedStream(stream));
}
}
+
+ /*
+ * (non-Javadoc)
+ * @see org.apache.james.protocols.api.ProtocolSession#getSessionID()
+ */
+ public String getSessionID() {
+ return id;
+ }
Added:
james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/ProtocolSessionLog.java
URL:
http://svn.apache.org/viewvc/james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/ProtocolSessionLog.java?rev=1044103&view=auto
==============================================================================
---
james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/ProtocolSessionLog.java
(added)
+++
james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/ProtocolSessionLog.java
Thu Dec 9 19:29:18 2010
@@ -0,0 +1,198 @@
+/****************************************************************
+ * 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.impl;
+
+import org.apache.commons.logging.Log;
+import org.apache.james.protocols.api.ProtocolSession;
+
+/**
+ * A {...@link Log} implementation which suffix every log message with the
session id
+ * Id
+ *
+ *
+ */
+public class ProtocolSessionLog implements Log {
+ private Log logger;
+ private ProtocolSession session;
+
+ public ProtocolSessionLog(ProtocolSession session, Log logger) {
+ this.logger = logger;
+ this.session = session;
+ }
+
+ private String getText(Object obj) {
+ return "ID="+session.getSessionID() + " " + obj.toString();
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.apache.commons.logging.Log#debug(java.lang.Object)
+ */
+ public void debug(Object arg0) {
+ logger.debug(getText(arg0));
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.apache.commons.logging.Log#debug(java.lang.Object,
java.lang.Throwable)
+ */
+ public void debug(Object arg0, Throwable arg1) {
+ logger.debug(getText(arg0), arg1);
+
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.apache.commons.logging.Log#error(java.lang.Object)
+ */
+ public void error(Object arg0) {
+ logger.error(getText(arg0));
+
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.apache.commons.logging.Log#error(java.lang.Object,
java.lang.Throwable)
+ */
+ public void error(Object arg0, Throwable arg1) {
+ logger.error(getText(arg0), arg1);
+
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.apache.commons.logging.Log#fatal(java.lang.Object)
+ */
+ public void fatal(Object arg0) {
+ logger.fatal(getText(arg0));
+
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.apache.commons.logging.Log#fatal(java.lang.Object,
java.lang.Throwable)
+ */
+ public void fatal(Object arg0, Throwable arg1) {
+ logger.fatal(getText(arg0), arg1);
+
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.apache.commons.logging.Log#info(java.lang.Object)
+ */
+ public void info(Object arg0) {
+ logger.info(getText(arg0));
+
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.apache.commons.logging.Log#info(java.lang.Object,
java.lang.Throwable)
+ */
+ public void info(Object arg0, Throwable arg1) {
+ logger.info(getText(arg0), arg1);
+
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.apache.commons.logging.Log#isDebugEnabled()
+ */
+ public boolean isDebugEnabled() {
+ return logger.isDebugEnabled();
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.apache.commons.logging.Log#isErrorEnabled()
+ */
+ public boolean isErrorEnabled() {
+ return logger.isErrorEnabled();
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.apache.commons.logging.Log#isFatalEnabled()
+ */
+ public boolean isFatalEnabled() {
+ return logger.isFatalEnabled();
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.apache.commons.logging.Log#isInfoEnabled()
+ */
+ public boolean isInfoEnabled() {
+ return logger.isInfoEnabled();
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.apache.commons.logging.Log#isTraceEnabled()
+ */
+ public boolean isTraceEnabled() {
+ return logger.isTraceEnabled();
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.apache.commons.logging.Log#isWarnEnabled()
+ */
+ public boolean isWarnEnabled() {
+ return logger.isWarnEnabled();
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.apache.commons.logging.Log#trace(java.lang.Object)
+ */
+ public void trace(Object arg0) {
+ logger.trace(getText(arg0));
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.apache.commons.logging.Log#trace(java.lang.Object,
java.lang.Throwable)
+ */
+ public void trace(Object arg0, Throwable arg1) {
+ logger.trace(getText(arg0), arg1);
+
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.apache.commons.logging.Log#warn(java.lang.Object)
+ */
+ public void warn(Object arg0) {
+ logger.warn(getText(arg0));
+
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.apache.commons.logging.Log#warn(java.lang.Object,
java.lang.Throwable)
+ */
+ public void warn(Object arg0, Throwable arg1) {
+ logger.warn(getText(arg0), arg1);
+
+ }
+
+}
Copied:
james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/log/AbstractCommandHandlerResultLogger.java
(from r1044025,
james/server/trunk/smtpserver/src/main/java/org/apache/james/smtpserver/log/CommandHandlerResultLogger.java)
URL:
http://svn.apache.org/viewvc/james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/log/AbstractCommandHandlerResultLogger.java?p2=james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/log/AbstractCommandHandlerResultLogger.java&p1=james/server/trunk/smtpserver/src/main/java/org/apache/james/smtpserver/log/CommandHandlerResultLogger.java&r1=1044025&r2=1044103&rev=1044103&view=diff
==============================================================================
---
james/server/trunk/smtpserver/src/main/java/org/apache/james/smtpserver/log/CommandHandlerResultLogger.java
(original)
+++
james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/log/AbstractCommandHandlerResultLogger.java
Thu Dec 9 19:29:18 2010
@@ -16,39 +16,40 @@
* specific language governing permissions and limitations *
* under the License. *
****************************************************************/
-package org.apache.james.smtpserver.log;
+package org.apache.james.protocols.impl.log;
import org.apache.james.protocols.api.CommandHandler;
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.smtp.SMTPResponse;
-import org.apache.james.protocols.smtp.SMTPSession;
+import org.apache.james.protocols.api.RetCodeResponse;
/**
- * Log every 5xx and 4xx response in INFO level. The rest is logged via DEBUG
level
*
- * TODO: This should go to protocols
*
*
*/
-public class CommandHandlerResultLogger implements
CommandHandlerResultHandler<SMTPResponse, SMTPSession> {
+public abstract class AbstractCommandHandlerResultLogger<R extends
RetCodeResponse, S extends ProtocolSession> implements
CommandHandlerResultHandler<R, S> {
+
+
/*
* (non-Javadoc)
* @see
org.apache.james.protocols.api.CommandHandlerResultHandler#onResponse(org.apache.james.protocols.api.ProtocolSession,
org.apache.james.protocols.api.Response, long,
org.apache.james.protocols.api.CommandHandler)
*/
- public Response onResponse(ProtocolSession session, SMTPResponse response,
long executionTime, CommandHandler<SMTPSession> handler) {
+ public Response onResponse(ProtocolSession session, R response, long
executionTime, CommandHandler<S> handler) {
String code = response.getRetCode();
String msg = handler.getClass().getName() + ": " + response.toString();
- // check if the response was a perm error or a temp error
- if (code.startsWith("5") || code.startsWith("4")) {
+ // check if the response should log with info
+ if (logWithInfo(code)) {
session.getLogger().info(msg);
} else {
session.getLogger().debug(msg);
}
return response;
}
+
+ protected abstract boolean logWithInfo(String retCode);
}
Copied:
james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/log/ConnectHandlerResultLogger.java
(from r1044025,
james/server/trunk/smtpserver/src/main/java/org/apache/james/smtpserver/log/ConnectHandlerResultLogger.java)
URL:
http://svn.apache.org/viewvc/james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/log/ConnectHandlerResultLogger.java?p2=james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/log/ConnectHandlerResultLogger.java&p1=james/server/trunk/smtpserver/src/main/java/org/apache/james/smtpserver/log/ConnectHandlerResultLogger.java&r1=1044025&r2=1044103&rev=1044103&view=diff
==============================================================================
---
james/server/trunk/smtpserver/src/main/java/org/apache/james/smtpserver/log/ConnectHandlerResultLogger.java
(original)
+++
james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/log/ConnectHandlerResultLogger.java
Thu Dec 9 19:29:18 2010
@@ -16,26 +16,24 @@
* specific language governing permissions and limitations *
* under the License. *
****************************************************************/
-package org.apache.james.smtpserver.log;
+package org.apache.james.protocols.impl.log;
import org.apache.james.protocols.api.ConnectHandler;
import org.apache.james.protocols.api.ConnectHandlerResultHandler;
import org.apache.james.protocols.api.ProtocolSession;
-import org.apache.james.protocols.smtp.SMTPSession;
/**
* Log disconnects caused by {...@link ConnectHandler} vi INFO. The rest is
logged via DEBUG
*
- * TODO: This should go to protocols
*/
-public class ConnectHandlerResultLogger implements
ConnectHandlerResultHandler<SMTPSession>{
+public class ConnectHandlerResultLogger implements
ConnectHandlerResultHandler<ProtocolSession>{
/*
* (non-Javadoc)
* @see
org.apache.james.protocols.api.ConnectHandlerResultHandler#onResponse(org.apache.james.protocols.api.ProtocolSession,
boolean, long, org.apache.james.protocols.api.ConnectHandler)
*/
- public boolean onResponse(ProtocolSession session, boolean response, long
executionTime, ConnectHandler<SMTPSession> handler) {
+ public boolean onResponse(ProtocolSession session, boolean response, long
executionTime, ConnectHandler<ProtocolSession> handler) {
if (response) {
session.getLogger().info(handler.getClass().getName() + "
disconnect=true");
Copied:
james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/log/LineHandlerResultLogger.java
(from r1044025,
james/server/trunk/smtpserver/src/main/java/org/apache/james/smtpserver/log/LineHandlerResultLogger.java)
URL:
http://svn.apache.org/viewvc/james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/log/LineHandlerResultLogger.java?p2=james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/log/LineHandlerResultLogger.java&p1=james/server/trunk/smtpserver/src/main/java/org/apache/james/smtpserver/log/LineHandlerResultLogger.java&r1=1044025&r2=1044103&rev=1044103&view=diff
==============================================================================
---
james/server/trunk/smtpserver/src/main/java/org/apache/james/smtpserver/log/LineHandlerResultLogger.java
(original)
+++
james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/log/LineHandlerResultLogger.java
Thu Dec 9 19:29:18 2010
@@ -16,26 +16,24 @@
* specific language governing permissions and limitations *
* under the License. *
****************************************************************/
-package org.apache.james.smtpserver.log;
+package org.apache.james.protocols.impl.log;
import org.apache.james.protocols.api.LineHandler;
import org.apache.james.protocols.api.LineHandlerResultHandler;
import org.apache.james.protocols.api.ProtocolSession;
-import org.apache.james.protocols.smtp.SMTPSession;
/**
* Log disconnects caused by {...@link LineHandler} via INFO. The rest via
DEBUG
*
- * TODO: This should go to protocols
-
*/
-public class LineHandlerResultLogger implements
LineHandlerResultHandler<SMTPSession>{
+public class LineHandlerResultLogger implements
LineHandlerResultHandler<ProtocolSession>{
+
/*
* (non-Javadoc)
* @see
org.apache.james.protocols.api.LineHandlerResultHandler#onResponse(org.apache.james.protocols.api.ProtocolSession,
boolean, long, org.apache.james.protocols.api.LineHandler)
*/
- public boolean onResponse(ProtocolSession session, boolean response, long
executionTime, LineHandler<SMTPSession> handler) {
+ public boolean onResponse(ProtocolSession session, boolean response, long
executionTime, LineHandler<ProtocolSession> handler) {
if (response) {
session.getLogger().info(handler.getClass().getName() + "
disconnect=true");
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=1044103&r1=1044102&r2=1044103&view=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
Thu Dec 9 19:29:18 2010
@@ -99,13 +99,6 @@ public interface SMTPSession extends TLS
*/
boolean isAuthSupported();
-
- /**
- * Returns the SMTP session id
- *
- * @return SMTP session id
- */
- String getSessionID();
/**
* Returns the recipient count
Copied:
james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/log/HookResultLogger.java
(from r1044025,
james/server/trunk/smtpserver/src/main/java/org/apache/james/smtpserver/log/HookResultLogger.java)
URL:
http://svn.apache.org/viewvc/james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/log/HookResultLogger.java?p2=james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/log/HookResultLogger.java&p1=james/server/trunk/smtpserver/src/main/java/org/apache/james/smtpserver/log/HookResultLogger.java&r1=1044025&r2=1044103&rev=1044103&view=diff
==============================================================================
---
james/server/trunk/smtpserver/src/main/java/org/apache/james/smtpserver/log/HookResultLogger.java
(original)
+++
james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/log/HookResultLogger.java
Thu Dec 9 19:29:18 2010
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations *
* under the License. *
****************************************************************/
-package org.apache.james.smtpserver.log;
+package org.apache.james.protocols.smtp.core.log;
import org.apache.james.protocols.smtp.SMTPSession;
import org.apache.james.protocols.smtp.hook.Hook;
@@ -29,7 +29,6 @@ import org.apache.james.protocols.smtp.h
* Log the {...@link HookResult}. If {...@link HookReturnCode#DENY}, {...@link
HookReturnCode#DENYSOFT} or {...@link HookReturnCode#DISCONNECT} was used it
will get
* logged to INFO. If not to DEBUG
*
- * TODO: This should go to protocols
*/
public class HookResultLogger implements HookResultHook{
Added:
james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/log/SMTPCommandHandlerResultLogger.java
URL:
http://svn.apache.org/viewvc/james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/log/SMTPCommandHandlerResultLogger.java?rev=1044103&view=auto
==============================================================================
---
james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/log/SMTPCommandHandlerResultLogger.java
(added)
+++
james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/log/SMTPCommandHandlerResultLogger.java
Thu Dec 9 19:29:18 2010
@@ -0,0 +1,35 @@
+/****************************************************************
+ * 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.smtp.core.log;
+
+import org.apache.james.protocols.impl.log.AbstractCommandHandlerResultLogger;
+import org.apache.james.protocols.smtp.SMTPResponse;
+import org.apache.james.protocols.smtp.SMTPSession;
+
+public class SMTPCommandHandlerResultLogger extends
AbstractCommandHandlerResultLogger<SMTPResponse, SMTPSession>{
+
+ @Override
+ protected boolean logWithInfo(String retCode) {
+ if (retCode.startsWith("5") || retCode.startsWith("4")) {
+ return true;
+ }
+ return false;
+ }
+
+}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]