Author: rdonkin
Date: Sun Aug 31 09:35:17 2008
New Revision: 690725

URL: http://svn.apache.org/viewvc?rev=690725&view=rev
Log:
Consolidated CommandManager.getInstance() into SieveFactory. JSIEVE-29.

Modified:
    james/jsieve/trunk/src/main/java/org/apache/jsieve/BaseSieveContext.java
    james/jsieve/trunk/src/main/java/org/apache/jsieve/Command.java
    james/jsieve/trunk/src/main/java/org/apache/jsieve/SieveContext.java
    james/jsieve/trunk/src/main/java/org/apache/jsieve/SieveFactory.java
    
james/jsieve/trunk/src/main/java/org/apache/jsieve/SieveValidationVisitor.java
    james/jsieve/trunk/src/main/java/org/apache/jsieve/commands/Require.java
    
james/jsieve/trunk/src/test/java/org/apache/jsieve/SieveParserVisitorImplQuoteTest.java

Modified: 
james/jsieve/trunk/src/main/java/org/apache/jsieve/BaseSieveContext.java
URL: 
http://svn.apache.org/viewvc/james/jsieve/trunk/src/main/java/org/apache/jsieve/BaseSieveContext.java?rev=690725&r1=690724&r2=690725&view=diff
==============================================================================
--- james/jsieve/trunk/src/main/java/org/apache/jsieve/BaseSieveContext.java 
(original)
+++ james/jsieve/trunk/src/main/java/org/apache/jsieve/BaseSieveContext.java 
Sun Aug 31 09:35:17 2008
@@ -19,6 +19,8 @@
 
 package org.apache.jsieve;
 
+import org.apache.jsieve.exception.LookupException;
+
 /**
  * Bean based implementation of context.
  * 
@@ -29,11 +31,13 @@
     private ConditionManager conditionManager;
     
     private final CommandStateManager commandStateManager;
-
-    public BaseSieveContext() 
+    private final CommandManager commandManager;
+    
+    public BaseSieveContext(final CommandManager commandManager) 
     {
         this.commandStateManager = new CommandStateManager();
         this.conditionManager = new ConditionManager();
+        this.commandManager = commandManager;
     }
     
     /**
@@ -68,4 +72,7 @@
         this.conditionManager = conditionManager;
     }
 
+    public ExecutableCommand getExecutable(String name) throws LookupException 
{
+        return commandManager.newInstance(name);
+    }
 }

Modified: james/jsieve/trunk/src/main/java/org/apache/jsieve/Command.java
URL: 
http://svn.apache.org/viewvc/james/jsieve/trunk/src/main/java/org/apache/jsieve/Command.java?rev=690725&r1=690724&r2=690725&view=diff
==============================================================================
--- james/jsieve/trunk/src/main/java/org/apache/jsieve/Command.java (original)
+++ james/jsieve/trunk/src/main/java/org/apache/jsieve/Command.java Sun Aug 31 
09:35:17 2008
@@ -20,7 +20,6 @@
 package org.apache.jsieve;
 
 import org.apache.commons.logging.Log;
-import org.apache.jsieve.exception.LookupException;
 import org.apache.jsieve.exception.SieveException;
 import org.apache.jsieve.mail.MailAdapter;
 
@@ -154,14 +153,9 @@
         // recursively from the top level block
         // so need to use the coordinate recorded from the parse
         context.setCoordinate(coordinate);
-        final ExecutableCommand executable = getExecutable();
+        final ExecutableCommand executable = context.getExecutable(getName());
         final Object result = executable.execute(
                         mail, getArguments(), getBlock(), context);
         return result;
     }
-
-    private ExecutableCommand getExecutable() throws LookupException {
-        final String name = getName();
-        return CommandManager.getInstance().newInstance(name);
-    }
 }

Modified: james/jsieve/trunk/src/main/java/org/apache/jsieve/SieveContext.java
URL: 
http://svn.apache.org/viewvc/james/jsieve/trunk/src/main/java/org/apache/jsieve/SieveContext.java?rev=690725&r1=690724&r2=690725&view=diff
==============================================================================
--- james/jsieve/trunk/src/main/java/org/apache/jsieve/SieveContext.java 
(original)
+++ james/jsieve/trunk/src/main/java/org/apache/jsieve/SieveContext.java Sun 
Aug 31 09:35:17 2008
@@ -19,6 +19,8 @@
 
 package org.apache.jsieve;
 
+import org.apache.jsieve.exception.LookupException;
+
 /**
  * Context for sieve operations.
  * 
@@ -47,4 +49,6 @@
     public abstract ConditionManager getConditionManager();
     //TODO: simplify interface
     public abstract void setConditionManager(final ConditionManager manager);
+    //TODO: consider whether API can be consolidated
+    public abstract ExecutableCommand getExecutable(String name) throws 
LookupException;
 }

Modified: james/jsieve/trunk/src/main/java/org/apache/jsieve/SieveFactory.java
URL: 
http://svn.apache.org/viewvc/james/jsieve/trunk/src/main/java/org/apache/jsieve/SieveFactory.java?rev=690725&r1=690724&r2=690725&view=diff
==============================================================================
--- james/jsieve/trunk/src/main/java/org/apache/jsieve/SieveFactory.java 
(original)
+++ james/jsieve/trunk/src/main/java/org/apache/jsieve/SieveFactory.java Sun 
Aug 31 09:35:17 2008
@@ -85,7 +85,8 @@
     public Node parse(InputStream inputStream) throws ParseException {
         try {
             final SimpleNode node = new SieveParser(inputStream, 
"UTF-8").start();
-            SieveValidationVisitor visitor = new SieveValidationVisitor();
+            final CommandManager commandManager = CommandManager.getInstance();
+            SieveValidationVisitor visitor = new 
SieveValidationVisitor(commandManager);
             node.jjtAccept(visitor, null);
             return node;
         } catch (ParseException ex) {
@@ -127,7 +128,8 @@
      */
     public void evaluate(MailAdapter mail, Node startNode)
             throws SieveException {
-        SieveContext context = new BaseSieveContext();
+        final CommandManager commandManager = CommandManager.getInstance();
+        SieveContext context = new BaseSieveContext(commandManager);
         SieveParserVisitor visitor = new SieveParserVisitorImpl(context);
         try {
             // Evaluate the Nodes

Modified: 
james/jsieve/trunk/src/main/java/org/apache/jsieve/SieveValidationVisitor.java
URL: 
http://svn.apache.org/viewvc/james/jsieve/trunk/src/main/java/org/apache/jsieve/SieveValidationVisitor.java?rev=690725&r1=690724&r2=690725&view=diff
==============================================================================
--- 
james/jsieve/trunk/src/main/java/org/apache/jsieve/SieveValidationVisitor.java 
(original)
+++ 
james/jsieve/trunk/src/main/java/org/apache/jsieve/SieveValidationVisitor.java 
Sun Aug 31 09:35:17 2008
@@ -43,9 +43,16 @@
  * tree has already been constructed.
  */
 public class SieveValidationVisitor implements SieveParserVisitor {
+
+    private final CommandManager commandManager;
     
     private boolean requireAllowed = true;
     private boolean isInRequire = false;
+    
+    protected SieveValidationVisitor(final CommandManager commandManager) {
+        super();
+        this.commandManager = commandManager;
+    }
 
     public Object visit(SimpleNode node, Object data) throws SieveException {
         return visitNode(node, data);
@@ -67,7 +74,7 @@
 
     public Object visit(ASTcommand node, Object data) throws SieveException {
         final String name = node.getName();
-        CommandManager.getInstance().newInstance(name);
+        commandManager.newInstance(name);
         if ("require".equalsIgnoreCase(name)) {
             if (requireAllowed) {
                 isInRequire = true;
@@ -109,7 +116,7 @@
                 final String quotedName = (String) value;
                 final String name = quotedName.substring(1, 
quotedName.length()-1);
                 try {
-                    CommandManager.getInstance().newInstance(name);
+                    commandManager.newInstance(name);
                 } catch (LookupException e) {
                     //TODO: catching is inefficient, should just check
                     Test.lookup(name);

Modified: 
james/jsieve/trunk/src/main/java/org/apache/jsieve/commands/Require.java
URL: 
http://svn.apache.org/viewvc/james/jsieve/trunk/src/main/java/org/apache/jsieve/commands/Require.java?rev=690725&r1=690724&r2=690725&view=diff
==============================================================================
--- james/jsieve/trunk/src/main/java/org/apache/jsieve/commands/Require.java 
(original)
+++ james/jsieve/trunk/src/main/java/org/apache/jsieve/commands/Require.java 
Sun Aug 31 09:35:17 2008
@@ -24,7 +24,6 @@
 
 import org.apache.jsieve.Arguments;
 import org.apache.jsieve.Block;
-import org.apache.jsieve.CommandManager;
 import org.apache.jsieve.SieveContext;
 import org.apache.jsieve.StringListArgument;
 import org.apache.jsieve.TestManager;
@@ -63,7 +62,7 @@
                 .getArgumentList().get(0)).getList().iterator();
 
         while (stringsIter.hasNext()) {
-            validateFeature((String) stringsIter.next(), mail);
+            validateFeature((String) stringsIter.next(), mail, context);
         }
         return null;
     }
@@ -74,13 +73,14 @@
      * 
      * @param name
      * @param mail
+     * @param context TODO
      * @throws FeatureException
      */
-    protected void validateFeature(String name, MailAdapter mail)
+    protected void validateFeature(String name, MailAdapter mail, SieveContext 
context)
             throws FeatureException {
         // Validate as a Command
         try {
-            validateCommand(name);
+            validateCommand(name, context);
             return;
         } catch (LookupException e) {
             // Not a command
@@ -101,8 +101,8 @@
      * @param name
      * @throws LookupException
      */
-    protected void validateCommand(String name) throws LookupException {
-        CommandManager.getInstance().lookup(name);
+    protected void validateCommand(String name, SieveContext context) throws 
LookupException {
+        context.getExecutable(name);
     }
 
     /**

Modified: 
james/jsieve/trunk/src/test/java/org/apache/jsieve/SieveParserVisitorImplQuoteTest.java
URL: 
http://svn.apache.org/viewvc/james/jsieve/trunk/src/test/java/org/apache/jsieve/SieveParserVisitorImplQuoteTest.java?rev=690725&r1=690724&r2=690725&view=diff
==============================================================================
--- 
james/jsieve/trunk/src/test/java/org/apache/jsieve/SieveParserVisitorImplQuoteTest.java
 (original)
+++ 
james/jsieve/trunk/src/test/java/org/apache/jsieve/SieveParserVisitorImplQuoteTest.java
 Sun Aug 31 09:35:17 2008
@@ -34,7 +34,7 @@
     
     protected void setUp() throws Exception {
         super.setUp();
-        visitor = new SieveParserVisitorImpl(new BaseSieveContext());
+        visitor = new SieveParserVisitorImpl(new 
BaseSieveContext(CommandManager.getInstance()));
         data = new ArrayList();
         node = new ASTstring(100);
     }



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to