Author: norman
Date: Sun May 2 17:57:33 2010
New Revision: 940277
URL: http://svn.apache.org/viewvc?rev=940277&view=rev
Log:
Remove MINA, we dedicited to swith to NETTY
Added:
james/server/trunk/netty-socket/src/main/java/org/apache/james/socket/netty/ProtocolHandlerChainImpl.java
Removed:
james/server/trunk/imapserver/src/main/java/org/apache/james/imapserver/mina/
james/server/trunk/mina-socket/
james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/mina/AsyncPOP3Server.java
james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/mina/POP3IoHandler.java
james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/mina/POP3SessionImpl.java
james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/mina/filter/
james/server/trunk/pop3server/src/test/java/org/apache/james/pop3server/AsyncPOP3ServerTest.java
james/server/trunk/remotemanager/src/main/java/org/apache/james/remotemanager/mina/AsyncRemoteManager.java
james/server/trunk/remotemanager/src/main/java/org/apache/james/remotemanager/mina/RemoteManagerIoHandler.java
james/server/trunk/remotemanager/src/main/java/org/apache/james/remotemanager/mina/RemoteManagerSessionImpl.java
james/server/trunk/remotemanager/src/main/java/org/apache/james/remotemanager/mina/filter/
james/server/trunk/remotemanager/src/test/java/org/apache/james/remotemanager/AsyncRemoteManagerTest.java
james/server/trunk/smtpserver/src/main/java/org/apache/james/smtpserver/mina/AsyncSMTPServer.java
james/server/trunk/smtpserver/src/main/java/org/apache/james/smtpserver/mina/SMTPIoHandler.java
james/server/trunk/smtpserver/src/main/java/org/apache/james/smtpserver/mina/SMTPSessionImpl.java
james/server/trunk/smtpserver/src/main/java/org/apache/james/smtpserver/mina/filter/
james/server/trunk/smtpserver/src/test/java/org/apache/james/smtpserver/AsyncSMTPServerTest.java
Modified:
james/server/trunk/imapserver/pom.xml
james/server/trunk/pom.xml
james/server/trunk/pop3server/pom.xml
james/server/trunk/pop3server/src/test/java/org/apache/james/pop3server/AbstractAsyncPOP3ServerTest.java
james/server/trunk/remotemanager/pom.xml
james/server/trunk/remotemanager/src/test/java/org/apache/james/remotemanager/AbstractRemoteManagerTest.java
james/server/trunk/smtpserver/pom.xml
james/server/trunk/smtpserver/src/test/java/org/apache/james/smtpserver/AbstractSMTPServerTest.java
james/server/trunk/spring-deployment/pom.xml
Modified: james/server/trunk/imapserver/pom.xml
URL:
http://svn.apache.org/viewvc/james/server/trunk/imapserver/pom.xml?rev=940277&r1=940276&r2=940277&view=diff
==============================================================================
--- james/server/trunk/imapserver/pom.xml (original)
+++ james/server/trunk/imapserver/pom.xml Sun May 2 17:57:33 2010
@@ -58,11 +58,6 @@
<artifactId>geronimo-annotation_1.0_spec</artifactId>
</dependency>
-
- <dependency>
- <groupId>org.apache.james</groupId>
- <artifactId>james-server-mina-socket</artifactId>
- </dependency>
<dependency>
<groupId>org.apache.james</groupId>
<artifactId>james-server-netty-socket</artifactId>
@@ -110,10 +105,6 @@
</dependency>
<dependency>
- <groupId>org.apache.mina</groupId>
- <artifactId>mina-core</artifactId>
- </dependency>
- <dependency>
<groupId>org.jboss.netty</groupId>
<artifactId>netty</artifactId>
</dependency>
Added:
james/server/trunk/netty-socket/src/main/java/org/apache/james/socket/netty/ProtocolHandlerChainImpl.java
URL:
http://svn.apache.org/viewvc/james/server/trunk/netty-socket/src/main/java/org/apache/james/socket/netty/ProtocolHandlerChainImpl.java?rev=940277&view=auto
==============================================================================
---
james/server/trunk/netty-socket/src/main/java/org/apache/james/socket/netty/ProtocolHandlerChainImpl.java
(added)
+++
james/server/trunk/netty-socket/src/main/java/org/apache/james/socket/netty/ProtocolHandlerChainImpl.java
Sun May 2 17:57:33 2010
@@ -0,0 +1,250 @@
+/****************************************************************
+ * 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.socket.netty;
+
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.List;
+
+import javax.annotation.PostConstruct;
+
+import org.apache.commons.configuration.ConfigurationException;
+import org.apache.commons.configuration.DefaultConfigurationBuilder;
+import org.apache.commons.configuration.HierarchicalConfiguration;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.james.api.kernel.AbstractJSR250InstanceFactory;
+
+import org.apache.james.lifecycle.Configurable;
+import org.apache.james.lifecycle.LogEnabled;
+import org.apache.james.protocols.api.ExtensibleHandler;
+import org.apache.james.protocols.api.HandlersPackage;
+import org.apache.james.protocols.api.ProtocolHandlerChain;
+import org.apache.james.protocols.api.WiringException;
+
+/**
+ * Abstract class which HandlerChains should extend
+ *
+ *
+ */
+public class ProtocolHandlerChainImpl implements LogEnabled, Configurable,
ProtocolHandlerChain {
+
+ /** This log is the fall back shared by all instances */
+ private static final Log FALLBACK_LOG =
LogFactory.getLog(ProtocolHandlerChainImpl.class);
+
+ /** Non context specific log should only be used when no context specific
log is available */
+ private Log log = FALLBACK_LOG;
+
+ /**
+ * Sets the service log.
+ * Where available, a context sensitive log should be used.
+ * @param Log not null
+ */
+ public void setLog(Log log) {
+ this.log = log;
+ }
+
+ /**
+ * @see org.apache.james.socket.ProtocolHandlerChainImpl#getLog()
+ */
+ protected Log getLog() {
+ return log;
+ }
+
+ protected final List<Object> handlers = new LinkedList<Object>();
+
+ /** Loads instances */
+ private AbstractJSR250InstanceFactory factory;
+
+ protected HierarchicalConfiguration commonsConf;
+
+
+
+ /**
+ * Sets the loader to be used for instances.
+ * @param loader the loader to set, not null
+ */
+ public final void setInstanceFactory(AbstractJSR250InstanceFactory
factory) {
+ this.factory = factory;
+ }
+
+
+ /**
+ * ExtensibleHandler wiring
+ *
+ * @throws WiringException
+ */
+ protected void wireExtensibleHandlers() throws WiringException {
+ for (Iterator<?> h = handlers.iterator(); h.hasNext(); ) {
+ Object handler = h.next();
+ if (handler instanceof ExtensibleHandler) {
+ final ExtensibleHandler extensibleHandler =
(ExtensibleHandler) handler;
+ final List<Class<?>> markerInterfaces =
extensibleHandler.getMarkerInterfaces();
+ for (int i= 0;i < markerInterfaces.size(); i++) {
+ final Class<?> markerInterface = markerInterfaces.get(i);
+ final List<?> extensions = getHandlers(markerInterface);
+
extensibleHandler.wireExtensions(markerInterface,extensions);
+ }
+ }
+ }
+ }
+
+
+ /**
+ * Load and add the classes to the handler map
+ *
+ * @param classLoader The classLoader to use
+ * @param className The class name
+ * @param config The configuration
+ * @throws ConfigurationException Get thrown on error
+ */
+ protected void loadClass(ClassLoader classLoader, String className,
+ final org.apache.commons.configuration.HierarchicalConfiguration
config) throws Exception {
+
+ Object handler = new AbstractJSR250InstanceFactory() {
+
+ @Override
+ protected Object create(String className) throws
InstantiationException, IllegalAccessException, ClassNotFoundException {
+ Object obj = super.create(className);
+ if (obj instanceof Configurable) {
+ try {
+ ((Configurable) obj).configure(config);
+ } catch (ConfigurationException e) {
+ throw new InstantiationException();
+ }
+ }
+ return obj;
+ }
+
+ @Override
+ public Object getObjectForName(String name) {
+ return factory.getObjectForName(name);
+ }
+ }.newInstance(className);
+
+ // if it is a commands handler add it to the map with key as command
+ // name
+ if (handler instanceof HandlersPackage) {
+ List<String> c = ((HandlersPackage) handler).getHandlers();
+
+ for (Iterator<String> i = c.iterator(); i.hasNext(); ) {
+ String cName = i.next();
+
+ HierarchicalConfiguration cmdConf = addHandler(cName);
+
+ loadClass(classLoader, cName, cmdConf);
+ }
+
+ }
+
+ if (getLog().isInfoEnabled()) {
+ getLog().info("Added Handler: " + className);
+ }
+
+ // fill the big handler table
+ handlers.add(handler);
+ }
+
+ /**
+ * Return a DefaultConfiguration build on the given command name and
classname
+ *
+ * @param cmdName The command name
+ * @param className The class name
+ * @return DefaultConfiguration
+ * @throws ConfigurationException
+ */
+ protected HierarchicalConfiguration addHandler(String className) throws
ConfigurationException {
+ HierarchicalConfiguration hConf = new DefaultConfigurationBuilder();
+ hConf.addProperty("handler/@class", className);
+ return hConf;
+ }
+
+
+ /* (non-Javadoc)
+ * @see
org.apache.james.socket.shared.ProtocolHandlerChain#getHandlers(java.lang.Class)
+ */
+ @SuppressWarnings("unchecked")
+ public <T> LinkedList<T> getHandlers(Class<T> type) {
+ LinkedList<T> result = new LinkedList<T>();
+ for (Iterator<?> i = handlers.iterator(); i.hasNext(); ) {
+ Object handler = i.next();
+ if (type.isInstance(handler)) {
+ result.add((T)handler);
+ }
+ }
+ return result;
+ }
+
+ /**
+ * loads the various handlers from the configuration
+ *
+ * @param configuration
+ * configuration under handlerchain node
+ */
+ @SuppressWarnings("unchecked")
+ protected void loadHandlers() throws Exception {
+ if (commonsConf != null && commonsConf instanceof
HierarchicalConfiguration) {
+
+ List<org.apache.commons.configuration.HierarchicalConfiguration>
children = ((HierarchicalConfiguration)
commonsConf).configurationsAt("handler");
+ ClassLoader classLoader =
Thread.currentThread().getContextClassLoader();
+
+ String coreCmdName =
commonsConf.getString("[...@corehandlerspackage]");
+ // load the core handlers
+ loadClass(classLoader, coreCmdName,
+ addHandler(coreCmdName));
+
+ // load the configured handlers
+ if (children != null && children.isEmpty() == false) {
+
+ for (int i = 0; i < children.size(); i++) {
+ org.apache.commons.configuration.HierarchicalConfiguration
hConf = children.get(i);
+ String className = hConf.getString("[...@class]");
+
+ if (className != null) {
+ // ignore base handlers.
+ if (!className.equals(coreCmdName)) {
+
+ // load the handler
+ loadClass(classLoader, className, hConf);
+ }
+ }
+ }
+
+ }
+ }
+ }
+
+ /**
+ * Configure the chain
+ *
+ * @param commonsConf
+ */
+ public void configure(HierarchicalConfiguration commonsConf) throws
ConfigurationException {
+ this.commonsConf = commonsConf;
+ }
+
+ @PostConstruct
+ public void init() throws Exception {
+ loadHandlers();
+ wireExtensibleHandlers();
+ }
+
+}
Modified: james/server/trunk/pom.xml
URL:
http://svn.apache.org/viewvc/james/server/trunk/pom.xml?rev=940277&r1=940276&r2=940277&view=diff
==============================================================================
--- james/server/trunk/pom.xml (original)
+++ james/server/trunk/pom.xml Sun May 2 17:57:33 2010
@@ -54,7 +54,6 @@
<module>jcr-store</module>
<module>jpa-store</module>
<module>spring-deployment</module>
- <module>mina-socket</module>
<module>netty-socket</module>
</modules>
@@ -226,16 +225,6 @@
<dependencyManagement>
<dependencies>
<dependency>
- <groupId>org.apache.mina</groupId>
- <artifactId>mina-core</artifactId>
- <version>2.0.0-RC1</version>
- </dependency>
- <dependency>
- <groupId>org.apache.james</groupId>
- <artifactId>james-server-mina-socket</artifactId>
- <version>3.0-SNAPSHOT</version>
- </dependency>
- <dependency>
<groupId>org.apache.james</groupId>
<artifactId>james-server-netty-socket</artifactId>
<version>3.0-SNAPSHOT</version>
Modified: james/server/trunk/pop3server/pom.xml
URL:
http://svn.apache.org/viewvc/james/server/trunk/pop3server/pom.xml?rev=940277&r1=940276&r2=940277&view=diff
==============================================================================
--- james/server/trunk/pop3server/pom.xml (original)
+++ james/server/trunk/pop3server/pom.xml Sun May 2 17:57:33 2010
@@ -85,10 +85,6 @@
<dependency>
<groupId>org.apache.james</groupId>
- <artifactId>james-server-mina-socket</artifactId>
- </dependency>
- <dependency>
- <groupId>org.apache.james</groupId>
<artifactId>james-server-netty-socket</artifactId>
</dependency>
@@ -96,10 +92,6 @@
<groupId>commons-collections</groupId>
<artifactId>commons-collections</artifactId>
</dependency>
- <dependency>
- <groupId>org.apache.mina</groupId>
- <artifactId>mina-core</artifactId>
- </dependency>
<dependency>
<groupId>org.apache.james</groupId>
Modified:
james/server/trunk/pop3server/src/test/java/org/apache/james/pop3server/AbstractAsyncPOP3ServerTest.java
URL:
http://svn.apache.org/viewvc/james/server/trunk/pop3server/src/test/java/org/apache/james/pop3server/AbstractAsyncPOP3ServerTest.java?rev=940277&r1=940276&r2=940277&view=diff
==============================================================================
---
james/server/trunk/pop3server/src/test/java/org/apache/james/pop3server/AbstractAsyncPOP3ServerTest.java
(original)
+++
james/server/trunk/pop3server/src/test/java/org/apache/james/pop3server/AbstractAsyncPOP3ServerTest.java
Sun May 2 17:57:33 2010
@@ -47,7 +47,7 @@ import org.apache.james.imap.mailbox.Mai
import org.apache.james.imap.store.Authenticator;
import org.apache.james.lifecycle.LifecycleUtil;
import org.apache.james.services.MailServer;
-import org.apache.james.socket.ProtocolHandlerChainImpl;
+import org.apache.james.socket.netty.ProtocolHandlerChainImpl;
import org.apache.james.test.mock.james.MockFileSystem;
import org.apache.james.test.mock.james.MockMailServer;
import org.apache.james.test.util.Util;
Modified: james/server/trunk/remotemanager/pom.xml
URL:
http://svn.apache.org/viewvc/james/server/trunk/remotemanager/pom.xml?rev=940277&r1=940276&r2=940277&view=diff
==============================================================================
--- james/server/trunk/remotemanager/pom.xml (original)
+++ james/server/trunk/remotemanager/pom.xml Sun May 2 17:57:33 2010
@@ -69,10 +69,6 @@
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
</dependency>
- <dependency>
- <groupId>org.apache.james</groupId>
- <artifactId>james-server-mina-socket</artifactId>
- </dependency>
<dependency>
<groupId>org.apache.james</groupId>
<artifactId>james-server-netty-socket</artifactId>
@@ -82,10 +78,6 @@
<artifactId>protocols-api</artifactId>
</dependency>
<dependency>
- <groupId>org.apache.mina</groupId>
- <artifactId>mina-core</artifactId>
- </dependency>
- <dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<scope>runtime</scope>
Modified:
james/server/trunk/remotemanager/src/test/java/org/apache/james/remotemanager/AbstractRemoteManagerTest.java
URL:
http://svn.apache.org/viewvc/james/server/trunk/remotemanager/src/test/java/org/apache/james/remotemanager/AbstractRemoteManagerTest.java?rev=940277&r1=940276&r2=940277&view=diff
==============================================================================
---
james/server/trunk/remotemanager/src/test/java/org/apache/james/remotemanager/AbstractRemoteManagerTest.java
(original)
+++
james/server/trunk/remotemanager/src/test/java/org/apache/james/remotemanager/AbstractRemoteManagerTest.java
Sun May 2 17:57:33 2010
@@ -54,9 +54,8 @@ import org.apache.james.management.Proce
import org.apache.james.management.SpoolFilter;
import org.apache.james.management.SpoolManagementException;
import org.apache.james.management.SpoolManagementService;
-import org.apache.james.remotemanager.mina.AsyncRemoteManager;
import org.apache.james.services.MailServer;
-import org.apache.james.socket.ProtocolHandlerChainImpl;
+import org.apache.james.socket.netty.ProtocolHandlerChainImpl;
import org.apache.james.test.mock.avalon.MockStore;
import org.apache.james.test.mock.james.MockFileSystem;
import org.apache.james.test.mock.james.MockMailServer;
Modified: james/server/trunk/smtpserver/pom.xml
URL:
http://svn.apache.org/viewvc/james/server/trunk/smtpserver/pom.xml?rev=940277&r1=940276&r2=940277&view=diff
==============================================================================
--- james/server/trunk/smtpserver/pom.xml (original)
+++ james/server/trunk/smtpserver/pom.xml Sun May 2 17:57:33 2010
@@ -77,10 +77,6 @@
</dependency>
<dependency>
<groupId>org.apache.james</groupId>
- <artifactId>james-server-mina-socket</artifactId>
- </dependency>
- <dependency>
- <groupId>org.apache.james</groupId>
<artifactId>james-server-netty-socket</artifactId>
</dependency>
<dependency>
@@ -88,11 +84,6 @@
<artifactId>${javax.activation.artifactId}</artifactId>
</dependency>
- <dependency>
- <groupId>org.apache.mina</groupId>
- <artifactId>mina-core</artifactId>
- </dependency>
-
<dependency>
<groupId>org.apache.james</groupId>
Modified:
james/server/trunk/smtpserver/src/test/java/org/apache/james/smtpserver/AbstractSMTPServerTest.java
URL:
http://svn.apache.org/viewvc/james/server/trunk/smtpserver/src/test/java/org/apache/james/smtpserver/AbstractSMTPServerTest.java?rev=940277&r1=940276&r2=940277&view=diff
==============================================================================
---
james/server/trunk/smtpserver/src/test/java/org/apache/james/smtpserver/AbstractSMTPServerTest.java
(original)
+++
james/server/trunk/smtpserver/src/test/java/org/apache/james/smtpserver/AbstractSMTPServerTest.java
Sun May 2 17:57:33 2010
@@ -48,7 +48,7 @@ import org.apache.james.api.vut.VirtualU
import org.apache.james.lifecycle.LifecycleUtil;
import org.apache.james.services.FileSystem;
import org.apache.james.services.MailServer;
-import org.apache.james.socket.ProtocolHandlerChainImpl;
+import org.apache.james.socket.netty.ProtocolHandlerChainImpl;
import org.apache.james.test.mock.DummyVirtualUserTableStore;
import org.apache.james.test.mock.avalon.MockStore;
import org.apache.james.test.mock.james.MockFileSystem;
Modified: james/server/trunk/spring-deployment/pom.xml
URL:
http://svn.apache.org/viewvc/james/server/trunk/spring-deployment/pom.xml?rev=940277&r1=940276&r2=940277&view=diff
==============================================================================
--- james/server/trunk/spring-deployment/pom.xml (original)
+++ james/server/trunk/spring-deployment/pom.xml Sun May 2 17:57:33 2010
@@ -386,11 +386,6 @@
</dependency>
<dependency>
<groupId>org.apache.james</groupId>
- <artifactId>james-server-mina-socket</artifactId>
- <scope>runtime</scope>
- </dependency>
- <dependency>
- <groupId>org.apache.james</groupId>
<artifactId>james-server-javamail-util</artifactId>
<scope>runtime</scope>
</dependency>
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]