Author: davsclaus
Date: Sun Jun 27 12:45:33 2010
New Revision: 958376

URL: http://svn.apache.org/viewvc?rev=958376&view=rev
Log:
Polished and added a simple LB support for ease of use for custom LB which 
doesnt support async processing

Added:
    
camel/trunk/camel-core/src/main/java/org/apache/camel/processor/loadbalancer/SimpleLoadBalancerSupport.java
   (contents, props changed)
      - copied, changed from r958209, 
camel/trunk/camel-core/src/main/java/org/apache/camel/processor/loadbalancer/LoadBalancerSupport.java
Modified:
    
camel/trunk/camel-core/src/main/java/org/apache/camel/processor/InterceptEndpointProcessor.java
    
camel/trunk/camel-core/src/main/java/org/apache/camel/processor/RoutePolicyProcessor.java
    
camel/trunk/camel-core/src/main/java/org/apache/camel/processor/loadbalancer/LoadBalancerSupport.java
    
camel/trunk/camel-core/src/main/java/org/apache/camel/processor/validation/PredicateValidatingProcessor.java

Modified: 
camel/trunk/camel-core/src/main/java/org/apache/camel/processor/InterceptEndpointProcessor.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/InterceptEndpointProcessor.java?rev=958376&r1=958375&r2=958376&view=diff
==============================================================================
--- 
camel/trunk/camel-core/src/main/java/org/apache/camel/processor/InterceptEndpointProcessor.java
 (original)
+++ 
camel/trunk/camel-core/src/main/java/org/apache/camel/processor/InterceptEndpointProcessor.java
 Sun Jun 27 12:45:33 2010
@@ -19,7 +19,7 @@ package org.apache.camel.processor;
 import org.apache.camel.Processor;
 
 /**
- * Endpoint intercept processor so we know the processor is supposed to 
intercept an andpoint.
+ * Endpoint intercept processor so we know the processor is supposed to 
intercept an endpoint.
  *
  * @version $Revision$
  */

Modified: 
camel/trunk/camel-core/src/main/java/org/apache/camel/processor/RoutePolicyProcessor.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/RoutePolicyProcessor.java?rev=958376&r1=958375&r2=958376&view=diff
==============================================================================
--- 
camel/trunk/camel-core/src/main/java/org/apache/camel/processor/RoutePolicyProcessor.java
 (original)
+++ 
camel/trunk/camel-core/src/main/java/org/apache/camel/processor/RoutePolicyProcessor.java
 Sun Jun 27 12:45:33 2010
@@ -29,6 +29,8 @@ import org.apache.camel.spi.RoutePolicy;
  */
 public class RoutePolicyProcessor extends DelegateProcessor {
 
+    // TODO: Support async routing engine
+
     private final RoutePolicy routePolicy;
     private Route route;
 

Modified: 
camel/trunk/camel-core/src/main/java/org/apache/camel/processor/loadbalancer/LoadBalancerSupport.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/loadbalancer/LoadBalancerSupport.java?rev=958376&r1=958375&r2=958376&view=diff
==============================================================================
--- 
camel/trunk/camel-core/src/main/java/org/apache/camel/processor/loadbalancer/LoadBalancerSupport.java
 (original)
+++ 
camel/trunk/camel-core/src/main/java/org/apache/camel/processor/loadbalancer/LoadBalancerSupport.java
 Sun Jun 27 12:45:33 2010
@@ -30,7 +30,12 @@ import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 
 /**
- * A default base class for a {...@link LoadBalancer} implementation
+ * A default base class for a {...@link LoadBalancer} implementation.
+ * <p/>
+ * This implementation is dedicated for asynchronous load balancers.
+ * <p/>
+ * Consider using the {...@link SimpleLoadBalancerSupport} if your load 
balancer does not by nature
+ * support asynchronous routing.
  *
  * @version $Revision$
  */

Copied: 
camel/trunk/camel-core/src/main/java/org/apache/camel/processor/loadbalancer/SimpleLoadBalancerSupport.java
 (from r958209, 
camel/trunk/camel-core/src/main/java/org/apache/camel/processor/loadbalancer/LoadBalancerSupport.java)
URL: 
http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/loadbalancer/SimpleLoadBalancerSupport.java?p2=camel/trunk/camel-core/src/main/java/org/apache/camel/processor/loadbalancer/SimpleLoadBalancerSupport.java&p1=camel/trunk/camel-core/src/main/java/org/apache/camel/processor/loadbalancer/LoadBalancerSupport.java&r1=958209&r2=958376&rev=958376&view=diff
==============================================================================
--- 
camel/trunk/camel-core/src/main/java/org/apache/camel/processor/loadbalancer/LoadBalancerSupport.java
 (original)
+++ 
camel/trunk/camel-core/src/main/java/org/apache/camel/processor/loadbalancer/SimpleLoadBalancerSupport.java
 Sun Jun 27 12:45:33 2010
@@ -16,64 +16,30 @@
  */
 package org.apache.camel.processor.loadbalancer;
 
-import java.util.ArrayList;
-import java.util.List;
-import java.util.concurrent.CopyOnWriteArrayList;
-
+import org.apache.camel.AsyncCallback;
 import org.apache.camel.Exchange;
-import org.apache.camel.Navigate;
-import org.apache.camel.Processor;
-import org.apache.camel.impl.ServiceSupport;
-import org.apache.camel.util.AsyncProcessorHelper;
-import org.apache.camel.util.ServiceHelper;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
 
 /**
- * A default base class for a {...@link LoadBalancer} implementation
+ * A default base class for a {...@link LoadBalancer} implementation.
+ * <p/>
+ * This implementation is dedicated for simple synchronous load balancers.
+ * <p/>
+ * Consider using the {...@link LoadBalancerSupport} if you want to support
+ * the asynchronous routing engine in Camel.
  *
  * @version $Revision$
  */
-public abstract class LoadBalancerSupport extends ServiceSupport implements 
LoadBalancer, Navigate<Processor> {
-
-    protected final Log log = LogFactory.getLog(getClass());
-    private final List<Processor> processors = new 
CopyOnWriteArrayList<Processor>();
-
-    public void addProcessor(Processor processor) {
-        processors.add(processor);
-    }
-
-    public void removeProcessor(Processor processor) {
-        processors.remove(processor);
-    }
-
-    public List<Processor> getProcessors() {
-        return processors;
-    }
+public abstract class SimpleLoadBalancerSupport extends LoadBalancerSupport {
 
-    public List<Processor> next() {
-        if (!hasNext()) {
-            return null;
+    public boolean process(Exchange exchange, AsyncCallback callback) {
+        try {
+            process(exchange);
+        } catch (Exception e) {
+            exchange.setException(e);
         }
-        return new ArrayList<Processor>(processors);
+        callback.done(true);
+        return true;
     }
 
-    public boolean hasNext() {
-        return processors.size() > 0;
-    }
-
-    protected void doStart() throws Exception {
-        ServiceHelper.startServices(processors);
-    }
-
-    protected void doStop() throws Exception {
-        ServiceHelper.stopServices(processors);
-        for (Processor processor : processors) {
-            removeProcessor(processor);
-        }
-    }
-
-    public void process(Exchange exchange) throws Exception {
-        AsyncProcessorHelper.process(this, exchange);
-    }
-}
+    public abstract void process(Exchange exchange) throws Exception;
+}
\ No newline at end of file

Propchange: 
camel/trunk/camel-core/src/main/java/org/apache/camel/processor/loadbalancer/SimpleLoadBalancerSupport.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
camel/trunk/camel-core/src/main/java/org/apache/camel/processor/loadbalancer/SimpleLoadBalancerSupport.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: 
camel/trunk/camel-core/src/main/java/org/apache/camel/processor/validation/PredicateValidatingProcessor.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/validation/PredicateValidatingProcessor.java?rev=958376&r1=958375&r2=958376&view=diff
==============================================================================
--- 
camel/trunk/camel-core/src/main/java/org/apache/camel/processor/validation/PredicateValidatingProcessor.java
 (original)
+++ 
camel/trunk/camel-core/src/main/java/org/apache/camel/processor/validation/PredicateValidatingProcessor.java
 Sun Jun 27 12:45:33 2010
@@ -26,7 +26,7 @@ import org.apache.commons.logging.LogFac
 
 /**
  * A processor which validates the content of the inbound message body
- * against a regular expression.
+ * against a predicate.
  * 
  * @version $Revision$
  */


Reply via email to