2013-10-18 14 views
7

Chạy wsdl2java từ CXF 2.7.5 cho cái gì đó nhưCXF WSDL2Java không tạo ra Javadoc cho các thành viên

<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" /> 

sản xuất Javadoc cho lớp BaseTaxParametersEnhanced nhưng không cho municipality thành viên.

Điều này xảy ra không mong muốn và tôi không thấy cờ được đề cập trong tài liệu để bật/tắt tính năng này?

Trả lời

9

Rất tiếc, có rất ít việc cần làm để dễ dàng sửa chữa. wsdl2java sử dụng xjc dưới mui xe để tạo lớp. Có một vấn đề cũ được nêu ra cho điều đó (JAXB-172). Bạn có thể bỏ phiếu cho nó. Không có plugin xjc nào sửa lỗi đó. Thông tin thêm về vấn đề này đã được đề cập trong How to make generated classes contain Javadoc from XML Schema documentation.

Vì nó được mô tả ở đó nếu bạn có quyền kiểm soát tệp WSDL/XSD, bạn có thể thay thế tài liệu xsd: bằng liên kết tùy chỉnh được nhúng (jxb: javadoc). Để đạt được điều đó bạn nên khai báo không gian tên jxb, một cái gì đó như:

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

và thay đổi khai báo kiểu của bạn:

<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> 

Vấn đề với giải pháp này là những ý kiến ​​sẽ không được công nhận bởi WSDL khác/Công cụ XSD.

Nếu bạn không có quyền kiểm soát WSDL/XSD, bạn có thể thực hiện tương tự bằng cách sử dụng các kết buộc JAXB bên ngoài, nhưng có vẻ như quá nhiều chi phí.

Tóm tắt, vui lòng upvote đề cập đến vấn đề nếu bạn có thể. Có lẽ một ngày nào đó ai đó quyết định rằng đó là thời gian cao để thực hiện tính năng này.

EDIT

Như tôi đã coi nó lạ mà người ta không thể sử dụng XJC plugin để thực hiện như một nhiệm vụ (một trong những ý kiến ​​từ câu hỏi đề cập nói rằng) tôi quyết định cố gắng để viết một plugin như vậy.

Kết quả có thể được tìm thấy ở đây: https://github.com/destin/xjc-javadoc-plugin

Hiện nay nó bổ sung thêm ý kiến ​​chỉ để lĩnh vực (không thu khí hoặc setters) các loại phức tạp. Tôi sẽ thực sự biết ơn đối với bất kỳ đề xuất cải tiến nào. Khi tôi xem xét nó ổn định, tôi sẽ cố gắng đóng góp nó cho dự án CXF để bất cứ ai cũng có thể dễ dàng sử dụng nó.

+0

Tuyệt vời! Ước gì tôi có thể làm nhiều hơn chấp nhận & upvote. Cảm ơn nhiều. –

+1

Đẹp !! Cảm ơn nhiều. (Tôi là phóng viên ban đầu của JAXB-172, cách đây 7.5 năm!) – vorburger

+0

@ MarcelStör cảm ơn, bạn có thể nhờ bạn bè upvote JAXB-172;) –

Các vấn đề liên quan