2013-10-18 8 views
7

Lauf wsdl2java von CXF 2.7.5 für so etwas wieCXF WSDL2Java nicht Javadoc Erzeugung für Mitglieder

<xsd:complexType name="baseTaxParametersEnhanced"> 
    <xsd:annotation> 
    <xsd:documentation> 
     Some type comment. 
    </xsd:documentation> 
    </xsd:annotation> 
    <xsd:sequence> 
    <xsd:element name="municipality" type="xsd:string"> 
     <xsd:annotation> 
     <xsd:documentation> 
      Some member comment. 
     </xsd:documentation> 
     </xsd:annotation> 
    </xsd:element> 
    <xsd:element name="zip" type="xsd:string" /> 

produziert Javadoc für die BaseTaxParametersEnhanced Klasse, aber nicht für das municipality Mitglied.

Das kommt unerwartet und ich eine Flagge erwähnt in der Dokumentation nicht diese Anzeige ein-/ausschalten?

Antwort

9

Leider gibt es wenig, was leicht getan werden kann, um es zu beheben. wsdl2java verwendet xjc unter der Haube, um Klassen zu generieren. Dafür gibt es ein altes Problem (JAXB-172). Sie können dafür stimmen. Es gibt kein xjc-Plugin, das das behebt. Mehr zu diesem Thema wurde in How to make generated classes contain Javadoc from XML Schema documentation erwähnt.

Wie es dort beschrieben, wenn Sie die Kontrolle über WSDL/XSD-Dateien haben, können Sie xsd ersetzen: Dokumentation mit eingebetteten benutzerdefinierten Bindung (JXB: javadoc). Um dies zu erreichen, sollten Sie JXB Namespace, so etwas wie erklären:

<xsd:schema ... xmlns:jxb="http://java.sun.com/xml/ns/jaxb"> 

und ändern Sie Ihre Typdeklaration:

<xsd:complexType name="baseTaxParametersEnhanced"> 
    <xsd:annotation> 
     <xsd:appinfo> 
      <jxb:class> 
       <jxb:javadoc>Some type comment.</jxb:javadoc> 
      </jxb:class> 
     </xsd:appinfo> 
    </xsd:annotation> 
    <xsd:sequence> 
     <xsd:element name="municipality" type="xsd:string"> 
      <xsd:annotation> 
       <xsd:appinfo> 
        <jxb:property> 
         <jxb:javadoc>Some member comment.</jxb:javadoc> 
        </jxb:property> 
       </xsd:appinfo> 
      </xsd:annotation> 
     </xsd:element> 
     <xsd:element name="zip" type="xsd:string" /> 
    </xsd:sequence> 
</xsd:complexType> 

Das Problem bei dieser Lösung ist, dass diese Kommentare nicht durch andere WSDL erkannt werden/XSD-Werkzeuge.

Wenn Sie keine Kontrolle über WSDL/XSD haben, können Sie das gleiche mit externen JAXB Bindungen tun, aber es scheint zu viel Aufwand.

Zusammenfassend bitte upvote Ausgabe erwähnt, wenn Sie können. Vielleicht eines Tages entscheidet jemand, dass es höchste Zeit ist, das Feature zu implementieren.

EDIT

Wie ich es als seltsam, dass man nicht XJC Plugin eine solche Aufgabe ausführen können (einer der Kommentare aus erwähnten Frage erklärt, dass) ich ein solches Plugin zu schreiben, um zu versuchen beschlossen.

Das Ergebnis ist hier zu finden: https://github.com/destin/xjc-javadoc-plugin

Derzeit fügt es nur Kommentare zu den Feldern (nicht Getter oder Setter) von komplexen Typen. Ich wäre wirklich dankbar für Verbesserungsvorschläge. Wenn ich es für stabil genug halte, werde ich versuchen, es in das CXF-Projekt einzubringen, so dass jeder es leicht benutzen kann.

+0

Wunderbar! Ich wünschte, ich könnte mehr tun als akzeptieren & upvote. Vielen Dank. –

+1

Schön !! Vielen Dank. (Ich bin der Original-Reporter von JAXB-172, vor 7,5 Jahren!) – vorburger

+0

@ MarcelStör Danke, du kannst Freunde bitten, JAXB-172 zu updaten;) –

Verwandte Themen