Spécifiez @XmlJavaTypeAdapter classe par fichier de liaisons?
J'ai un 3ème partie de l'interface qui fournit les fichiers xsd qui correspond à leur API. Certains de leurs mappages sont pas tout à fait de Java, l'habitude booléen à 0 & 1 🙁
Je voudrais utiliser un fichier de liaisons pour spécifier le @XmlJavaTypeAdapter classe pour mon BooleanAdapter, mais jusqu'à présent, pas de joie.
Le fichier de liaisons:
<?xml version="1.0" encoding="UTF-8"?>
<jaxb:bindings xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc" xmlns="http://java.sun.com/xml/ns/jaxws"
jaxb:extensionBindingPrefixes="xjc" jaxb:version="2.0">
<jaxb:bindings schemaLocation="GetUserDetailsResponse.xsd" node="/xs:schema" >
<jaxb:globalBindings underscoreBinding="asWordSeparator" >
<jaxb:serializable uid="1" />
<jaxb:javaType name="java.lang.Boolean" xmlType="xs:boolean"
printMethod="mumble.bindings.BooleanAdapter.marshall"
parseMethod="mumble.bindings.BooleanAdapter.unmarshall" />
</jaxb:globalBindings>
</jaxb:bindings>
</jaxb:bindings>
Et depuis que je suis en utilisant maven pertinentes bits à partir de la POM:
<strict>false</strict>
<extension>true</extension>
<verbose>true</verbose>
<enableWrapperStyle>false</enableWrapperStyle>
<enableAsyncMapping>false</enableAsyncMapping>
J'ai basculé enableWrapperStyle et aucun changement
Ce que j'ai fini avec est un Adaptateur de type incorrect:
import javax.xml.bind.annotation.adapters.XmlAdapter;
public class Adapter1
extends XmlAdapter<String, Boolean>{
public Boolean unmarshal(String value) {
return (mumble.bindings.BooleanAdapter.unmarshall(value));
}
public String marshal(Boolean value) {
return (mumble.bindings.BooleanAdapter.marshall(value));
}
}
Est-il des liaisons fichier de magie que je peux utiliser pour se débarrasser de la production d'emballage et utilisez les BooleanAdapter directement?
Non, je l'ai déjà regardé, ce n'est pas ce que je veux. Je pourrais vivre avec Adapter1 si je pouvais le forcer convertir en int <--> boolean plutôt que string <--> boolean mais inutile couche supplémentaire de Carte en fin de compte m'irriter. Merci.
voir ceci: adventuresintechology.blogspot.ca/2012/04/.... J'ai été en mesure de mettre en œuvre exactement ce que vous demandez ici avec l'aide de ce post.
OriginalL'auteur Mike Summers | 2011-10-20
Vous devez vous connecter pour publier un commentaire.
Vous devez utiliser
<xjc:javaType>
dans votre liaison config au lieu de<jaxb:javaType>
.Par exemple:
Je comprends que je suis en répondant à une vieille question, mais je n'ai pas assez de réputation pour écrire un commentaire.
I understand I'm answering to an old question, but I don't have enough reputation to write a comment.
Vous n'êtes pas censé répondre dans les commentaires de toute façon! 🙂ne fonctionne pas: stackoverflow.com/questions/46037803/...
OriginalL'auteur mvv
C'est une super réponse tardive, je me rends compte, mais même mvv's réponse m'a laissé mal à totalement saisir ce que je faisais et où dans la structure de l'élément nouveau, ajustement, donc je voulais ajouter un peu plus de détails pour ceux qui viennent à travers cela plus tard.
Par mvv, la réponse la plus facile est de changer à l'aide de la
xjc:javaType
. Voir jaxb de personnalisation pour la documentation détaillée sur l'utilisation dexjc:javaType
.Vous aurez également besoin de changer votre adaptateur personnalisé (BooleanAdapter) pour mettre en œuvre le XmlAdapter interface.
En fin de compte, votre liaison ressemblerait plutôt à ceci:
hm.. ne fonctionne pas: stackoverflow.com/questions/46037803/...
OriginalL'auteur jsparks