You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2011/06/16 14:13:30 UTC

svn commit: r1136390 - in /camel/trunk: camel-core/src/main/java/org/apache/camel/builder/ camel-core/src/main/java/org/apache/camel/model/ camel-core/src/main/java/org/apache/camel/model/dataformat/ camel-core/src/main/java/org/apache/camel/model/load...

Author: davsclaus
Date: Thu Jun 16 12:13:30 2011
New Revision: 1136390

URL: http://svn.apache.org/viewvc?rev=1136390&view=rev
Log:
CAMEL-4112: Custom data format and load balancer uses a custom definition so its conistent to use any kind of data format / load balancer. Renamed ref to custom to make it more clear its a custom.

Added:
    camel/trunk/camel-core/src/main/java/org/apache/camel/model/dataformat/CustomDataFormat.java   (contents, props changed)
      - copied, changed from r1136294, camel/trunk/camel-core/src/main/java/org/apache/camel/model/dataformat/RefDataFormat.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/model/loadbalancer/CustomLoadBalancerDefinition.java   (contents, props changed)
      - copied, changed from r1136294, camel/trunk/camel-core/src/main/java/org/apache/camel/model/loadbalancer/RandomLoadBalancerDefinition.java
    camel/trunk/camel-core/src/test/java/org/apache/camel/processor/CustomRefLoadBalanceTest.java   (contents, props changed)
      - copied, changed from r1136294, camel/trunk/camel-core/src/test/java/org/apache/camel/processor/CustomLoadBalanceTest.java
    camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/processor/SpringCustomRefLoadBalanceTest.java
    camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/SpringCustomRefLoadBalanceTest.xml   (contents, props changed)
      - copied, changed from r1136294, camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/aopbefore.xml
Removed:
    camel/trunk/camel-core/src/main/java/org/apache/camel/model/dataformat/RefDataFormat.java
Modified:
    camel/trunk/camel-core/src/main/java/org/apache/camel/builder/DataFormatClause.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/model/LoadBalanceDefinition.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/model/MarshalDefinition.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/model/UnmarshalDefinition.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/model/dataformat/DataFormatsDefinition.java
    camel/trunk/camel-core/src/main/resources/org/apache/camel/model/dataformat/jaxb.index
    camel/trunk/camel-core/src/main/resources/org/apache/camel/model/loadbalancer/jaxb.index
    camel/trunk/camel-core/src/test/java/org/apache/camel/impl/RefDataFormatTest.java
    camel/trunk/camel-core/src/test/java/org/apache/camel/processor/CustomLoadBalanceTest.java
    camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/impl/SpringRefDataFormatTest.xml

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/builder/DataFormatClause.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/DataFormatClause.java?rev=1136390&r1=1136389&r2=1136390&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/builder/DataFormatClause.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/builder/DataFormatClause.java Thu Jun 16 12:13:30 2011
@@ -32,7 +32,7 @@ import org.apache.camel.model.dataformat
 import org.apache.camel.model.dataformat.JsonDataFormat;
 import org.apache.camel.model.dataformat.JsonLibrary;
 import org.apache.camel.model.dataformat.ProtobufDataFormat;
-import org.apache.camel.model.dataformat.RefDataFormat;
+import org.apache.camel.model.dataformat.CustomDataFormat;
 import org.apache.camel.model.dataformat.RssDataFormat;
 import org.apache.camel.model.dataformat.SerializationDataFormat;
 import org.apache.camel.model.dataformat.SoapJaxbDataFormat;
@@ -87,6 +87,13 @@ public class DataFormatClause<T extends 
     }
 
     /**
+     * Uses the custom data format
+     */
+    public T custom(String ref) {
+        return dataFormat(new CustomDataFormat(ref));
+    }
+
+    /**
      * Uses the Castor data format
      */
     public T castor() {
@@ -231,13 +238,6 @@ public class DataFormatClause<T extends 
     }
 
     /**
-     * Uses the ref data format
-     */
-    public T ref(String ref) {
-        return dataFormat(new RefDataFormat(ref));
-    }
-
-    /**
      * Uses the Java Serialization data format
      */
     public T serialization() {

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/model/LoadBalanceDefinition.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/model/LoadBalanceDefinition.java?rev=1136390&r1=1136389&r2=1136390&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/model/LoadBalanceDefinition.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/model/LoadBalanceDefinition.java Thu Jun 16 12:13:30 2011
@@ -33,6 +33,7 @@ import org.apache.camel.Expression;
 import org.apache.camel.Processor;
 import org.apache.camel.model.loadbalancer.FailoverLoadBalancerDefinition;
 import org.apache.camel.model.loadbalancer.RandomLoadBalancerDefinition;
+import org.apache.camel.model.loadbalancer.CustomLoadBalancerDefinition;
 import org.apache.camel.model.loadbalancer.RoundRobinLoadBalancerDefinition;
 import org.apache.camel.model.loadbalancer.StickyLoadBalancerDefinition;
 import org.apache.camel.model.loadbalancer.TopicLoadBalancerDefinition;
@@ -56,10 +57,12 @@ import org.apache.camel.util.CollectionS
 @XmlAccessorType(XmlAccessType.FIELD)
 public class LoadBalanceDefinition extends ProcessorDefinition<LoadBalanceDefinition> {
     @XmlAttribute
+    @Deprecated
     private String ref;
     @XmlElements({
             @XmlElement(required = false, name = "failover", type = FailoverLoadBalancerDefinition.class),
             @XmlElement(required = false, name = "random", type = RandomLoadBalancerDefinition.class),
+            @XmlElement(required = false, name = "custom", type = CustomLoadBalancerDefinition.class),
             @XmlElement(required = false, name = "roundRobin", type = RoundRobinLoadBalancerDefinition.class),
             @XmlElement(required = false, name = "sticky", type = StickyLoadBalancerDefinition.class),
             @XmlElement(required = false, name = "topic", type = TopicLoadBalancerDefinition.class),
@@ -245,6 +248,7 @@ public class LoadBalanceDefinition exten
 
     /**
      * Uses random load balancer
+     *
      * @return the builder
      */
     public LoadBalanceDefinition random() {
@@ -253,6 +257,19 @@ public class LoadBalanceDefinition exten
     }
 
     /**
+     * Uses the custom load balancer
+     *
+     * @param ref reference to lookup a custom load balancer from the {@link org.apache.camel.spi.Registry} to be used.
+     * @return the builder
+     */
+    public LoadBalanceDefinition custom(String ref) {
+        CustomLoadBalancerDefinition balancer = new CustomLoadBalancerDefinition();
+        balancer.setRef(ref);
+        setLoadBalancerType(balancer);
+        return this;
+    }
+
+    /**
      * Uses sticky load balancer
      *
      * @param correlationExpression  the expression for correlation

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/model/MarshalDefinition.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/model/MarshalDefinition.java?rev=1136390&r1=1136389&r2=1136390&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/model/MarshalDefinition.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/model/MarshalDefinition.java Thu Jun 16 12:13:30 2011
@@ -35,7 +35,7 @@ import org.apache.camel.model.dataformat
 import org.apache.camel.model.dataformat.JibxDataFormat;
 import org.apache.camel.model.dataformat.JsonDataFormat;
 import org.apache.camel.model.dataformat.ProtobufDataFormat;
-import org.apache.camel.model.dataformat.RefDataFormat;
+import org.apache.camel.model.dataformat.CustomDataFormat;
 import org.apache.camel.model.dataformat.RssDataFormat;
 import org.apache.camel.model.dataformat.SerializationDataFormat;
 import org.apache.camel.model.dataformat.SoapJaxbDataFormat;
@@ -71,6 +71,7 @@ public class MarshalDefinition extends N
     @XmlElement(required = false, name = "castor", type = CastorDataFormat.class),
     @XmlElement(required = false, name = "crypto", type = CryptoDataFormat.class),
     @XmlElement(required = false, name = "csv", type = CsvDataFormat.class),
+    @XmlElement(required = false, name = "custom", type = CustomDataFormat.class),
     @XmlElement(required = false, name = "flatpack", type = FlatpackDataFormat.class),
     @XmlElement(required = false, name = "gzip", type = GzipDataFormat.class),
     @XmlElement(required = false, name = "hl7", type = HL7DataFormat.class),
@@ -78,7 +79,6 @@ public class MarshalDefinition extends N
     @XmlElement(required = false, name = "jibx", type = JibxDataFormat.class),
     @XmlElement(required = false, name = "json", type = JsonDataFormat.class),
     @XmlElement(required = false, name = "protobuf", type = ProtobufDataFormat.class),
-    @XmlElement(required = false, name = "ref", type = RefDataFormat.class),
     @XmlElement(required = false, name = "rss", type = RssDataFormat.class),
     @XmlElement(required = false, name = "secureXML", type = XMLSecurityDataFormat.class),
     @XmlElement(required = false, name = "serialization", type = SerializationDataFormat.class),

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/model/UnmarshalDefinition.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/model/UnmarshalDefinition.java?rev=1136390&r1=1136389&r2=1136390&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/model/UnmarshalDefinition.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/model/UnmarshalDefinition.java Thu Jun 16 12:13:30 2011
@@ -35,7 +35,7 @@ import org.apache.camel.model.dataformat
 import org.apache.camel.model.dataformat.JibxDataFormat;
 import org.apache.camel.model.dataformat.JsonDataFormat;
 import org.apache.camel.model.dataformat.ProtobufDataFormat;
-import org.apache.camel.model.dataformat.RefDataFormat;
+import org.apache.camel.model.dataformat.CustomDataFormat;
 import org.apache.camel.model.dataformat.RssDataFormat;
 import org.apache.camel.model.dataformat.SerializationDataFormat;
 import org.apache.camel.model.dataformat.SoapJaxbDataFormat;
@@ -71,6 +71,7 @@ public class UnmarshalDefinition extends
     @XmlElement(required = false, name = "castor", type = CastorDataFormat.class),
     @XmlElement(required = false, name = "crypto", type = CryptoDataFormat.class),
     @XmlElement(required = false, name = "csv", type = CsvDataFormat.class),
+    @XmlElement(required = false, name = "custom", type = CustomDataFormat.class),
     @XmlElement(required = false, name = "flatpack", type = FlatpackDataFormat.class),
     @XmlElement(required = false, name = "gzip", type = GzipDataFormat.class),
     @XmlElement(required = false, name = "hl7", type = HL7DataFormat.class),
@@ -78,7 +79,6 @@ public class UnmarshalDefinition extends
     @XmlElement(required = false, name = "jibx", type = JibxDataFormat.class),
     @XmlElement(required = false, name = "json", type = JsonDataFormat.class),
     @XmlElement(required = false, name = "protobuf", type = ProtobufDataFormat.class),
-    @XmlElement(required = false, name = "ref", type = RefDataFormat.class),
     @XmlElement(required = false, name = "rss", type = RssDataFormat.class),
     @XmlElement(required = false, name = "secureXML", type = XMLSecurityDataFormat.class),
     @XmlElement(required = false, name = "serialization", type = SerializationDataFormat.class),

Copied: camel/trunk/camel-core/src/main/java/org/apache/camel/model/dataformat/CustomDataFormat.java (from r1136294, camel/trunk/camel-core/src/main/java/org/apache/camel/model/dataformat/RefDataFormat.java)
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/model/dataformat/CustomDataFormat.java?p2=camel/trunk/camel-core/src/main/java/org/apache/camel/model/dataformat/CustomDataFormat.java&p1=camel/trunk/camel-core/src/main/java/org/apache/camel/model/dataformat/RefDataFormat.java&r1=1136294&r2=1136390&rev=1136390&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/model/dataformat/RefDataFormat.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/model/dataformat/CustomDataFormat.java Thu Jun 16 12:13:30 2011
@@ -30,16 +30,16 @@ import org.apache.camel.spi.RouteContext
  *
  * @version
  */
-@XmlRootElement(name = "ref")
+@XmlRootElement(name = "customDataFormat")
 @XmlAccessorType(XmlAccessType.FIELD)
-public class RefDataFormat extends DataFormatDefinition {
+public class CustomDataFormat extends DataFormatDefinition {
     @XmlAttribute
     private String ref;
 
-    public RefDataFormat() {
+    public CustomDataFormat() {
     }
 
-    public RefDataFormat(String ref) {
+    public CustomDataFormat(String ref) {
         this.ref = ref;
     }
 
@@ -55,4 +55,9 @@ public class RefDataFormat extends DataF
     public void setRef(String ref) {
         this.ref = ref;
     }
+
+    @Override
+    public String toString() {
+        return "CustomDataFormat[" + ref + "]";
+    }
 }

Propchange: camel/trunk/camel-core/src/main/java/org/apache/camel/model/dataformat/CustomDataFormat.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: camel/trunk/camel-core/src/main/java/org/apache/camel/model/dataformat/CustomDataFormat.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/model/dataformat/DataFormatsDefinition.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/model/dataformat/DataFormatsDefinition.java?rev=1136390&r1=1136389&r2=1136390&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/model/dataformat/DataFormatsDefinition.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/model/dataformat/DataFormatsDefinition.java Thu Jun 16 12:13:30 2011
@@ -48,7 +48,7 @@ public class DataFormatsDefinition {
         @XmlElement(required = false, name = "jibx", type = JibxDataFormat.class),
         @XmlElement(required = false, name = "json", type = JsonDataFormat.class),
         @XmlElement(required = false, name = "protobuf", type = ProtobufDataFormat.class),
-        @XmlElement(required = false, name = "ref", type = RefDataFormat.class),
+        @XmlElement(required = false, name = "ref", type = CustomDataFormat.class),
         @XmlElement(required = false, name = "rss", type = RssDataFormat.class),
         @XmlElement(required = false, name = "secureXML", type = XMLSecurityDataFormat.class),
         @XmlElement(required = false, name = "serialization", type = SerializationDataFormat.class),

Copied: camel/trunk/camel-core/src/main/java/org/apache/camel/model/loadbalancer/CustomLoadBalancerDefinition.java (from r1136294, camel/trunk/camel-core/src/main/java/org/apache/camel/model/loadbalancer/RandomLoadBalancerDefinition.java)
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/model/loadbalancer/CustomLoadBalancerDefinition.java?p2=camel/trunk/camel-core/src/main/java/org/apache/camel/model/loadbalancer/CustomLoadBalancerDefinition.java&p1=camel/trunk/camel-core/src/main/java/org/apache/camel/model/loadbalancer/RandomLoadBalancerDefinition.java&r1=1136294&r2=1136390&rev=1136390&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/model/loadbalancer/RandomLoadBalancerDefinition.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/model/loadbalancer/CustomLoadBalancerDefinition.java Thu Jun 16 12:13:30 2011
@@ -18,29 +18,45 @@ package org.apache.camel.model.loadbalan
 
 import javax.xml.bind.annotation.XmlAccessType;
 import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
 import javax.xml.bind.annotation.XmlRootElement;
 
 import org.apache.camel.model.LoadBalancerDefinition;
 import org.apache.camel.processor.loadbalancer.LoadBalancer;
 import org.apache.camel.spi.RouteContext;
+import org.apache.camel.util.CamelContextHelper;
+import org.apache.camel.util.ObjectHelper;
 
 /**
- * Represents an XML &lt;random/&gt; element
+ * Represents an XML &lt;customLoadBalancer/&gt; element
  */
-@XmlRootElement(name = "random")
+@XmlRootElement(name = "customLoadBalancer")
 @XmlAccessorType(XmlAccessType.FIELD)
-public class RandomLoadBalancerDefinition extends LoadBalancerDefinition {
+public class CustomLoadBalancerDefinition extends LoadBalancerDefinition {
 
-    public RandomLoadBalancerDefinition() {
+    @XmlAttribute
+    private String ref;
+
+    public CustomLoadBalancerDefinition() {
+    }
+
+    public String getRef() {
+        return ref;
+    }
+
+    public void setRef(String ref) {
+        this.ref = ref;
     }
 
     @Override
     protected LoadBalancer createLoadBalancer(RouteContext routeContext) {
-        return new org.apache.camel.processor.loadbalancer.RandomLoadBalancer();
+        ObjectHelper.notEmpty(ref, "ref", this);
+        return CamelContextHelper.mandatoryLookup(routeContext.getCamelContext(), ref, LoadBalancer.class);
     }
 
     @Override
     public String toString() {
-        return "RandomLoadBalancer";
+        return "RefLoadBalancer[" + ref + "]";
     }
+
 }

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

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

Modified: camel/trunk/camel-core/src/main/resources/org/apache/camel/model/dataformat/jaxb.index
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/resources/org/apache/camel/model/dataformat/jaxb.index?rev=1136390&r1=1136389&r2=1136390&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/resources/org/apache/camel/model/dataformat/jaxb.index (original)
+++ camel/trunk/camel-core/src/main/resources/org/apache/camel/model/dataformat/jaxb.index Thu Jun 16 12:13:30 2011
@@ -17,6 +17,7 @@
 BindyDataFormat
 BindyType
 CastorDataFormat
+CustomDataFormat
 CsvDataFormat
 CryptoDataFormat
 DataFormatsDefinition
@@ -27,7 +28,6 @@ JaxbDataFormat
 JsonDataFormat
 JsonLibrary
 ProtobufDataFormat
-RefDataFormat
 RssDataFormat
 SerializationDataFormat
 StringDataFormat

Modified: camel/trunk/camel-core/src/main/resources/org/apache/camel/model/loadbalancer/jaxb.index
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/resources/org/apache/camel/model/loadbalancer/jaxb.index?rev=1136390&r1=1136389&r2=1136390&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/resources/org/apache/camel/model/loadbalancer/jaxb.index (original)
+++ camel/trunk/camel-core/src/main/resources/org/apache/camel/model/loadbalancer/jaxb.index Thu Jun 16 12:13:30 2011
@@ -14,6 +14,7 @@
 ## See the License for the specific language governing permissions and
 ## limitations under the License.
 ## ------------------------------------------------------------------------
+CustomLoadBalancerDefinition
 FailoverLoadBalancerDefinition
 RandomLoadBalancerDefinition
 RoundRobinLoadBalancerDefinition

Modified: camel/trunk/camel-core/src/test/java/org/apache/camel/impl/RefDataFormatTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/impl/RefDataFormatTest.java?rev=1136390&r1=1136389&r2=1136390&view=diff
==============================================================================
--- camel/trunk/camel-core/src/test/java/org/apache/camel/impl/RefDataFormatTest.java (original)
+++ camel/trunk/camel-core/src/test/java/org/apache/camel/impl/RefDataFormatTest.java Thu Jun 16 12:13:30 2011
@@ -57,9 +57,9 @@ public class RefDataFormatTest extends C
         return new RouteBuilder() {
             @Override
             public void configure() throws Exception {
-                from("direct:a").marshal().ref("reverse").to("mock:a");
+                from("direct:a").marshal().custom("reverse").to("mock:a");
 
-                from("direct:b").unmarshal().ref("reverse").to("mock:b");
+                from("direct:b").unmarshal().custom("reverse").to("mock:b");
             }
         };
     }

Modified: camel/trunk/camel-core/src/test/java/org/apache/camel/processor/CustomLoadBalanceTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/CustomLoadBalanceTest.java?rev=1136390&r1=1136389&r2=1136390&view=diff
==============================================================================
--- camel/trunk/camel-core/src/test/java/org/apache/camel/processor/CustomLoadBalanceTest.java (original)
+++ camel/trunk/camel-core/src/test/java/org/apache/camel/processor/CustomLoadBalanceTest.java Thu Jun 16 12:13:30 2011
@@ -64,7 +64,7 @@ public class CustomLoadBalanceTest exten
         assertMockEndpointsSatisfied();
     }
 
-    private class MyLoadBalancer extends LoadBalancerSupport {
+    public static class MyLoadBalancer extends LoadBalancerSupport {
 
         public boolean process(Exchange exchange, AsyncCallback callback) {
             String body = exchange.getIn().getBody(String.class);

Copied: camel/trunk/camel-core/src/test/java/org/apache/camel/processor/CustomRefLoadBalanceTest.java (from r1136294, camel/trunk/camel-core/src/test/java/org/apache/camel/processor/CustomLoadBalanceTest.java)
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/CustomRefLoadBalanceTest.java?p2=camel/trunk/camel-core/src/test/java/org/apache/camel/processor/CustomRefLoadBalanceTest.java&p1=camel/trunk/camel-core/src/test/java/org/apache/camel/processor/CustomLoadBalanceTest.java&r1=1136294&r2=1136390&rev=1136390&view=diff
==============================================================================
--- camel/trunk/camel-core/src/test/java/org/apache/camel/processor/CustomLoadBalanceTest.java (original)
+++ camel/trunk/camel-core/src/test/java/org/apache/camel/processor/CustomRefLoadBalanceTest.java Thu Jun 16 12:13:30 2011
@@ -16,72 +16,26 @@
  */
 package org.apache.camel.processor;
 
-import org.apache.camel.AsyncCallback;
-import org.apache.camel.ContextTestSupport;
-import org.apache.camel.Exchange;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.processor.loadbalancer.LoadBalancerSupport;
+import org.apache.camel.impl.JndiRegistry;
 
-public class CustomLoadBalanceTest extends ContextTestSupport {
-    protected MockEndpoint x;
-    protected MockEndpoint y;
-    protected MockEndpoint z;
+public class CustomRefLoadBalanceTest extends CustomLoadBalanceTest {
 
     @Override
-    protected void setUp() throws Exception {
-        super.setUp();
-
-        x = getMockEndpoint("mock:x");
-        y = getMockEndpoint("mock:y");
-        z = getMockEndpoint("mock:z");
+    protected JndiRegistry createRegistry() throws Exception {
+        JndiRegistry jndi = super.createRegistry();
+        jndi.bind("myBalancer", new MyLoadBalancer());
+        return jndi;
     }
 
     protected RouteBuilder createRouteBuilder() {
         return new RouteBuilder() {
             public void configure() {
                 from("direct:start")
-                    .loadBalance(new MyLoadBalancer())
+                    .loadBalance().custom("myBalancer")
                     .to("mock:x", "mock:y", "mock:z");
             }
         };
     }
 
-    public void testCustomLoadBalancer() throws Exception {
-        x.expectedBodiesReceived("x", "x", "x");
-        y.expectedBodiesReceived("y", "y");
-        z.expectedBodiesReceived("foo", "bar", "baz");
-
-        template.sendBody("direct:start", "x");
-        template.sendBody("direct:start", "y");
-        template.sendBody("direct:start", "foo");
-        template.sendBody("direct:start", "bar");
-        template.sendBody("direct:start", "y");
-        template.sendBody("direct:start", "x");
-        template.sendBody("direct:start", "x");
-        template.sendBody("direct:start", "baz");
-
-        assertMockEndpointsSatisfied();
-    }
-
-    private class MyLoadBalancer extends LoadBalancerSupport {
-
-        public boolean process(Exchange exchange, AsyncCallback callback) {
-            String body = exchange.getIn().getBody(String.class);
-            try {
-                if ("x".equals(body)) {
-                    getProcessors().get(0).process(exchange);
-                } else if ("y".equals(body)) {
-                    getProcessors().get(1).process(exchange);
-                } else {
-                    getProcessors().get(2).process(exchange);
-                }
-            } catch (Throwable e) {
-                exchange.setException(e);
-            }
-            callback.done(true);
-            return true;
-        }
-    }
-
 }
\ No newline at end of file

Propchange: camel/trunk/camel-core/src/test/java/org/apache/camel/processor/CustomRefLoadBalanceTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: camel/trunk/camel-core/src/test/java/org/apache/camel/processor/CustomRefLoadBalanceTest.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/processor/SpringCustomRefLoadBalanceTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/processor/SpringCustomRefLoadBalanceTest.java?rev=1136390&view=auto
==============================================================================
--- camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/processor/SpringCustomRefLoadBalanceTest.java (added)
+++ camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/processor/SpringCustomRefLoadBalanceTest.java Thu Jun 16 12:13:30 2011
@@ -0,0 +1,33 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.spring.processor;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.processor.CustomRefLoadBalanceTest;
+
+import static org.apache.camel.spring.processor.SpringTestHelper.createSpringCamelContext;
+
+/**
+ *
+ */
+public class SpringCustomRefLoadBalanceTest extends CustomRefLoadBalanceTest {
+
+    protected CamelContext createCamelContext() throws Exception {
+        return createSpringCamelContext(this, "org/apache/camel/spring/processor/SpringCustomRefLoadBalanceTest.xml");
+    }
+
+}

Modified: camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/impl/SpringRefDataFormatTest.xml
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/impl/SpringRefDataFormatTest.xml?rev=1136390&r1=1136389&r2=1136390&view=diff
==============================================================================
--- camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/impl/SpringRefDataFormatTest.xml (original)
+++ camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/impl/SpringRefDataFormatTest.xml Thu Jun 16 12:13:30 2011
@@ -22,13 +22,15 @@
        http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd
     ">
 
+    <!-- this is our custom data format implementation -->
     <bean id="reverse" class="org.apache.camel.impl.RefDataFormatTest$MyReverseDataFormat"/>
 
     <camelContext xmlns="http://camel.apache.org/schema/spring">
         <route>
             <from uri="direct:a"/>
             <marshal>
-                <ref ref="reverse"/>
+                <!-- refer to my custom data format -->
+                <custom ref="reverse"/>
             </marshal>
             <to uri="mock:a"/>
         </route>
@@ -36,7 +38,8 @@
         <route>
             <from uri="direct:b"/>
             <unmarshal>
-                <ref ref="reverse"/>
+                <!-- refer to my custom data format -->
+                <custom ref="reverse"/>
             </unmarshal>
             <to uri="mock:b"/>
         </route>

Copied: camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/SpringCustomRefLoadBalanceTest.xml (from r1136294, camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/aopbefore.xml)
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/SpringCustomRefLoadBalanceTest.xml?p2=camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/SpringCustomRefLoadBalanceTest.xml&p1=camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/aopbefore.xml&r1=1136294&r2=1136390&rev=1136390&view=diff
==============================================================================
--- camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/aopbefore.xml (original)
+++ camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/SpringCustomRefLoadBalanceTest.xml Thu Jun 16 12:13:30 2011
@@ -22,16 +22,23 @@
        http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd
     ">
 
-    <!-- START SNIPPET: e1 -->
-    <camelContext xmlns="http://camel.apache.org/schema/spring">
-        <route>
-            <from uri="direct:start"/>
-            <aop beforeUri="mock:before">
-                <transform><constant>Bye World</constant></transform>
-                <to uri="mock:result"/>
-            </aop>
-        </route>
-    </camelContext>
-    <!-- END SNIPPET: e1 -->
+  <!-- START SNIPPET: e1 -->
+  <!-- this is the implementation of our custom load balancer -->
+  <bean id="myBalancer" class="org.apache.camel.processor.CustomLoadBalanceTest$MyLoadBalancer"/>
+
+  <camelContext xmlns="http://camel.apache.org/schema/spring">
+    <route>
+      <from uri="direct:start"/>
+      <loadBalance>
+        <!-- refer to my custom load balancer -->
+        <custom ref="myBalancer"/>
+        <!-- these are the endpoints to balancer -->
+        <to uri="mock:x"/>
+        <to uri="mock:y"/>
+        <to uri="mock:z"/>
+      </loadBalance>
+    </route>
+  </camelContext>
+  <!-- END SNIPPET: e1 -->
 
 </beans>

Propchange: camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/SpringCustomRefLoadBalanceTest.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/SpringCustomRefLoadBalanceTest.xml
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Propchange: camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/SpringCustomRefLoadBalanceTest.xml
------------------------------------------------------------------------------
    svn:mime-type = text/xml