From dce387b95d156aff319c6ee209db5abb1060a9ed Mon Sep 17 00:00:00 2001
From: benwa <btellier@linagora.com>
Date: Fri, 22 May 2015 15:31:10 +0200
Subject: [PATCH] JSIEVE-98 Sieve mailet manager should be usable from James
 server

---
 .../james/managesieve/api/ScriptSummary.java       | 39 ++++++++++++++++++++--
 .../mailet/transcode/MessageToCoreToMessage.java   |  4 +++
 .../mailet/ManageSieveMailetTestCase.java          |  3 +-
 .../managesieve/mock/MockSieveRepository.java      | 13 ++------
 4 files changed, 44 insertions(+), 15 deletions(-)

diff --git a/manager/api/src/main/java/org/apache/james/managesieve/api/ScriptSummary.java b/manager/api/src/main/java/org/apache/james/managesieve/api/ScriptSummary.java
index 6d31bd6..e31217c 100644
--- a/manager/api/src/main/java/org/apache/james/managesieve/api/ScriptSummary.java
+++ b/manager/api/src/main/java/org/apache/james/managesieve/api/ScriptSummary.java
@@ -20,7 +20,40 @@
 
 package org.apache.james.managesieve.api;
 
-public interface ScriptSummary {
-    abstract public String getName();
-    abstract public boolean isActive();
+public class ScriptSummary {
+
+    private final String name;
+    private final boolean activeFile;
+
+    public ScriptSummary(String name, boolean activeFile) {
+        this.name = name;
+        this.activeFile = activeFile;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public boolean isActive() {
+        return activeFile;
+    }
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (!(o instanceof ScriptSummary)) return false;
+
+        ScriptSummary that = (ScriptSummary) o;
+
+        if (activeFile != that.activeFile) return false;
+        return !(name != null ? !name.equals(that.name) : that.name != null);
+
+    }
+
+    @Override
+    public int hashCode() {
+        int result = name != null ? name.hashCode() : 0;
+        result = 31 * result + (activeFile ? 1 : 0);
+        return result;
+    }
 }
\ No newline at end of file
diff --git a/manager/mailet/src/main/java/org/apache/james/managesieve/mailet/transcode/MessageToCoreToMessage.java b/manager/mailet/src/main/java/org/apache/james/managesieve/mailet/transcode/MessageToCoreToMessage.java
index f409105..376fd80 100644
--- a/manager/mailet/src/main/java/org/apache/james/managesieve/mailet/transcode/MessageToCoreToMessage.java
+++ b/manager/mailet/src/main/java/org/apache/james/managesieve/mailet/transcode/MessageToCoreToMessage.java
@@ -69,6 +69,10 @@ public class MessageToCoreToMessage {
                             && (fileName.endsWith(".siv") || fileName.endsWith(".sieve"));
                 }
                 if (found) {
+                    Object content = part.getContent();
+                    if (content instanceof String) {
+                        return (String) part.getContent();
+                    }
                     InputStream is = (InputStream) part.getContent();
                     Scanner scanner = null;
                     try {
diff --git a/manager/mailet/src/test/java/org/apache/james/managesieve/mailet/ManageSieveMailetTestCase.java b/manager/mailet/src/test/java/org/apache/james/managesieve/mailet/ManageSieveMailetTestCase.java
index 7fb1752..63f6e9b 100644
--- a/manager/mailet/src/test/java/org/apache/james/managesieve/mailet/ManageSieveMailetTestCase.java
+++ b/manager/mailet/src/test/java/org/apache/james/managesieve/mailet/ManageSieveMailetTestCase.java
@@ -33,6 +33,7 @@ import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertTrue;
 import org.junit.Before;
+import org.junit.Ignore;
 import org.junit.Test;
 
 import javax.activation.DataHandler;
@@ -40,7 +41,6 @@ import javax.mail.Address;
 import javax.mail.BodyPart;
 import javax.mail.MessagingException;
 import javax.mail.Session;
-import javax.mail.internet.AddressException;
 import javax.mail.internet.InternetAddress;
 import javax.mail.internet.MimeBodyPart;
 import javax.mail.internet.MimeMessage;
@@ -1077,6 +1077,7 @@ public class ManageSieveMailetTestCase {
 
     }
 
+    @Ignore("Ignore this test as it depends of your environment (file path changes with your position in the project)")
     @Test
     public final void testHelp() throws MessagingException, IOException {
         String user = "test@localhost";
diff --git a/manager/mock/src/main/java/org/apache/james/managesieve/mock/MockSieveRepository.java b/manager/mock/src/main/java/org/apache/james/managesieve/mock/MockSieveRepository.java
index f83c1e4..ef9fc03 100644
--- a/manager/mock/src/main/java/org/apache/james/managesieve/mock/MockSieveRepository.java
+++ b/manager/mock/src/main/java/org/apache/james/managesieve/mock/MockSieveRepository.java
@@ -254,17 +254,8 @@ public class MockSieveRepository implements SieveRepository {
         }
         Set<Entry<String, SieveScript>> scripts = _repository.get(user).entrySet();
         List<ScriptSummary> summaries = new ArrayList<ScriptSummary>(scripts.size());
-        for (final Entry<String, SieveScript> entry : scripts)
-        {
-            summaries.add(new ScriptSummary(){
-
-                public String getName() {
-                    return entry.getKey();
-                }
-
-                public boolean isActive() {
-                    return entry.getValue().isActive();
-                }});
+        for (final Entry<String, SieveScript> entry : scripts) {
+            summaries.add(new ScriptSummary(entry.getKey(), entry.getValue().isActive()));
         }
         return summaries;
     }
-- 
2.4.2

