| package org.codehaus.jackson.annotate; |
| |
| import java.lang.annotation.ElementType; |
| import java.lang.annotation.Retention; |
| import java.lang.annotation.RetentionPolicy; |
| import java.lang.annotation.Target; |
| |
| /** |
| * Annotation used to indicate that annotated property is part of |
| * two-way linkage between fields; and that its role is "parent" (or "forward") link. |
| * Value type (class) of property must have a single compatible property annotated with |
| * {@link JsonBackReference}. Linkage is handled such that the property |
| * annotated with this annotation is handled normally (serialized normally, no |
| * special handling for deserialization); it is the matching back reference |
| * that requires special handling |
| *<p> |
| * All references have logical name to allow handling multiple linkages; typical case |
| * would be that where nodes have both parent/child and sibling linkages. If so, |
| * pairs of references should be named differently. |
| * It is an error for a class too have multiple managed references with same name, |
| * even if types pointed are different. |
| *<p> |
| * Note: only methods and fields can be annotated with this annotation: constructor |
| * arguments should NOT be annotated, as they can not be either managed or back |
| * references. |
| * |
| * @author tatu |
| */ |
| @Target({ElementType.FIELD, ElementType.METHOD}) |
| @Retention(RetentionPolicy.RUNTIME) |
| @JacksonAnnotation |
| public @interface JsonManagedReference |
| { |
| /** |
| * Logical have for the reference property pair; used to link managed and |
| * back references. Default name can be used if there is just single |
| * reference pair (for example, node class that just has parent/child linkage, |
| * consisting of one managed reference and matching back reference) |
| */ |
| public String value() default "defaultReference"; |
| } |