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 2010/01/15 17:33:59 UTC
svn commit: r899690 - in /james/server/trunk: remotemanager-function/
remotemanager-function/src/main/java/org/apache/james/remotemanager/
remotemanager-function/src/main/java/org/apache/james/remotemanager/core/
remotemanager-function/src/main/java/or...
Author: norman
Date: Fri Jan 15 16:33:58 2010
New Revision: 899690
URL: http://svn.apache.org/viewvc?rev=899690&view=rev
Log:
more work on AsyncRemoteManager (JAMES-953)
Added:
james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/core/AuthorizationHandler.java
james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/mina/
james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/mina/AsyncRemoteManager.java
james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/mina/RemoteManagerIoHandler.java
james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/mina/RemoteManagerSessionImpl.java
james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/mina/filter/
james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/mina/filter/FilterLineHandlerAdapter.java
james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/mina/filter/RemoteManagerResponseFilter.java
james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/mina/filter/RemoteManagerValidationFilter.java
Removed:
james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/core/WelcomeHandler.java
Modified:
james/server/trunk/remotemanager-function/pom.xml
james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/RemoteManagerHandler.java
james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/RemoteManagerSession.java
james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/core/AddHamCmdHandler.java
james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/core/AddSpamCmdHandler.java
james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/core/CoreCmdHandlerLoader.java
james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/core/ExportBayesianDataCmdHandler.java
james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/core/ImportBayesianDataCmdHandler.java
james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/core/QuitCmdHandler.java
james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/core/ResetBayesianDataCmdHandler.java
james/server/trunk/remotemanager-function/src/test/java/org/apache/james/remotemanager/RemoteManagerTest.java
james/server/trunk/smtpserver-function/pom.xml
james/server/trunk/socket-api/src/main/java/org/apache/james/api/protocol/LogEnabledSession.java
james/server/trunk/socket-api/src/main/java/org/apache/james/api/protocol/TLSSupportedSession.java
Modified: james/server/trunk/remotemanager-function/pom.xml
URL: http://svn.apache.org/viewvc/james/server/trunk/remotemanager-function/pom.xml?rev=899690&r1=899689&r2=899690&view=diff
==============================================================================
--- james/server/trunk/remotemanager-function/pom.xml (original)
+++ james/server/trunk/remotemanager-function/pom.xml Fri Jan 15 16:33:58 2010
@@ -94,8 +94,17 @@
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
</dependency>
+ <dependency>
+ <groupId>org.apache.james</groupId>
+ <artifactId>james-server-mina-socket-library</artifactId>
+ </dependency>
<dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-log4j12</artifactId>
+ <scope>runtime</scope>
+ </dependency>
+ <dependency>
<groupId>org.apache.james</groupId>
<artifactId>james-server-core-api</artifactId>
<type>test-jar</type>
Modified: james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/RemoteManagerHandler.java
URL: http://svn.apache.org/viewvc/james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/RemoteManagerHandler.java?rev=899690&r1=899689&r2=899690&view=diff
==============================================================================
--- james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/RemoteManagerHandler.java (original)
+++ james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/RemoteManagerHandler.java Fri Jan 15 16:33:58 2010
@@ -33,7 +33,6 @@
import org.apache.james.socket.api.CRLFTerminatedReader;
import org.apache.james.socket.api.ProtocolContext;
import org.apache.james.socket.api.ProtocolHandler;
-import org.apache.james.socket.api.Watchdog;
/**
@@ -49,7 +48,7 @@
private final RemoteManagerHandlerConfigurationData theConfigData;
private ProtocolContext context;
- private Map<Object,Object> stateMap = new HashMap<Object, Object>();
+ private Map<String,Object> stateMap = new HashMap<String, Object>();
private boolean sessionEnded;
@@ -72,6 +71,9 @@
public void handleProtocol(ProtocolContext context) throws IOException {
this.context = context;
sessionEnded = false;
+
+ context.getWatchdog().start();
+
getState().put(RemoteManagerSession.CURRENT_USERREPOSITORY, "LocalUsers");
@@ -86,37 +88,6 @@
}
}
- context.writeLoggedResponse("Please enter your login and password");
- String login = null;
- String password = null;
- do {
- if (login != null) {
- final String message = "Login failed for " + login;
- context.writeLoggedFlushedResponse(message);
- }
- context.writeLoggedFlushedResponse("Login id:");
- login = context.getInputReader().readLine().trim();
- context.writeLoggedFlushedResponse("Password:");
- password = context.getInputReader().readLine().trim();
- } while (!password.equals(theConfigData.getAdministrativeAccountData().get(login)) || password.length() == 0);
-
- StringBuilder messageBuffer =
- new StringBuilder(64)
- .append("Welcome ")
- .append(login)
- .append(". HELP for a list of commands");
- context.getOutputWriter().println( messageBuffer.toString() );
- context.getOutputWriter().flush();
- if (context.getLogger().isInfoEnabled()) {
- StringBuilder infoBuffer =
- new StringBuilder(128)
- .append("Login for ")
- .append(login)
- .append(" successful");
- context.getLogger().info(infoBuffer.toString());
- }
-
- context.getWatchdog().start();
while(!sessionEnded) {
String line = null;
// parse the command
@@ -134,9 +105,8 @@
}
if (lineHandlers.size() > 0) {
- context.getOutputWriter().print(theConfigData.getPrompt());
- context.getOutputWriter().flush();
-
+ //context.getOutputWriter().print(theConfigData.getPrompt());
+ //context.getOutputWriter().flush();
((LineHandler) lineHandlers.getLast()).onLine(this, line);
} else {
sessionEnded = true;
@@ -145,15 +115,6 @@
}
context.getWatchdog().stop();
- if (context.getLogger().isInfoEnabled()) {
- StringBuilder infoBuffer =
- new StringBuilder(64)
- .append("Logout for ")
- .append(login)
- .append(".");
- context.getLogger().info(infoBuffer.toString());
- }
-
}
/**
@@ -171,7 +132,7 @@
sessionEnded = true;
// clear the state map
- getState().clear();
+ resetState();
// empty any previous line handler and add self (command dispatcher)
// as the default.
@@ -188,23 +149,15 @@
return context.getLogger();
}
- /**
+ /*
* (non-Javadoc)
- * @see org.apache.james.remotemanager.RemoteManagerSession#getState()
+ * @see org.apache.james.api.protocol.LogEnabledSession#getState()
*/
- public Map<Object, Object> getState() {
+ public Map<String, Object> getState() {
return stateMap;
}
/**
- * (non-Javadoc)
- * @see org.apache.james.remotemanager.RemoteManagerSession#getWatchdog()
- */
- public Watchdog getWatchdog() {
- return context.getWatchdog();
- }
-
- /**
* @see org.apache.james.remotemanager.RemoteManagerSession#writeRemoteManagerResponse(org.apache.james.remotemanager.RemoteManagerResponse)
*/
public void writeRemoteManagerResponse(RemoteManagerResponse response) {
@@ -228,5 +181,43 @@
}
}
+ /*
+ * (non-Javadoc)
+ * @see org.apache.james.api.protocol.LogEnabledSession#resetState()
+ */
+ public void resetState() {
+ stateMap.clear();
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.apache.james.remotemanager.RemoteManagerSession#popLineHandler()
+ */
+ public void popLineHandler() {
+ if (lineHandlers != null) {
+ lineHandlers.removeLast();
+ }
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.apache.james.remotemanager.RemoteManagerSession#pushLineHandler(org.apache.james.remotemanager.LineHandler)
+ */
+ public void pushLineHandler(LineHandler lineHandler) {
+ if (lineHandlers == null) {
+ lineHandlers = new LinkedList<LineHandler>();
+ }
+ lineHandlers.addLast(lineHandler);
+ }
+
+
+ /*
+ * (non-Javadoc)
+ * @see org.apache.james.remotemanager.RemoteManagerSession#getAdministrativeAccountData()
+ */
+ public Map<String, String> getAdministrativeAccountData() {
+ return theConfigData.getAdministrativeAccountData();
+ }
+
}
Modified: james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/RemoteManagerSession.java
URL: http://svn.apache.org/viewvc/james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/RemoteManagerSession.java?rev=899690&r1=899689&r2=899690&view=diff
==============================================================================
--- james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/RemoteManagerSession.java (original)
+++ james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/RemoteManagerSession.java Fri Jan 15 16:33:58 2010
@@ -22,7 +22,6 @@
import java.util.Map;
import org.apache.james.api.protocol.LogEnabledSession;
-import org.apache.james.socket.api.Watchdog;
public interface RemoteManagerSession extends LogEnabledSession{
@@ -31,14 +30,6 @@
public final static String REGEX_IDENTIFIER = "regex=";
public final static String KEY_IDENTIFIER = "key=";
-
- /**
- * Return state map which should get used to store temporary data
- *
- * @return stateMap
- */
- public Map<Object,Object> getState();
-
/**
* Write response to client
*
@@ -48,9 +39,16 @@
/**
- * Return the Watchdog
- *
- * @return watchdog
+ * Put a new line handler in the chain
+ * @param overrideCommandHandler
*/
- public Watchdog getWatchdog();
+ public void pushLineHandler(LineHandler overrideCommandHandler);
+
+ /**
+ * Pop the last command handler
+ */
+ public void popLineHandler();
+
+
+ public Map<String,String> getAdministrativeAccountData();
}
Modified: james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/core/AddHamCmdHandler.java
URL: http://svn.apache.org/viewvc/james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/core/AddHamCmdHandler.java?rev=899690&r1=899689&r2=899690&view=diff
==============================================================================
--- james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/core/AddHamCmdHandler.java (original)
+++ james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/core/AddHamCmdHandler.java Fri Jan 15 16:33:58 2010
@@ -83,7 +83,7 @@
try {
// stop watchdog cause feeding can take some time
- session.getWatchdog().stop();
+ //session.getWatchdog().stop();
if (args[0].equalsIgnoreCase("DIR")) {
count = bayesianAnalyzerManagement.addHamFromDir(args[1]);
@@ -99,7 +99,7 @@
session.getLogger().error("Error on feeding BayesianAnalysis: " + e);
response = new RemoteManagerResponse("Error on feeding BayesianAnalysis: " + e);
} finally {
- session.getWatchdog().start();
+ //session.getWatchdog().start();
}
return response;
}
Modified: james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/core/AddSpamCmdHandler.java
URL: http://svn.apache.org/viewvc/james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/core/AddSpamCmdHandler.java?rev=899690&r1=899689&r2=899690&view=diff
==============================================================================
--- james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/core/AddSpamCmdHandler.java (original)
+++ james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/core/AddSpamCmdHandler.java Fri Jan 15 16:33:58 2010
@@ -82,7 +82,7 @@
try {
// stop watchdog cause feeding can take some time
- session.getWatchdog().stop();
+ //session.getWatchdog().stop();
if (args[0].equalsIgnoreCase("DIR")) {
count = bayesianAnalyzerManagement.addSpamFromDir(args[1]);
@@ -98,7 +98,7 @@
session.getLogger().error("Error on feeding BayesianAnalysis: " + e);
response = new RemoteManagerResponse("Error on feeding BayesianAnalysis: " + e);
} finally {
- session.getWatchdog().start();
+ //session.getWatchdog().start();
}
return response;
Added: james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/core/AuthorizationHandler.java
URL: http://svn.apache.org/viewvc/james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/core/AuthorizationHandler.java?rev=899690&view=auto
==============================================================================
--- james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/core/AuthorizationHandler.java (added)
+++ james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/core/AuthorizationHandler.java Fri Jan 15 16:33:58 2010
@@ -0,0 +1,88 @@
+/****************************************************************
+ * 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.remotemanager.core;
+
+import org.apache.james.remotemanager.ConnectHandler;
+import org.apache.james.remotemanager.LineHandler;
+import org.apache.james.remotemanager.RemoteManagerResponse;
+import org.apache.james.remotemanager.RemoteManagerSession;
+
+public class AuthorizationHandler implements ConnectHandler, LineHandler {
+
+ private final static String AUTHORIZATION_STATE = "AUTHORIZATION_STATE";
+ private final static int LOGIN_SUPPLIED = 1;
+ private final static int PASSWORD_SUPPLIED = 2;
+
+ private final static String USERNAME = "USERNAME";
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * org.apache.james.remotemanager.ConnectHandler#onConnect(org.apache.james
+ * .remotemanager.RemoteManagerSession)
+ */
+ public void onConnect(RemoteManagerSession session) {
+ RemoteManagerResponse response = new RemoteManagerResponse("JAMES Remote Administration Tool ");// +
+ // Constants.SOFTWARE_VERSION)
+ response.appendLine("Please enter your login and password");
+ response.appendLine("Login id:");
+
+ session.writeRemoteManagerResponse(response);
+
+ session.getState().put(AUTHORIZATION_STATE, LOGIN_SUPPLIED);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.apache.james.remotemanager.LineHandler#onLine(org.apache.james
+ * .remotemanager.RemoteManagerSession, java.lang.String)
+ */
+ public void onLine(RemoteManagerSession session, String line) {
+ int state = (Integer) session.getState().get(AUTHORIZATION_STATE);
+
+ if (state == LOGIN_SUPPLIED) {
+ session.getState().put(USERNAME, line);
+ session.getState().put(AUTHORIZATION_STATE, PASSWORD_SUPPLIED);
+
+ session.writeRemoteManagerResponse(new RemoteManagerResponse("Password:"));
+ } else if (state == PASSWORD_SUPPLIED) {
+ String password = line;
+ String username = (String) session.getState().get(USERNAME);
+
+ if (!password.equals(session.getAdministrativeAccountData().get(username)) || password.length() == 0) {
+ final String message = "Login failed for " + username;
+ session.writeRemoteManagerResponse(new RemoteManagerResponse(message));
+ session.writeRemoteManagerResponse(new RemoteManagerResponse("Login id:"));
+ } else {
+ StringBuilder messageBuffer = new StringBuilder(64).append("Welcome ").append(username).append(". HELP for a list of commands");
+ session.writeRemoteManagerResponse(new RemoteManagerResponse(messageBuffer.toString()));
+ if (session.getLogger().isInfoEnabled()) {
+ StringBuilder infoBuffer = new StringBuilder(128).append("Login for ").append(username).append(" successful");
+ session.getLogger().info(infoBuffer.toString());
+ }
+ session.popLineHandler();
+ }
+ session.getState().remove(USERNAME);
+ }
+ }
+
+}
Modified: james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/core/CoreCmdHandlerLoader.java
URL: http://svn.apache.org/viewvc/james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/core/CoreCmdHandlerLoader.java?rev=899690&r1=899689&r2=899690&view=diff
==============================================================================
--- james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/core/CoreCmdHandlerLoader.java (original)
+++ james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/core/CoreCmdHandlerLoader.java Fri Jan 15 16:33:58 2010
@@ -67,13 +67,13 @@
private final static String USERCMDHANDLER = UserCmdHandler.class.getName();
private final static String VERIFYCMDHANDLER = VerifyCmdHandler.class.getName();
private final static String COMMANDDISPATCHER = RemoteManagerCommandDispatcherLineHandler.class.getName();
- private final static String WELCOMEMESSAGEHANDLER = WelcomeHandler.class.getName();
+ private final static String AUTHORIZATIONHANDLER = AuthorizationHandler.class.getName();
public CoreCmdHandlerLoader() {
// Insert the base commands in the Map
- commands.add(WELCOMEMESSAGEHANDLER);
commands.add(COMMANDDISPATCHER);
-
+ commands.add(AUTHORIZATIONHANDLER);
+
commands.add(ADDDOMAINCMDHANDLER);
commands.add(ADDHAMCMDHANDLER);
commands.add(ADDMAPPINGCMDHANDLER);
Modified: james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/core/ExportBayesianDataCmdHandler.java
URL: http://svn.apache.org/viewvc/james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/core/ExportBayesianDataCmdHandler.java?rev=899690&r1=899689&r2=899690&view=diff
==============================================================================
--- james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/core/ExportBayesianDataCmdHandler.java (original)
+++ james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/core/ExportBayesianDataCmdHandler.java Fri Jan 15 16:33:58 2010
@@ -70,7 +70,7 @@
try {
// stop watchdog cause feeding can take some time
- session.getWatchdog().stop();
+ // session.getWatchdog().stop();
bayesianAnalyzerManagement.exportData(parameters);
response = new RemoteManagerResponse("Exported the BayesianAnalysis data");
@@ -78,7 +78,7 @@
session.getLogger().error("Error on exporting BayesianAnalysis data: " + e);
response = new RemoteManagerResponse("Error on exporting BayesianAnalysis data: " + e);
} finally {
- session.getWatchdog().start();
+ //session.getWatchdog().start();
}
return response;
}
Modified: james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/core/ImportBayesianDataCmdHandler.java
URL: http://svn.apache.org/viewvc/james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/core/ImportBayesianDataCmdHandler.java?rev=899690&r1=899689&r2=899690&view=diff
==============================================================================
--- james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/core/ImportBayesianDataCmdHandler.java (original)
+++ james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/core/ImportBayesianDataCmdHandler.java Fri Jan 15 16:33:58 2010
@@ -70,7 +70,7 @@
try {
// stop watchdog cause feeding can take some time
- session.getWatchdog().stop();
+ //session.getWatchdog().stop();
bayesianAnalyzerManagement.importData(parameters);
response = new RemoteManagerResponse("Imported the BayesianAnalysis data");
@@ -79,7 +79,7 @@
session.getLogger().error("Error on importing BayesianAnalysis data: " + e);
response = new RemoteManagerResponse("Error on importing BayesianAnalysis data: " + e);
} finally {
- session.getWatchdog().start();
+ //session.getWatchdog().start();
}
return response;
Modified: james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/core/QuitCmdHandler.java
URL: http://svn.apache.org/viewvc/james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/core/QuitCmdHandler.java?rev=899690&r1=899689&r2=899690&view=diff
==============================================================================
--- james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/core/QuitCmdHandler.java (original)
+++ james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/core/QuitCmdHandler.java Fri Jan 15 16:33:58 2010
@@ -40,6 +40,7 @@
public RemoteManagerResponse onCommand(RemoteManagerSession session, RemoteManagerRequest request) {
RemoteManagerResponse response = new RemoteManagerResponse("Bye");
response.setEndSession(true);
+
return response;
}
Modified: james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/core/ResetBayesianDataCmdHandler.java
URL: http://svn.apache.org/viewvc/james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/core/ResetBayesianDataCmdHandler.java?rev=899690&r1=899689&r2=899690&view=diff
==============================================================================
--- james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/core/ResetBayesianDataCmdHandler.java (original)
+++ james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/core/ResetBayesianDataCmdHandler.java Fri Jan 15 16:33:58 2010
@@ -64,7 +64,7 @@
RemoteManagerResponse response;
try {
// stop watchdog cause feeding can take some time
- session.getWatchdog().stop();
+ //session.getWatchdog().stop();
bayesianAnalyzerManagement.resetData();
response = new RemoteManagerResponse("Reseted the BayesianAnalysis data");
@@ -73,7 +73,7 @@
session.getLogger().error("Error on reseting BayesianAnalysis data: " + e);
response = new RemoteManagerResponse("Error on reseting BayesianAnalysis data: " + e);
} finally {
- session.getWatchdog().start();
+ //session.getWatchdog().start();
}
return response;
Added: james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/mina/AsyncRemoteManager.java
URL: http://svn.apache.org/viewvc/james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/mina/AsyncRemoteManager.java?rev=899690&view=auto
==============================================================================
--- james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/mina/AsyncRemoteManager.java (added)
+++ james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/mina/AsyncRemoteManager.java Fri Jan 15 16:33:58 2010
@@ -0,0 +1,133 @@
+/****************************************************************
+ * 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.remotemanager.mina;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.commons.configuration.ConfigurationException;
+import org.apache.commons.configuration.HierarchicalConfiguration;
+import org.apache.james.pop3server.core.CoreCmdHandlerLoader;
+import org.apache.james.remotemanager.RemoteManagerHandlerConfigurationData;
+import org.apache.james.remotemanager.RemoteManagerMBean;
+import org.apache.james.socket.mina.AbstractAsyncServer;
+import org.apache.james.socket.shared.ProtocolHandlerChainImpl;
+import org.apache.mina.core.service.IoHandler;
+
+public class AsyncRemoteManager extends AbstractAsyncServer implements RemoteManagerMBean{
+
+ private HierarchicalConfiguration handlerConfiguration;
+ private Map<String,String> adminAccounts = new HashMap<String, String>();
+ private ProtocolHandlerChainImpl handlerChain;
+ private RemoteManagerHandlerConfigurationData configData = new RemoteManagerHandlerConfigurationDataImpl();
+
+ @Override
+ protected IoHandler createIoHandler() {
+ return new RemoteManagerIoHandler(configData, handlerChain, getLogger());
+ }
+
+ @Override
+ protected int getDefaultPort() {
+ return 4555;
+ }
+
+ @Override
+ protected String getServiceType() {
+ return "plain";
+ }
+
+ @Override
+ protected void doConfigure(HierarchicalConfiguration config) throws ConfigurationException {
+ super.doConfigure(config);
+ handlerConfiguration = config.configurationAt("handler");
+ List<HierarchicalConfiguration> accounts = handlerConfiguration.configurationsAt("administrator_accounts.account");
+ for (int i = 0; i < accounts.size(); i++) {
+ adminAccounts.put(accounts.get(i).getString("[@login]"), accounts.get(i).getString("[@password]"));
+ }
+ }
+
+ @Override
+ protected void preInit() throws Exception {
+ prepareHandlerChain();
+ }
+
+
+ private void prepareHandlerChain() throws Exception {
+
+ //read from the XML configuration and create and configure each of the handlers
+ HierarchicalConfiguration jamesConfiguration = handlerConfiguration.configurationAt("handlerchain");
+ if (jamesConfiguration.getString("[@coreHandlersPackage]") == null)
+ jamesConfiguration.addProperty("[@coreHandlersPackage]", CoreCmdHandlerLoader.class.getName());
+
+ handlerChain = getLoader().load(ProtocolHandlerChainImpl.class, getLogger(), jamesConfiguration);
+ }
+
+
+ /*
+ * (non-Javadoc)
+ * @see org.apache.james.remotemanager.RemoteManagerMBean#getNetworkInterface()
+ */
+ public String getNetworkInterface() {
+ return "unknown";
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.apache.james.remotemanager.RemoteManagerMBean#getSocketType()
+ */
+ public String getSocketType() {
+ return "plain";
+ }
+
+ /**
+ * A class to provide RemoteManager handler configuration to the handlers
+ */
+ private class RemoteManagerHandlerConfigurationDataImpl
+ implements RemoteManagerHandlerConfigurationData {
+
+ /**
+ * @see org.apache.james.remotemanager.RemoteManagerHandlerConfigurationData#getHelloName()
+ */
+ public String getHelloName() {
+ if (getHelloName() == null) {
+ return AsyncRemoteManager.this.getMailServer().getHelloName();
+ } else {
+ return AsyncRemoteManager.this.getHelloName();
+ }
+ }
+
+ /**
+ * @see org.apache.james.remotemanager.RemoteManagerHandlerConfigurationData#getAdministrativeAccountData()
+ */
+ public Map<String,String> getAdministrativeAccountData() {
+ return AsyncRemoteManager.this.adminAccounts;
+ }
+
+ /**
+ * @see org.apache.james.remotemanager.RemoteManagerHandlerConfigurationData#getPrompt()
+ */
+ public String getPrompt() {
+ return "";
+ }
+
+ }
+
+}
Added: james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/mina/RemoteManagerIoHandler.java
URL: http://svn.apache.org/viewvc/james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/mina/RemoteManagerIoHandler.java?rev=899690&view=auto
==============================================================================
--- james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/mina/RemoteManagerIoHandler.java (added)
+++ james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/mina/RemoteManagerIoHandler.java Fri Jan 15 16:33:58 2010
@@ -0,0 +1,112 @@
+/****************************************************************
+ * 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.remotemanager.mina;
+
+import java.util.LinkedList;
+import java.util.List;
+
+import org.apache.commons.logging.Log;
+import org.apache.james.api.protocol.ProtocolHandlerChain;
+import org.apache.james.remotemanager.ConnectHandler;
+import org.apache.james.remotemanager.LineHandler;
+import org.apache.james.remotemanager.RemoteManagerHandlerConfigurationData;
+import org.apache.james.remotemanager.RemoteManagerRequest;
+import org.apache.james.remotemanager.RemoteManagerSession;
+import org.apache.mina.core.service.IoHandlerAdapter;
+import org.apache.mina.core.session.IdleStatus;
+import org.apache.mina.core.session.IoSession;
+
+public class RemoteManagerIoHandler extends IoHandlerAdapter{
+ private final static String REMOTEMANAGER_SESSION = "org.apache.james.remotemanager.mina.RemoteManagerIoHandler.REMOTEMANAGER_SESSION";
+
+ private Log logger;
+ private ProtocolHandlerChain chain;
+
+ private RemoteManagerHandlerConfigurationData config;
+
+ public RemoteManagerIoHandler(RemoteManagerHandlerConfigurationData config, ProtocolHandlerChain chain, Log logger) {
+ this.chain = chain;
+ this.logger = logger;
+ this.config = config;
+ }
+
+
+ /**
+ * @see org.apache.mina.core.service.IoHandlerAdapter#messageReceived(org.apache.mina.core.session.IoSession, java.lang.Object)
+ */
+ public void messageReceived(IoSession session, Object message)
+ throws Exception {
+ RemoteManagerSession rSession = (RemoteManagerSession) session.getAttribute(REMOTEMANAGER_SESSION);
+ LinkedList<LineHandler> lineHandlers = chain.getHandlers(LineHandler.class);
+ if (lineHandlers.size() > 0) {
+ // thats not really optimal but it allow us to keep things as generic as possible
+ // Will prolly get refactored later
+ String line = ((RemoteManagerRequest) message).toString();
+ ((LineHandler) lineHandlers.getLast()).onLine(rSession, line);
+ }
+ }
+
+ /**
+ * @see org.apache.mina.core.service.IoHandler#exceptionCaught(org.apache.mina.core.session.IoSession,
+ * java.lang.Throwable)
+ */
+ public void exceptionCaught(IoSession session, Throwable exception)
+ throws Exception {
+ logger.error("Caught exception: " + session.getCurrentWriteMessage(),
+ exception);
+ // just close session
+ session.close(true);
+ }
+
+ /**
+ * @see org.apache.mina.core.service.IoHandler#sessionCreated(org.apache.mina.core.session.IoSession)
+ */
+ public void sessionCreated(IoSession session) throws Exception {
+ RemoteManagerSession rSession = new RemoteManagerSessionImpl(config, logger, session);
+
+ // Add attribute
+ session.setAttribute(REMOTEMANAGER_SESSION,rSession);
+ }
+
+ /**
+ * @see org.apache.mina.core.service.IoHandler#sessionIdle(org.apache.mina.core.session.IoSession,
+ * org.apache.mina.core.session.IdleStatus)
+ */
+ public void sessionIdle(IoSession session, IdleStatus status)
+ throws Exception {
+ logger.debug("Connection timed out");
+ session.write("Connection timeout");
+ }
+
+ /**
+ * @see org.apache.mina.core.service.IoHandler#sessionOpened(org.apache.mina.core.session.IoSession)
+ */
+ public void sessionOpened(IoSession session) throws Exception {
+ List<ConnectHandler> connectHandlers = chain
+ .getHandlers(ConnectHandler.class);
+
+ if (connectHandlers != null) {
+ for (int i = 0; i < connectHandlers.size(); i++) {
+ connectHandlers.get(i).onConnect(
+ (RemoteManagerSession) session.getAttribute(REMOTEMANAGER_SESSION));
+ }
+ }
+ }
+}
Added: james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/mina/RemoteManagerSessionImpl.java
URL: http://svn.apache.org/viewvc/james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/mina/RemoteManagerSessionImpl.java?rev=899690&view=auto
==============================================================================
--- james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/mina/RemoteManagerSessionImpl.java (added)
+++ james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/mina/RemoteManagerSessionImpl.java Fri Jan 15 16:33:58 2010
@@ -0,0 +1,111 @@
+/****************************************************************
+ * 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.remotemanager.mina;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.commons.logging.Log;
+import org.apache.james.remotemanager.LineHandler;
+import org.apache.james.remotemanager.RemoteManagerHandlerConfigurationData;
+import org.apache.james.remotemanager.RemoteManagerResponse;
+import org.apache.james.remotemanager.RemoteManagerSession;
+import org.apache.james.remotemanager.mina.filter.FilterLineHandlerAdapter;
+import org.apache.mina.core.session.IoSession;
+
+public class RemoteManagerSessionImpl implements RemoteManagerSession {
+ private Log logger;
+ private IoSession session;
+ private Map<String, Object> state = new HashMap<String, Object>();
+ private RemoteManagerHandlerConfigurationData config;
+ private int lineHandlerCount = 0;
+
+ public RemoteManagerSessionImpl(RemoteManagerHandlerConfigurationData config, Log logger, IoSession session) {
+ this.logger = logger;
+ this.session = session;
+ this.config = config;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.apache.james.remotemanager.RemoteManagerSession#getState()
+ */
+ public Map<String, Object> getState() {
+ return state;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @seeorg.apache.james.remotemanager.RemoteManagerSession#
+ * writeRemoteManagerResponse
+ * (org.apache.james.remotemanager.RemoteManagerResponse)
+ */
+ public void writeRemoteManagerResponse(RemoteManagerResponse response) {
+ session.write(response);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.apache.james.api.protocol.LogEnabledSession#getLogger()
+ */
+ public Log getLogger() {
+ return logger;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.apache.james.api.protocol.LogEnabledSession#resetState()
+ */
+ public void resetState() {
+ state.clear();
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @seeorg.apache.james.remotemanager.RemoteManagerSession#
+ * getAdministrativeAccountData()
+ */
+ public Map<String, String> getAdministrativeAccountData() {
+ return config.getAdministrativeAccountData();
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.apache.james.remotemanager.RemoteManagerSession#popLineHandler()
+ */
+ public void popLineHandler() {
+ session.getFilterChain().remove("lineHandler" + lineHandlerCount);
+ lineHandlerCount--;
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.apache.james.remotemanager.RemoteManagerSession#pushLineHandler(org.apache.james.remotemanager.LineHandler)
+ */
+ public void pushLineHandler(LineHandler overrideCommandHandler) {
+ lineHandlerCount++;
+ session.getFilterChain().addAfter("protocolCodecFactory", "lineHandler" + lineHandlerCount, new FilterLineHandlerAdapter(overrideCommandHandler));
+ }
+}
Added: james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/mina/filter/FilterLineHandlerAdapter.java
URL: http://svn.apache.org/viewvc/james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/mina/filter/FilterLineHandlerAdapter.java?rev=899690&view=auto
==============================================================================
--- james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/mina/filter/FilterLineHandlerAdapter.java (added)
+++ james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/mina/filter/FilterLineHandlerAdapter.java Fri Jan 15 16:33:58 2010
@@ -0,0 +1,49 @@
+/****************************************************************
+ * 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.remotemanager.mina.filter;
+
+import org.apache.james.remotemanager.LineHandler;
+import org.apache.james.remotemanager.RemoteManagerSession;
+import org.apache.mina.core.filterchain.IoFilterAdapter;
+import org.apache.mina.core.session.IoSession;
+
+
+/**
+ * Adapter class which call the wrapped LineHandler on MessageReceived callback
+ *
+ */
+public final class FilterLineHandlerAdapter extends IoFilterAdapter {
+
+ public final static String REMOTEMANAGER_SESSION = "REMOTEMANAGER_SESSION";
+
+ private LineHandler lineHandler;
+
+ public FilterLineHandlerAdapter(LineHandler lineHandler) {
+ this.lineHandler = lineHandler;
+ }
+
+ /**
+ * @see org.apache.mina.core.filterchain.IoFilterAdapter#messageReceived(org.apache.mina.core.filterchain.IoFilter.NextFilter, org.apache.mina.core.session.IoSession, java.lang.Object)
+ */
+ public void messageReceived(NextFilter arg0, IoSession session, Object arg2)
+ throws Exception {
+ lineHandler.onLine((RemoteManagerSession) session.getAttribute(REMOTEMANAGER_SESSION),
+ (((String) arg2)));
+ }
+}
Added: james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/mina/filter/RemoteManagerResponseFilter.java
URL: http://svn.apache.org/viewvc/james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/mina/filter/RemoteManagerResponseFilter.java?rev=899690&view=auto
==============================================================================
--- james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/mina/filter/RemoteManagerResponseFilter.java (added)
+++ james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/mina/filter/RemoteManagerResponseFilter.java Fri Jan 15 16:33:58 2010
@@ -0,0 +1,94 @@
+/****************************************************************
+ * 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.remotemanager.mina.filter;
+
+import java.util.Locale;
+
+import org.apache.james.remotemanager.RemoteManagerRequest;
+import org.apache.james.remotemanager.RemoteManagerResponse;
+import org.apache.james.socket.mina.filter.AbstractResponseFilter;
+import org.apache.mina.core.session.IoSession;
+import org.apache.mina.core.write.DefaultWriteRequest;
+import org.apache.mina.core.write.WriteRequest;
+
+public class RemoteManagerResponseFilter extends AbstractResponseFilter{
+
+ private final static String CLOSE_ATTRIBUTE = RemoteManagerResponseFilter.class.getName() + ".closeAttribute";;
+
+ @Override
+ protected String getCloseAttribute() {
+ return CLOSE_ATTRIBUTE;
+ }
+
+ /**
+ * (non-Javadoc)
+ *
+ * @see org.apache.mina.core.filterchain.IoFilterAdapter#messageReceived(org.apache.mina.core.filterchain.IoFilter.NextFilter,
+ * org.apache.mina.core.session.IoSession, java.lang.Object)
+ */
+ public void messageReceived(NextFilter nextFilter, IoSession session, Object message) throws Exception {
+ if (message instanceof String) {
+ String cmdString = (String) message;
+ if (cmdString != null) {
+ cmdString = cmdString.trim();
+ }
+
+ String curCommandArgument = null;
+ String curCommandName = null;
+ int spaceIndex = cmdString.indexOf(" ");
+ if (spaceIndex > 0) {
+ curCommandName = cmdString.substring(0, spaceIndex);
+ curCommandArgument = cmdString.substring(spaceIndex + 1);
+ } else {
+ curCommandName = cmdString;
+ }
+ curCommandName = curCommandName.toUpperCase(Locale.US);
+
+ nextFilter.messageReceived(session, new RemoteManagerRequest(curCommandName, curCommandArgument));
+ } else {
+ super.messageReceived(nextFilter, session, message);
+ }
+ }
+
+ /**
+ * @see org.apache.mina.core.filterchain.IoFilterAdapter#filterWrite(org.apache.mina.core.filterchain.IoFilter.NextFilter,
+ * org.apache.mina.core.session.IoSession,
+ * org.apache.mina.core.write.WriteRequest)
+ */
+ public void filterWrite(NextFilter nextFilter, IoSession session, WriteRequest writeRequest) throws Exception {
+
+ if (writeRequest.getMessage() instanceof RemoteManagerResponse) {
+ RemoteManagerResponse response = (RemoteManagerResponse) writeRequest.getMessage();
+ if (response != null) {
+ for (int k = 0; k < response.getLines().size(); k++) {
+ nextFilter.filterWrite(session, new DefaultWriteRequest(response.getLines().get(k)));
+ }
+
+ if (response.isEndSession()) {
+ session.setAttribute(getCloseAttribute());
+ }
+ }
+ } else {
+ super.filterWrite(nextFilter, session, writeRequest);
+ }
+
+ }
+
+}
Added: james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/mina/filter/RemoteManagerValidationFilter.java
URL: http://svn.apache.org/viewvc/james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/mina/filter/RemoteManagerValidationFilter.java?rev=899690&view=auto
==============================================================================
--- james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/mina/filter/RemoteManagerValidationFilter.java (added)
+++ james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/mina/filter/RemoteManagerValidationFilter.java Fri Jan 15 16:33:58 2010
@@ -0,0 +1,61 @@
+/****************************************************************
+ * 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.remotemanager.mina.filter;
+
+import org.apache.commons.logging.Log;
+import org.apache.james.remotemanager.RemoteManagerRequest;
+import org.apache.james.remotemanager.RemoteManagerResponse;
+import org.apache.james.socket.mina.filter.AbstractValidationFilter;
+import org.apache.mina.core.write.DefaultWriteRequest;
+import org.apache.mina.core.write.WriteRequest;
+
+public class RemoteManagerValidationFilter extends AbstractValidationFilter{
+
+ public RemoteManagerValidationFilter(Log logger) {
+ super(logger);
+ }
+
+ @Override
+ protected WriteRequest errorRequest(Object obj) {
+ return new DefaultWriteRequest("ERROR: Cannot handle message of type " + (obj != null ? obj.getClass() : "NULL"));
+ }
+
+ @Override
+ protected WriteRequest errorResponse(Object obj) {
+ return null;
+ }
+
+ @Override
+ protected boolean isValidRequest(Object requestObject) {
+ if (requestObject instanceof RemoteManagerRequest) {
+ return true;
+ }
+ return false;
+ }
+
+ @Override
+ protected boolean isValidResponse(Object responseObject) {
+ if (responseObject instanceof RemoteManagerResponse) {
+ return true;
+ }
+ return false;
+ }
+
+}
Modified: james/server/trunk/remotemanager-function/src/test/java/org/apache/james/remotemanager/RemoteManagerTest.java
URL: http://svn.apache.org/viewvc/james/server/trunk/remotemanager-function/src/test/java/org/apache/james/remotemanager/RemoteManagerTest.java?rev=899690&r1=899689&r2=899690&view=diff
==============================================================================
--- james/server/trunk/remotemanager-function/src/test/java/org/apache/james/remotemanager/RemoteManagerTest.java (original)
+++ james/server/trunk/remotemanager-function/src/test/java/org/apache/james/remotemanager/RemoteManagerTest.java Fri Jan 15 16:33:58 2010
@@ -108,7 +108,9 @@
setUpServiceManager();
handlerFactory.setLoader(serviceManager);
- handlerFactory.setLog(new SimpleLog("MockLog"));
+ SimpleLog log = new SimpleLog("MockLog");
+ log.setLevel(SimpleLog.LOG_LEVEL_DEBUG);
+ handlerFactory.setLog(log);
handlerFactory.setMailServer(mailServer);
handlerFactory.setDNSService(dnsservice);
Modified: james/server/trunk/smtpserver-function/pom.xml
URL: http://svn.apache.org/viewvc/james/server/trunk/smtpserver-function/pom.xml?rev=899690&r1=899689&r2=899690&view=diff
==============================================================================
--- james/server/trunk/smtpserver-function/pom.xml (original)
+++ james/server/trunk/smtpserver-function/pom.xml Fri Jan 15 16:33:58 2010
@@ -27,6 +27,7 @@
<groupId>org.apache.james</groupId>
<artifactId>james-server-smtpserver-function</artifactId>
<name>Apache JAMES Server SMTP function</name>
+
<dependencies>
<dependency>
<groupId>${javax.mail.groupId}</groupId>
@@ -184,7 +185,7 @@
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
- <scope>test</scope>
+ <scope>runtime</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
Modified: james/server/trunk/socket-api/src/main/java/org/apache/james/api/protocol/LogEnabledSession.java
URL: http://svn.apache.org/viewvc/james/server/trunk/socket-api/src/main/java/org/apache/james/api/protocol/LogEnabledSession.java?rev=899690&r1=899689&r2=899690&view=diff
==============================================================================
--- james/server/trunk/socket-api/src/main/java/org/apache/james/api/protocol/LogEnabledSession.java (original)
+++ james/server/trunk/socket-api/src/main/java/org/apache/james/api/protocol/LogEnabledSession.java Fri Jan 15 16:33:58 2010
@@ -19,6 +19,8 @@
package org.apache.james.api.protocol;
+import java.util.Map;
+
import org.apache.commons.logging.Log;
public interface LogEnabledSession {
@@ -27,4 +29,17 @@
* @return log, not null
*/
public Log getLogger();
+
+
+ /**
+ * Return Map which can be used to store objects within a session
+ *
+ * @return state
+ */
+ public Map<String, Object> getState();
+
+ /**
+ * Reset the state
+ */
+ public void resetState();
}
Modified: james/server/trunk/socket-api/src/main/java/org/apache/james/api/protocol/TLSSupportedSession.java
URL: http://svn.apache.org/viewvc/james/server/trunk/socket-api/src/main/java/org/apache/james/api/protocol/TLSSupportedSession.java?rev=899690&r1=899689&r2=899690&view=diff
==============================================================================
--- james/server/trunk/socket-api/src/main/java/org/apache/james/api/protocol/TLSSupportedSession.java (original)
+++ james/server/trunk/socket-api/src/main/java/org/apache/james/api/protocol/TLSSupportedSession.java Fri Jan 15 16:33:58 2010
@@ -21,7 +21,6 @@
package org.apache.james.api.protocol;
import java.io.IOException;
-import java.util.Map;
/**
* Session which supports TLS
@@ -78,16 +77,4 @@
*/
void startTLS() throws IOException;
- /**
- * Return Map which can be used to store objects within a session
- *
- * @return state
- */
- public Map<String, Object> getState();
-
- /**
- * Reset the state
- */
- public void resetState();
-
}
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org