Author: btellier
Date: Thu Dec 17 15:08:12 2015
New Revision: 1720590

URL: http://svn.apache.org/viewvc?rev=1720590&view=rev
Log:
JAMES-1618 Simplify error handling

Added:
    
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/transcode/ArgumentParser.java
Removed:
    
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/transcode/LineToCore.java
    
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/transcode/LineToCoreToLine.java
    
james/project/trunk/protocols/managesieve/src/test/java/org/apache/james/managesieve/core/
Modified:
    
james/project/trunk/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/host/JamesManageSieveHostSystem.java
    
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/Authenticate.java
    
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/Capability.java
    
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/CheckScript.java
    
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/DeleteScript.java
    
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/GetActive.java
    
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/GetScript.java
    
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/HaveSpace.java
    
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/ListScripts.java
    
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/PutScript.java
    
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/RenameScript.java
    
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/SetActive.java
    
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/Unauthenticate.java
    
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/core/CoreProcessor.java
    
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/transcode/ManageSieveProcessor.java
    
james/project/trunk/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/managesieve/ManageSieveMailet.java

Modified: 
james/project/trunk/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/host/JamesManageSieveHostSystem.java
URL: 
http://svn.apache.org/viewvc/james/project/trunk/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/host/JamesManageSieveHostSystem.java?rev=1720590&r1=1720589&r2=1720590&view=diff
==============================================================================
--- 
james/project/trunk/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/host/JamesManageSieveHostSystem.java
 (original)
+++ 
james/project/trunk/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/host/JamesManageSieveHostSystem.java
 Thu Dec 17 15:08:12 2015
@@ -21,8 +21,7 @@ package org.apache.james.mpt.host;
 
 import org.apache.james.managesieve.core.CoreProcessor;
 import org.apache.james.managesieve.jsieve.Parser;
-import org.apache.james.managesieve.transcode.LineToCore;
-import org.apache.james.managesieve.transcode.LineToCoreToLine;
+import org.apache.james.managesieve.transcode.ArgumentParser;
 import org.apache.james.managesieve.transcode.ManageSieveProcessor;
 import org.apache.james.mpt.api.Continuation;
 import org.apache.james.mpt.api.Session;
@@ -39,7 +38,7 @@ public abstract class JamesManageSieveHo
     public JamesManageSieveHostSystem(UsersRepository usersRepository, 
SieveRepository sieveRepository) throws Exception {
         this.usersRepository = usersRepository;
         this.sieveRepository = sieveRepository;
-        this.processor = new ManageSieveProcessor(new LineToCoreToLine(new 
LineToCore(new CoreProcessor(sieveRepository, usersRepository, new Parser(new 
ConfigurationManager())))));
+        this.processor = new ManageSieveProcessor(new ArgumentParser(new 
CoreProcessor(sieveRepository, usersRepository, new Parser(new 
ConfigurationManager()))));
     }
 
     @Override

Modified: 
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/Authenticate.java
URL: 
http://svn.apache.org/viewvc/james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/Authenticate.java?rev=1720590&r1=1720589&r2=1720590&view=diff
==============================================================================
--- 
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/Authenticate.java
 (original)
+++ 
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/Authenticate.java
 Thu Dec 17 15:08:12 2015
@@ -20,9 +20,7 @@
 
 package org.apache.james.managesieve.api.commands;
 
-import org.apache.james.managesieve.api.AuthenticationException;
 import org.apache.james.managesieve.api.Session;
-import org.apache.james.managesieve.api.SyntaxException;
 import org.apache.james.managesieve.api.UnknownSaslMechanism;
 
 
@@ -44,7 +42,7 @@ public interface Authenticate {
         }
     }
     
-    String chooseMechanism(Session session, String mechanism) throws 
AuthenticationException, UnknownSaslMechanism, SyntaxException;
+    String chooseMechanism(Session session, String mechanism);
     
-    String authenticate(Session session, String suppliedData) throws 
AuthenticationException, SyntaxException;
+    String authenticate(Session session, String suppliedData);
 }

Modified: 
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/Capability.java
URL: 
http://svn.apache.org/viewvc/james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/Capability.java?rev=1720590&r1=1720589&r2=1720590&view=diff
==============================================================================
--- 
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/Capability.java
 (original)
+++ 
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/Capability.java
 Thu Dec 17 15:08:12 2015
@@ -22,11 +22,9 @@ package org.apache.james.managesieve.api
 
 import org.apache.james.managesieve.api.Session;
 
-import java.util.Map;
-
 public interface Capability {
 
-    Map<Capabilities, String> capability(Session session);
+    String capability(Session session);
 
     /**
      *  @see <a href=http://tools.ietf.org/html/rfc5804#section-2.4>RFC 5804 
CAPABILITY Command</a>

Modified: 
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/CheckScript.java
URL: 
http://svn.apache.org/viewvc/james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/CheckScript.java?rev=1720590&r1=1720589&r2=1720590&view=diff
==============================================================================
--- 
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/CheckScript.java
 (original)
+++ 
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/CheckScript.java
 Thu Dec 17 15:08:12 2015
@@ -20,17 +20,13 @@
 
 package org.apache.james.managesieve.api.commands;
 
-import java.util.List;
-
-import org.apache.james.managesieve.api.AuthenticationRequiredException;
 import org.apache.james.managesieve.api.Session;
-import org.apache.james.managesieve.api.SyntaxException;
 
 /**
  *  @see <a href=http://tools.ietf.org/html/rfc5804#section-2.12>RFC 5804 
CHECKSCRIPT Command</a>
  */
 public interface CheckScript {
     
-    List<String> checkScript(Session session, String content) throws 
AuthenticationRequiredException, SyntaxException;
+    String checkScript(Session session, String content);
 
 }

Modified: 
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/DeleteScript.java
URL: 
http://svn.apache.org/viewvc/james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/DeleteScript.java?rev=1720590&r1=1720589&r2=1720590&view=diff
==============================================================================
--- 
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/DeleteScript.java
 (original)
+++ 
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/DeleteScript.java
 Thu Dec 17 15:08:12 2015
@@ -20,16 +20,13 @@
 
 package org.apache.james.managesieve.api.commands;
 
-import org.apache.james.managesieve.api.AuthenticationRequiredException;
 import org.apache.james.managesieve.api.Session;
-import org.apache.james.sieverepository.api.exception.IsActiveException;
-import org.apache.james.sieverepository.api.exception.ScriptNotFoundException;
 
 /**
  *  @see <a href=http://tools.ietf.org/html/rfc5804#section-2.10>RFC 5804 
DELETESCRIPT Command</a>
  */
 public interface DeleteScript {
     
-    void deleteScript(Session session, String name) throws 
AuthenticationRequiredException, ScriptNotFoundException, IsActiveException;
+    String deleteScript(Session session, String name);
 
 }

Modified: 
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/GetActive.java
URL: 
http://svn.apache.org/viewvc/james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/GetActive.java?rev=1720590&r1=1720589&r2=1720590&view=diff
==============================================================================
--- 
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/GetActive.java
 (original)
+++ 
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/GetActive.java
 Thu Dec 17 15:08:12 2015
@@ -33,6 +33,6 @@ import org.apache.james.sieverepository.
  */
 public interface GetActive {
     
-    String getActive(Session session) throws AuthenticationRequiredException, 
ScriptNotFoundException, StorageException;
+    String getActive(Session session);
 
 }

Modified: 
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/GetScript.java
URL: 
http://svn.apache.org/viewvc/james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/GetScript.java?rev=1720590&r1=1720589&r2=1720590&view=diff
==============================================================================
--- 
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/GetScript.java
 (original)
+++ 
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/GetScript.java
 Thu Dec 17 15:08:12 2015
@@ -20,16 +20,13 @@
 
 package org.apache.james.managesieve.api.commands;
 
-import org.apache.james.managesieve.api.AuthenticationRequiredException;
 import org.apache.james.managesieve.api.Session;
-import org.apache.james.sieverepository.api.exception.ScriptNotFoundException;
-import org.apache.james.sieverepository.api.exception.StorageException;
 
 /**
  *  @see <a href=http://tools.ietf.org/html/rfc5804#section-2.9>RFC 5804 
GETSCRIPT Command</a>
  */
 public interface GetScript {
     
-    String getScript(Session session, String name) throws 
AuthenticationRequiredException, ScriptNotFoundException, StorageException;
+    String getScript(Session session, String name);
 
 }

Modified: 
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/HaveSpace.java
URL: 
http://svn.apache.org/viewvc/james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/HaveSpace.java?rev=1720590&r1=1720589&r2=1720590&view=diff
==============================================================================
--- 
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/HaveSpace.java
 (original)
+++ 
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/HaveSpace.java
 Thu Dec 17 15:08:12 2015
@@ -20,17 +20,13 @@
 
 package org.apache.james.managesieve.api.commands;
 
-import org.apache.james.managesieve.api.AuthenticationRequiredException;
 import org.apache.james.managesieve.api.Session;
-import org.apache.james.sieverepository.api.exception.QuotaExceededException;
-import org.apache.james.sieverepository.api.exception.StorageException;
-import org.apache.james.sieverepository.api.exception.UserNotFoundException;
 
 /**
  *  @see <a href=http://tools.ietf.org/html/rfc5804#section-2.5>RFC 5804 
HAVESPACE Command</a>
  */
 public interface HaveSpace {
     
-    void haveSpace(Session session, String name, long size) throws 
AuthenticationRequiredException, QuotaExceededException, UserNotFoundException, 
StorageException;
+    String haveSpace(Session session, String name, long size);
 
 }

Modified: 
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/ListScripts.java
URL: 
http://svn.apache.org/viewvc/james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/ListScripts.java?rev=1720590&r1=1720589&r2=1720590&view=diff
==============================================================================
--- 
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/ListScripts.java
 (original)
+++ 
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/ListScripts.java
 Thu Dec 17 15:08:12 2015
@@ -20,17 +20,13 @@
 
 package org.apache.james.managesieve.api.commands;
 
-import java.util.List;
-
-import org.apache.james.managesieve.api.AuthenticationRequiredException;
 import org.apache.james.managesieve.api.Session;
-import org.apache.james.sieverepository.api.ScriptSummary;
 
 /**
  *  @see <a href=http://tools.ietf.org/html/rfc5804#section-2.7>RFC 5804 
LISTSCRIPTS Command</a>
  */
 public interface ListScripts {
        
-    List<ScriptSummary> listScripts(Session session) throws 
AuthenticationRequiredException;
+    String listScripts(Session session);
 
 }

Modified: 
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/PutScript.java
URL: 
http://svn.apache.org/viewvc/james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/PutScript.java?rev=1720590&r1=1720589&r2=1720590&view=diff
==============================================================================
--- 
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/PutScript.java
 (original)
+++ 
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/PutScript.java
 Thu Dec 17 15:08:12 2015
@@ -20,18 +20,13 @@
 
 package org.apache.james.managesieve.api.commands;
 
-import java.util.List;
-
-import org.apache.james.managesieve.api.AuthenticationRequiredException;
 import org.apache.james.managesieve.api.Session;
-import org.apache.james.managesieve.api.SyntaxException;
-import org.apache.james.sieverepository.api.exception.QuotaExceededException;
 
 /**
  *  @see <a href=http://tools.ietf.org/html/rfc5804#section-2.6>RFC 5804 
PUTSCRIPT Command</a>
  */
 public interface PutScript {
     
-    List<String> putScript(Session session, String name, String content) 
throws AuthenticationRequiredException, SyntaxException, QuotaExceededException;
+    String putScript(Session session, String name, String content);
 
 }

Modified: 
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/RenameScript.java
URL: 
http://svn.apache.org/viewvc/james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/RenameScript.java?rev=1720590&r1=1720589&r2=1720590&view=diff
==============================================================================
--- 
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/RenameScript.java
 (original)
+++ 
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/RenameScript.java
 Thu Dec 17 15:08:12 2015
@@ -20,16 +20,13 @@
 
 package org.apache.james.managesieve.api.commands;
 
-import org.apache.james.managesieve.api.AuthenticationRequiredException;
 import org.apache.james.managesieve.api.Session;
-import org.apache.james.sieverepository.api.exception.DuplicateException;
-import org.apache.james.sieverepository.api.exception.ScriptNotFoundException;
 
 /**
  *  @see <a href=http://tools.ietf.org/html/rfc5804#section-2.11>RFC 5804 
RENAMESCRIPT Command</a>
  */
 public interface RenameScript {
    
-    void renameScript(Session session, String oldName, String newName) throws 
AuthenticationRequiredException, ScriptNotFoundException, DuplicateException;
+    String renameScript(Session session, String oldName, String newName);
 
 }

Modified: 
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/SetActive.java
URL: 
http://svn.apache.org/viewvc/james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/SetActive.java?rev=1720590&r1=1720589&r2=1720590&view=diff
==============================================================================
--- 
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/SetActive.java
 (original)
+++ 
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/SetActive.java
 Thu Dec 17 15:08:12 2015
@@ -31,6 +31,6 @@ import org.apache.james.sieverepository.
  */
 public interface SetActive {
     
-    void setActive(Session session, String name) throws 
AuthenticationRequiredException, ScriptNotFoundException, 
UserNotFoundException, StorageException;
+    String setActive(Session session, String name);
 
 }

Modified: 
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/Unauthenticate.java
URL: 
http://svn.apache.org/viewvc/james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/Unauthenticate.java?rev=1720590&r1=1720589&r2=1720590&view=diff
==============================================================================
--- 
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/Unauthenticate.java
 (original)
+++ 
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/Unauthenticate.java
 Thu Dec 17 15:08:12 2015
@@ -22,7 +22,6 @@ package org.apache.james.managesieve.api
 
 import org.apache.james.managesieve.api.Session;
 
-
 /**
  * @see <a href=http://tools.ietf.org/html/rfc5804#section-2.14.1>RFC 5804 
UNAUTHENTICATE Command</a>
  */

Modified: 
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/core/CoreProcessor.java
URL: 
http://svn.apache.org/viewvc/james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/core/CoreProcessor.java?rev=1720590&r1=1720589&r2=1720590&view=diff
==============================================================================
--- 
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/core/CoreProcessor.java
 (original)
+++ 
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/core/CoreProcessor.java
 Thu Dec 17 15:08:12 2015
@@ -22,15 +22,16 @@ package org.apache.james.managesieve.cor
 
 import com.google.common.base.Function;
 import com.google.common.base.Joiner;
+import com.google.common.base.Splitter;
 import com.google.common.base.Strings;
 import com.google.common.base.Throwables;
+import com.google.common.collect.Iterables;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
 import org.apache.commons.io.IOUtils;
 import org.apache.james.managesieve.api.AuthenticationException;
 import org.apache.james.managesieve.api.AuthenticationProcessor;
 import org.apache.james.managesieve.api.AuthenticationRequiredException;
-import org.apache.james.managesieve.api.ManageSieveRuntimeException;
 import org.apache.james.managesieve.api.Session;
 import org.apache.james.managesieve.api.SessionTerminatedException;
 import org.apache.james.managesieve.api.SieveParser;
@@ -43,7 +44,6 @@ import org.apache.james.sieverepository.
 import org.apache.james.sieverepository.api.exception.IsActiveException;
 import org.apache.james.sieverepository.api.exception.QuotaExceededException;
 import org.apache.james.sieverepository.api.exception.ScriptNotFoundException;
-import org.apache.james.sieverepository.api.exception.SieveRepositoryException;
 import org.apache.james.sieverepository.api.exception.StorageException;
 import org.apache.james.sieverepository.api.exception.UserNotFoundException;
 import org.apache.james.user.api.UsersRepository;
@@ -76,7 +76,16 @@ public class CoreProcessor implements Co
     }
 
     @Override
-    public Map<Capabilities, String> capability(Session session) {
+    public String capability(Session session) {
+        return Joiner.on("\r\n").join(
+            Iterables.transform(computeCapabilityMap(session).entrySet(), new 
Function<Map.Entry<Capabilities,String>, String>() {
+                public String apply(Map.Entry<Capabilities, String> 
capabilitiesStringEntry) {
+                    return 
computeCapabilityEntryString(capabilitiesStringEntry);
+                }
+            })) + "\r\nOK";
+    }
+
+    private Map<Capabilities, String> computeCapabilityMap(Session session) {
         Map<Capabilities, String> capabilities = 
Maps.newHashMap(capabilitiesBase);
         if (session.isAuthenticated()) {
             capabilities.put(Capabilities.OWNER, session.getUser());
@@ -84,96 +93,188 @@ public class CoreProcessor implements Co
         return capabilities;
     }
 
+    private String computeCapabilityEntryString(Map.Entry<Capabilities, 
String> entry) {
+        return "\"" + entry.getKey().toString() + "\"" +
+            ( entry.getValue() == null ? "" : " \"" + entry.getValue() + "\"" 
);
+    }
+
     @Override
-    public List<String> checkScript(Session session, String content) throws 
AuthenticationRequiredException, SyntaxException {
-        authenticationCheck(session);
-        return parser.parse(content);
+    public String checkScript(Session session, String content) {
+        try {
+            authenticationCheck(session);
+            return manageWarnings(parser.parse(content));
+        } catch (AuthenticationRequiredException ex) {
+            return "NO";
+        } catch (SyntaxException ex) {
+            return sanitizeString("NO \"Syntax Error: " + ex.getMessage() + 
"\"");
+        }
+    }
+
+    private String manageWarnings(List<String> warnings) {
+        if (!warnings.isEmpty()) {
+            return "OK (WARNINGS) " + Joiner.on(' 
').join(Iterables.transform(warnings, new Function<String, String>() {
+                public String apply(String s) {
+                    return '\"' + s + '"';
+                }
+            }));
+        } else {
+            return "OK";
+        }
+    }
+
+    private String sanitizeString(String message) {
+        return Joiner.on("\r\n").join(Splitter.on('\n').split(message));
     }
 
     @Override
-    public void deleteScript(Session session, String name) throws 
AuthenticationRequiredException, ScriptNotFoundException, IsActiveException {
-        authenticationCheck(session);
+    public String deleteScript(Session session, String name) {
         try {
+            authenticationCheck(session);
             sieveRepository.deleteScript(session.getUser(), name);
-        } catch (StorageException ex) {
-            throw new ManageSieveRuntimeException(ex);
-        } catch (UserNotFoundException ex) {
-            throw new ManageSieveRuntimeException(ex);
+        } catch (AuthenticationRequiredException ex) {
+            return "NO";
+        } catch (ScriptNotFoundException ex) {
+            return "NO (NONEXISTENT) \"There is no script by that name\"";
+        } catch (IsActiveException ex) {
+            return "NO (ACTIVE) \"You may not delete an active script\"";
+        }  catch (UserNotFoundException e) {
+            return "NO : Invalid user " + session.getUser();
+        } catch (StorageException e) {
+            return "NO : Storage Exception : " + e.getMessage();
         }
+        return "OK";
     }
 
     @Override
-    public String getScript(Session session, String name) throws 
AuthenticationRequiredException, ScriptNotFoundException, StorageException {
-        authenticationCheck(session);
+    public String getScript(Session session, String name) {
         try {
+            authenticationCheck(session);
             String scriptContent = 
IOUtils.toString(sieveRepository.getScript(session.getUser(), name));
-            sieveRepository.getScript(session.getUser(), name);
-            return "{" + scriptContent.length() + "}" + "\r\n" + scriptContent;
-        } catch (UserNotFoundException ex) {
-            throw new ManageSieveRuntimeException(ex);
-        } catch (IOException ex) {
-            // Unable to read script InputStream
-            throw new ManageSieveRuntimeException(ex);
+            return "{" + scriptContent.length() + "}" + "\r\n" + scriptContent 
+ "\r\nOK";
+        } catch (AuthenticationRequiredException ex) {
+            return "NO";
+        } catch (ScriptNotFoundException ex) {
+            return "NO (NONEXISTENT) \"There is no script by that name\"";
+        } catch (StorageException ex) {
+            return "NO \"" + ex.getMessage() + "\"";
+        } catch (UserNotFoundException e) {
+            return "NO : Invalid user " + session.getUser();
+        } catch (IOException e) {
+            return "NO \"" + e.getMessage() + "\"";
         }
     }
 
     @Override
-    public void haveSpace(Session session, String name, long size) throws 
AuthenticationRequiredException, QuotaExceededException, UserNotFoundException, 
StorageException {
-        authenticationCheck(session);
-        sieveRepository.haveSpace(session.getUser(), name, size);
+    public String haveSpace(Session session, String name, long size) {
+        try {
+            authenticationCheck(session);
+            sieveRepository.haveSpace(session.getUser(), name, size);
+        } catch (AuthenticationRequiredException ex) {
+            return "NO";
+        } catch (QuotaExceededException ex) {
+            return "NO (QUOTA/MAXSIZE) \"Quota exceeded\"";
+        } catch (UserNotFoundException e) {
+            return "NO user not found : " + session.getUser();
+        } catch (StorageException e) {
+            return "NO storage exception : " + e.getMessage();
+        }
+        return "OK";
     }
 
     @Override
-    public List<ScriptSummary> listScripts(Session session) throws 
AuthenticationRequiredException {
-        authenticationCheck(session);
+    public String listScripts(Session session) {
         try {
-            return sieveRepository.listScripts(session.getUser());
-        } catch (SieveRepositoryException ex) {
-            throw new ManageSieveRuntimeException(ex);
+            authenticationCheck(session);
+            String list = Joiner.on("\r\n").join(
+                
Iterables.transform(sieveRepository.listScripts(session.getUser()), new 
Function<ScriptSummary, String>() {
+                    public String apply(ScriptSummary scriptSummary) {
+                        return '"' + scriptSummary.getName() + '"' + 
(scriptSummary.isActive() ? " ACTIVE" : "");
+                    }
+                }));
+            if (Strings.isNullOrEmpty(list)) {
+                return "OK";
+            } else {
+                return list + "\r\nOK";
+            }
+        } catch (AuthenticationRequiredException ex) {
+            return "NO";
+        } catch (UserNotFoundException e) {
+            return "NO user not found : " + session.getUser();
+        } catch (StorageException e) {
+            return "NO storage exception : " + e.getMessage();
         }
     }
 
     @Override
-    public List<String> putScript(Session session, String name, String 
content) throws AuthenticationRequiredException, SyntaxException, 
QuotaExceededException {
-        authenticationCheck(session);
-        List<String> warnings = parser.parse(content);
+    public String putScript(Session session, String name, String content) {
         try {
+            authenticationCheck(session);
             sieveRepository.putScript(session.getUser(), name, content);
-        } catch (UserNotFoundException ex) {
-            throw new ManageSieveRuntimeException(ex);
-        } catch (StorageException ex) {
-            throw new ManageSieveRuntimeException(ex);
+            return manageWarnings(parser.parse(content));
+        } catch (AuthenticationRequiredException ex) {
+            return "NO";
+        } catch (SyntaxException ex) {
+            return Joiner.on("\r\n").join(Splitter.on('\n').split("NO \"Syntax 
Error: " + ex.getMessage() + "\""));
+        } catch (QuotaExceededException ex) {
+            return "NO (QUOTA/MAXSIZE) \"Quota exceeded\"";
+        } catch (UserNotFoundException e) {
+            return "NO user not found : " + session.getUser();
+        } catch (StorageException e) {
+            return "NO storage exception : " + e.getMessage();
         }
-        return warnings;
     }
 
     @Override
-    public void renameScript(Session session, String oldName, String newName) 
throws AuthenticationRequiredException, ScriptNotFoundException, 
DuplicateException {
-        authenticationCheck(session);
+    public String renameScript(Session session, String oldName, String 
newName) {
         try {
+            authenticationCheck(session);
             sieveRepository.renameScript(session.getUser(), oldName, newName);
-        } catch (UserNotFoundException ex) {
-            throw new ManageSieveRuntimeException(ex);
-        } catch (StorageException ex) {
-            throw new ManageSieveRuntimeException(ex);
+        } catch (AuthenticationRequiredException ex) {
+            return "NO";
+        } catch (ScriptNotFoundException ex) {
+            return "NO (NONEXISTENT) \"There is no script by that name\"";
+        }  catch (DuplicateException ex) {
+            return "NO (ALREADYEXISTS) \"A script with that name already 
exists\"";
+        } catch (UserNotFoundException e) {
+            return "NO user not found : " + session.getUser();
+        } catch (StorageException e) {
+            return "NO storage exception : " + e.getMessage();
         }
+        return "OK";
     }
 
     @Override
-    public void setActive(Session session, String name) throws 
AuthenticationRequiredException, ScriptNotFoundException, 
UserNotFoundException, StorageException {
-        authenticationCheck(session);
-        sieveRepository.setActive(session.getUser(), name);
+    public String setActive(Session session, String name) {
+        try {
+            authenticationCheck(session);
+            sieveRepository.setActive(session.getUser(), name);
+        } catch (AuthenticationRequiredException ex) {
+            return "NO";
+        } catch (ScriptNotFoundException ex) {
+            return "NO (NONEXISTENT) \"There is no script by that name\"";
+        } catch (UserNotFoundException e) {
+            return "NO : User not found";
+        } catch (StorageException e) {
+            return "NO : Storage exception : " + e.getMessage();
+        }
+        return "OK";
     }
 
     @Override
-    public String getActive(Session session) throws 
AuthenticationRequiredException, ScriptNotFoundException, StorageException {
-        authenticationCheck(session);
+    public String getActive(Session session) {
         try {
-            return 
IOUtils.toString(sieveRepository.getActive(session.getUser()));
-        } catch (UserNotFoundException ex) {
-            throw new ManageSieveRuntimeException(ex);
+            authenticationCheck(session);
+            return 
IOUtils.toString(sieveRepository.getActive(session.getUser())) + "\r\nOK";
+        } catch (AuthenticationRequiredException ex) {
+            return "NO";
+        } catch (ScriptNotFoundException ex) {
+            return "NO (NONEXISTENT) \"" + ex.getMessage() + "\"";
+        } catch (StorageException ex) {
+            return "NO \"" + ex.getMessage() + "\"";
+        } catch (UserNotFoundException e) {
+            return "NO : User not found";
         } catch (IOException e) {
-            throw new ManageSieveRuntimeException(e);
+            return "NO \"" + e.getMessage() + "\"";
         }
     }
 
@@ -186,32 +287,42 @@ public class CoreProcessor implements Co
     }
 
     @Override
-    public String chooseMechanism(Session session, String mechanism) throws 
AuthenticationException, UnknownSaslMechanism, SyntaxException {
-        if (Strings.isNullOrEmpty(mechanism)) {
-            throw new SyntaxException("You must specify a SASL mechanism as an 
argument of AUTHENTICATE command");
-        }
-        String unquotedMechanism = unquotaIfNeeded(mechanism);
-        SupportedMechanism supportedMechanism = 
SupportedMechanism.retrieveMechanism(unquotedMechanism);
-
-        session.setChoosedAuthenticationMechanism(supportedMechanism);
-        session.setState(Session.State.AUTHENTICATION_IN_PROGRESS);
-        AuthenticationProcessor authenticationProcessor = 
authenticationProcessorMap.get(supportedMechanism);
-        return authenticationProcessor.initialServerResponse(session);
+    public String chooseMechanism(Session session, String mechanism) {
+        try {
+            if (Strings.isNullOrEmpty(mechanism)) {
+                return "NO ManageSieve syntax is incorrect : You must specify 
a SASL mechanism as an argument of AUTHENTICATE command";
+            }
+            String unquotedMechanism = unquotaIfNeeded(mechanism);
+            SupportedMechanism supportedMechanism = 
SupportedMechanism.retrieveMechanism(unquotedMechanism);
+
+            session.setChoosedAuthenticationMechanism(supportedMechanism);
+            session.setState(Session.State.AUTHENTICATION_IN_PROGRESS);
+            AuthenticationProcessor authenticationProcessor = 
authenticationProcessorMap.get(supportedMechanism);
+            return authenticationProcessor.initialServerResponse(session);
+        } catch (UnknownSaslMechanism unknownSaslMechanism) {
+            return "NO " + unknownSaslMechanism.getMessage();
+        }
     }
 
     @Override
-    public String authenticate(Session session, String suppliedData) throws 
AuthenticationException, SyntaxException {
-        SupportedMechanism currentAuthenticationMechanism = 
session.getChoosedAuthenticationMechanism();
-        AuthenticationProcessor authenticationProcessor = 
authenticationProcessorMap.get(currentAuthenticationMechanism);
-        String authenticatedUsername = 
authenticationProcessor.isAuthenticationSuccesfull(session, suppliedData);
-        if (authenticatedUsername != null) {
-            session.setUser(authenticatedUsername);
-            session.setState(Session.State.AUTHENTICATED);
-            return "OK authentication successfull";
-        } else {
-            session.setState(Session.State.UNAUTHENTICATED);
-            session.setUser(null);
-            return "NO authentication failed";
+    public String authenticate(Session session, String suppliedData) {
+        try {
+            SupportedMechanism currentAuthenticationMechanism = 
session.getChoosedAuthenticationMechanism();
+            AuthenticationProcessor authenticationProcessor = 
authenticationProcessorMap.get(currentAuthenticationMechanism);
+            String authenticatedUsername = 
authenticationProcessor.isAuthenticationSuccesfull(session, suppliedData);
+            if (authenticatedUsername != null) {
+                session.setUser(authenticatedUsername);
+                session.setState(Session.State.AUTHENTICATED);
+                return "OK authentication successfull";
+            } else {
+                session.setState(Session.State.UNAUTHENTICATED);
+                session.setUser(null);
+                return "NO authentication failed";
+            }
+        } catch (AuthenticationException e) {
+            return "NO Authentication failed with " + e.getCause().getClass() 
+ " : " + e.getMessage();
+        } catch (SyntaxException e) {
+            return "NO ManageSieve syntax is incorrect : " + e.getMessage();
         }
     }
 

Added: 
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/transcode/ArgumentParser.java
URL: 
http://svn.apache.org/viewvc/james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/transcode/ArgumentParser.java?rev=1720590&view=auto
==============================================================================
--- 
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/transcode/ArgumentParser.java
 (added)
+++ 
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/transcode/ArgumentParser.java
 Thu Dec 17 15:08:12 2015
@@ -0,0 +1,228 @@
+/*
+ *   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.managesieve.transcode;
+
+import com.google.common.base.Joiner;
+import com.google.common.base.Splitter;
+import com.google.common.base.Strings;
+import org.apache.james.managesieve.api.ArgumentException;
+import org.apache.james.managesieve.api.Session;
+import org.apache.james.managesieve.api.SessionTerminatedException;
+import org.apache.james.managesieve.api.commands.CoreCommands;
+import org.apache.james.managesieve.util.ParserUtils;
+
+import java.util.InputMismatchException;
+import java.util.Iterator;
+import java.util.NoSuchElementException;
+import java.util.Scanner;
+
+/**
+ * Parses the user input and calls the underlying command processor
+ */
+public class ArgumentParser {
+    
+    private final CoreCommands core;
+
+    public ArgumentParser(CoreCommands core) {
+        this.core = core;
+    }
+    
+    public String capability(Session session, String args) {
+        if (!args.trim().isEmpty()) {
+            return "NO \"Too many arguments: " + args + "\"";
+        }
+        return core.capability(session);
+    }
+
+    public String noop(String args) {
+        return core.noop(args);
+    }
+
+    public String unauthenticate(Session session, String args) {
+        if (Strings.isNullOrEmpty(args)) {
+            return core.unauthenticate(session);
+        } else {
+            return "NO UNAUTHENTICATE do not take arguments";
+        }
+    }
+
+    public void logout() throws SessionTerminatedException {
+        core.logout();
+    }
+
+    public String chooseMechanism(Session session, String mechanism) {
+        return core.chooseMechanism(session, mechanism);
+    }
+
+    public String authenticate(Session session, String suppliedData) {
+        return core.authenticate(session, suppliedData);
+    }
+    
+    public String deleteScript(Session session, String args) {
+        String scriptName = ParserUtils.getScriptName(args);
+        if (null == scriptName || scriptName.isEmpty()) {
+            return "NO \"Missing argument: script name\"";
+        }
+        
+        Scanner scanner = new 
Scanner(args.substring(scriptName.length()).trim()).useDelimiter("\\A");
+        if (scanner.hasNext()) {
+            return "NO \"Too many arguments: " + scanner.next() + "\"";
+        }
+        return core.deleteScript(session, ParserUtils.unquote(scriptName));
+    }    
+    
+    public String getScript(Session session, String args) {
+        String scriptName = ParserUtils.getScriptName(args);
+        if (scriptName == null || scriptName.isEmpty()) {
+            return "NO \"Missing argument: script name\"";
+        }
+        Scanner scanner = new 
Scanner(args.substring(scriptName.length()).trim()).useDelimiter("\\A");
+        if (scanner.hasNext()) {
+            return "NO \"Too many arguments: " + scanner.next() + "\"";
+        }
+        return core.getScript(session, ParserUtils.unquote(scriptName));
+    }     
+    
+    public String checkScript(Session session, String args) {
+        Iterator<String> firstLine = 
Splitter.on("\r\n").split(args.trim()).iterator();
+        Iterator<String> arguments = Splitter.on(' 
').split(firstLine.next().trim()).iterator();
+
+        if (! arguments.hasNext()) {
+            return "NO : Missing argument: script size";
+        } else {
+            try {
+                ParserUtils.getSize(arguments.next());
+            } catch (ArgumentException e) {
+                return "NO \"" + e.getMessage() + "\"";
+            }
+        }
+        if (arguments.hasNext()) {
+            return "NO \"Extra arguments not supported\"";
+        } else {
+            String content = Joiner.on("\r\n").join(firstLine);
+            if (Strings.isNullOrEmpty(content)) {
+                return "NO \"Missing argument: script content\"";
+            }
+            return core.checkScript(session, content);
+        }
+    }
+
+    public String haveSpace(Session session, String args) {
+        String scriptName = ParserUtils.getScriptName(args);
+        if (null == scriptName || scriptName.isEmpty()) {
+            return "NO \"Missing argument: script name\"";
+        }
+        Scanner scanner = new 
Scanner(args.substring(scriptName.length()).trim());
+        long size;
+        try {
+            size = scanner.nextLong();
+        } catch (InputMismatchException ex) {
+            return "NO \"Invalid argument: script size\"";
+        } catch (NoSuchElementException ex) {
+            return "NO \"Missing argument: script size\"";
+        }
+        scanner.useDelimiter("\\A");
+        if (scanner.hasNext()) {
+            return "NO \"Too many arguments: " + scanner.next().trim() + "\"";
+        }
+        return core.haveSpace(session, ParserUtils.unquote(scriptName), size);
+    }
+
+    public String listScripts(Session session, String args) {
+        if (!args.trim().isEmpty()) {
+            return "NO \"Too many arguments: " + args + "\"";
+        }
+        return core.listScripts(session);
+    }
+
+    public String putScript(Session session, String args) {
+        Iterator<String> firstLine = 
Splitter.on("\r\n").split(args.trim()).iterator();
+        Iterator<String> arguments = Splitter.on(' 
').split(firstLine.next().trim()).iterator();
+
+        String scriptName;
+        if (! arguments.hasNext()) {
+             return "NO \"Missing argument: script name\"";
+        } else {
+            scriptName = ParserUtils.unquote(arguments.next());
+            if (Strings.isNullOrEmpty(scriptName)) {
+               return "NO \"Missing argument: script name\"";
+            }
+        }
+        if (! arguments.hasNext()) {
+            return "NO \"Missing argument: script size\"";
+        } else {
+            try {
+                ParserUtils.getSize(arguments.next());
+            } catch (ArgumentException e) {
+                return "NO \""+ e.getMessage() + "\"";
+            }
+        }
+        if (arguments.hasNext()) {
+            return "NO \"Extra arguments not supported\"";
+        } else {
+            String content = Joiner.on("\r\n").join(firstLine);
+            return core.putScript(session, ParserUtils.unquote(scriptName), 
content);
+        }
+    }
+
+    public String renameScript(Session session, String args) {
+        String oldName = ParserUtils.getScriptName(args);
+        if (null == oldName || oldName.isEmpty()) {
+           return "NO \"Missing argument: old script name\"";
+        }
+        
+        String newName = 
ParserUtils.getScriptName(args.substring(oldName.length()));
+        if (null == newName || newName.isEmpty()) {
+            return "NO \"Missing argument: new script name\"";
+        } 
+        
+        Scanner scanner = new Scanner(args.substring(oldName.length() + 1 + 
newName.length()).trim()).useDelimiter("\\A");
+        if (scanner.hasNext()) {
+            return "NO \"Too many arguments: " + scanner.next() + "\"";
+        }
+        return core.renameScript(session, ParserUtils.unquote(oldName), 
ParserUtils.unquote(newName));
+    }
+
+    public String setActive(Session session, String args) {
+        String scriptName = ParserUtils.getScriptName(args);
+        if (null == scriptName || scriptName.isEmpty()) {
+            return "NO \"Missing argument: script name\"";
+        }
+        Scanner scanner = new 
Scanner(args.substring(scriptName.length()).trim()).useDelimiter("\\A");
+        if (scanner.hasNext()) {
+            return "NO \"Too many arguments: " + scanner.next() + "\"";
+        }
+        return core.setActive(session, ParserUtils.unquote(scriptName));
+    } 
+    
+    public String getActive(Session session, String args) {
+        Scanner scanner = new Scanner(args.trim()).useDelimiter("\\A");
+        if (scanner.hasNext()) {
+            return "NO \"Too many arguments: " + scanner.next() + "\"";
+        }
+        return core.getActive(session);
+    }
+
+    public String startTLS(Session session) {
+        return core.startTLS(session);
+    }
+
+}

Modified: 
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/transcode/ManageSieveProcessor.java
URL: 
http://svn.apache.org/viewvc/james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/transcode/ManageSieveProcessor.java?rev=1720590&r1=1720589&r2=1720590&view=diff
==============================================================================
--- 
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/transcode/ManageSieveProcessor.java
 (original)
+++ 
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/transcode/ManageSieveProcessor.java
 Thu Dec 17 15:08:12 2015
@@ -43,10 +43,10 @@ public class ManageSieveProcessor {
     public static final String STARTTLS = "STARTTLS";
     public static final String UNAUTHENTICATE = "UNAUTHENTICATE";
 
-    private final LineToCoreToLine lineToCoreToLine;
+    private final ArgumentParser argumentParser;
 
-    public ManageSieveProcessor(LineToCoreToLine lineToCoreToLine) {
-        this.lineToCoreToLine = lineToCoreToLine;
+    public ManageSieveProcessor(ArgumentParser argumentParser) {
+        this.argumentParser = argumentParser;
     }
 
     public String handleRequest(Session session, String request) throws 
ManageSieveException, SieveRepositoryException {
@@ -82,38 +82,38 @@ public class ManageSieveProcessor {
 
     private String matchCommandWithImplementation(Session session, String 
arguments, String command) throws SessionTerminatedException {
         if (session.getState() == Session.State.AUTHENTICATION_IN_PROGRESS) {
-            return lineToCoreToLine.authenticate(session, arguments);
+            return argumentParser.authenticate(session, arguments);
         }
         if (command.equals(AUTHENTICATE)) {
-            return lineToCoreToLine.chooseMechanism(session, arguments);
+            return argumentParser.chooseMechanism(session, arguments);
         } else if (command.equals(CAPABILITY)) {
-            return lineToCoreToLine.capability(session, arguments);
+            return argumentParser.capability(session, arguments);
         } else if (command.equals(CHECKSCRIPT)) {
-            return lineToCoreToLine.checkScript(session, arguments);
+            return argumentParser.checkScript(session, arguments);
         } else if (command.equals(DELETESCRIPT)) {
-            return lineToCoreToLine.deleteScript(session, arguments);
+            return argumentParser.deleteScript(session, arguments);
         } else if (command.equals(GETACTIVE)) {
-            return lineToCoreToLine.getActive(session, arguments);
+            return argumentParser.getActive(session, arguments);
         } else if (command.equals(GETSCRIPT)) {
-            return lineToCoreToLine.getScript(session, arguments);
+            return argumentParser.getScript(session, arguments);
         } else if (command.equals(HAVESPACE)) {
-            return lineToCoreToLine.haveSpace(session, arguments);
+            return argumentParser.haveSpace(session, arguments);
         } else if (command.equals(LISTSCRIPTS)) {
-            return lineToCoreToLine.listScripts(session, arguments);
+            return argumentParser.listScripts(session, arguments);
         } else if (command.equals(LOGOUT)) {
-            lineToCoreToLine.logout();
+            argumentParser.logout();
         } else if (command.equals(NOOP)) {
-            return lineToCoreToLine.noop(arguments);
+            return argumentParser.noop(arguments);
         } else if (command.equals(PUTSCRIPT)) {
-            return lineToCoreToLine.putScript(session, arguments);
+            return argumentParser.putScript(session, arguments);
         } else if (command.equals(RENAMESCRIPT)) {
-            return lineToCoreToLine.renameScript(session, arguments);
+            return argumentParser.renameScript(session, arguments);
         } else if (command.equals(SETACTIVE)) {
-            return lineToCoreToLine.setActive(session, arguments);
+            return argumentParser.setActive(session, arguments);
         } else if (command.equals(STARTTLS)) {
-            return lineToCoreToLine.startTLS(session);
+            return argumentParser.startTLS(session);
         } else if (command.equals(UNAUTHENTICATE)) {
-            return lineToCoreToLine.unauthenticate(session, arguments);
+            return argumentParser.unauthenticate(session, arguments);
         }
         return "NO unknown " + command + " command";
     }

Modified: 
james/project/trunk/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/managesieve/ManageSieveMailet.java
URL: 
http://svn.apache.org/viewvc/james/project/trunk/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/managesieve/ManageSieveMailet.java?rev=1720590&r1=1720589&r2=1720590&view=diff
==============================================================================
--- 
james/project/trunk/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/managesieve/ManageSieveMailet.java
 (original)
+++ 
james/project/trunk/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/managesieve/ManageSieveMailet.java
 Thu Dec 17 15:08:12 2015
@@ -34,8 +34,7 @@ import com.google.common.collect.Lists;
 import org.apache.james.managesieve.api.Session;
 import org.apache.james.managesieve.api.SieveParser;
 import org.apache.james.managesieve.core.CoreProcessor;
-import org.apache.james.managesieve.transcode.LineToCore;
-import org.apache.james.managesieve.transcode.LineToCoreToLine;
+import org.apache.james.managesieve.transcode.ArgumentParser;
 import org.apache.james.managesieve.transcode.ManageSieveProcessor;
 import org.apache.james.managesieve.util.SettableSession;
 import org.apache.james.sieverepository.api.SieveRepository;
@@ -114,9 +113,7 @@ public class ManageSieveMailet extends G
         setHelpURL(getInitParameter("helpURL"));
         cache = getInitParameter("cache", true);
         transcoder = new MessageToCoreToMessage(new ManageSieveProcessor(
-            new LineToCoreToLine(
-                new LineToCore(
-                    new CoreProcessor(sieveRepository, usersRepository, 
sieveParser)))),
+                new ArgumentParser(new CoreProcessor(sieveRepository, 
usersRepository, sieveParser))),
             this);
     }
 



---------------------------------------------------------------------
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