Insérer des annotations personnalisées en java 'champ' à l'aide d'annoter le plugin + JAXB (sur xsd -> java)
Cas d'utilisation:
Veux insérer des annotations personnalisées à champs dans la classe java généré par JAXB
Problème:
À l'aide d'Annoter le plugin + JAXB [1], je suis en mesure de réussir personnalisés insérer des annotations, mais ils sont insérés à la méthode de lecture plutôt que sur le terrain. Morphia (mongo DB) annotations (que je veux réellement à insérer) mais peut annoter uniquement java champs [2].
Mon test xsd:
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" jaxb:version="2.1"
xmlns:annox="http://annox.dev.java.net" jaxb:extensionBindingPrefixes="annox">
<xsd:element name="hoo" type="External" />
<xsd:complexType name="External">
<xsd:sequence>
<xsd:element name="bar" type="xsd:string" />
<xsd:element name="hoobar" type="xsd:string" />
</xsd:sequence>
</xsd:complexType>
</xsd:schema>
Mon test de liaison xjb:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<jaxb:bindings
version="2.1"
xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:annox="http://annox.dev.java.net" jaxb:extensionBindingPrefixes="annox">
<jaxb:bindings schemaLocation="external.xsd" node="/xs:schema">
<jaxb:bindings node="xs:complexType[@name='External']/xs:sequence/xs:element[@name='bar']">
<annox:annotate>
<annox:annotate
annox:class="java.lang.SuppressWarnings"
impl="com.acme.foo.MyFieldBridge">
</annox:annotate>
</annox:annotate>
</jaxb:bindings>
Mon java généré extrait de:
@XmlElement(required = true)
protected String bar;
@XmlElement(required = true)
protected String hoobar;
/**
* Gets the value of the bar property.
*
* @return
* possible object is
* {@link String }
*
*/
@SuppressWarnings({
})
public String getBar() {
return bar;
}
Comme vous pouvez le voir, je veux annoter "bar" sur le terrain. Veuillez informer. En demander plus si nécessaire.
[1] Générer @Indexé annotation à l'aide de Jaxb ou HyperJaxb
[2] Pour des exemples de voir l'annotation @Id de Morphia
Je ne pouvais pas poster cette réponse que j'ai <100 points de réputation. Merci pour la recherche dans ce de toute façon.
Comment puis-je insérer des commentaires dans xsd lors de générer le schéma ?
sa fait un long moment maintenant, et je ne me souviens pas. vous êtes mieux de poster ce que nouvelle question/commentaire lexicore (qui a aussi donné la réponse correcte) ci-dessous
OriginalL'auteur Hari | 2012-03-21
Vous devez vous connecter pour publier un commentaire.
Ok, vous avez compris vous-même. Utilisation
<annox:annotate target="field">
pour annoter un champ. D'autres options sont les suivantes:Voir le la documentation.
OriginalL'auteur lexicore
Juste une chose: vous avez besoin de mettre la
field
attribut à l'extérieur<annox:annotate>
tag:De le mettre à la balise
annox:class
attribut réside peut ne pas fonctionner. Qui s'est vraiment passé pour moi.OriginalL'auteur kavai77