Author: davsclaus
Date: Sun Jul 24 08:39:15 2011
New Revision: 1150300
URL: http://svn.apache.org/viewvc?rev=1150300&view=rev
Log:
CAMEL-4092: Use Camels class resolver to load classes configured in the DSL.
Added:
camel/trunk/tests/camel-itest-osgi/src/test/resources/org/apache/camel/itest/osgi/blueprint/blueprint-21.xml
- copied, changed from r1150287,
camel/trunk/tests/camel-itest-osgi/src/test/resources/org/apache/camel/itest/osgi/blueprint/blueprint-20.xml
Modified:
camel/trunk/camel-core/src/main/java/org/apache/camel/model/ConvertBodyDefinition.java
camel/trunk/camel-core/src/main/java/org/apache/camel/model/DataFormatDefinition.java
camel/trunk/camel-core/src/main/java/org/apache/camel/model/OnExceptionDefinition.java
camel/trunk/camel-core/src/main/java/org/apache/camel/model/dataformat/JibxDataFormat.java
camel/trunk/camel-core/src/main/java/org/apache/camel/model/dataformat/TidyMarkupDataFormat.java
camel/trunk/camel-core/src/main/java/org/apache/camel/model/language/MethodCallExpression.java
camel/trunk/camel-core/src/main/java/org/apache/camel/model/language/SimpleExpression.java
camel/trunk/camel-core/src/main/java/org/apache/camel/model/language/XPathExpression.java
camel/trunk/camel-core/src/main/java/org/apache/camel/model/language/XQueryExpression.java
camel/trunk/camel-core/src/main/java/org/apache/camel/util/ObjectHelper.java
camel/trunk/camel-core/src/test/java/org/apache/camel/model/StartingRoutesErrorReportedTest.java
camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/SpringSetHeaderXPathResultTypeTest.xml
camel/trunk/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/blueprint/CamelBlueprint4Test.java
Modified:
camel/trunk/camel-core/src/main/java/org/apache/camel/model/ConvertBodyDefinition.java
URL:
http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/model/ConvertBodyDefinition.java?rev=1150300&r1=1150299&r2=1150300&view=diff
==============================================================================
---
camel/trunk/camel-core/src/main/java/org/apache/camel/model/ConvertBodyDefinition.java
(original)
+++
camel/trunk/camel-core/src/main/java/org/apache/camel/model/ConvertBodyDefinition.java
Sun Jul 24 08:39:15 2011
@@ -23,7 +23,6 @@ import javax.xml.bind.annotation.XmlRoot
import javax.xml.bind.annotation.XmlTransient;
import org.apache.camel.Processor;
-import org.apache.camel.RuntimeCamelException;
import org.apache.camel.converter.IOConverter;
import org.apache.camel.processor.ConvertBodyProcessor;
import org.apache.camel.spi.Required;
@@ -72,11 +71,8 @@ public class ConvertBodyDefinition exten
@Override
public Processor createProcessor(RouteContext routeContext) throws
Exception {
- if (getTypeClass() == null) {
- this.typeClass =
routeContext.getCamelContext().getClassResolver().resolveClass(getType());
- if (getTypeClass() == null) {
- throw new RuntimeCamelException("Cannot load the class with
the class name: " + getType());
- }
+ if (typeClass == null && type != null) {
+ typeClass =
routeContext.getCamelContext().getClassResolver().resolveMandatoryClass(type);
}
// validate charset
Modified:
camel/trunk/camel-core/src/main/java/org/apache/camel/model/DataFormatDefinition.java
URL:
http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/model/DataFormatDefinition.java?rev=1150300&r1=1150299&r2=1150300&view=diff
==============================================================================
---
camel/trunk/camel-core/src/main/java/org/apache/camel/model/DataFormatDefinition.java
(original)
+++
camel/trunk/camel-core/src/main/java/org/apache/camel/model/DataFormatDefinition.java
Sun Jul 24 08:39:15 2011
@@ -89,7 +89,7 @@ public class DataFormatDefinition extend
} else {
throw new IllegalArgumentException(
"Data format '" + (dataFormatName != null ? dataFormatName
: "<null>") + "' could not be created. "
- + "Ensure that the dataformat is valid and the associated
Camel component is present on the classpath");
+ + "Ensure that the data format is valid and the associated
Camel component is present on the classpath");
}
}
return dataFormat;
Modified:
camel/trunk/camel-core/src/main/java/org/apache/camel/model/OnExceptionDefinition.java
URL:
http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/model/OnExceptionDefinition.java?rev=1150300&r1=1150299&r2=1150300&view=diff
==============================================================================
---
camel/trunk/camel-core/src/main/java/org/apache/camel/model/OnExceptionDefinition.java
(original)
+++
camel/trunk/camel-core/src/main/java/org/apache/camel/model/OnExceptionDefinition.java
Sun Jul 24 08:39:15 2011
@@ -182,6 +182,8 @@ public class OnExceptionDefinition exten
// must validate configuration before creating processor
validateConfiguration();
+ // TODO: the exceptions list should use classresolver to load
+
Processor childProcessor = this.createChildProcessor(routeContext,
false);
Predicate when = null;
Modified:
camel/trunk/camel-core/src/main/java/org/apache/camel/model/dataformat/JibxDataFormat.java
URL:
http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/model/dataformat/JibxDataFormat.java?rev=1150300&r1=1150299&r2=1150300&view=diff
==============================================================================
---
camel/trunk/camel-core/src/main/java/org/apache/camel/model/dataformat/JibxDataFormat.java
(original)
+++
camel/trunk/camel-core/src/main/java/org/apache/camel/model/dataformat/JibxDataFormat.java
Sun Jul 24 08:39:15 2011
@@ -20,20 +20,23 @@ import javax.xml.bind.annotation.XmlAcce
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlTransient;
import org.apache.camel.model.DataFormatDefinition;
import org.apache.camel.spi.DataFormat;
import org.apache.camel.spi.RouteContext;
+import org.apache.camel.util.ObjectHelper;
/**
* Represents the JiBX XML {@link org.apache.camel.spi.DataFormat}
- *
*/
@XmlRootElement(name = "jibx")
@XmlAccessorType(XmlAccessType.NONE)
public class JibxDataFormat extends DataFormatDefinition {
- @XmlAttribute
- private Class unmarshallClass;
+ @XmlAttribute(name = "unmarshallClass")
+ private String unmarshallTypeName;
+ @XmlTransient
+ private Class<?> unmarshallClass;
public JibxDataFormat() {
super("jibx");
@@ -44,15 +47,6 @@ public class JibxDataFormat extends Data
setUnmarshallClass(unmarshallClass);
}
- @Override
- protected DataFormat createDataFormat(RouteContext routeContext) {
- DataFormat answer = super.createDataFormat(routeContext);
- if (unmarshallClass != null) {
- setProperty(answer, "unmarshallClass", unmarshallClass);
- }
- return answer;
- }
-
public Class getUnmarshallClass() {
return unmarshallClass;
}
@@ -61,4 +55,32 @@ public class JibxDataFormat extends Data
this.unmarshallClass = unmarshallClass;
}
+ public String getUnmarshallTypeName() {
+ return unmarshallTypeName;
+ }
+
+ public void setUnmarshallTypeName(String unmarshallTypeName) {
+ this.unmarshallTypeName = unmarshallTypeName;
+ }
+
+ @Override
+ protected DataFormat createDataFormat(RouteContext routeContext) {
+ if (unmarshallClass == null && unmarshallTypeName != null) {
+ try {
+ unmarshallClass =
routeContext.getCamelContext().getClassResolver().resolveMandatoryClass(unmarshallTypeName);
+ } catch (ClassNotFoundException e) {
+ throw ObjectHelper.wrapRuntimeCamelException(e);
+ }
+ }
+
+ return super.createDataFormat(routeContext);
+ }
+
+ @Override
+ protected void configureDataFormat(DataFormat dataFormat) {
+ if (unmarshallClass != null) {
+ setProperty(dataFormat, "unmarshallClass", unmarshallClass);
+ }
+ }
+
}
\ No newline at end of file
Modified:
camel/trunk/camel-core/src/main/java/org/apache/camel/model/dataformat/TidyMarkupDataFormat.java
URL:
http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/model/dataformat/TidyMarkupDataFormat.java?rev=1150300&r1=1150299&r2=1150300&view=diff
==============================================================================
---
camel/trunk/camel-core/src/main/java/org/apache/camel/model/dataformat/TidyMarkupDataFormat.java
(original)
+++
camel/trunk/camel-core/src/main/java/org/apache/camel/model/dataformat/TidyMarkupDataFormat.java
Sun Jul 24 08:39:15 2011
@@ -20,11 +20,14 @@ import javax.xml.bind.annotation.XmlAcce
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlTransient;
import org.w3c.dom.Node;
import org.apache.camel.model.DataFormatDefinition;
import org.apache.camel.spi.DataFormat;
+import org.apache.camel.spi.RouteContext;
+import org.apache.camel.util.ObjectHelper;
/**
* Represents a wellformed HTML document (XML well Formed) {@link DataFormat}
@@ -32,7 +35,9 @@ import org.apache.camel.spi.DataFormat;
@XmlRootElement(name = "tidyMarkup")
@XmlAccessorType(XmlAccessType.FIELD)
public class TidyMarkupDataFormat extends DataFormatDefinition {
- @XmlAttribute
+ @XmlAttribute(name = "dataObjectType")
+ private String dataObjectTypeName;
+ @XmlTransient
private Class<?> dataObjectType;
public TidyMarkupDataFormat() {
@@ -56,14 +61,31 @@ public class TidyMarkupDataFormat extend
return dataObjectType;
}
- // Implementation methods
- //-------------------------------------------------------------------------
+ public String getDataObjectTypeName() {
+ return dataObjectTypeName;
+ }
+
+ public void setDataObjectTypeName(String dataObjectTypeName) {
+ this.dataObjectTypeName = dataObjectTypeName;
+ }
+
+ @Override
+ protected DataFormat createDataFormat(RouteContext routeContext) {
+ if (dataObjectType == null && dataObjectTypeName != null) {
+ try {
+ dataObjectType =
routeContext.getCamelContext().getClassResolver().resolveMandatoryClass(dataObjectTypeName);
+ } catch (ClassNotFoundException e) {
+ throw ObjectHelper.wrapRuntimeCamelException(e);
+ }
+ }
+
+ return super.createDataFormat(routeContext);
+ }
@Override
protected void configureDataFormat(DataFormat dataFormat) {
- Class<?> type = getDataObjectType();
- if (type != null) {
- setProperty(dataFormat, "dataObjectType", type);
+ if (dataObjectType != null) {
+ setProperty(dataFormat, "dataObjectType", dataObjectType);
}
}
Modified:
camel/trunk/camel-core/src/main/java/org/apache/camel/model/language/MethodCallExpression.java
URL:
http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/model/language/MethodCallExpression.java?rev=1150300&r1=1150299&r2=1150300&view=diff
==============================================================================
---
camel/trunk/camel-core/src/main/java/org/apache/camel/model/language/MethodCallExpression.java
(original)
+++
camel/trunk/camel-core/src/main/java/org/apache/camel/model/language/MethodCallExpression.java
Sun Jul 24 08:39:15 2011
@@ -50,7 +50,9 @@ public class MethodCallExpression extend
private String ref;
@XmlAttribute
private String method;
- @XmlAttribute
+ @XmlAttribute(name = "beanType")
+ private String beanTypeName;
+ @XmlTransient
private Class<?> beanType;
@XmlTransient
private Object instance;
@@ -123,6 +125,14 @@ public class MethodCallExpression extend
this.beanType = beanType;
}
+ public String getBeanTypeName() {
+ return beanTypeName;
+ }
+
+ public void setBeanTypeName(String beanTypeName) {
+ this.beanTypeName = beanTypeName;
+ }
+
public Object getInstance() {
return instance;
}
@@ -134,8 +144,17 @@ public class MethodCallExpression extend
@Override
public Expression createExpression(CamelContext camelContext) {
Expression answer;
+
+ if (beanType == null && beanTypeName != null) {
+ try {
+ beanType =
camelContext.getClassResolver().resolveMandatoryClass(beanTypeName);
+ } catch (ClassNotFoundException e) {
+ throw ObjectHelper.wrapRuntimeCamelException(e);
+ }
+ }
+
if (beanType != null) {
- instance = ObjectHelper.newInstance(beanType);
+ instance = camelContext.getInjector().newInstance(beanType);
answer = new BeanExpression(instance, getMethod());
} else if (instance != null) {
answer = new BeanExpression(instance, getMethod());
Modified:
camel/trunk/camel-core/src/main/java/org/apache/camel/model/language/SimpleExpression.java
URL:
http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/model/language/SimpleExpression.java?rev=1150300&r1=1150299&r2=1150300&view=diff
==============================================================================
---
camel/trunk/camel-core/src/main/java/org/apache/camel/model/language/SimpleExpression.java
(original)
+++
camel/trunk/camel-core/src/main/java/org/apache/camel/model/language/SimpleExpression.java
Sun Jul 24 08:39:15 2011
@@ -20,11 +20,13 @@ import javax.xml.bind.annotation.XmlAcce
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlTransient;
import org.apache.camel.CamelContext;
import org.apache.camel.Expression;
import org.apache.camel.Predicate;
import org.apache.camel.builder.SimpleBuilder;
+import org.apache.camel.util.ObjectHelper;
/**
* For expressions and predicates using the
@@ -35,7 +37,9 @@ import org.apache.camel.builder.SimpleBu
@XmlRootElement(name = "simple")
@XmlAccessorType(XmlAccessType.FIELD)
public class SimpleExpression extends ExpressionDefinition {
- @XmlAttribute
+ @XmlAttribute(name = "resultType")
+ private String resultTypeName;
+ @XmlTransient
private Class<?> resultType;
public SimpleExpression() {
@@ -57,8 +61,24 @@ public class SimpleExpression extends Ex
this.resultType = resultType;
}
+ public String getResultTypeName() {
+ return resultTypeName;
+ }
+
+ public void setResultTypeName(String resultTypeName) {
+ this.resultTypeName = resultTypeName;
+ }
+
@Override
public Expression createExpression(CamelContext camelContext) {
+ if (resultType == null && resultTypeName != null) {
+ try {
+ resultType =
camelContext.getClassResolver().resolveMandatoryClass(resultTypeName);
+ } catch (ClassNotFoundException e) {
+ throw ObjectHelper.wrapRuntimeCamelException(e);
+ }
+ }
+
SimpleBuilder answer = new SimpleBuilder(getExpression());
answer.setResultType(resultType);
return answer;
Modified:
camel/trunk/camel-core/src/main/java/org/apache/camel/model/language/XPathExpression.java
URL:
http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/model/language/XPathExpression.java?rev=1150300&r1=1150299&r2=1150300&view=diff
==============================================================================
---
camel/trunk/camel-core/src/main/java/org/apache/camel/model/language/XPathExpression.java
(original)
+++
camel/trunk/camel-core/src/main/java/org/apache/camel/model/language/XPathExpression.java
Sun Jul 24 08:39:15 2011
@@ -20,10 +20,12 @@ import javax.xml.bind.annotation.XmlAcce
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlTransient;
import org.apache.camel.CamelContext;
import org.apache.camel.Expression;
import org.apache.camel.Predicate;
+import org.apache.camel.util.ObjectHelper;
/**
* For XPath expressions and predicates
@@ -33,7 +35,9 @@ import org.apache.camel.Predicate;
@XmlRootElement(name = "xpath")
@XmlAccessorType(XmlAccessType.FIELD)
public class XPathExpression extends NamespaceAwareExpression {
- @XmlAttribute
+ @XmlAttribute(name = "resultType")
+ private String resultTypeName;
+ @XmlTransient
private Class<?> resultType;
public XPathExpression() {
@@ -55,6 +59,27 @@ public class XPathExpression extends Nam
this.resultType = resultType;
}
+ public String getResultTypeName() {
+ return resultTypeName;
+ }
+
+ public void setResultTypeName(String resultTypeName) {
+ this.resultTypeName = resultTypeName;
+ }
+
+ @Override
+ public Expression createExpression(CamelContext camelContext) {
+ if (resultType == null && resultTypeName != null) {
+ try {
+ resultType =
camelContext.getClassResolver().resolveMandatoryClass(resultTypeName);
+ } catch (ClassNotFoundException e) {
+ throw ObjectHelper.wrapRuntimeCamelException(e);
+ }
+ }
+
+ return super.createExpression(camelContext);
+ }
+
@Override
protected void configureExpression(CamelContext camelContext, Expression
expression) {
super.configureExpression(camelContext, expression);
Modified:
camel/trunk/camel-core/src/main/java/org/apache/camel/model/language/XQueryExpression.java
URL:
http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/model/language/XQueryExpression.java?rev=1150300&r1=1150299&r2=1150300&view=diff
==============================================================================
---
camel/trunk/camel-core/src/main/java/org/apache/camel/model/language/XQueryExpression.java
(original)
+++
camel/trunk/camel-core/src/main/java/org/apache/camel/model/language/XQueryExpression.java
Sun Jul 24 08:39:15 2011
@@ -25,8 +25,7 @@ import javax.xml.bind.annotation.XmlTran
import org.apache.camel.CamelContext;
import org.apache.camel.Expression;
import org.apache.camel.Predicate;
-import org.apache.camel.RuntimeCamelException;
-import org.apache.camel.spi.ClassResolver;
+import org.apache.camel.util.ObjectHelper;
/**
* For XQuery expressions and predicates
@@ -69,9 +68,21 @@ public class XQueryExpression extends Na
}
@Override
+ public Expression createExpression(CamelContext camelContext) {
+ if (resultType == null && type != null) {
+ try {
+ resultType =
camelContext.getClassResolver().resolveMandatoryClass(type);
+ } catch (ClassNotFoundException e) {
+ throw ObjectHelper.wrapRuntimeCamelException(e);
+ }
+ }
+
+ return super.createExpression(camelContext);
+ }
+
+ @Override
protected void configureExpression(CamelContext camelContext, Expression
expression) {
super.configureExpression(camelContext, expression);
- updateResultType(camelContext.getClassResolver());
if (resultType != null) {
setProperty(expression, "resultType", resultType);
}
@@ -80,19 +91,9 @@ public class XQueryExpression extends Na
@Override
protected void configurePredicate(CamelContext camelContext, Predicate
predicate) {
super.configurePredicate(camelContext, predicate);
- updateResultType(camelContext.getClassResolver());
if (resultType != null) {
setProperty(predicate, "resultType", resultType);
}
}
- private void updateResultType(ClassResolver resolver) {
- if (resultType == null && type != null) {
- try {
- resultType = resolver.resolveMandatoryClass(type);
- } catch (ClassNotFoundException e) {
- throw new RuntimeCamelException(e);
- }
- }
- }
}
Modified:
camel/trunk/camel-core/src/main/java/org/apache/camel/util/ObjectHelper.java
URL:
http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/util/ObjectHelper.java?rev=1150300&r1=1150299&r2=1150300&view=diff
==============================================================================
---
camel/trunk/camel-core/src/main/java/org/apache/camel/util/ObjectHelper.java
(original)
+++
camel/trunk/camel-core/src/main/java/org/apache/camel/util/ObjectHelper.java
Sun Jul 24 08:39:15 2011
@@ -716,6 +716,10 @@ public final class ObjectHelper {
// and these is common as well
} else if ("java.lang.String".equals(name) || "String".equals(name)) {
return String.class;
+ } else if ("java.lang.Boolean".equals(name) || "Boolean".equals(name))
{
+ return Boolean.class;
+ } else if ("boolean".equals(name)) {
+ return boolean.class;
} else if ("java.lang.Integer".equals(name) || "Integer".equals(name))
{
return Integer.class;
} else if ("int".equals(name)) {
Modified:
camel/trunk/camel-core/src/test/java/org/apache/camel/model/StartingRoutesErrorReportedTest.java
URL:
http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/model/StartingRoutesErrorReportedTest.java?rev=1150300&r1=1150299&r2=1150300&view=diff
==============================================================================
---
camel/trunk/camel-core/src/test/java/org/apache/camel/model/StartingRoutesErrorReportedTest.java
(original)
+++
camel/trunk/camel-core/src/test/java/org/apache/camel/model/StartingRoutesErrorReportedTest.java
Sun Jul 24 08:39:15 2011
@@ -80,7 +80,6 @@ public class StartingRoutesErrorReported
context.addRoutes(new RouteBuilder() {
@Override
public void configure() throws Exception {
-
from("direct:start").routeId("route3")
.unmarshal().jaxb()
.log("Will never get here");
@@ -88,7 +87,7 @@ public class StartingRoutesErrorReported
});
context.start();
} catch (FailedToCreateRouteException e) {
- assertTrue(e.getMessage().contains("Ensure that the dataformat is
valid and the associated Camel component is present on the classpath"));
+ assertTrue(e.getMessage().contains("Ensure that the data format is
valid and the associated Camel component is present on the classpath"));
}
}
Modified:
camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/SpringSetHeaderXPathResultTypeTest.xml
URL:
http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/SpringSetHeaderXPathResultTypeTest.xml?rev=1150300&r1=1150299&r2=1150300&view=diff
==============================================================================
---
camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/SpringSetHeaderXPathResultTypeTest.xml
(original)
+++
camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/SpringSetHeaderXPathResultTypeTest.xml
Sun Jul 24 08:39:15 2011
@@ -31,7 +31,8 @@
</setHeader>
<!-- is there a bye tag in the body -->
<setHeader headerName="bar">
- <xpath resultType="java.lang.Boolean">/bye</xpath>
+ <!-- use Boolean shorthand to test we use Camel class resolver, and
not JAXB -->
+ <xpath resultType="Boolean">/bye</xpath>
</setHeader>
<to uri="mock:result"/>
</route>
Modified:
camel/trunk/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/blueprint/CamelBlueprint4Test.java
URL:
http://svn.apache.org/viewvc/camel/trunk/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/blueprint/CamelBlueprint4Test.java?rev=1150300&r1=1150299&r2=1150300&view=diff
==============================================================================
---
camel/trunk/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/blueprint/CamelBlueprint4Test.java
(original)
+++
camel/trunk/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/blueprint/CamelBlueprint4Test.java
Sun Jul 24 08:39:15 2011
@@ -71,6 +71,27 @@ public class CamelBlueprint4Test extends
template.stop();
}
+ @Test
+ public void testSetHeaderXPathResultType() throws Exception {
+ getInstalledBundle("CamelBlueprintTestBundle21").start();
+ BlueprintContainer ctn = getOsgiService(BlueprintContainer.class,
"(osgi.blueprint.container.symbolicname=CamelBlueprintTestBundle21)", 10000);
+ CamelContext ctx = getOsgiService(CamelContext.class,
"(camel.context.symbolicname=CamelBlueprintTestBundle21)", 10000);
+
+ ProducerTemplate template = ctx.createProducerTemplate();
+
+ MockEndpoint mock = ctx.getEndpoint("mock:result", MockEndpoint.class);
+ mock.expectedMessageCount(1);
+ mock.message(0).header("foo").isInstanceOf(Boolean.class);
+ mock.message(0).header("foo").isEqualTo(true);
+ mock.message(0).header("bar").isInstanceOf(Boolean.class);
+ mock.message(0).header("bar").isEqualTo(false);
+
+ template.sendBody("direct:start", "<hello>World</hello>");
+
+ mock.assertIsSatisfied();
+ template.stop();
+ }
+
@Configuration
public static Option[] configure() throws Exception {
@@ -89,6 +110,11 @@ public class CamelBlueprint4Test extends
.set(Constants.BUNDLE_SYMBOLICNAME,
"CamelBlueprintTestBundle20")
.build()).noStart(),
+ bundle(newBundle()
+ .add("OSGI-INF/blueprint/test.xml",
OSGiBlueprintTestSupport.class.getResource("blueprint-21.xml"))
+ .set(Constants.BUNDLE_SYMBOLICNAME,
"CamelBlueprintTestBundle21")
+ .build()).noStart(),
+
// using the features to install the camel components
scanFeatures(getCamelKarafFeatureUrl(),
"camel-blueprint", "camel-velocity"));
Copied:
camel/trunk/tests/camel-itest-osgi/src/test/resources/org/apache/camel/itest/osgi/blueprint/blueprint-21.xml
(from r1150287,
camel/trunk/tests/camel-itest-osgi/src/test/resources/org/apache/camel/itest/osgi/blueprint/blueprint-20.xml)
URL:
http://svn.apache.org/viewvc/camel/trunk/tests/camel-itest-osgi/src/test/resources/org/apache/camel/itest/osgi/blueprint/blueprint-21.xml?p2=camel/trunk/tests/camel-itest-osgi/src/test/resources/org/apache/camel/itest/osgi/blueprint/blueprint-21.xml&p1=camel/trunk/tests/camel-itest-osgi/src/test/resources/org/apache/camel/itest/osgi/blueprint/blueprint-20.xml&r1=1150287&r2=1150300&rev=1150300&view=diff
==============================================================================
---
camel/trunk/tests/camel-itest-osgi/src/test/resources/org/apache/camel/itest/osgi/blueprint/blueprint-20.xml
(original)
+++
camel/trunk/tests/camel-itest-osgi/src/test/resources/org/apache/camel/itest/osgi/blueprint/blueprint-21.xml
Sun Jul 24 08:39:15 2011
@@ -19,8 +19,17 @@
<camelContext xmlns="http://camel.apache.org/schema/blueprint">
<route>
- <from uri="direct:a"/>
- <to uri="velocity:org/apache/camel/itest/osgi/blueprint/example.vm"/>
+ <from uri="direct:start"/>
+ <!-- is there a hello tag in the body -->
+ <setHeader headerName="foo">
+ <xpath resultType="java.lang.Boolean">/hello</xpath>
+ </setHeader>
+ <!-- is there a bye tag in the body -->
+ <setHeader headerName="bar">
+ <!-- use Boolean shorthand to test we use Camel class resolver, and
not JAXB -->
+ <xpath resultType="Boolean">/bye</xpath>
+ </setHeader>
+ <to uri="mock:result"/>
</route>
</camelContext>