Я конвертирую WSDL в Java с помощью CXF. Когда ключ -autoNameResolution
включен, CXF создает много файлов с одинаковым содержимым. Есть ли способ избежать этого?
Чтобы избежать вложенных статических классов, я включил <jaxb:globalBindings localScoping="toplevel">
. Как видно из WSDL, на элемент «Apple» ссылаются три раза. К сожалению, я не могу изменить WSDL. CXF создает
Apple.java, Apple2.java, Apple3.java соответственно или вылетает, если не установлен флаг -autoNameResolution
.
<xs:element name="Forest">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="99" minOccurs="0" name="Apple">
<xs:complexType>
<xs:sequence>
<xs:element name="Size" type="xsd:string" />
<xs:element name="Color" type="xsd:string" />
<xs:element name="Taste" type="xsd:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element minOccurs="0" name="TreeOne">
<xs:complexType>
<xs:sequence>
<xs:element name="Branch1" type="xsd:string">
</xs:element>
<xs:element maxOccurs="99" minOccurs="0" name="Apple">
<xs:complexType>
<xs:sequence>
<xs:element name="Size" type="xsd:string" />
<xs:element name="Color" type="xsd:string" />
<xs:element name="Taste" type="xsd:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element minOccurs="0" name="TreeTwo">
<xs:complexType>
<xs:sequence>
<xs:element name="BranchTwo" type="xsd:string">
</xs:element>
<xs:element maxOccurs="99" minOccurs="0" name="Apple">
<xs:complexType>
<xs:sequence>
<xs:element name="Size" type="xsd:string" />
<xs:element name="Color" type="xsd:string" />
<xs:element name="Taste" type="xsd:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
Есть ли способ научить wsdl2java не создавать Apple2.java и Apple3.java и ссылаться на Apple.java во всех трех случаях? С привязками я мог бы поменять имя на что-то другое, например Apple2-> Peach , Apple3-> Watermelon , но это не то, что я ищу. Может быть очевидно, что все три яблока имеют одинаковый набор полей, и на самом деле одинаковы?
Есть ли способ решить это? Может быть какой-нибудь плагин рефакторинга, который рефакторинг кода, сгенерированного cxf?