Minor change to #60: use name `OptBoolean` instead.
diff --git a/release-notes/VERSION b/release-notes/VERSION
index c32ba34..dd6938d 100644
--- a/release-notes/VERSION
+++ b/release-notes/VERSION
@@ -15,7 +15,7 @@
#56: Improve `ObjectIdGenerators.key()` to handle `null` appropriately by returning `null`
#58: Add new properties for `@JsonIgnoreProperties`, "allowGetters", "allowSetters"
-#60: Add new value type, `Nullean`, for "nullable booleans", to support proper handling
+#60: Add new value type, `OptBoolean`, for "optional booleans", to support proper handling
and usage of default values, not just explicit true/false.
- Add `JsonInclude.Include.NON_ABSENT` value, for excluding "absent" Optional values.
diff --git a/src/main/java/com/fasterxml/jackson/annotation/JsonIgnoreProperties.java b/src/main/java/com/fasterxml/jackson/annotation/JsonIgnoreProperties.java
index 79fe8ca..dfccc31 100644
--- a/src/main/java/com/fasterxml/jackson/annotation/JsonIgnoreProperties.java
+++ b/src/main/java/com/fasterxml/jackson/annotation/JsonIgnoreProperties.java
@@ -55,6 +55,9 @@
* This is commonly set to support defining "read-only" properties; ones
* for which there is a getter, but no matching setter: in this case,
* properties should be ignored for deserialization but NOT serialization.
+ * Another way to think about this setting is that setting it to `true`
+ * will "disable" ignoring of getters.
+ *<p>
* Default value is `false`, which means that getters with matching names
* will be ignored.
*
@@ -68,6 +71,9 @@
* This could be used to specify "write-only" properties; ones
* that should not be serialized out, but that may be provided in for
* deserialization.
+ * Another way to think about this setting is that setting it to `true`
+ * will "disable" ignoring of setters.
+ *<p>
* Default value is `false`, which means that setters with matching names
* will be ignored.
*
diff --git a/src/main/java/com/fasterxml/jackson/annotation/JsonProperty.java b/src/main/java/com/fasterxml/jackson/annotation/JsonProperty.java
index 4ba32cb..db22457 100644
--- a/src/main/java/com/fasterxml/jackson/annotation/JsonProperty.java
+++ b/src/main/java/com/fasterxml/jackson/annotation/JsonProperty.java
@@ -90,8 +90,71 @@
* It may also be used by Jackson extension modules; core jackson databind
* does not have any automated handling beyond simply exposing this
* value through bean property introspection.
+ *<p>
+ * It is possible that in future this annotation could be used for value
+ * defaulting, and especially for default values of Creator properties,
+ * since they support {@link #required()} in 2.6 and above.
*
* @since 2.5
*/
String defaultValue() default "";
+
+ /**
+ * Optional property that may be used to change the way visibility of
+ * accessors (getter, field-as-getter) and mutators (contructor parameter,
+ * setter, field-as-setter) is determined, either so that otherwise
+ * non-visible accessors (like private getters) may be used; or that
+ * otherwise visible accessors are ignored.
+ *<p>
+ * Default value os {@link Access#AUTO} which means that access is determined
+ * solely based on visibility and other annotations.
+ *
+ * @since 2.6
+ */
+ Access access() default Access.AUTO;
+
+ /**
+ * Various options for {@link #access} property, specifying how property
+ * may be accessed during serialization ("read") and deserialization ("write")
+ * (note that the direction of read and write is from perspective of the property,
+ * not from external data format: this may be confusing in some contexts).
+ *<p>
+ * Note that while this annotation modifies access to annotated property,
+ * its effects may be further overridden by {@link JsonIgnore} property:
+ * if both annotations are present on an accessors, {@link JsonIgnore}
+ * has precedence over this property.
+ *
+ * @since 2.6
+ */
+ public enum Access
+ {
+ /**
+ * Access setting which means that visibility rules are to be used
+ * to automatically determine read- and/or write-access of this property.
+ */
+ AUTO,
+
+ /**
+ * Access setting that means that the property may only be read for serialization,
+ * but not written (set) during deserialization.
+ */
+ READ_ONLY,
+
+ /**
+ * Access setting that means that the property may only be written (set)
+ * for deserialization,
+ * but will not be read (get) on serialization, that is, the value of the property
+ * is not included in serialization.
+ */
+ WRITE_ONLY,
+
+ /**
+ * Access setting that means that the property will be accessed for both
+ * serialization (writing out values as external representation)
+ * and deserialization (reading values from external representation),
+ * regardless of visibility rules.
+ */
+ READ_WRITE
+ ;
+ }
}
diff --git a/src/main/java/com/fasterxml/jackson/annotation/Nullean.java b/src/main/java/com/fasterxml/jackson/annotation/OptBoolean.java
similarity index 91%
rename from src/main/java/com/fasterxml/jackson/annotation/Nullean.java
rename to src/main/java/com/fasterxml/jackson/annotation/OptBoolean.java
index 051b474..8e88e4a 100644
--- a/src/main/java/com/fasterxml/jackson/annotation/Nullean.java
+++ b/src/main/java/com/fasterxml/jackson/annotation/OptBoolean.java
@@ -1,7 +1,7 @@
package com.fasterxml.jackson.annotation;
/**
- * Nullable Boolean value, "nullean". Needed just because Java annotations
+ * Optional Boolean value ("nullean"). Needed just because Java annotations
* can not take 'null' as a value (even as default), so there is no
* way to distinguish between explicit `true` and `false`, and lack of
* choice (related: annotations are limited to primitives, so
@@ -14,7 +14,7 @@
*
* @since 2.6
*/
-public enum Nullean
+public enum OptBoolean
{
/**
* Value that indicates that the annotation property is explicitly defined to