2015-10-12 1 views
1

Существует некоторая документация на old site, но неясно, как применить конфигурацию при использовании файла привязок.Как исключить поле, используя файл привязки при использовании основ jaxb2 для генерации метода toString

Вот моя конфигурация maven, которую я использую для добавления toString, equals и т. Д. К моим сгенерированным объектам JAXB.

<plugin> 
    <groupId>org.jvnet.jaxb2.maven2</groupId> 
    <artifactId>maven-jaxb2-plugin</artifactId> 
    <version>0.12.3</version> 
    <executions> 
     <execution> 
     <goals> 
      <goal>generate</goal> 
     </goals> 
     </execution> 
    </executions> 
    <configuration> 
     <schemaIncludes> 
     <include>*.xsd</include> 
     </schemaIncludes> 
     <args> 
     <arg>-Xfluent-api</arg> 
     <arg>-XautoNameResolution</arg> 
     <arg>-XtoString</arg> 
     <arg>-Xequals</arg> 
     <arg>-XhashCode</arg> 
     <arg>-Xcopyable</arg> 
     </args> 
     <plugins> 
     <plugin> 
      <groupId>org.jvnet.jaxb2_commons</groupId> 
      <artifactId>jaxb2-fluent-api</artifactId> 
      <version>3.0</version> 
     </plugin> 
     <plugin> 
      <groupId>org.jvnet.jaxb2_commons</groupId> 
      <artifactId>jaxb2-basics</artifactId> 
      <version>0.9.4</version> 
     </plugin> 
     </plugins> 
    </configuration> 
    </plugin> 

ответ

2

Добавить файл bindings.xjb в src/main/resources, который связывается с вашей XSD, выбирает соответствующий элемент, а затем добавить toString:ignored аннотации.

Вы также можете использовать hashCode:ignore или игнорировать от всех плагинов basics:ignore

<jaxb:bindings jaxb:version="1.0" 
       xmlns:xs="http://www.w3.org/2001/XMLSchema" 
       xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" 
       xmlns:xjc= "http://java.sun.com/xml/ns/jaxb/xjc" 
       xmlns:toString="http://jaxb2-commons.dev.java.net/basic/toString" 
       xmlns:basic="http://jaxb2-commons.dev.java.net/basic" 
       jaxb:extensionBindingPrefixes="basic copyable equals hashCode mergeable toString"> 

    <jaxb:bindings schemaLocation="PasswordPolicy.xsd"> 
    <jaxb:bindings node="xs:complexType[@name='ppValidatePolicyRequestType']//xs:element[@name='password']"> 
     <toString:ignored/> 
    </jaxb:bindings> 
    </jaxb:bindings> 

    <jaxb:bindings schemaLocation="UserManagement.xsd"> 
    <jaxb:bindings node="xs:complexType[@name='umCreateUserRequestType']//xs:element[@name='password']"> 
     <toString:ignored/> 
    </jaxb:bindings> 
    <jaxb:bindings node="xs:complexType[@name='umUpdateUserRequestType']//xs:element[@name='password']"> 
     <toString:ignored/> 
    </jaxb:bindings> 
    <jaxb:bindings node="xs:complexType[@name='umResetUserPasswordRequestType']//xs:element[@name='password']"> 
     <toString:ignored/> 
    </jaxb:bindings> 
    <jaxb:bindings node="xs:complexType[@name='umCreateUserRequestType']//xs:element[@name='secretAnswer']"> 
     <toString:ignored/> 
    </jaxb:bindings> 
    <jaxb:bindings node="xs:complexType[@name='umUpdateUserRequestType']//xs:element[@name='secretAnswer']"> 
     <toString:ignored/> 
    </jaxb:bindings> 
    </jaxb:bindings> 

</jaxb:bindings> 

Если вы игнорируете из ToString, в созданном классе вы должны увидеть применимое поле удаляется из метода appendFields(...)

+0

Ничего себе, спасибо вам за вопросы и ответы. Пожалуйста, рассмотрите возможность расширения [JAXB2-Basics Wiki] (https://github.com/highsource/jaxb2-basics/wiki). – lexicore

Смежные вопросы