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 <random/> element
+ * Represents an XML <customLoadBalancer/> 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