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;

/**
 * Marker annotation that can be used to define a non-static
 * method as a "setter" or "getter" for a logical property
 * (depending on its signature),
 * or non-static object field to be used (serialized, deserialized) as
 * a logical property.
 *<p>
 * Default value ("") indicates that the field name is used
 * as the property name without any modifications, but it
 * can be specified to non-empty value to specify different
 * name. Property name refers to name used externally, as
 * the field name in Json objects.
 */
@Target({ElementType.ANNOTATION_TYPE, ElementType.FIELD, ElementType.METHOD, ElementType.PARAMETER})
@Retention(RetentionPolicy.RUNTIME)
@JacksonAnnotation
public @interface JsonProperty
{
    /**
     * Defines name of the logical property, i.e. Json object field
     * name to use for the property: if empty String (which is the
     * default), will use name of the field that is annotated.
     */
    String value() default "";
}

@@ -713,19 +713,19 @@
 ame in J
-son
+SON
  objects
@@ -1133,16 +1133,16 @@
      */%0A
-
     Stri
@@ -1163,11 +1163,921 @@
 ault %22%22;
+%0A%0A    /**%0A     * Property that indicates whether a value (which may be explicit%0A     * null) is expected for property during deserialization or not.%0A     * If expected, %3Ccode%3EBeanDeserialized%3C/code%3E should indicate%0A     * this as a validity problem (usually by throwing an exception,%0A     * but this may be sent via problem handlers that can try to%0A     * rectify the problem, for example, by supplying a default%0A     * value).%0A     *%3Cp%3E%0A     * Note that as of 2.0, this property is NOT used by%0A     * %3Ccode%3EBeanDeserializer%3C/code%3E: support is expected to be%0A     * added for later minor versions.%0A     * %0A     * @since 2.0%0A     */%0A    boolean required() default false;%0A%0A    /* NOTE: considering of adding ability to specify default%0A     * String value -- would work well for scalar types, most of%0A     * which can coerce from Strings. But won't add for 2.0 yet.%0A     */%0A    //String defaultValue() default %22%22;
 %0A%7D%0A

Add @JsonProperty.required for future extension