CAMEL-9649: Allow to turn off object factory with jaxb data format

Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/72141c6d
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/72141c6d
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/72141c6d

Branch: refs/heads/master
Commit: 72141c6d61ca8337be13fc19ef5d84ef20d3d413
Parents: f158076
Author: Claus Ibsen <davscl...@apache.org>
Authored: Tue Mar 8 09:38:29 2016 +0100
Committer: Claus Ibsen <davscl...@apache.org>
Committed: Tue Mar 8 09:38:29 2016 +0100

----------------------------------------------------------------------
 .../camel/model/dataformat/JaxbDataFormat.java  | 20 ++++++++++++++++++++
 .../camel/converter/jaxb/JaxbDataFormat.java    | 13 ++++++++++++-
 2 files changed, 32 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/72141c6d/camel-core/src/main/java/org/apache/camel/model/dataformat/JaxbDataFormat.java
----------------------------------------------------------------------
diff --git 
a/camel-core/src/main/java/org/apache/camel/model/dataformat/JaxbDataFormat.java
 
b/camel-core/src/main/java/org/apache/camel/model/dataformat/JaxbDataFormat.java
index ca933ed..c894b5d 100644
--- 
a/camel-core/src/main/java/org/apache/camel/model/dataformat/JaxbDataFormat.java
+++ 
b/camel-core/src/main/java/org/apache/camel/model/dataformat/JaxbDataFormat.java
@@ -44,6 +44,8 @@ public class JaxbDataFormat extends DataFormatDefinition {
     @XmlAttribute
     private Boolean prettyPrint;
     @XmlAttribute
+    private Boolean objectFactory;
+    @XmlAttribute
     private Boolean ignoreJAXBElement;
     @XmlAttribute
     private Boolean mustBeJAXBElement;
@@ -113,6 +115,18 @@ public class JaxbDataFormat extends DataFormatDefinition {
         this.prettyPrint = prettyPrint;
     }
 
+    public Boolean getObjectFactory() {
+        return objectFactory;
+    }
+
+    /**
+     * Whether to allow using ObjectFactory classes to create the POJO classes 
during marshalling.
+     * This only applies to POJO classes that has not been annotated with JAXB 
and providing jaxb.index descriptor files.
+     */
+    public void setObjectFactory(Boolean objectFactory) {
+        this.objectFactory = objectFactory;
+    }
+
     public Boolean getIgnoreJAXBElement() {
         return ignoreJAXBElement;
     }
@@ -253,6 +267,12 @@ public class JaxbDataFormat extends DataFormatDefinition {
         } else { // the default value is true
             setProperty(camelContext, dataFormat, "prettyPrint", Boolean.TRUE);
         }
+        answer = ObjectHelper.toBoolean(getObjectFactory());
+        if (answer != null && !answer) {
+            setProperty(camelContext, dataFormat, "objectFactory", 
Boolean.FALSE);
+        } else { // the default value is true
+            setProperty(camelContext, dataFormat, "objectFactory", 
Boolean.TRUE);
+        }
         answer = ObjectHelper.toBoolean(getIgnoreJAXBElement());
         if (answer != null && !answer) {
             setProperty(camelContext, dataFormat, "ignoreJAXBElement", 
Boolean.FALSE);

http://git-wip-us.apache.org/repos/asf/camel/blob/72141c6d/components/camel-jaxb/src/main/java/org/apache/camel/converter/jaxb/JaxbDataFormat.java
----------------------------------------------------------------------
diff --git 
a/components/camel-jaxb/src/main/java/org/apache/camel/converter/jaxb/JaxbDataFormat.java
 
b/components/camel-jaxb/src/main/java/org/apache/camel/converter/jaxb/JaxbDataFormat.java
index 95389ee..9fbd1bc 100644
--- 
a/components/camel-jaxb/src/main/java/org/apache/camel/converter/jaxb/JaxbDataFormat.java
+++ 
b/components/camel-jaxb/src/main/java/org/apache/camel/converter/jaxb/JaxbDataFormat.java
@@ -85,6 +85,7 @@ public class JaxbDataFormat extends ServiceSupport implements 
DataFormat, DataFo
     private String noNamespaceSchemaLocation;
 
     private boolean prettyPrint = true;
+    private boolean objectFactory = true;
     private boolean ignoreJAXBElement = true;
     private boolean mustBeJAXBElement = true;
     private boolean filterNonXmlChars;
@@ -176,7 +177,7 @@ public class JaxbDataFormat extends ServiceSupport 
implements DataFormat, DataFo
                 marshaller.marshal(element, stream);
             }
             return;
-        } else if (element != null) {
+        } else if (objectFactory && element != null) {
             Method objectFactoryMethod = 
JaxbHelper.getJaxbElementFactoryMethod(camelContext, element.getClass());
             if (objectFactoryMethod != null) {
                 try {
@@ -316,6 +317,14 @@ public class JaxbDataFormat extends ServiceSupport 
implements DataFormat, DataFo
         this.prettyPrint = prettyPrint;
     }
 
+    public boolean isObjectFactory() {
+        return objectFactory;
+    }
+
+    public void setObjectFactory(boolean objectFactory) {
+        this.objectFactory = objectFactory;
+    }
+
     public boolean isFragment() {
         return fragment;
     }
@@ -428,6 +437,8 @@ public class JaxbDataFormat extends ServiceSupport 
implements DataFormat, DataFo
         if (schema != null) {
             cachedSchema = createSchema(getSources());
         }
+
+        LOG.debug("JaxbDataFormat [prettyPrint={}, objectFactory={}]", 
prettyPrint, objectFactory);
     }
 
     @Override

Reply via email to