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$
*/