2015-01-22 4 views
0

У меня есть .wsdl-файлы и с помощью wsimport Я генерирую классы для использования веб-сервисов.Создать метод toString с ant

Проблема в том, что мне нужно добавить метод toString к сгенерированным классам. Я видел, что это возможно в xjc, но не может найти способ сделать это в wsimport.

Вы знаете, как подойти к этому?

На данный момент функция выглядит так

<basename property="basename.file" file="${file}" /> 
    <mkdir dir="/tmp" /> 
    <exec executable="wsimport"> 
     <arg value="-catalog" /> 
     <arg value="jax-ws-catalog.xml" /> 
     <arg value="-s" /> 
     <arg value="${src.generated}" /> 
     <arg value="-keep" /> 
     <arg value="-d" /> 
     <arg value="/temp" /> 
     <arg value="-Xnocompile" /> 
     <arg value="file://mock_${basename.file}" /> 
    </exec> 

ответ

0

согласно link

CXF XJC ToString Плагин предоставляет и XJC плагин, который обновляет сгенерированные бобы для реализации методов ToString для переопределения объекта по умолчанию .toString. Он использует класс Apache Commons Lang ToStringBuilder для построения String, поэтому commons-lang.jar должен быть доступен в пути к классам.

Добавить аргумент -Xts

0

Отказ от ответственности: Я являюсь автором JAXB2-Basics сила пакета плагинов XJC.

Для этого можно использовать ToString от JAXB2-Basics. Он использует «стратегический» подход, подобный commons-lang, но генерирует свободный от отражения код - это означает, что сгенерированные методы toString() будут довольно быстрыми.

Вы получите генерироваться что-то вроде:

public String toString() { 
    final ToStringStrategy strategy = JAXBToStringStrategy.INSTANCE; 
    final StringBuilder buffer = new StringBuilder(); 
    append(null, buffer, strategy); 
    return buffer.toString(); 
} 

public StringBuilder append(ObjectLocator locator, StringBuilder buffer, ToStringStrategy strategy) { 
    strategy.appendStart(locator, this, buffer); 
    appendFields(locator, buffer, strategy); 
    strategy.appendEnd(locator, this, buffer); 
    return buffer; 
} 

public StringBuilder appendFields(ObjectLocator locator, StringBuilder buffer, ToStringStrategy strategy) { 
    { 
     USAddress theShipTo; 
     theShipTo = this.getShipTo(); 
     strategy.appendField(locator, this, "shipTo", buffer, theShipTo); 
    } 
    { 
     USAddress theBillTo; 
     theBillTo = this.getBillTo(); 
     strategy.appendField(locator, this, "billTo", buffer, theBillTo); 
    } 
    // ... 
    return buffer; 
} 

Ant Использования более или ль следующим образа:

<target name="generate-sources"> 
    <taskdef name="xjc" classname="org.jvnet.jaxb2_commons.xjc.XJC2Task"> 
     <!-- XJC2 Task classpath --> 
     <classpath> 
      <fileset dir="${basedir}/lib"> 
       <include name="activation-*.jar"/> 
       <include name="jaxb-api-*.jar"/> 
       <include name="jaxb-impl-*.jar"/> 
       <include name="jaxb-runtime-*.jar"/> 
       <include name="jaxb-core-*.jar"/> 
       <include name="jsr173_api-*.jar"/> 
       <include name="stax-api-*.jar"/> 

       <include name="jaxb-xjc-*.jar"/> 
       <include name="jaxb2-basics-ant-*.jar"/> 

       <include name="slf4j-*.jar"/> 
       <include name="jcl-over-slf4j-*.jar"/> 
      </fileset> 
     </classpath> 
    </taskdef> 
    <mkdir dir="${basedir}/target/generated-sources/xjc"/> 
    <xjc destdir="${basedir}/target/generated-sources/xjc" extension="true"> 
     <arg line=" 
      -Xequals 
      -XhashCode 
      -Xinheritance 
      -XtoString 
      -Xcopyable 
      -XenumValue"/> 
     <binding dir="${basedir}/src/main/resources"> 
      <include name="**/*.xjb"/> 
     </binding> 
     <schema dir="${basedir}/src/main/resources"> 
      <include name="**/*.xsd"/> 
     </schema> 
     <!-- Plugins --> 
     <classpath> 
      <fileset dir="${basedir}/lib"> 
       <include name="jaxb2-basics-plugins-*.jar"/> 
      </fileset> 
     </classpath> 
    </xjc> 
</target> 

distribution есть готовый к запуску Ant образца (см jaxb2-basics-sample-basic-<VERSION>-ant-src.zip) ,