13.10. Annotations basées chaîne
13.10.1. Conversion des annotations basées @*Param en objects Copier lienLien copié sur presse-papiers!
Copier lienLien copié sur presse-papiers!
Les annotations
@*Param
JAX-RS,@PathParam et @FormParam incluses, sont représentées par des chaînes dans une requête HTTP brut. Ces types de paramètres injectés peuvent être convertis en objets si ces objets ont une méthode valueOf(String) statique ou un constructeur qui prend un paramètre String.
RESTEasy fournit deux interfaces
@Provider
commerciales pour effectuer cette conversion pour les classes qui n'ont ni de méthode valueOf(String)
statique, ni de constructeur de string.
Exemple 13.11. StringConverter
L'interface StringConverter est mise en place afin de fournir un marshalling de chaîne personnalisée. Elle est inscrite dans resteasy.providers context-param du fichier web.xml. Elle peut également être enregistrée manuellement en appelant la méthode ResteasyProviderFactory.addStringConverter().
L'exemple suivant est un simple exemple de StringConverter.
Exemple 13.12. StringParameterUnmarshaller
L'interface
StringParameterUnmarshaller
est sensible aux annotations placées sur le paramètre ou le champ sur lesquels vous injectez. Il est créé par injecteur. La méthode setAnnotations() est appelée par resteasy pour initialiser l'unmarshaller.
Cette interface peut être ajoutée en créant et en enregistrant un fournisseur qui implémente l'interface. Il peut être également lié à une meta-annotations appelée
org.jboss.resteasy.annotations.StringsParameterUnmarshallerBinder
.
L'exemple ci-dessous formate un
java.util.Date
basé @PathParam.
Définit une nouvelle annotation appelée @DateFormat. L'annotation est annotée avec la meta-annotation StringParameterUnmarshallerBinder avec une référence aux classes DateFormater.
La méthode Service.get() possède un paramètre @PathParam qui est aussi annoté avec @DateFormat. L'application @DateFormat déclenche la liaison du DateFormatter. Le DateFormatter sera désormais exécuté pour supprimer le marshalling du paramètre de chemin d'accès dans le paramètre date de la méthode get().