cxf-codegen добавление лишнего подчеркивания в имени члена перечисления

У меня есть следующий сгенерированный тип перечисления. У меня проблема в том, что по какой-то причине (предположительно, с заглавной буквы) в значение NCBonus вставляется подчеркивание.

Я хотел бы знать, как я могу предотвратить это при генерации перечисления.

 * 
 * <p>The following schema fragment specifies the expected content contained within this class.
 * <p>
 * <pre>
 * &lt;simpleType name="PromoType">
 *   &lt;restriction base="{http://www.w3.org/2001/XMLSchema}string">
 *     &lt;enumeration value="MEM"/>
 *     &lt;enumeration value="COU"/>
 *     &lt;enumeration value="CHA"/>
 *     &lt;enumeration value="SAD"/>
 *     &lt;enumeration value="NCBonus"/>
 *   &lt;/restriction>
 * &lt;/simpleType>
 * </pre>
 * 
 */
@XmlType(name = "PromoType")
@XmlEnum
public enum PromoType {

    MEM("MEM"),
    COU("COU"),
    CHA("CHA"),
    SAD("SAD"),
    @XmlEnumValue("NCBonus")
    NC_BONUS("NCBonus");

Я попытался с помощью опции глобальных привязок

   <jxb:globalBindings underscoreBinding="asCharInWord" xmlns:xs="http://www.w3.org/2001/XMLSchema">

который имеет нежелательные последствия для других объектов, но не отличается от типа enum.

Кроме того, я пытался использовать

<jaxb:bindings schemaLocation="../schemas/insurance_service_model.xsd" node="//xs:schema">
    <jaxb:bindings node="xs:simpleType[@name='PromoType']">
        <jaxb:typesafeEnumMember name="NCBonus" value="NCBonus"/>

все безрезультатно.

Может ли кто-нибудь, пожалуйста, посоветовать, как мне достичь этой цели, пожалуйста.

1 ответ

Решение

Ответ, который работал для меня, состоял в том, чтобы убрать привязки jaxb из файла привязок jaxws.

jaxb_bindings.xml

<jaxb:bindings xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
                xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                jaxb:version="2.0">

    <jaxb:bindings schemaLocation="../schemas/insurance_service_model.xsd">
        <jaxb:bindings node="//xsd:simpleType[@name='PromoType']">
            <jaxb:typesafeEnumClass name="PromoType">
                <jaxb:typesafeEnumMember name="NCBonus" value="NCBonus"/>
            </jaxb:typesafeEnumClass>
        </jaxb:bindings>
    </jaxb:bindings>

</jaxb:bindings>

wsdl_bindings.xml

<?xml version="1.0" encoding="UTF-8"?>

<jaxws:bindings
        xmlns:xsd="http://www.w3.org/2001/XMLSchema"
        xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
        wsdlLocation="../wsdl/insurance_service.wsdl"
        xmlns="http://java.sun.com/xml/ns/jaxws"
        xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
        xmlns:jaxws="http://java.sun.com/xml/ns/jaxws">

    <jaxws:enableWrapperStyle>false</jaxws:enableWrapperStyle>

</jaxws:bindings>

pom.xml

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.cxf</groupId>
            <artifactId>cxf-codegen-plugin</artifactId>
            <version>${cxf.codegen.version}</version>
            <executions>
                <execution>
                    <id>csg</id>
                    <phase>generate-sources</phase>
                    <configuration>
                        <wsdlOptions>
                            <wsdlOption>
                                <wsdl>${project.basedir}/src/main/resources/v2_3/wsdl/insurance_service.wsdl</wsdl>
                                <extraargs>
                                    <extraarg>-xjc-verbose</extraarg>
                                    <extraarg>-verbose</extraarg>
                                </extraargs>
                                <bindingFiles>
                                    <bindingFile>${project.basedir}/src/main/resources/common_binding.xml</bindingFile>
                                    <bindingFile>${project.basedir}/src/main/resources/v2_3/bindings/wsdl_binding.xml</bindingFile>
                                    <bindingFile>${project.basedir}/src/main/resources/v2_3/bindings/jaxb_bindings.xml</bindingFile>
                                </bindingFiles>
                            </wsdlOption>
                        </wsdlOptions>
                    </configuration>
                    <goals>
                        <goal>wsdl2java</goal>
                    </goals>
                </execution>

            </executions>
Другие вопросы по тегам