You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by no...@apache.org on 2011/06/22 20:45:19 UTC
svn commit: r1138577 - in /james/protocols/trunk: ./ api/
api/src/main/java/org/apache/james/protocols/api/
smtp/src/main/java/org/apache/james/protocols/smtp/core/
smtp/src/main/java/org/apache/james/protocols/smtp/hook/
Author: norman
Date: Wed Jun 22 18:45:18 2011
New Revision: 1138577
URL: http://svn.apache.org/viewvc?rev=1138577&view=rev
Log:
Add lifecycle support via the LifecycleAwareProtocolHandler interface. Also add an interface to load ProtocolHandlers, inject resources and call lifecycle methods. See PROTOCOLS-24
Added:
james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/LifecycleAwareProtocolHandler.java
james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/ProtocolHandler.java
james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/ProtocolHandlerLoader.java
Modified:
james/protocols/trunk/api/pom.xml
james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/CommandHandler.java
james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/CommandHandlerResultHandler.java
james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/ConnectHandler.java
james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/ConnectHandlerResultHandler.java
james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/HandlersPackage.java
james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/LineHandler.java
james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/LineHandlerResultHandler.java
james/protocols/trunk/pom.xml
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/hook/Hook.java
james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/hook/HookResultHook.java
Modified: james/protocols/trunk/api/pom.xml
URL: http://svn.apache.org/viewvc/james/protocols/trunk/api/pom.xml?rev=1138577&r1=1138576&r2=1138577&view=diff
==============================================================================
--- james/protocols/trunk/api/pom.xml (original)
+++ james/protocols/trunk/api/pom.xml Wed Jun 22 18:45:18 2011
@@ -77,5 +77,9 @@
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</dependency>
+ <dependency>
+ <groupId>commons-configuration</groupId>
+ <artifactId>commons-configuration</artifactId>
+ </dependency>
</dependencies>
</project>
\ No newline at end of file
Modified: james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/CommandHandler.java
URL: http://svn.apache.org/viewvc/james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/CommandHandler.java?rev=1138577&r1=1138576&r2=1138577&view=diff
==============================================================================
--- james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/CommandHandler.java (original)
+++ james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/CommandHandler.java Wed Jun 22 18:45:18 2011
@@ -31,7 +31,7 @@ import java.util.Collection;
* therefore the command handlers must store all the state information
* in the Session object
*/
- public interface CommandHandler<Session extends ProtocolSession> {
+ public interface CommandHandler<Session extends ProtocolSession> extends ProtocolHandler{
/**
* Handle the command
**/
Modified: james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/CommandHandlerResultHandler.java
URL: http://svn.apache.org/viewvc/james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/CommandHandlerResultHandler.java?rev=1138577&r1=1138576&r2=1138577&view=diff
==============================================================================
--- james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/CommandHandlerResultHandler.java (original)
+++ james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/CommandHandlerResultHandler.java Wed Jun 22 18:45:18 2011
@@ -19,7 +19,7 @@
package org.apache.james.protocols.api;
-public interface CommandHandlerResultHandler<R extends Response, S extends ProtocolSession> {
+public interface CommandHandlerResultHandler<R extends Response, S extends ProtocolSession> extends ProtocolHandler{
/**
* Get called when a {@link Response} was returned from the {@link CommandHandler}
Modified: james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/ConnectHandler.java
URL: http://svn.apache.org/viewvc/james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/ConnectHandler.java?rev=1138577&r1=1138576&r2=1138577&view=diff
==============================================================================
--- james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/ConnectHandler.java (original)
+++ james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/ConnectHandler.java Wed Jun 22 18:45:18 2011
@@ -27,7 +27,7 @@ package org.apache.james.protocols.api;
* therefore the handlers must store all the state information
* in the Session object
*/
-public interface ConnectHandler<Session extends ProtocolSession> {
+public interface ConnectHandler<Session extends ProtocolSession> extends ProtocolHandler{
/**
* Handle connection and disconnect if true is returned
*
Modified: james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/ConnectHandlerResultHandler.java
URL: http://svn.apache.org/viewvc/james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/ConnectHandlerResultHandler.java?rev=1138577&r1=1138576&r2=1138577&view=diff
==============================================================================
--- james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/ConnectHandlerResultHandler.java (original)
+++ james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/ConnectHandlerResultHandler.java Wed Jun 22 18:45:18 2011
@@ -25,7 +25,7 @@ package org.apache.james.protocols.api;
*
* @param <S>
*/
-public interface ConnectHandlerResultHandler<S extends ProtocolSession> {
+public interface ConnectHandlerResultHandler<S extends ProtocolSession> extends ProtocolHandler{
/**
* Called after the {@link ConnectHandler} returned a result
Modified: james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/HandlersPackage.java
URL: http://svn.apache.org/viewvc/james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/HandlersPackage.java?rev=1138577&r1=1138576&r2=1138577&view=diff
==============================================================================
--- james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/HandlersPackage.java (original)
+++ james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/HandlersPackage.java Wed Jun 22 18:45:18 2011
@@ -28,7 +28,7 @@ import java.util.List;
* a single object.
* This is used for the default set of CoreCommands.
*/
-public interface HandlersPackage {
+public interface HandlersPackage extends ProtocolHandler{
/**
* Return a List which contains a set of CommandHandlers
Added: james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/LifecycleAwareProtocolHandler.java
URL: http://svn.apache.org/viewvc/james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/LifecycleAwareProtocolHandler.java?rev=1138577&view=auto
==============================================================================
--- james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/LifecycleAwareProtocolHandler.java (added)
+++ james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/LifecycleAwareProtocolHandler.java Wed Jun 22 18:45:18 2011
@@ -0,0 +1,45 @@
+/****************************************************************
+ * 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 org.apache.commons.configuration.Configuration;
+import org.apache.commons.configuration.ConfigurationException;
+
+/**
+ * This interface allows to handle lifecycles for handlers and hooks
+ *
+ */
+public interface LifecycleAwareProtocolHandler extends ProtocolHandler{
+
+
+ /**
+ * Init with the given {@link Configuration}
+ *
+ * @param config
+ * @throws ConfigurationException
+ */
+ public void init(Configuration config) throws ConfigurationException;
+
+ /**
+ * Destroy object
+ */
+ public void destroy();
+
+
+}
Modified: james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/LineHandler.java
URL: http://svn.apache.org/viewvc/james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/LineHandler.java?rev=1138577&r1=1138576&r2=1138577&view=diff
==============================================================================
--- james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/LineHandler.java (original)
+++ james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/LineHandler.java Wed Jun 22 18:45:18 2011
@@ -24,7 +24,7 @@ package org.apache.james.protocols.api;
*
* Only one {@link LineHandler} will get called per line
*/
-public interface LineHandler<Session extends ProtocolSession> {
+public interface LineHandler<Session extends ProtocolSession> extends ProtocolHandler{
/**
* Processing the give line. The line includes the CRLF delimiter.
Modified: james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/LineHandlerResultHandler.java
URL: http://svn.apache.org/viewvc/james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/LineHandlerResultHandler.java?rev=1138577&r1=1138576&r2=1138577&view=diff
==============================================================================
--- james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/LineHandlerResultHandler.java (original)
+++ james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/LineHandlerResultHandler.java Wed Jun 22 18:45:18 2011
@@ -26,7 +26,7 @@ package org.apache.james.protocols.api;
*
* @param <S>
*/
-public interface LineHandlerResultHandler<S extends ProtocolSession> {
+public interface LineHandlerResultHandler<S extends ProtocolSession> extends ProtocolHandler {
/**
Added: james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/ProtocolHandler.java
URL: http://svn.apache.org/viewvc/james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/ProtocolHandler.java?rev=1138577&view=auto
==============================================================================
--- james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/ProtocolHandler.java (added)
+++ james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/ProtocolHandler.java Wed Jun 22 18:45:18 2011
@@ -0,0 +1,31 @@
+/****************************************************************
+ * 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;
+
+
+/**
+ * Just the base interface for all kind of "protocol" handlers.
+ *
+ * Every of them should implement this interface
+ *
+ */
+public interface ProtocolHandler {
+
+}
Added: james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/ProtocolHandlerLoader.java
URL: http://svn.apache.org/viewvc/james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/ProtocolHandlerLoader.java?rev=1138577&view=auto
==============================================================================
--- james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/ProtocolHandlerLoader.java (added)
+++ james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/ProtocolHandlerLoader.java Wed Jun 22 18:45:18 2011
@@ -0,0 +1,64 @@
+/****************************************************************
+ * 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 org.apache.commons.configuration.Configuration;
+
+/**
+ * Implementations of this interface are responsible for loading instances
+ * of {@link ProtocolHandler}. This includes to inject all needed resources and
+ * execute any lifecycle methods
+ *
+ *
+ */
+public interface ProtocolHandlerLoader {
+
+ /**
+ * Load the {@link ProtocolHandler} and make sure all lifecycle methods are called and all
+ * needed services injected.
+ *
+ * The class to load is identified by the class attribute in the config
+ *
+ * @param config
+ * @return handler
+ * @throws LoadingException
+ */
+ public ProtocolHandler load(Configuration config) throws LoadingException;
+
+
+ /**
+ * Exception which will get thrown if the loading of a {@link ProtocolHandler} failed
+ *
+ *
+ */
+ public class LoadingException extends Exception {
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1710169767810301710L;
+
+ public LoadingException(String msg, Throwable t) {
+ super(msg, t);
+ }
+
+ public LoadingException(String msg) {
+ super(msg);
+ }
+ }
+}
Modified: james/protocols/trunk/pom.xml
URL: http://svn.apache.org/viewvc/james/protocols/trunk/pom.xml?rev=1138577&r1=1138576&r2=1138577&view=diff
==============================================================================
--- james/protocols/trunk/pom.xml (original)
+++ james/protocols/trunk/pom.xml Wed Jun 22 18:45:18 2011
@@ -362,6 +362,22 @@
<artifactId>slf4j-api</artifactId>
<version>1.6.1</version>
</dependency>
+
+ <dependency>
+ <groupId>commons-configuration</groupId>
+ <artifactId>commons-configuration</artifactId>
+ <version>1.6</version>
+ <exclusions>
+ <exclusion>
+ <artifactId>commons-digester</artifactId>
+ <groupId>commons-digester</groupId>
+ </exclusion>
+ <exclusion>
+ <artifactId>commons-beanutils-core</artifactId>
+ <groupId>commons-beanutils</groupId>
+ </exclusion>
+ </exclusions>
+ </dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
Modified: james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/DataLineFilter.java
URL: http://svn.apache.org/viewvc/james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/DataLineFilter.java?rev=1138577&r1=1138576&r2=1138577&view=diff
==============================================================================
--- james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/DataLineFilter.java (original)
+++ james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/DataLineFilter.java Wed Jun 22 18:45:18 2011
@@ -22,13 +22,14 @@
package org.apache.james.protocols.smtp.core;
import org.apache.james.protocols.api.LineHandler;
+import org.apache.james.protocols.api.ProtocolHandler;
import org.apache.james.protocols.smtp.SMTPSession;
/**
* DataLineFilter are used to check the Data stream while the message is
* being received.
*/
-public interface DataLineFilter {
+public interface DataLineFilter extends ProtocolHandler{
/**
* Handle line processing
Modified: james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/hook/Hook.java
URL: http://svn.apache.org/viewvc/james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/hook/Hook.java?rev=1138577&r1=1138576&r2=1138577&view=diff
==============================================================================
--- james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/hook/Hook.java (original)
+++ james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/hook/Hook.java Wed Jun 22 18:45:18 2011
@@ -18,11 +18,13 @@
****************************************************************/
package org.apache.james.protocols.smtp.hook;
+import org.apache.james.protocols.api.ProtocolHandler;
+
/**
* Just and marker interface for the different Hooks
*
*
*/
-public interface Hook {
+public interface Hook extends ProtocolHandler{
}
Modified: james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/hook/HookResultHook.java
URL: http://svn.apache.org/viewvc/james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/hook/HookResultHook.java?rev=1138577&r1=1138576&r2=1138577&view=diff
==============================================================================
--- james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/hook/HookResultHook.java (original)
+++ james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/hook/HookResultHook.java Wed Jun 22 18:45:18 2011
@@ -22,7 +22,7 @@ package org.apache.james.protocols.smtp.
import org.apache.james.protocols.smtp.SMTPSession;
-public interface HookResultHook {
+public interface HookResultHook extends Hook{
HookResult onHookResult(SMTPSession session,HookResult result, long executionTime, Hook object);
}
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org