Author: matthieu
Date: Mon Oct 19 13:04:34 2015
New Revision: 1709409

URL: http://svn.apache.org/viewvc?rev=1709409&view=rev
Log:
MPT-33 introduce namespace support feature and run related tests only when 
supported

        This uses junit Assume that allowes to disable a test when a
        condition if false.

        ImapHostSystem is supposed to implements supports(Feature... feature)
        for this purpose

Added:
    
james/project/trunk/mpt/core/src/main/java/org/apache/james/mpt/api/ImapFeatures.java
    james/project/trunk/mpt/core/src/test/java/org/apache/james/mpt/api/
    
james/project/trunk/mpt/core/src/test/java/org/apache/james/mpt/api/ImapFeaturesTest.java
Modified:
    
james/project/trunk/mpt/antlib/src/main/java/org/apache/james/mpt/ant/MailProtocolTestTask.java
    
james/project/trunk/mpt/app/src/main/java/org/apache/james/mpt/app/RunScript.java
    james/project/trunk/mpt/core/pom.xml
    
james/project/trunk/mpt/core/src/main/java/org/apache/james/mpt/api/ImapHostSystem.java
    
james/project/trunk/mpt/core/src/main/java/org/apache/james/mpt/host/ExternalHostSystem.java
    
james/project/trunk/mpt/core/src/test/java/org/apache/james/mpt/TestExternalHostSystem.java
    
james/project/trunk/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/host/CassandraHostSystem.java
    
james/project/trunk/mpt/impl/imap-mailbox/core/src/main/java/org/apache/james/mpt/imapmailbox/suite/AuthenticatedState.java
    
james/project/trunk/mpt/impl/imap-mailbox/cyrus/src/test/java/org/apache/james/mpt/imapmailbox/cyrus/host/CyrusHostSystem.java
    
james/project/trunk/mpt/impl/imap-mailbox/elasticsearch/src/test/java/org/apache/james/mpt/imapmailbox/elasticsearch/host/ElasticSearchHostSystem.java
    
james/project/trunk/mpt/impl/imap-mailbox/external-james/src/test/java/org/apache/james/mpt/imapmailbox/external/james/host/ExternalJamesHostSystem.java
    
james/project/trunk/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/host/HBaseHostSystem.java
    
james/project/trunk/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/host/InMemoryHostSystem.java
    
james/project/trunk/mpt/impl/imap-mailbox/jcr/src/test/java/org/apache/james/mpt/imapmailbox/jcr/host/JCRHostSystem.java
    
james/project/trunk/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/host/JPAHostSystem.java
    
james/project/trunk/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/host/MaildirHostSystem.java
    
james/project/trunk/mpt/mavenplugin/src/main/java/org/apache/james/mpt/maven/MailProtocolTest.java

Modified: 
james/project/trunk/mpt/antlib/src/main/java/org/apache/james/mpt/ant/MailProtocolTestTask.java
URL: 
http://svn.apache.org/viewvc/james/project/trunk/mpt/antlib/src/main/java/org/apache/james/mpt/ant/MailProtocolTestTask.java?rev=1709409&r1=1709408&r2=1709409&view=diff
==============================================================================
--- 
james/project/trunk/mpt/antlib/src/main/java/org/apache/james/mpt/ant/MailProtocolTestTask.java
 (original)
+++ 
james/project/trunk/mpt/antlib/src/main/java/org/apache/james/mpt/ant/MailProtocolTestTask.java
 Mon Oct 19 13:04:34 2015
@@ -30,6 +30,8 @@ import java.util.Collection;
 import java.util.Iterator;
 
 import org.apache.james.mpt.Runner;
+import org.apache.james.mpt.api.ImapFeatures;
+import org.apache.james.mpt.api.ImapFeatures.Feature;
 import org.apache.james.mpt.api.Monitor;
 import org.apache.james.mpt.host.ExternalHostSystem;
 import org.apache.james.mpt.protocol.ProtocolSessionBuilder;
@@ -48,6 +50,8 @@ import org.apache.tools.ant.types.resour
  */
 public class MailProtocolTestTask extends Task implements Monitor {
 
+    private static final ImapFeatures SUPPORTED_FEATURES = 
ImapFeatures.of(Feature.NAMESPACE_SUPPORT);
+    
     private boolean quiet = false;
     private File script;
     private Union scripts;
@@ -230,7 +234,7 @@ public class MailProtocolTestTask extend
             userAdder.execute();
         }
         
-        final ExternalHostSystem host = new ExternalHostSystem(getHost(), 
getPort(), this, getShabang(), null);
+        final ExternalHostSystem host = new 
ExternalHostSystem(SUPPORTED_FEATURES, getHost(), getPort(), this, 
getShabang(), null);
         final ProtocolSessionBuilder builder = new ProtocolSessionBuilder();
         
         if (scripts == null) {

Modified: 
james/project/trunk/mpt/app/src/main/java/org/apache/james/mpt/app/RunScript.java
URL: 
http://svn.apache.org/viewvc/james/project/trunk/mpt/app/src/main/java/org/apache/james/mpt/app/RunScript.java?rev=1709409&r1=1709408&r2=1709409&view=diff
==============================================================================
--- 
james/project/trunk/mpt/app/src/main/java/org/apache/james/mpt/app/RunScript.java
 (original)
+++ 
james/project/trunk/mpt/app/src/main/java/org/apache/james/mpt/app/RunScript.java
 Mon Oct 19 13:04:34 2015
@@ -23,6 +23,8 @@ import java.io.File;
 import java.io.FileInputStream;
 
 import org.apache.james.mpt.Runner;
+import org.apache.james.mpt.api.ImapFeatures;
+import org.apache.james.mpt.api.ImapFeatures.Feature;
 import org.apache.james.mpt.host.ExternalHostSystem;
 import org.apache.james.mpt.monitor.SystemLoggingMonitor;
 import org.apache.james.mpt.protocol.ProtocolSessionBuilder;
@@ -32,6 +34,8 @@ import org.apache.james.mpt.protocol.Pro
  */
 class RunScript {
 
+    private static final ImapFeatures SUPPORTED_FEATURES = 
ImapFeatures.of(Feature.NAMESPACE_SUPPORT);
+    
     private final File file;
     private final int port;
     private final String host;
@@ -53,7 +57,7 @@ class RunScript {
     public void run() throws Exception {
        System.out.println("Running " + file + " against " + host + ":"  + port 
+ "...");
        
-       final ExternalHostSystem host = new ExternalHostSystem(this.host, port, 
monitor, shabang, null);
+       final ExternalHostSystem host = new 
ExternalHostSystem(SUPPORTED_FEATURES, this.host, port, monitor, shabang, null);
        final ProtocolSessionBuilder builder = new ProtocolSessionBuilder();
        final Runner runner = new Runner();
        

Modified: james/project/trunk/mpt/core/pom.xml
URL: 
http://svn.apache.org/viewvc/james/project/trunk/mpt/core/pom.xml?rev=1709409&r1=1709408&r2=1709409&view=diff
==============================================================================
--- james/project/trunk/mpt/core/pom.xml (original)
+++ james/project/trunk/mpt/core/pom.xml Mon Oct 19 13:04:34 2015
@@ -93,6 +93,12 @@
             <scope>compile</scope>
         </dependency>
         <dependency>
+            <groupId>org.assertj</groupId>
+            <artifactId>assertj-core</artifactId>
+            <version>1.7.1</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
             <groupId>org.slf4j</groupId>
             <artifactId>slf4j-api</artifactId>
         </dependency>

Added: 
james/project/trunk/mpt/core/src/main/java/org/apache/james/mpt/api/ImapFeatures.java
URL: 
http://svn.apache.org/viewvc/james/project/trunk/mpt/core/src/main/java/org/apache/james/mpt/api/ImapFeatures.java?rev=1709409&view=auto
==============================================================================
--- 
james/project/trunk/mpt/core/src/main/java/org/apache/james/mpt/api/ImapFeatures.java
 (added)
+++ 
james/project/trunk/mpt/core/src/main/java/org/apache/james/mpt/api/ImapFeatures.java
 Mon Oct 19 13:04:34 2015
@@ -0,0 +1,36 @@
+package org.apache.james.mpt.api;
+
+import java.util.Set;
+
+import com.google.common.base.Preconditions;
+import com.google.common.base.Predicates;
+import com.google.common.collect.FluentIterable;
+import com.google.common.collect.ImmutableSet;
+
+public class ImapFeatures {
+    
+    public enum Feature {
+        NAMESPACE_SUPPORT
+    }
+
+    public static ImapFeatures of(Feature... features) {
+        return new ImapFeatures(ImmutableSet.copyOf(features));
+    }
+
+    private final ImmutableSet<Feature> supportedFeatures;
+    
+    private ImapFeatures(ImmutableSet<Feature> supportedFeatures) {
+        this.supportedFeatures = supportedFeatures;
+    }
+    
+    public Set<Feature> supportedFeatures() {
+        return supportedFeatures;
+    }
+    
+    public boolean supports(Feature... features) {
+        Preconditions.checkNotNull(features);
+        ImmutableSet<Feature> requestedFeatures = 
ImmutableSet.copyOf(features);
+        return 
FluentIterable.from(requestedFeatures).allMatch(Predicates.in(supportedFeatures));
+    }
+    
+}

Modified: 
james/project/trunk/mpt/core/src/main/java/org/apache/james/mpt/api/ImapHostSystem.java
URL: 
http://svn.apache.org/viewvc/james/project/trunk/mpt/core/src/main/java/org/apache/james/mpt/api/ImapHostSystem.java?rev=1709409&r1=1709408&r2=1709409&view=diff
==============================================================================
--- 
james/project/trunk/mpt/core/src/main/java/org/apache/james/mpt/api/ImapHostSystem.java
 (original)
+++ 
james/project/trunk/mpt/core/src/main/java/org/apache/james/mpt/api/ImapHostSystem.java
 Mon Oct 19 13:04:34 2015
@@ -19,10 +19,12 @@
 package org.apache.james.mpt.api;
 
 import org.apache.james.mailbox.model.MailboxPath;
+import org.apache.james.mpt.api.ImapFeatures.Feature;
 
 public interface ImapHostSystem extends HostSystem {
 
-    public abstract void createMailbox(MailboxPath mailboxPath)
-            throws Exception;
+    boolean supports(Feature... features);
+    
+    void createMailbox(MailboxPath mailboxPath) throws Exception;
 
 }
\ No newline at end of file

Modified: 
james/project/trunk/mpt/core/src/main/java/org/apache/james/mpt/host/ExternalHostSystem.java
URL: 
http://svn.apache.org/viewvc/james/project/trunk/mpt/core/src/main/java/org/apache/james/mpt/host/ExternalHostSystem.java?rev=1709409&r1=1709408&r2=1709409&view=diff
==============================================================================
--- 
james/project/trunk/mpt/core/src/main/java/org/apache/james/mpt/host/ExternalHostSystem.java
 (original)
+++ 
james/project/trunk/mpt/core/src/main/java/org/apache/james/mpt/host/ExternalHostSystem.java
 Mon Oct 19 13:04:34 2015
@@ -21,6 +21,8 @@ package org.apache.james.mpt.host;
 
 import org.apache.commons.lang.NotImplementedException;
 import org.apache.james.mailbox.model.MailboxPath;
+import org.apache.james.mpt.api.ImapFeatures;
+import org.apache.james.mpt.api.ImapFeatures.Feature;
 import org.apache.james.mpt.api.ImapHostSystem;
 import org.apache.james.mpt.api.Monitor;
 import org.apache.james.mpt.api.UserAdder;
@@ -40,10 +42,13 @@ import org.apache.james.mpt.session.Exte
 public class ExternalHostSystem extends ExternalSessionFactory implements 
ImapHostSystem {
 
     private final UserAdder userAdder;
+    private final ImapFeatures features;
 
     /**
      * Constructs a host system suitable for connection to an open port.
      * 
+     * @param supportedFeatures
+     *            set of features supported by the system
      * @param host
      *            host name that will be connected to, not null
      * @param port
@@ -59,15 +64,16 @@ public class ExternalHostSystem extends
      * @param userAdder
      *            null when test system has appropriate users already set
      */
-    public ExternalHostSystem(final String host, final int port, final Monitor 
monitor, final String shabang,
-            final UserAdder userAdder) {
+    public ExternalHostSystem(ImapFeatures features, String host, int port, 
+            Monitor monitor, String shabang, UserAdder userAdder) {
         super(host, port, monitor, shabang);
+        this.features = features;
         this.userAdder = userAdder;
     }
     
-    public ExternalHostSystem(final Monitor monitor, final String shabang,
-            final UserAdder userAdder) {
+    public ExternalHostSystem(ImapFeatures features, Monitor monitor, String 
shabang, UserAdder userAdder) {
         super(monitor, shabang);
+        this.features = features;
         this.userAdder = userAdder;
     }
     public boolean addUser(String user, String password) throws Exception {
@@ -96,4 +102,10 @@ public class ExternalHostSystem extends
     
     public void afterTest() throws Exception {
     }
+
+    @Override
+    public boolean supports(Feature... features) {
+        return this.features.supports(features);
+    }
+    
 }

Modified: 
james/project/trunk/mpt/core/src/test/java/org/apache/james/mpt/TestExternalHostSystem.java
URL: 
http://svn.apache.org/viewvc/james/project/trunk/mpt/core/src/test/java/org/apache/james/mpt/TestExternalHostSystem.java?rev=1709409&r1=1709408&r2=1709409&view=diff
==============================================================================
--- 
james/project/trunk/mpt/core/src/test/java/org/apache/james/mpt/TestExternalHostSystem.java
 (original)
+++ 
james/project/trunk/mpt/core/src/test/java/org/apache/james/mpt/TestExternalHostSystem.java
 Mon Oct 19 13:04:34 2015
@@ -20,6 +20,8 @@
 package org.apache.james.mpt;
 
 import org.apache.james.mpt.api.Continuation;
+import org.apache.james.mpt.api.ImapFeatures;
+import org.apache.james.mpt.api.ImapFeatures.Feature;
 import org.apache.james.mpt.api.Session;
 import org.apache.james.mpt.api.UserAdder;
 import org.apache.james.mpt.host.ExternalHostSystem;
@@ -38,6 +40,9 @@ public class TestExternalHostSystem exte
     private static final String SHABANG = "This Is The Shabang";
 
     private static final int PORT = 10001;
+
+    private static final ImapFeatures SUPPORTED_FEATURES = 
ImapFeatures.of(Feature.NAMESPACE_SUPPORT);
+
     
     private DiscardProtocol protocol;
     
@@ -87,7 +92,7 @@ public class TestExternalHostSystem exte
     }
 
     private ExternalHostSystem buildSystem(final String shabang) {
-        ExternalHostSystem system = new ExternalHostSystem("localhost", PORT ,
+        ExternalHostSystem system = new ExternalHostSystem(SUPPORTED_FEATURES, 
"localhost", PORT ,
                 new NullMonitor(), shabang, userAdder);
         return system;
     }

Added: 
james/project/trunk/mpt/core/src/test/java/org/apache/james/mpt/api/ImapFeaturesTest.java
URL: 
http://svn.apache.org/viewvc/james/project/trunk/mpt/core/src/test/java/org/apache/james/mpt/api/ImapFeaturesTest.java?rev=1709409&view=auto
==============================================================================
--- 
james/project/trunk/mpt/core/src/test/java/org/apache/james/mpt/api/ImapFeaturesTest.java
 (added)
+++ 
james/project/trunk/mpt/core/src/test/java/org/apache/james/mpt/api/ImapFeaturesTest.java
 Mon Oct 19 13:04:34 2015
@@ -0,0 +1,66 @@
+package org.apache.james.mpt.api;
+
+import org.apache.james.mpt.api.ImapFeatures.Feature;
+import org.junit.Test;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+public class ImapFeaturesTest {
+
+    @Test
+    public void supportedFeaturesShouldReturnEmptySetWhenNoFeatures() {
+        assertThat(ImapFeatures.of().supportedFeatures()).isEmpty();
+    }
+
+    @Test
+    public void 
supportedFeaturesShouldReturnNamespaceInSetWhenNamespaceSupported() {
+        
assertThat(ImapFeatures.of(Feature.NAMESPACE_SUPPORT).supportedFeatures()).containsExactly(Feature.NAMESPACE_SUPPORT);
+    }
+
+    @Test
+    public void 
supportsShouldReturnFalseOnNamespaceWhenNamespaceIsNotSupported() {
+        
assertThat(ImapFeatures.of().supports(Feature.NAMESPACE_SUPPORT)).isFalse();
+    }
+
+    @Test
+    public void supportsShouldReturnTrueOnNamespaceWhenNamespaceIsSupported() {
+        
assertThat(ImapFeatures.of(Feature.NAMESPACE_SUPPORT).supports(Feature.NAMESPACE_SUPPORT)).isTrue();
+    }
+
+    @Test
+    public void 
supportsShouldReturnTrueOnDuplicateNamespaceEntryWhenNamespaceIsSupported() {
+        
assertThat(ImapFeatures.of(Feature.NAMESPACE_SUPPORT).supports(Feature.NAMESPACE_SUPPORT,
 Feature.NAMESPACE_SUPPORT)).isTrue();
+    }
+
+    
+    @Test
+    public void supportsShouldReturnTrueOnEmptyListWhenNamespaceIsSupported() {
+        
assertThat(ImapFeatures.of(Feature.NAMESPACE_SUPPORT).supports()).isTrue();
+    }
+
+    @Test
+    public void supportsShouldReturnTrueOnEmptyListWhenNoFeatures() {
+        assertThat(ImapFeatures.of().supports()).isTrue();
+    }
+
+    @Test(expected=NullPointerException.class)
+    public void supportsShouldThrowOnNullFeature() {
+        assertThat(ImapFeatures.of().supports((Feature)null));
+    }
+
+    @Test(expected=NullPointerException.class)
+    public void supportsShouldThrowOnNullFeatureArray() {
+        assertThat(ImapFeatures.of().supports((Feature[])null));
+    }
+
+    
+    @Test(expected=NullPointerException.class)
+    public void ofShouldThrowOnNullFeature() {
+        ImapFeatures.of((Feature)null);
+    }
+
+    @Test(expected=NullPointerException.class)
+    public void ofShouldThrowOnNullFeatureArray() {
+        ImapFeatures.of((Feature[])null);
+    }
+}

Modified: 
james/project/trunk/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/host/CassandraHostSystem.java
URL: 
http://svn.apache.org/viewvc/james/project/trunk/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/host/CassandraHostSystem.java?rev=1709409&r1=1709408&r2=1709409&view=diff
==============================================================================
--- 
james/project/trunk/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/host/CassandraHostSystem.java
 (original)
+++ 
james/project/trunk/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/host/CassandraHostSystem.java
 Mon Oct 19 13:04:34 2015
@@ -38,11 +38,15 @@ import org.apache.james.mailbox.store.St
 import org.apache.james.mailbox.store.quota.DefaultQuotaRootResolver;
 import org.apache.james.mailbox.store.quota.ListeningCurrentQuotaUpdater;
 import org.apache.james.mailbox.store.quota.StoreQuotaManager;
+import org.apache.james.mpt.api.ImapFeatures;
+import org.apache.james.mpt.api.ImapFeatures.Feature;
 import org.apache.james.mpt.host.JamesImapHostSystem;
 import org.apache.james.mpt.imapmailbox.MailboxCreationDelegate;
 
 public class CassandraHostSystem extends JamesImapHostSystem {
 
+    private static final ImapFeatures IMAP_FEATURES = 
ImapFeatures.of(Feature.NAMESPACE_SUPPORT);
+    
     private final CassandraMailboxManager mailboxManager;
     private final MockAuthenticator userManager;
     private CassandraClusterSingleton cassandraClusterSingleton;
@@ -107,4 +111,10 @@ public class CassandraHostSystem extends
     public void createMailbox(MailboxPath mailboxPath) throws Exception{
         new MailboxCreationDelegate(mailboxManager).createMailbox(mailboxPath);
     }
+    
+    @Override
+    public boolean supports(Feature... features) {
+        return IMAP_FEATURES.supports(features);
+    }
+    
 }

Modified: 
james/project/trunk/mpt/impl/imap-mailbox/core/src/main/java/org/apache/james/mpt/imapmailbox/suite/AuthenticatedState.java
URL: 
http://svn.apache.org/viewvc/james/project/trunk/mpt/impl/imap-mailbox/core/src/main/java/org/apache/james/mpt/imapmailbox/suite/AuthenticatedState.java?rev=1709409&r1=1709408&r2=1709409&view=diff
==============================================================================
--- 
james/project/trunk/mpt/impl/imap-mailbox/core/src/main/java/org/apache/james/mpt/imapmailbox/suite/AuthenticatedState.java
 (original)
+++ 
james/project/trunk/mpt/impl/imap-mailbox/core/src/main/java/org/apache/james/mpt/imapmailbox/suite/AuthenticatedState.java
 Mon Oct 19 13:04:34 2015
@@ -24,14 +24,17 @@ import java.util.Locale;
 import javax.inject.Inject;
 
 import org.apache.james.mailbox.model.MailboxPath;
+import org.apache.james.mpt.api.ImapFeatures.Feature;
 import org.apache.james.mpt.api.ImapHostSystem;
 import org.apache.james.mpt.imapmailbox.suite.base.BaseAuthenticatedState;
+import org.junit.Assume;
 import org.junit.Test;
 
 public class AuthenticatedState extends BaseAuthenticatedState {
     
     @Inject
     private static ImapHostSystem system;
+
     
     public AuthenticatedState() throws Exception {
         super(system);
@@ -324,18 +327,21 @@ public class AuthenticatedState extends
 
     @Test
     public void listShouldNotListMailboxWithOtherNamspaceUS() throws Exception 
{
+        Assume.assumeTrue(system.supports(Feature.NAMESPACE_SUPPORT));
         system.createMailbox(new MailboxPath("#namespace", USER, "Other"));
         scriptTest("ListMailboxes", Locale.US);
     }
 
     @Test
     public void listShouldNotListMailboxWithOtherNamspaceITALY() throws 
Exception {
+        Assume.assumeTrue(system.supports(Feature.NAMESPACE_SUPPORT));
         system.createMailbox(new MailboxPath("#namespace", USER, "Other"));
         scriptTest("ListMailboxes", Locale.ITALY);
     }
 
     @Test
     public void listShouldNotListMailboxWithOtherNamspaceKOREA() throws 
Exception {
+        Assume.assumeTrue(system.supports(Feature.NAMESPACE_SUPPORT));
         system.createMailbox(new MailboxPath("#namespace", USER, "Other"));
         scriptTest("ListMailboxes", Locale.KOREA);
     }

Modified: 
james/project/trunk/mpt/impl/imap-mailbox/cyrus/src/test/java/org/apache/james/mpt/imapmailbox/cyrus/host/CyrusHostSystem.java
URL: 
http://svn.apache.org/viewvc/james/project/trunk/mpt/impl/imap-mailbox/cyrus/src/test/java/org/apache/james/mpt/imapmailbox/cyrus/host/CyrusHostSystem.java?rev=1709409&r1=1709408&r2=1709409&view=diff
==============================================================================
--- 
james/project/trunk/mpt/impl/imap-mailbox/cyrus/src/test/java/org/apache/james/mpt/imapmailbox/cyrus/host/CyrusHostSystem.java
 (original)
+++ 
james/project/trunk/mpt/impl/imap-mailbox/cyrus/src/test/java/org/apache/james/mpt/imapmailbox/cyrus/host/CyrusHostSystem.java
 Mon Oct 19 13:04:34 2015
@@ -20,16 +20,18 @@ package org.apache.james.mpt.imapmailbox
 
 import java.net.InetSocketAddress;
 
-import com.google.common.base.Joiner;
-import com.google.common.base.Strings;
 import org.apache.james.mailbox.model.MailboxConstants;
 import org.apache.james.mailbox.model.MailboxPath;
+import org.apache.james.mpt.api.ImapFeatures;
+import org.apache.james.mpt.api.ImapFeatures.Feature;
 import org.apache.james.mpt.api.Session;
 import org.apache.james.mpt.api.UserAdder;
 import org.apache.james.mpt.host.ExternalHostSystem;
 import org.apache.james.mpt.monitor.NullMonitor;
 import org.apache.james.mpt.protocol.ProtocolSession;
 
+import com.google.common.base.Joiner;
+import com.google.common.base.Strings;
 import com.google.common.base.Supplier;
 import com.google.common.base.Throwables;
 import com.google.inject.Inject;
@@ -42,13 +44,15 @@ public class CyrusHostSystem extends Ext
 
     private static final String CREATE_MAILBOX_LOCATION = 
"CyrusHostSystem.createMailbox";
     private static final String SHABANG = "* OK IMAP4rev1 Server ready";
+    private static final ImapFeatures SUPPORTED_FEATURES = 
ImapFeatures.of(Feature.NAMESPACE_SUPPORT);
+
     private final Docker docker;
     private Supplier<InetSocketAddress> addressSupplier;
     private ContainerCreation container;
 
     @Inject
     private CyrusHostSystem(Docker docker, UserAdder userAdder) {
-        super(new NullMonitor(), SHABANG, userAdder);
+        super(SUPPORTED_FEATURES, new NullMonitor(), SHABANG, userAdder);
         this.docker = docker;
         
     }
@@ -131,4 +135,6 @@ public class CyrusHostSystem extends Ext
             Throwables.propagate(e);
         }
     }
+    
+
 }

Modified: 
james/project/trunk/mpt/impl/imap-mailbox/elasticsearch/src/test/java/org/apache/james/mpt/imapmailbox/elasticsearch/host/ElasticSearchHostSystem.java
URL: 
http://svn.apache.org/viewvc/james/project/trunk/mpt/impl/imap-mailbox/elasticsearch/src/test/java/org/apache/james/mpt/imapmailbox/elasticsearch/host/ElasticSearchHostSystem.java?rev=1709409&r1=1709408&r2=1709409&view=diff
==============================================================================
--- 
james/project/trunk/mpt/impl/imap-mailbox/elasticsearch/src/test/java/org/apache/james/mpt/imapmailbox/elasticsearch/host/ElasticSearchHostSystem.java
 (original)
+++ 
james/project/trunk/mpt/impl/imap-mailbox/elasticsearch/src/test/java/org/apache/james/mpt/imapmailbox/elasticsearch/host/ElasticSearchHostSystem.java
 Mon Oct 19 13:04:34 2015
@@ -52,6 +52,8 @@ import org.apache.james.mailbox.store.St
 import org.apache.james.mailbox.store.extractor.DefaultTextExtractor;
 import org.apache.james.mailbox.store.quota.DefaultQuotaRootResolver;
 import org.apache.james.mailbox.store.quota.NoQuotaManager;
+import org.apache.james.mpt.api.ImapFeatures;
+import org.apache.james.mpt.api.ImapFeatures.Feature;
 import org.apache.james.mpt.host.JamesImapHostSystem;
 import org.apache.james.mpt.imapmailbox.MailboxCreationDelegate;
 
@@ -60,6 +62,8 @@ import com.google.inject.Inject;
 
 public class ElasticSearchHostSystem extends JamesImapHostSystem {
 
+    private static final ImapFeatures SUPPORTED_FEATURES = 
ImapFeatures.of(Feature.NAMESPACE_SUPPORT);
+    
     private EmbeddedElasticSearch embeddedElasticSearch;
     private Path tempDirectory;
     private StoreMailboxManager<InMemoryId> mailboxManager;
@@ -131,4 +135,9 @@ public class ElasticSearchHostSystem ext
         new MailboxCreationDelegate(mailboxManager).createMailbox(mailboxPath);
     }
 
+    @Override
+    public boolean supports(Feature... features) {
+        return SUPPORTED_FEATURES.supports(features);
+    }
+    
 }

Modified: 
james/project/trunk/mpt/impl/imap-mailbox/external-james/src/test/java/org/apache/james/mpt/imapmailbox/external/james/host/ExternalJamesHostSystem.java
URL: 
http://svn.apache.org/viewvc/james/project/trunk/mpt/impl/imap-mailbox/external-james/src/test/java/org/apache/james/mpt/imapmailbox/external/james/host/ExternalJamesHostSystem.java?rev=1709409&r1=1709408&r2=1709409&view=diff
==============================================================================
--- 
james/project/trunk/mpt/impl/imap-mailbox/external-james/src/test/java/org/apache/james/mpt/imapmailbox/external/james/host/ExternalJamesHostSystem.java
 (original)
+++ 
james/project/trunk/mpt/impl/imap-mailbox/external-james/src/test/java/org/apache/james/mpt/imapmailbox/external/james/host/ExternalJamesHostSystem.java
 Mon Oct 19 13:04:34 2015
@@ -20,26 +20,31 @@ package org.apache.james.mpt.imapmailbox
 
 import java.net.InetSocketAddress;
 
-import com.google.common.base.Preconditions;
-import com.google.common.base.Supplier;
-import com.google.inject.Inject;
-import com.google.inject.Singleton;
 import org.apache.commons.lang.NotImplementedException;
 import org.apache.james.mailbox.model.MailboxPath;
+import org.apache.james.mpt.api.ImapFeatures;
+import org.apache.james.mpt.api.ImapFeatures.Feature;
 import org.apache.james.mpt.host.ExternalHostSystem;
 import org.apache.james.mpt.monitor.NullMonitor;
 
+import com.google.common.base.Preconditions;
+import com.google.common.base.Supplier;
+import com.google.inject.Inject;
+import com.google.inject.Singleton;
+
 @Singleton
 public class ExternalJamesHostSystem extends ExternalHostSystem {
+    
     private static final String ENV_JAMES_ADDRESS = "JAMES_ADDRESS";
     private static final String ENV_JAMES_IMAP_PORT = "JAMES_IMAP_PORT";
-
+    private static final ImapFeatures SUPPORTED_FEATURES = 
ImapFeatures.of(Feature.NAMESPACE_SUPPORT);
+    
     private static final String SHABANG = "* OK IMAP4rev1 Server ready";
     private final Supplier<InetSocketAddress> addressSupplier;
 
     @Inject
     private ExternalJamesHostSystem(ExternalJamesUserAdder userAdder) {
-        super(new NullMonitor(), SHABANG, userAdder);
+        super(SUPPORTED_FEATURES, new NullMonitor(), SHABANG, userAdder);
         Preconditions.checkState(System.getenv(ENV_JAMES_ADDRESS) != null, 
"You must have exported an environment variable called JAMES_ADDRESS in order 
to run these tests. For instance export JAMES_ADDRESS=127.0.0.1");
         Preconditions.checkState(System.getenv(ENV_JAMES_IMAP_PORT) != 
null,"You must have exported an environment variable called JAMES_IMAP_PORT in 
order to run these tests. For instance export JAMES_IMAP_PORT=143");
         this.addressSupplier = () -> new InetSocketAddress(
@@ -69,5 +74,5 @@ public class ExternalJamesHostSystem ext
     public void createMailbox(MailboxPath mailboxPath) {
         throw new NotImplementedException();
     }
-
+    
 }

Modified: 
james/project/trunk/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/host/HBaseHostSystem.java
URL: 
http://svn.apache.org/viewvc/james/project/trunk/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/host/HBaseHostSystem.java?rev=1709409&r1=1709408&r2=1709409&view=diff
==============================================================================
--- 
james/project/trunk/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/host/HBaseHostSystem.java
 (original)
+++ 
james/project/trunk/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/host/HBaseHostSystem.java
 Mon Oct 19 13:04:34 2015
@@ -35,7 +35,6 @@ import org.apache.james.mailbox.acl.Grou
 import org.apache.james.mailbox.acl.MailboxACLResolver;
 import org.apache.james.mailbox.acl.SimpleGroupMembershipResolver;
 import org.apache.james.mailbox.acl.UnionMailboxACLResolver;
-import org.apache.james.mailbox.hbase.HBaseId;
 import org.apache.james.mailbox.hbase.HBaseMailboxManager;
 import org.apache.james.mailbox.hbase.HBaseMailboxSessionMapperFactory;
 import org.apache.james.mailbox.hbase.mail.HBaseModSeqProvider;
@@ -45,6 +44,8 @@ import org.apache.james.mailbox.store.Mo
 import org.apache.james.mailbox.store.StoreSubscriptionManager;
 import org.apache.james.mailbox.store.quota.DefaultQuotaRootResolver;
 import org.apache.james.mailbox.store.quota.NoQuotaManager;
+import org.apache.james.mpt.api.ImapFeatures;
+import org.apache.james.mpt.api.ImapFeatures.Feature;
 import org.apache.james.mpt.host.JamesImapHostSystem;
 import org.apache.james.mpt.imapmailbox.MailboxCreationDelegate;
 import org.slf4j.LoggerFactory;
@@ -52,6 +53,8 @@ import org.slf4j.LoggerFactory;
 public class HBaseHostSystem extends JamesImapHostSystem {
 
     public static final String META_DATA_DIRECTORY = "target/user-meta-data";
+    private static final ImapFeatures SUPPORTED_FEATURES = 
ImapFeatures.of(Feature.NAMESPACE_SUPPORT);
+
     public static HBaseHostSystem host = null;
     /** Set this to false if you wish to test it against a real cluster.
      * In that case you should provide the configuration file for the real
@@ -146,4 +149,9 @@ public class HBaseHostSystem extends Jam
     public void createMailbox(MailboxPath mailboxPath) throws Exception{
         new MailboxCreationDelegate(mailboxManager).createMailbox(mailboxPath);
     }
+    
+    @Override
+    public boolean supports(Feature... features) {
+        return SUPPORTED_FEATURES.supports(features);
+    }
 }

Modified: 
james/project/trunk/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/host/InMemoryHostSystem.java
URL: 
http://svn.apache.org/viewvc/james/project/trunk/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/host/InMemoryHostSystem.java?rev=1709409&r1=1709408&r2=1709409&view=diff
==============================================================================
--- 
james/project/trunk/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/host/InMemoryHostSystem.java
 (original)
+++ 
james/project/trunk/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/host/InMemoryHostSystem.java
 Mon Oct 19 13:04:34 2015
@@ -41,11 +41,15 @@ import org.apache.james.mailbox.store.qu
 import org.apache.james.mailbox.store.quota.DefaultQuotaRootResolver;
 import org.apache.james.mailbox.store.quota.ListeningCurrentQuotaUpdater;
 import org.apache.james.mailbox.store.quota.StoreQuotaManager;
+import org.apache.james.mpt.api.ImapFeatures;
+import org.apache.james.mpt.api.ImapFeatures.Feature;
 import org.apache.james.mpt.host.JamesImapHostSystem;
 import org.apache.james.mpt.imapmailbox.MailboxCreationDelegate;
 
 public class InMemoryHostSystem extends JamesImapHostSystem {
 
+    private static final ImapFeatures SUPPORTED_FEATURES = 
ImapFeatures.of(Feature.NAMESPACE_SUPPORT);
+
     private StoreMailboxManager<InMemoryId> mailboxManager;
     private MockAuthenticator userManager;
 
@@ -108,4 +112,10 @@ public class InMemoryHostSystem extends
     public void createMailbox(MailboxPath mailboxPath) throws Exception{
         new MailboxCreationDelegate(mailboxManager).createMailbox(mailboxPath);
     }
+    
+    @Override
+    public boolean supports(Feature... features) {
+        return SUPPORTED_FEATURES.supports(features);
+    }
+    
 }

Modified: 
james/project/trunk/mpt/impl/imap-mailbox/jcr/src/test/java/org/apache/james/mpt/imapmailbox/jcr/host/JCRHostSystem.java
URL: 
http://svn.apache.org/viewvc/james/project/trunk/mpt/impl/imap-mailbox/jcr/src/test/java/org/apache/james/mpt/imapmailbox/jcr/host/JCRHostSystem.java?rev=1709409&r1=1709408&r2=1709409&view=diff
==============================================================================
--- 
james/project/trunk/mpt/impl/imap-mailbox/jcr/src/test/java/org/apache/james/mpt/imapmailbox/jcr/host/JCRHostSystem.java
 (original)
+++ 
james/project/trunk/mpt/impl/imap-mailbox/jcr/src/test/java/org/apache/james/mpt/imapmailbox/jcr/host/JCRHostSystem.java
 Mon Oct 19 13:04:34 2015
@@ -33,7 +33,6 @@ import org.apache.james.mailbox.acl.Mail
 import org.apache.james.mailbox.acl.SimpleGroupMembershipResolver;
 import org.apache.james.mailbox.acl.UnionMailboxACLResolver;
 import org.apache.james.mailbox.jcr.GlobalMailboxSessionJCRRepository;
-import org.apache.james.mailbox.jcr.JCRId;
 import org.apache.james.mailbox.jcr.JCRMailboxManager;
 import org.apache.james.mailbox.jcr.JCRMailboxSessionMapperFactory;
 import org.apache.james.mailbox.jcr.JCRSubscriptionManager;
@@ -45,6 +44,8 @@ import org.apache.james.mailbox.store.JV
 import org.apache.james.mailbox.store.MockAuthenticator;
 import org.apache.james.mailbox.store.quota.DefaultQuotaRootResolver;
 import org.apache.james.mailbox.store.quota.NoQuotaManager;
+import org.apache.james.mpt.api.ImapFeatures;
+import org.apache.james.mpt.api.ImapFeatures.Feature;
 import org.apache.james.mpt.host.JamesImapHostSystem;
 import org.apache.james.mpt.imapmailbox.MailboxCreationDelegate;
 import org.slf4j.LoggerFactory;
@@ -61,6 +62,8 @@ public class JCRHostSystem extends James
 
     private static final String JACKRABBIT_HOME = "target/jackrabbit";
     public static final String META_DATA_DIRECTORY = "target/user-meta-data";
+    private static final ImapFeatures SUPPORTED_FEATURES = 
ImapFeatures.of(Feature.NAMESPACE_SUPPORT);
+
     private RepositoryImpl repository;
     
     public JCRHostSystem() throws Exception {
@@ -159,4 +162,9 @@ public class JCRHostSystem extends James
         new MailboxCreationDelegate(mailboxManager).createMailbox(mailboxPath);
     }
     
+    @Override
+    public boolean supports(Feature... features) {
+        return SUPPORTED_FEATURES.supports(features);
+    }
+    
 }

Modified: 
james/project/trunk/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/host/JPAHostSystem.java
URL: 
http://svn.apache.org/viewvc/james/project/trunk/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/host/JPAHostSystem.java?rev=1709409&r1=1709408&r2=1709409&view=diff
==============================================================================
--- 
james/project/trunk/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/host/JPAHostSystem.java
 (original)
+++ 
james/project/trunk/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/host/JPAHostSystem.java
 Mon Oct 19 13:04:34 2015
@@ -35,7 +35,6 @@ import org.apache.james.mailbox.acl.Grou
 import org.apache.james.mailbox.acl.MailboxACLResolver;
 import org.apache.james.mailbox.acl.SimpleGroupMembershipResolver;
 import org.apache.james.mailbox.acl.UnionMailboxACLResolver;
-import org.apache.james.mailbox.jpa.JPAId;
 import org.apache.james.mailbox.jpa.JPAMailboxSessionMapperFactory;
 import org.apache.james.mailbox.jpa.JPASubscriptionManager;
 import org.apache.james.mailbox.jpa.mail.JPAModSeqProvider;
@@ -52,6 +51,8 @@ import org.apache.james.mailbox.store.JV
 import org.apache.james.mailbox.store.MockAuthenticator;
 import org.apache.james.mailbox.store.quota.DefaultQuotaRootResolver;
 import org.apache.james.mailbox.store.quota.NoQuotaManager;
+import org.apache.james.mpt.api.ImapFeatures;
+import org.apache.james.mpt.api.ImapFeatures.Feature;
 import org.apache.james.mpt.host.JamesImapHostSystem;
 import org.apache.james.mpt.imapmailbox.MailboxCreationDelegate;
 import org.apache.openjpa.persistence.OpenJPAPersistence;
@@ -60,6 +61,7 @@ import org.slf4j.LoggerFactory;
 public class JPAHostSystem extends JamesImapHostSystem {
 
     public static final String META_DATA_DIRECTORY = "target/user-meta-data";
+    private static final ImapFeatures SUPPORTED_FEATURES = 
ImapFeatures.of(Feature.NAMESPACE_SUPPORT);
 
     public static JamesImapHostSystem build() throws Exception {
         JPAHostSystem host =  new JPAHostSystem();
@@ -162,5 +164,10 @@ public class JPAHostSystem extends James
     public void createMailbox(MailboxPath mailboxPath) throws Exception {
         new MailboxCreationDelegate(mailboxManager).createMailbox(mailboxPath);
     }
+    
+    @Override
+    public boolean supports(Feature... features) {
+        return SUPPORTED_FEATURES.supports(features);
+    }
 
 }

Modified: 
james/project/trunk/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/host/MaildirHostSystem.java
URL: 
http://svn.apache.org/viewvc/james/project/trunk/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/host/MaildirHostSystem.java?rev=1709409&r1=1709408&r2=1709409&view=diff
==============================================================================
--- 
james/project/trunk/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/host/MaildirHostSystem.java
 (original)
+++ 
james/project/trunk/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/host/MaildirHostSystem.java
 Mon Oct 19 13:04:34 2015
@@ -40,6 +40,8 @@ import org.apache.james.mailbox.store.St
 import org.apache.james.mailbox.store.StoreSubscriptionManager;
 import org.apache.james.mailbox.store.quota.DefaultQuotaRootResolver;
 import org.apache.james.mailbox.store.quota.NoQuotaManager;
+import org.apache.james.mpt.api.ImapFeatures;
+import org.apache.james.mpt.api.ImapFeatures.Feature;
 import org.apache.james.mpt.host.JamesImapHostSystem;
 import org.apache.james.mpt.imapmailbox.MailboxCreationDelegate;
 
@@ -47,6 +49,7 @@ public class MaildirHostSystem extends J
 
     public static final String META_DATA_DIRECTORY = "target/user-meta-data";
     private static final String MAILDIR_HOME = "target/Maildir";
+    private static final ImapFeatures SUPPORTED_FEATURES = ImapFeatures.of();
     
     private final StoreMailboxManager<MaildirId> mailboxManager;
     private final MockAuthenticator userManager;
@@ -104,6 +107,9 @@ public class MaildirHostSystem extends J
         new MailboxCreationDelegate(mailboxManager).createMailbox(mailboxPath);
     }
 
-
+    @Override
+    public boolean supports(Feature... features) {
+        return SUPPORTED_FEATURES.supports(features);
+    }
 
 }

Modified: 
james/project/trunk/mpt/mavenplugin/src/main/java/org/apache/james/mpt/maven/MailProtocolTest.java
URL: 
http://svn.apache.org/viewvc/james/project/trunk/mpt/mavenplugin/src/main/java/org/apache/james/mpt/maven/MailProtocolTest.java?rev=1709409&r1=1709408&r2=1709409&view=diff
==============================================================================
--- 
james/project/trunk/mpt/mavenplugin/src/main/java/org/apache/james/mpt/maven/MailProtocolTest.java
 (original)
+++ 
james/project/trunk/mpt/mavenplugin/src/main/java/org/apache/james/mpt/maven/MailProtocolTest.java
 Mon Oct 19 13:04:34 2015
@@ -28,6 +28,8 @@ import java.io.Reader;
 import java.io.StringReader;
 
 import org.apache.james.mpt.Runner;
+import org.apache.james.mpt.api.ImapFeatures;
+import org.apache.james.mpt.api.ImapFeatures.Feature;
 import org.apache.james.mpt.api.Monitor;
 import org.apache.james.mpt.host.ExternalHostSystem;
 import org.apache.james.mpt.protocol.ProtocolSessionBuilder;
@@ -37,6 +39,8 @@ import org.apache.maven.plugin.MojoFailu
 
 public class MailProtocolTest implements Monitor{
 
+   private static final ImapFeatures SUPPORTED_FEATURES = 
ImapFeatures.of(Feature.NAMESPACE_SUPPORT);
+
    private Integer port;
    
    private File scriptFile;
@@ -117,7 +121,7 @@ public class MailProtocolTest implements
                try {
                        inputStream = new FileInputStream(scriptFile);
 
-                       final ExternalHostSystem hostSystem = new 
ExternalHostSystem(host, port, this, shabang, null);
+                       final ExternalHostSystem hostSystem = new 
ExternalHostSystem(SUPPORTED_FEATURES, host, port, this, shabang, null);
                    final ProtocolSessionBuilder builder = new 
ProtocolSessionBuilder();
                     
                builder.addProtocolLines(scriptFile.getName(), inputStream, 
runner.getTestElements());




---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org
For additional commands, e-mail: server-dev-h...@james.apache.org

Reply via email to