Red Hat Training
A Red Hat training course is available for Red Hat JBoss Enterprise Application Platform
14.13. RESTEasy JAXB
14.13.1. Créer un décorateur JAXB
Résumé
Les fournisseurs JAXB de RESTEasy ont une manière enfichable de décorer des instances Marshaller ou Unmarshaller. Il y a une annotation qui est créée soit par un Marshaller, soit par un Unmarshaller. Cette section couvre toutes les étapes pour créer un décorateur JAXB dans RESTEasy.
Procédure 14.8. Créer un décorateur JAXB dans RESTEasy
Créer la classe de processeur
- Créer une classe qui implémente DecoratorProcessor<Target, Annotation>. La cible sera soit la classe de Marshaller ou Unmarshaller JAXB. L'annotation est créée dans la seconde étape.
- Annoter la classe par @DecorateTypes, et déclarer les types MIME que le décorateur doit décorer.
- Définir les propriétés ou les valeurs au sein de la fonction
decorate
.
Exemple 14.22. Exemple de classe de processeur
import org.jboss.resteasy.core.interception.DecoratorProcessor; import org.jboss.resteasy.annotations.DecorateTypes; import javax.xml.bind.Marshaller; import javax.xml.bind.PropertyException; import javax.ws.rs.core.MediaType; import javax.ws.rs.Produces; import java.lang.annotation.Annotation; @DecorateTypes({"text/*+xml", "application/*+xml"}) public class PrettyProcessor implements DecoratorProcessor<Marshaller, Pretty> { public Marshaller decorate(Marshaller target, Pretty annotation, Class type, Annotation[] annotations, MediaType mediaType) { target.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE); } }
Créer une annotation
- Créer une interface personnalisée annotée par @Decorator.
- Déclarer le processeur ou la cible de l'annotation @Decorator. Le processeur est créé dans la première étape. La cible sera soit la classe Marshaller JAXB ou la classe Unmarshaller JAXB.
Exemple 14.23. Exemple d'annotation
import org.jboss.resteasy.annotations.Decorator; @Target({ElementType.TYPE, ElementType.METHOD, ElementType.PARAMETER, ElementType.FIELD}) @Retention(RetentionPolicy.RUNTIME) @Decorator(processor = PrettyProcessor.class, target = Marshaller.class) public @interface Pretty {}
- Ajouter l'annotation créée dans une fonction dans la seconde étape de façon à ce que l'entrée ou la sortie soit décorée quand elle sera mise en ordre.
Résultat
Le décorateur JAXB a été créé et sera appliqué au sein du service web JAX-RS.