FAQ
Repository: camel
Updated Branches:
   refs/heads/camel-2.13.x 3039e87fe -> c23789af5
   refs/heads/master 122419876 -> d5394d3b4


CAMEL-7624: camel-jackson allow to configure include option to make it easy to skip null fields.


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

Branch: refs/heads/master
Commit: d5394d3b47988e38c27ad54a9db5628b9772d81f
Parents: 1224198
Author: Claus Ibsen <davsclaus@apache.org>
Authored: Tue Jul 22 12:34:55 2014 +0200
Committer: Claus Ibsen <davsclaus@apache.org>
Committed: Tue Jul 22 12:34:55 2014 +0200

----------------------------------------------------------------------
  .../apache/camel/builder/DataFormatClause.java | 18 ++++++-
  .../camel/model/dataformat/JsonDataFormat.java | 14 ++++-
  .../component/jackson/JacksonDataFormat.java | 28 ++++++++--
  .../jackson/JacksonIncludeDefaultTest.java | 53 +++++++++++++++++++
  .../jackson/JacksonIncludeNotNulllTest.java | 54 ++++++++++++++++++++
  .../camel/component/jackson/TestOtherPojo.java | 40 +++++++++++++++
  6 files changed, 201 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/d5394d3b/camel-core/src/main/java/org/apache/camel/builder/DataFormatClause.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/builder/DataFormatClause.java b/camel-core/src/main/java/org/apache/camel/builder/DataFormatClause.java
index b28d062..508b9fb 100644
--- a/camel-core/src/main/java/org/apache/camel/builder/DataFormatClause.java
+++ b/camel-core/src/main/java/org/apache/camel/builder/DataFormatClause.java
@@ -359,9 +359,8 @@ public class DataFormatClause<T extends ProcessorDefinition<?>> {
      }

      /**
- * Uses the JSON data format
+ * Uses the Jackson JSON data format
       *
- * @param type the json type to use
       * @param unmarshalType unmarshal type for json jackson type
       * @param jsonView the view type for json jackson type
       */
@@ -373,6 +372,21 @@ public class DataFormatClause<T extends ProcessorDefinition<?>> {
      }

      /**
+ * Uses the Jackson JSON data format
+ *
+ * @param unmarshalType unmarshal type for json jackson type
+ * @param jsonView the view type for json jackson type
+ * @param include include such as <tt>ALWAYS</tt>, <tt>NON_NULL</tt>, etc.
+ */
+ public T json(Class<?> unmarshalType, Class<?> jsonView, String include) {
+ JsonDataFormat json = new JsonDataFormat(JsonLibrary.Jackson);
+ json.setUnmarshalType(unmarshalType);
+ json.setJsonView(jsonView);
+ json.setInclude(include);
+ return dataFormat(json);
+ }
+
+ /**
       * Uses the protobuf data format
       */
      public T protobuf() {

http://git-wip-us.apache.org/repos/asf/camel/blob/d5394d3b/camel-core/src/main/java/org/apache/camel/model/dataformat/JsonDataFormat.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/model/dataformat/JsonDataFormat.java b/camel-core/src/main/java/org/apache/camel/model/dataformat/JsonDataFormat.java
index 2cf7cf7..d72492a 100644
--- a/camel-core/src/main/java/org/apache/camel/model/dataformat/JsonDataFormat.java
+++ b/camel-core/src/main/java/org/apache/camel/model/dataformat/JsonDataFormat.java
@@ -46,6 +46,8 @@ public class JsonDataFormat extends DataFormatDefinition {
      private Class<?> unmarshalType;
      @XmlAttribute
      private Class<?> jsonView;
+ @XmlAttribute
+ private String include;

      public JsonDataFormat() {
      }
@@ -94,6 +96,14 @@ public class JsonDataFormat extends DataFormatDefinition {
          this.jsonView = jsonView;
      }

+ public String getInclude() {
+ return include;
+ }
+
+ public void setInclude(String include) {
+ this.include = include;
+ }
+
      @Override
      protected DataFormat createDataFormat(RouteContext routeContext) {
          if (library == JsonLibrary.XStream) {
@@ -123,10 +133,12 @@ public class JsonDataFormat extends DataFormatDefinition {
          if (prettyPrint != null) {
              setProperty(camelContext, dataFormat, "prettyPrint", unmarshalType);
          }
-
          if (jsonView != null) {
              setProperty(camelContext, dataFormat, "jsonView", jsonView);
          }
+ if (include != null) {
+ setProperty(camelContext, dataFormat, "include", include);
+ }
      }

  }

http://git-wip-us.apache.org/repos/asf/camel/blob/d5394d3b/components/camel-jackson/src/main/java/org/apache/camel/component/jackson/JacksonDataFormat.java
----------------------------------------------------------------------
diff --git a/components/camel-jackson/src/main/java/org/apache/camel/component/jackson/JacksonDataFormat.java b/components/camel-jackson/src/main/java/org/apache/camel/component/jackson/JacksonDataFormat.java
index 231adf7..a537e33 100644
--- a/components/camel-jackson/src/main/java/org/apache/camel/component/jackson/JacksonDataFormat.java
+++ b/components/camel-jackson/src/main/java/org/apache/camel/component/jackson/JacksonDataFormat.java
@@ -21,22 +21,23 @@ import java.io.OutputStream;
  import java.util.HashMap;
  import java.util.Map;

+import com.fasterxml.jackson.annotation.JsonInclude;
  import com.fasterxml.jackson.databind.ObjectMapper;
  import com.fasterxml.jackson.module.jaxb.JaxbAnnotationModule;
-
  import org.apache.camel.Exchange;
  import org.apache.camel.spi.DataFormat;
-
+import org.apache.camel.support.ServiceSupport;

  /**
   * A <a href="http://camel.apache.org/data-format.html">data format</a> ({@link DataFormat})
   * using <a href="http://jackson.codehaus.org/">Jackson</a> to marshal to and from JSON.
   */
-public class JacksonDataFormat implements DataFormat {
+public class JacksonDataFormat extends ServiceSupport implements DataFormat {

      private final ObjectMapper objectMapper;
      private Class<?> unmarshalType;
      private Class<?> jsonView;
+ private String include;

      /**
       * Use the default Jackson {@link ObjectMapper} and {@link Map}
@@ -128,4 +129,25 @@ public class JacksonDataFormat implements DataFormat {
          return this.objectMapper;
      }

+ public String getInclude() {
+ return include;
+ }
+
+ public void setInclude(String include) {
+ this.include = include;
+ }
+
+ @Override
+ protected void doStart() throws Exception {
+ if (include != null) {
+ JsonInclude.Include inc = JsonInclude.Include.valueOf(include);
+ objectMapper.setSerializationInclusion(inc);
+ }
+ }
+
+ @Override
+ protected void doStop() throws Exception {
+ // noop
+ }
+
  }

http://git-wip-us.apache.org/repos/asf/camel/blob/d5394d3b/components/camel-jackson/src/test/java/org/apache/camel/component/jackson/JacksonIncludeDefaultTest.java
----------------------------------------------------------------------
diff --git a/components/camel-jackson/src/test/java/org/apache/camel/component/jackson/JacksonIncludeDefaultTest.java b/components/camel-jackson/src/test/java/org/apache/camel/component/jackson/JacksonIncludeDefaultTest.java
new file mode 100644
index 0000000..4baca3f
--- /dev/null
+++ b/components/camel-jackson/src/test/java/org/apache/camel/component/jackson/JacksonIncludeDefaultTest.java
@@ -0,0 +1,53 @@
+/**
+ * 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.component.jackson;
+
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.component.mock.MockEndpoint;
+import org.apache.camel.test.junit4.CamelTestSupport;
+import org.junit.Test;
+
+public class JacksonIncludeDefaultTest extends CamelTestSupport {
+
+ @Test
+ public void testMmarshalPojo() throws Exception {
+ MockEndpoint mock = getMockEndpoint("mock:marshal");
+ mock.expectedMessageCount(1);
+ mock.message(0).body(String.class).isEqualTo("{\"name\":\"Camel\",\"country\":null}");
+
+ TestOtherPojo pojo = new TestOtherPojo();
+ pojo.setName("Camel");
+
+ template.sendBody("direct:marshal", pojo);
+
+ assertMockEndpointsSatisfied();
+ }
+
+ @Override
+ protected RouteBuilder createRouteBuilder() throws Exception {
+ return new RouteBuilder() {
+
+ @Override
+ public void configure() throws Exception {
+ JacksonDataFormat format = new JacksonDataFormat();
+
+ from("direct:marshal").marshal(format).to("mock:marshal");
+ }
+ };
+ }
+
+}

http://git-wip-us.apache.org/repos/asf/camel/blob/d5394d3b/components/camel-jackson/src/test/java/org/apache/camel/component/jackson/JacksonIncludeNotNulllTest.java
----------------------------------------------------------------------
diff --git a/components/camel-jackson/src/test/java/org/apache/camel/component/jackson/JacksonIncludeNotNulllTest.java b/components/camel-jackson/src/test/java/org/apache/camel/component/jackson/JacksonIncludeNotNulllTest.java
new file mode 100644
index 0000000..7811402
--- /dev/null
+++ b/components/camel-jackson/src/test/java/org/apache/camel/component/jackson/JacksonIncludeNotNulllTest.java
@@ -0,0 +1,54 @@
+/**
+ * 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.component.jackson;
+
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.component.mock.MockEndpoint;
+import org.apache.camel.test.junit4.CamelTestSupport;
+import org.junit.Test;
+
+public class JacksonIncludeNotNulllTest extends CamelTestSupport {
+
+ @Test
+ public void testMmarshalPojo() throws Exception {
+ MockEndpoint mock = getMockEndpoint("mock:marshal");
+ mock.expectedMessageCount(1);
+ mock.message(0).body(String.class).isEqualTo("{\"name\":\"Camel\"}");
+
+ TestOtherPojo pojo = new TestOtherPojo();
+ pojo.setName("Camel");
+
+ template.sendBody("direct:marshal", pojo);
+
+ assertMockEndpointsSatisfied();
+ }
+
+ @Override
+ protected RouteBuilder createRouteBuilder() throws Exception {
+ return new RouteBuilder() {
+
+ @Override
+ public void configure() throws Exception {
+ JacksonDataFormat format = new JacksonDataFormat();
+ format.setInclude("NON_NULL");
+
+ from("direct:marshal").marshal(format).to("mock:marshal");
+ }
+ };
+ }
+
+}

http://git-wip-us.apache.org/repos/asf/camel/blob/d5394d3b/components/camel-jackson/src/test/java/org/apache/camel/component/jackson/TestOtherPojo.java
----------------------------------------------------------------------
diff --git a/components/camel-jackson/src/test/java/org/apache/camel/component/jackson/TestOtherPojo.java b/components/camel-jackson/src/test/java/org/apache/camel/component/jackson/TestOtherPojo.java
new file mode 100644
index 0000000..cfdde52
--- /dev/null
+++ b/components/camel-jackson/src/test/java/org/apache/camel/component/jackson/TestOtherPojo.java
@@ -0,0 +1,40 @@
+/**
+ * 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.component.jackson;
+
+public class TestOtherPojo {
+
+ private String name;
+ private String country;
+
+ public String getName() {
+ return this.name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getCountry() {
+ return country;
+ }
+
+ public void setCountry(String country) {
+ this.country = country;
+ }
+
+}
\ No newline at end of file

Search Discussions

  • Davsclaus at Jul 22, 2014 at 10:35 am
    CAMEL-7624: camel-jackson allow to configure include option to make it easy to skip null fields.


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

    Branch: refs/heads/camel-2.13.x
    Commit: c23789af5cb5770b692cc79d8aed24d096332d99
    Parents: 3039e87
    Author: Claus Ibsen <davsclaus@apache.org>
    Authored: Tue Jul 22 12:34:55 2014 +0200
    Committer: Claus Ibsen <davsclaus@apache.org>
    Committed: Tue Jul 22 12:35:11 2014 +0200

    ----------------------------------------------------------------------
      .../apache/camel/builder/DataFormatClause.java | 18 ++++++-
      .../camel/model/dataformat/JsonDataFormat.java | 14 ++++-
      .../component/jackson/JacksonDataFormat.java | 28 ++++++++--
      .../jackson/JacksonIncludeDefaultTest.java | 53 +++++++++++++++++++
      .../jackson/JacksonIncludeNotNulllTest.java | 54 ++++++++++++++++++++
      .../camel/component/jackson/TestOtherPojo.java | 40 +++++++++++++++
      6 files changed, 201 insertions(+), 6 deletions(-)
    ----------------------------------------------------------------------


    http://git-wip-us.apache.org/repos/asf/camel/blob/c23789af/camel-core/src/main/java/org/apache/camel/builder/DataFormatClause.java
    ----------------------------------------------------------------------
    diff --git a/camel-core/src/main/java/org/apache/camel/builder/DataFormatClause.java b/camel-core/src/main/java/org/apache/camel/builder/DataFormatClause.java
    index b28d062..508b9fb 100644
    --- a/camel-core/src/main/java/org/apache/camel/builder/DataFormatClause.java
    +++ b/camel-core/src/main/java/org/apache/camel/builder/DataFormatClause.java
    @@ -359,9 +359,8 @@ public class DataFormatClause<T extends ProcessorDefinition<?>> {
          }

          /**
    - * Uses the JSON data format
    + * Uses the Jackson JSON data format
           *
    - * @param type the json type to use
           * @param unmarshalType unmarshal type for json jackson type
           * @param jsonView the view type for json jackson type
           */
    @@ -373,6 +372,21 @@ public class DataFormatClause<T extends ProcessorDefinition<?>> {
          }

          /**
    + * Uses the Jackson JSON data format
    + *
    + * @param unmarshalType unmarshal type for json jackson type
    + * @param jsonView the view type for json jackson type
    + * @param include include such as <tt>ALWAYS</tt>, <tt>NON_NULL</tt>, etc.
    + */
    + public T json(Class<?> unmarshalType, Class<?> jsonView, String include) {
    + JsonDataFormat json = new JsonDataFormat(JsonLibrary.Jackson);
    + json.setUnmarshalType(unmarshalType);
    + json.setJsonView(jsonView);
    + json.setInclude(include);
    + return dataFormat(json);
    + }
    +
    + /**
           * Uses the protobuf data format
           */
          public T protobuf() {

    http://git-wip-us.apache.org/repos/asf/camel/blob/c23789af/camel-core/src/main/java/org/apache/camel/model/dataformat/JsonDataFormat.java
    ----------------------------------------------------------------------
    diff --git a/camel-core/src/main/java/org/apache/camel/model/dataformat/JsonDataFormat.java b/camel-core/src/main/java/org/apache/camel/model/dataformat/JsonDataFormat.java
    index 2cf7cf7..d72492a 100644
    --- a/camel-core/src/main/java/org/apache/camel/model/dataformat/JsonDataFormat.java
    +++ b/camel-core/src/main/java/org/apache/camel/model/dataformat/JsonDataFormat.java
    @@ -46,6 +46,8 @@ public class JsonDataFormat extends DataFormatDefinition {
          private Class<?> unmarshalType;
          @XmlAttribute
          private Class<?> jsonView;
    + @XmlAttribute
    + private String include;

          public JsonDataFormat() {
          }
    @@ -94,6 +96,14 @@ public class JsonDataFormat extends DataFormatDefinition {
              this.jsonView = jsonView;
          }

    + public String getInclude() {
    + return include;
    + }
    +
    + public void setInclude(String include) {
    + this.include = include;
    + }
    +
          @Override
          protected DataFormat createDataFormat(RouteContext routeContext) {
              if (library == JsonLibrary.XStream) {
    @@ -123,10 +133,12 @@ public class JsonDataFormat extends DataFormatDefinition {
              if (prettyPrint != null) {
                  setProperty(camelContext, dataFormat, "prettyPrint", unmarshalType);
              }
    -
              if (jsonView != null) {
                  setProperty(camelContext, dataFormat, "jsonView", jsonView);
              }
    + if (include != null) {
    + setProperty(camelContext, dataFormat, "include", include);
    + }
          }

      }

    http://git-wip-us.apache.org/repos/asf/camel/blob/c23789af/components/camel-jackson/src/main/java/org/apache/camel/component/jackson/JacksonDataFormat.java
    ----------------------------------------------------------------------
    diff --git a/components/camel-jackson/src/main/java/org/apache/camel/component/jackson/JacksonDataFormat.java b/components/camel-jackson/src/main/java/org/apache/camel/component/jackson/JacksonDataFormat.java
    index 231adf7..a537e33 100644
    --- a/components/camel-jackson/src/main/java/org/apache/camel/component/jackson/JacksonDataFormat.java
    +++ b/components/camel-jackson/src/main/java/org/apache/camel/component/jackson/JacksonDataFormat.java
    @@ -21,22 +21,23 @@ import java.io.OutputStream;
      import java.util.HashMap;
      import java.util.Map;

    +import com.fasterxml.jackson.annotation.JsonInclude;
      import com.fasterxml.jackson.databind.ObjectMapper;
      import com.fasterxml.jackson.module.jaxb.JaxbAnnotationModule;
    -
      import org.apache.camel.Exchange;
      import org.apache.camel.spi.DataFormat;
    -
    +import org.apache.camel.support.ServiceSupport;

      /**
       * A <a href="http://camel.apache.org/data-format.html">data format</a> ({@link DataFormat})
       * using <a href="http://jackson.codehaus.org/">Jackson</a> to marshal to and from JSON.
       */
    -public class JacksonDataFormat implements DataFormat {
    +public class JacksonDataFormat extends ServiceSupport implements DataFormat {

          private final ObjectMapper objectMapper;
          private Class<?> unmarshalType;
          private Class<?> jsonView;
    + private String include;

          /**
           * Use the default Jackson {@link ObjectMapper} and {@link Map}
    @@ -128,4 +129,25 @@ public class JacksonDataFormat implements DataFormat {
              return this.objectMapper;
          }

    + public String getInclude() {
    + return include;
    + }
    +
    + public void setInclude(String include) {
    + this.include = include;
    + }
    +
    + @Override
    + protected void doStart() throws Exception {
    + if (include != null) {
    + JsonInclude.Include inc = JsonInclude.Include.valueOf(include);
    + objectMapper.setSerializationInclusion(inc);
    + }
    + }
    +
    + @Override
    + protected void doStop() throws Exception {
    + // noop
    + }
    +
      }

    http://git-wip-us.apache.org/repos/asf/camel/blob/c23789af/components/camel-jackson/src/test/java/org/apache/camel/component/jackson/JacksonIncludeDefaultTest.java
    ----------------------------------------------------------------------
    diff --git a/components/camel-jackson/src/test/java/org/apache/camel/component/jackson/JacksonIncludeDefaultTest.java b/components/camel-jackson/src/test/java/org/apache/camel/component/jackson/JacksonIncludeDefaultTest.java
    new file mode 100644
    index 0000000..4baca3f
    --- /dev/null
    +++ b/components/camel-jackson/src/test/java/org/apache/camel/component/jackson/JacksonIncludeDefaultTest.java
    @@ -0,0 +1,53 @@
    +/**
    + * 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.component.jackson;
    +
    +import org.apache.camel.builder.RouteBuilder;
    +import org.apache.camel.component.mock.MockEndpoint;
    +import org.apache.camel.test.junit4.CamelTestSupport;
    +import org.junit.Test;
    +
    +public class JacksonIncludeDefaultTest extends CamelTestSupport {
    +
    + @Test
    + public void testMmarshalPojo() throws Exception {
    + MockEndpoint mock = getMockEndpoint("mock:marshal");
    + mock.expectedMessageCount(1);
    + mock.message(0).body(String.class).isEqualTo("{\"name\":\"Camel\",\"country\":null}");
    +
    + TestOtherPojo pojo = new TestOtherPojo();
    + pojo.setName("Camel");
    +
    + template.sendBody("direct:marshal", pojo);
    +
    + assertMockEndpointsSatisfied();
    + }
    +
    + @Override
    + protected RouteBuilder createRouteBuilder() throws Exception {
    + return new RouteBuilder() {
    +
    + @Override
    + public void configure() throws Exception {
    + JacksonDataFormat format = new JacksonDataFormat();
    +
    + from("direct:marshal").marshal(format).to("mock:marshal");
    + }
    + };
    + }
    +
    +}

    http://git-wip-us.apache.org/repos/asf/camel/blob/c23789af/components/camel-jackson/src/test/java/org/apache/camel/component/jackson/JacksonIncludeNotNulllTest.java
    ----------------------------------------------------------------------
    diff --git a/components/camel-jackson/src/test/java/org/apache/camel/component/jackson/JacksonIncludeNotNulllTest.java b/components/camel-jackson/src/test/java/org/apache/camel/component/jackson/JacksonIncludeNotNulllTest.java
    new file mode 100644
    index 0000000..7811402
    --- /dev/null
    +++ b/components/camel-jackson/src/test/java/org/apache/camel/component/jackson/JacksonIncludeNotNulllTest.java
    @@ -0,0 +1,54 @@
    +/**
    + * 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.component.jackson;
    +
    +import org.apache.camel.builder.RouteBuilder;
    +import org.apache.camel.component.mock.MockEndpoint;
    +import org.apache.camel.test.junit4.CamelTestSupport;
    +import org.junit.Test;
    +
    +public class JacksonIncludeNotNulllTest extends CamelTestSupport {
    +
    + @Test
    + public void testMmarshalPojo() throws Exception {
    + MockEndpoint mock = getMockEndpoint("mock:marshal");
    + mock.expectedMessageCount(1);
    + mock.message(0).body(String.class).isEqualTo("{\"name\":\"Camel\"}");
    +
    + TestOtherPojo pojo = new TestOtherPojo();
    + pojo.setName("Camel");
    +
    + template.sendBody("direct:marshal", pojo);
    +
    + assertMockEndpointsSatisfied();
    + }
    +
    + @Override
    + protected RouteBuilder createRouteBuilder() throws Exception {
    + return new RouteBuilder() {
    +
    + @Override
    + public void configure() throws Exception {
    + JacksonDataFormat format = new JacksonDataFormat();
    + format.setInclude("NON_NULL");
    +
    + from("direct:marshal").marshal(format).to("mock:marshal");
    + }
    + };
    + }
    +
    +}

    http://git-wip-us.apache.org/repos/asf/camel/blob/c23789af/components/camel-jackson/src/test/java/org/apache/camel/component/jackson/TestOtherPojo.java
    ----------------------------------------------------------------------
    diff --git a/components/camel-jackson/src/test/java/org/apache/camel/component/jackson/TestOtherPojo.java b/components/camel-jackson/src/test/java/org/apache/camel/component/jackson/TestOtherPojo.java
    new file mode 100644
    index 0000000..cfdde52
    --- /dev/null
    +++ b/components/camel-jackson/src/test/java/org/apache/camel/component/jackson/TestOtherPojo.java
    @@ -0,0 +1,40 @@
    +/**
    + * 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.component.jackson;
    +
    +public class TestOtherPojo {
    +
    + private String name;
    + private String country;
    +
    + public String getName() {
    + return this.name;
    + }
    +
    + public void setName(String name) {
    + this.name = name;
    + }
    +
    + public String getCountry() {
    + return country;
    + }
    +
    + public void setCountry(String country) {
    + this.country = country;
    + }
    +
    +}
    \ No newline at end of file

Related Discussions

Discussion Navigation
viewthread | post
Discussion Overview
groupcommits @
categoriescamel
postedJul 22, '14 at 10:35a
activeJul 22, '14 at 10:35a
posts2
users1
websitecamel.apache.org

1 user in discussion

Davsclaus: 2 posts

People

Translate

site design / logo © 2018 Grokbase