Author: norman
Date: Sun Nov  7 09:49:44 2010
New Revision: 1032250

URL: http://svn.apache.org/viewvc?rev=1032250&view=rev
Log:
Throw ConfigurationException if not all needed processors are configured or if 
ghost is used as processorname as the name is reserved (JAMES-1118)

Modified:
    
james/server/trunk/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/camel/CamelMailProcessorList.java

Modified: 
james/server/trunk/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/camel/CamelMailProcessorList.java
URL: 
http://svn.apache.org/viewvc/james/server/trunk/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/camel/CamelMailProcessorList.java?rev=1032250&r1=1032249&r2=1032250&view=diff
==============================================================================
--- 
james/server/trunk/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/camel/CamelMailProcessorList.java
 (original)
+++ 
james/server/trunk/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/camel/CamelMailProcessorList.java
 Sun Nov  7 09:49:44 2010
@@ -343,7 +343,8 @@ public class CamelMailProcessorList impl
             for (int i = 0; i < processorConfs.size(); i++) {
                 final HierarchicalConfiguration processorConf = 
processorConfs.get(i);
                 String processorName = processorConf.getString("[...@name]");
-
+                
+                if (processorName.equals(Mail.GHOST)) throw new 
ConfigurationException("ProcessorName of " + Mail.GHOST + " is reserved for 
internal use, choose a different name");
                 
                 mailets.put(processorName, new ArrayList<MailetManagement>());
                 matchers.put(processorName, new 
ArrayList<MatcherManagement>());
@@ -498,11 +499,42 @@ public class CamelMailProcessorList impl
                   
                 processors.put(processorName, new 
ProcessorDetail(processorName,new ChildProcessor(processorName)));
             }
-                
+            
+            // check if all needed processors are configured
+            checkProcessors();
+  
         }
+        
     }
     
     /**
+     * Check if all needed Processors are configured and if not throw a 
{...@link ConfigurationException}
+     * 
+     * @throws ConfigurationException
+     */
+    private void checkProcessors() throws ConfigurationException {
+        boolean errorProcessorFound = false;
+        boolean rootProcessorFound = false;
+        Iterator<String> names = processors.keySet().iterator();
+        while(names.hasNext()) {
+            String name = names.next();
+            if (name.equals(Mail.DEFAULT)) {
+                rootProcessorFound = true;
+            } else if (name.equals(Mail.ERROR)) {
+                errorProcessorFound = true;
+            }
+            
+            if (errorProcessorFound && rootProcessorFound) {
+                return;
+            }
+        }
+        if (errorProcessorFound == false) {
+            throw new ConfigurationException("You need to configure a 
Processor with name " + Mail.ERROR);
+        } else if (rootProcessorFound == false) {
+            throw new ConfigurationException("You need to configure a 
Processor with name " + Mail.DEFAULT);
+        }
+    }
+    /**
      * Load  {...@link CompositeMatcher} implementations and their child 
{...@link Matcher}'s
      * 
      * CompositeMatcher were added by JAMES-948



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to