Author: btellier
Date: Thu Dec 17 15:09:04 2015
New Revision: 1720592

URL: http://svn.apache.org/viewvc?rev=1720592&view=rev
Log:
JAMES-1618 Remove unnecessary regex matching

Modified:
    
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/transcode/ArgumentParser.java
    
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/util/ParserUtils.java

Modified: 
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=1720592&r1=1720591&r2=1720592&view=diff
==============================================================================
--- 
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/transcode/ArgumentParser.java
 (original)
+++ 
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/transcode/ArgumentParser.java
 Thu Dec 17 15:09:04 2015
@@ -29,10 +29,7 @@ import org.apache.james.managesieve.api.
 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
@@ -81,28 +78,27 @@ public class ArgumentParser {
     }
     
     public String deleteScript(Session session, String args) {
-        String scriptName = ParserUtils.getScriptName(args);
-        if (null == scriptName || scriptName.isEmpty()) {
+        Iterator<String> argumentIterator = Splitter.on(' 
').omitEmptyStrings().split(args).iterator();
+        if (!argumentIterator.hasNext()) {
             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() + "\"";
+        String scriptName = ParserUtils.unquote(argumentIterator.next());
+        if (argumentIterator.hasNext()) {
+            return "NO \"Too many arguments: " + argumentIterator.next() + 
"\"";
         }
-        return core.deleteScript(session, ParserUtils.unquote(scriptName));
+        return core.deleteScript(session, scriptName);
     }    
     
     public String getScript(Session session, String args) {
-        String scriptName = ParserUtils.getScriptName(args);
-        if (scriptName == null || scriptName.isEmpty()) {
+        Iterator<String> argumentIterator = Splitter.on(' 
').omitEmptyStrings().split(args).iterator();
+        if (!argumentIterator.hasNext()) {
             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() + "\"";
+        String scriptName = ParserUtils.unquote(argumentIterator.next());
+        if (argumentIterator.hasNext()) {
+            return "NO \"Too many arguments: " + argumentIterator.next() + 
"\"";
         }
-        return core.getScript(session, ParserUtils.unquote(scriptName));
+        return core.getScript(session, scriptName);
     }     
     
     public String checkScript(Session session, String args) {
@@ -130,24 +126,24 @@ public class ArgumentParser {
     }
 
     public String haveSpace(Session session, String args) {
-        String scriptName = ParserUtils.getScriptName(args);
-        if (null == scriptName || scriptName.isEmpty()) {
+        Iterator<String> argumentIterator = Splitter.on(' 
').omitEmptyStrings().split(args.trim()).iterator();
+        if (!argumentIterator.hasNext()) {
             return "NO \"Missing argument: script name\"";
         }
-        Scanner scanner = new 
Scanner(args.substring(scriptName.length()).trim());
+        String scriptName = ParserUtils.unquote(argumentIterator.next());
         long size;
+        if (!argumentIterator.hasNext()) {
+            return "NO \"Missing argument: script size\"";
+        }
         try {
-            size = scanner.nextLong();
-        } catch (InputMismatchException ex) {
+            size = Long.parseLong(argumentIterator.next());
+        } catch (NumberFormatException e) {
             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() + "\"";
+        if (argumentIterator.hasNext()) {
+            return "NO \"Too many arguments: " + 
argumentIterator.next().trim() + "\"";
         }
-        return core.haveSpace(session, ParserUtils.unquote(scriptName), size);
+        return core.haveSpace(session, scriptName, size);
     }
 
     public String listScripts(Session session, String args) {
@@ -188,41 +184,31 @@ public class ArgumentParser {
     }
 
     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()) {
+        Iterator<String> argumentIterator = Splitter.on(' 
').omitEmptyStrings().split(args).iterator();
+        if (!argumentIterator.hasNext()) {
+            return "NO \"Missing argument: old script name\"";
+        }
+        String oldName = ParserUtils.unquote(argumentIterator.next());
+        if (!argumentIterator.hasNext()) {
             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));
+        String newName = ParserUtils.unquote(argumentIterator.next());
+        if (argumentIterator.hasNext()) {
+            return "NO \"Too many arguments: " + argumentIterator.next() + 
"\"";
+        }
+        return core.renameScript(session, oldName, newName);
     }
 
     public String setActive(Session session, String args) {
-        String scriptName = ParserUtils.getScriptName(args);
-        if (null == scriptName || scriptName.isEmpty()) {
+        Iterator<String> argumentIterator = Splitter.on(' 
').omitEmptyStrings().split(args).iterator();
+        if (!argumentIterator.hasNext()) {
             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() + "\"";
+        String scriptName = ParserUtils.unquote(argumentIterator.next());
+        if (argumentIterator.hasNext()) {
+            return "NO \"Too many arguments: " + argumentIterator.next() + 
"\"";
         }
-        return core.getActive(session);
+        return core.setActive(session, scriptName);
     }
 
     public String startTLS(Session session) {

Modified: 
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/util/ParserUtils.java
URL: 
http://svn.apache.org/viewvc/james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/util/ParserUtils.java?rev=1720592&r1=1720591&r2=1720592&view=diff
==============================================================================
--- 
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/util/ParserUtils.java
 (original)
+++ 
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/util/ParserUtils.java
 Thu Dec 17 15:09:04 2015
@@ -22,13 +22,8 @@ package org.apache.james.managesieve.uti
 
 import org.apache.james.managesieve.api.ArgumentException;
 
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
 public class ParserUtils {
 
-    private static final Pattern SCRIPT_NAME_REGEX = 
Pattern.compile("[^\\s\"']+|\"[^\"]*\"|'[^']*'");
-
     public static long getSize(String args) throws ArgumentException {
         if (args != null && args.length() > 3
             && args.charAt(0) == '{'
@@ -43,19 +38,6 @@ public class ParserUtils {
         throw new ArgumentException(args + " is an invalid size literal : it 
should be at least 4 char looking like {_+}");
     }
 
-    public static String getScriptName(String args) {
-        Matcher regexMatcher = SCRIPT_NAME_REGEX.matcher(args);
-        regexMatcher.find();
-        String name = null;
-        try {
-        name = regexMatcher.group();
-        } catch(IllegalStateException ex)
-        {
-            // no op
-        }
-        return name;
-    }
-
     public static String unquote(String quoted) {
         String result = quoted;
         if (quoted != null) {



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