[jackson-annotations] 09/207: Add @JsonInclude, for [JACKSON-752]

Timo Aaltonen tjaalton at moszumanska.debian.org
Sat Sep 6 13:55:34 UTC 2014


This is an automated email from the git hooks/post-receive script.

tjaalton pushed a commit to branch master
in repository jackson-annotations.

commit e05f96a93f1a1c433e34e46176715a7c8bef5d21
Author: Tatu Saloranta <tsaloranta at gmail.com>
Date:   Sat Jan 14 22:01:40 2012 -0800

    Add @JsonInclude, for [JACKSON-752]
---
 .../fasterxml/jackson/annotation/JsonInclude.java  | 95 ++++++++++++++++++++++
 1 file changed, 95 insertions(+)

diff --git a/src/main/java/com/fasterxml/jackson/annotation/JsonInclude.java b/src/main/java/com/fasterxml/jackson/annotation/JsonInclude.java
new file mode 100644
index 0000000..d80b72b
--- /dev/null
+++ b/src/main/java/com/fasterxml/jackson/annotation/JsonInclude.java
@@ -0,0 +1,95 @@
+package com.fasterxml.jackson.annotation;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * Annotation used to indicate when value of the annotated property (when
+ * used for a field, method or constructor parameter), or all 
+ * properties of the annotated class, is to be serialized.
+ * Without annotation property values are always included, but by using
+ * this annotation one can specify simple exclusion rules to reduce
+ * amount of properties to write out.
+ * 
+ * @since 2.0
+ */
+ at Target({ElementType.METHOD, ElementType.FIELD, ElementType.TYPE, ElementType.PARAMETER})
+ at Retention(RetentionPolicy.RUNTIME)
+ at com.fasterxml.jackson.annotation.JacksonAnnotation
+public @interface JsonInclude
+{
+    /**
+     * Inclusion rule to use.
+     */
+    public Include value() default Include.ALWAYS;
+    
+    /*
+    /**********************************************************
+    /* Value enumerations needed
+    /**********************************************************
+     */
+
+    /**
+     * Enumeration used with {@link JsonSerialize#include} property
+     * to define which properties
+     * of Java Beans are to be included in serialization.
+     *<p>
+     * Note: Jackson 1.x had similarly named ("Inclusion") enumeration included
+     * in <code>JsonSerialize</code> annotation: it is not deprecated
+     * and this value used instead.
+     */
+    public enum Include
+    {
+        /**
+         * Value that indicates that property is to be always included,
+         * independent of value of the property.
+         */
+        ALWAYS,
+
+        /**
+         * Value that indicates that only properties with non-null
+         * values are to be included.
+         */
+        NON_NULL,
+
+        /**
+         * Value that indicates that only properties that have values
+         * that differ from default settings (meaning values they have
+         * when Bean is constructed with its no-arguments constructor)
+         * are to be included. Value is generally not useful with
+         * {@link java.util.Map}s, since they have no default values;
+         * and if used, works same as {@link #ALWAYS}.
+         */
+        NON_DEFAULT,
+
+        /**
+         * Value that indicates that only properties that have values
+         * that values that are null or what is considered empty are
+         * not to be included.
+         *<p>
+         * Default emptiness is defined for following type:
+         *<ul>
+         * <li>For {@link java.util.Collection}s and {@link java.util.Map}s,
+         *    method <code>isEmpty()</code> is called;
+         *   </li>
+         * <li>For Java arrays, empty arrays are ones with length of 0
+         *   </li>
+         * <li>For Java {@link java.lang.String}s, <code>length()</code> is called,
+         *   and return value of 0 indicates empty String (note that <code>String.isEmpty()</code>
+         *   was added in Java 1.6 and as such can not be used by Jackson
+         *   </li>
+         * <ul>
+         *  and for other types, non-null values are to be included.
+         *<p>
+         * Note that this default handling can be overridden by custom
+         * <code>JsonSerializer</code> implementation: if method <code>isEmpty()</code>
+         * is overridden, it will be called to see if non-null values are
+         * considered empty (null is always considered empty).
+         */
+        NON_EMPTY
+        ;
+    }
+
+}

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-java/jackson-annotations.git



More information about the pkg-java-commits mailing list