Annotation Type Swap
ObjectSwap
and Surrogate
classes with POJOs and bean properties.
Can be used in the following locations:
- Classes.
- Bean getters/setters/fields.
@Rest -annotated classes and@RestOp -annotated methods when anon()
value is specified.
See Also:
-
Optional Element Summary
Modifier and TypeOptional ElementDescriptionClass<?>
TheObjectSwap
andSurrogate
class.String[]
Identifies the media types that this swap is applicable for.String[]
Dynamically apply this annotation to the specified classes/methods/fields.Class<?>[]
Dynamically apply this annotation to the specified classes.Identifies a template string along with this swap.Class<?>
TheObjectSwap
andSurrogate
class.
-
Element Details
-
impl
- Returns:
- The annotation value.
- Default:
- void.class
-
mediaTypes
Identifies the media types that this swap is applicable for.In the following example, the swap is only invoked by the JSON serializer:
@Swap (impl=ToStringSwap.class , mediaTypes="*/json" )public class MyBean { ... }public class ToStringSwapextends ObjectSwap<Object,String> {public String swap(BeanSessionsession , Objectvalue )throws Exception {return value .toString(); } }See Also:
- Returns:
- The annotation value.
- Default:
- {}
-
on
Dynamically apply this annotation to the specified classes/methods/fields.Used in conjunction with
BeanContext.Builder.applyAnnotations(Class...)
to dynamically apply an annotation to an existing class. It is ignored when the annotation is applied directly to classes.Valid patterns:
- Classes:
- Fully qualified:
"com.foo.MyClass"
- Fully qualified inner class:
"com.foo.MyClass$Inner1$Inner2"
- Simple:
"MyClass"
- Simple inner:
"MyClass$Inner1$Inner2" "Inner1$Inner2" "Inner2"
- Fully qualified:
- Methods:
- Fully qualified with args:
"com.foo.MyClass.myMethod(String,int)" "com.foo.MyClass.myMethod(java.lang.String,int)" "com.foo.MyClass.myMethod()"
- Fully qualified:
"com.foo.MyClass.myMethod"
- Simple with args:
"MyClass.myMethod(String,int)" "MyClass.myMethod(java.lang.String,int)" "MyClass.myMethod()"
- Simple:
"MyClass.myMethod"
- Simple inner class:
"MyClass$Inner1$Inner2.myMethod" "Inner1$Inner2.myMethod" "Inner2.myMethod"
- Fully qualified with args:
- Fields:
- Fully qualified:
"com.foo.MyClass.myField"
- Simple:
"MyClass.myField"
- Simple inner class:
"MyClass$Inner1$Inner2.myField" "Inner1$Inner2.myField" "Inner2.myField"
- Fully qualified:
- A comma-delimited list of anything on this list.
See Also:
- Returns:
- The annotation value.
- Default:
- {}
- Classes:
-
onClass
Dynamically apply this annotation to the specified classes.Identical to
on()
except allows you to specify class objects instead of a strings.See Also:
- Returns:
- The annotation value.
- Default:
- {}
-
template
Identifies a template string along with this swap.Template strings are arbitrary strings associated with swaps that help provide additional context information for the swap class. They're called 'templates' because their primary purpose is for providing template names, such as Apache FreeMarker template names.
The following is an example of a templated swap class used to serialize POJOs to HTML using FreeMarker:
// Our templated swap class. public class FreeMarkerSwapextends ObjectSwap<Object,Reader> {public MediaType[] forMediaTypes() {return MediaType.forStrings ("*/html" ); }public Reader swap(BeanSessionsession , Objectvalue , Stringtemplate )throws Exception {return getFreeMarkerReader (template ,value );// Some method that creates raw HTML. } }@Swap (impl=FreeMarkerSwap.class , template="MyPojo.div.ftl" )public class MyPojo {}See Also:
- Returns:
- The annotation value.
- Default:
- ""
-
value
- Returns:
- The annotation value.
- Default:
- void.class
-