CAMEL-14263: camel-dozer should use source code generated configurer to avoid reflection configuration.
diff --git a/components/camel-dozer/src/main/java/org/apache/camel/component/dozer/DozerComponent.java b/components/camel-dozer/src/main/java/org/apache/camel/component/dozer/DozerComponent.java
index 409a75c..ed3a1e5 100644
--- a/components/camel-dozer/src/main/java/org/apache/camel/component/dozer/DozerComponent.java
+++ b/components/camel-dozer/src/main/java/org/apache/camel/component/dozer/DozerComponent.java
@@ -41,13 +41,9 @@
config.setMappingConfiguration(getAndRemoveOrResolveReferenceParameter(
parameters, "mappingConfiguration", DozerBeanMapperConfiguration.class));
- setProperties(config, parameters);
-
- // Validate endpoint parameters
- if (config.getTargetModel() == null) {
- throw new IllegalArgumentException("The targetModel parameter is required for dozer endpoints");
- }
-
- return new DozerEndpoint(uri, this, config);
+ DozerEndpoint answer = new DozerEndpoint(uri, this, config);
+ answer.setConfiguration(config);
+ setProperties(answer, parameters);
+ return answer;
}
}
diff --git a/components/camel-dozer/src/main/java/org/apache/camel/component/dozer/DozerEndpoint.java b/components/camel-dozer/src/main/java/org/apache/camel/component/dozer/DozerEndpoint.java
index 4c0c53a..14d60cb 100644
--- a/components/camel-dozer/src/main/java/org/apache/camel/component/dozer/DozerEndpoint.java
+++ b/components/camel-dozer/src/main/java/org/apache/camel/component/dozer/DozerEndpoint.java
@@ -111,6 +111,11 @@
protected void initDozerBeanContainerAndMapper() throws Exception {
log.info("Configuring {}...", Mapper.class.getName());
+ // Validate endpoint parameters
+ if (configuration.getTargetModel() == null) {
+ throw new IllegalArgumentException("The targetModel parameter is required for dozer endpoints");
+ }
+
if (mapper == null) {
if (configuration.getMappingConfiguration() == null) {
URL url = ResourceHelper.resolveMandatoryResourceAsUrl(getCamelContext().getClassResolver(), configuration.getMappingFile());
diff --git a/components/camel-dozer/src/test/java/org/apache/camel/component/dozer/DozerComponentTest.java b/components/camel-dozer/src/test/java/org/apache/camel/component/dozer/DozerComponentTest.java
index 826c1e9..1740c07 100644
--- a/components/camel-dozer/src/test/java/org/apache/camel/component/dozer/DozerComponentTest.java
+++ b/components/camel-dozer/src/test/java/org/apache/camel/component/dozer/DozerComponentTest.java
@@ -16,18 +16,18 @@
*/
package org.apache.camel.component.dozer;
-import org.apache.camel.impl.DefaultCamelContext;
+import org.apache.camel.test.junit4.CamelTestSupport;
import org.junit.Assert;
import org.junit.Test;
-public class DozerComponentTest {
+public class DozerComponentTest extends CamelTestSupport {
private static final String NAME = "examplename";
private static final String MARSHAL_ID = "marshal123";
private static final String UNMARSHAL_ID = "unmarshal456";
private static final String SOURCE_MODEL = "org.example.A";
private static final String TARGET_MODEL = "org.example.B";
- private static final String DOZER_CONFIG_PATH = "test/dozerBeanMapping.xml";
+ private static final String DOZER_CONFIG_PATH = "mapping.xml";
private static final String TRANSFORM_EP_1 =
"dozer:" + NAME
+ "?marshalId=" + MARSHAL_ID
@@ -38,9 +38,7 @@
@Test
public void testCreateEndpoint() throws Exception {
- DozerComponent comp = new DozerComponent();
- comp.setCamelContext(new DefaultCamelContext());
- DozerEndpoint ep = (DozerEndpoint)comp.createEndpoint(TRANSFORM_EP_1);
+ DozerEndpoint ep = context.getEndpoint(TRANSFORM_EP_1, DozerEndpoint.class);
DozerConfiguration config = ep.getConfiguration();
Assert.assertEquals(NAME, config.getName());
Assert.assertEquals(MARSHAL_ID, config.getMarshalId());
@@ -52,12 +50,10 @@
@Test
public void requiredTargetModelMissing() throws Exception {
- DozerComponent comp = new DozerComponent();
- comp.setCamelContext(new DefaultCamelContext());
try {
- comp.createEndpoint("dozer:noTargetModel?mappingFile=mapping.xml");
+ DozerEndpoint ep = context.getEndpoint("dozer:noTargetModel?mappingFile=mapping.xml", DozerEndpoint.class);
Assert.fail("targetModel is a required parameter");
- } catch (IllegalArgumentException ex) {
+ } catch (Exception ex) {
// expected
}
}