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]

Reply via email to