Избавьтесь от JAXBElement в классах, сгенерированных wsimport, названным от муравья

У меня есть следующая проблема: я использую wsimport задачу Ant для создания клиента веб-сервиса (для salesforce.com). Все хорошо работает, но сгенерированные классы все использование этот странный класс JAXBElement для всех свойств компонента.

Например:

public void setLastName(JAXBElement<String> value) {
    this.lastName = ((JAXBElement<String> ) value);
}

public JAXBElement<String> getCountry() {
    return country;
}

Вместо того, чтобы перенести все классы в JAXBElement я хотел бы иметь простые методы как setLastName (Представьте newLastName в виде строки). Это - то, как я называю wsimport задачу.

<wsimport debug="false" verbose="false" keep="${keep}" 
   extension="${extension}" destdir="${tmp.metro}" 
   wsdl="${licensing.wsdl}" 
   sourcedestdir="${licensingws.generated.src}"

   >

   <binding dir="${basedir}/etc" includes="${client.binding}"   
     />
    <arg value="-B-XautoNameResolution" />

  </wsimport>

Задача определяется этот путь:

Кто-либо знает то, что я должен установить так, чтобы wsimport генерировал классы путем, я хочу? Большое спасибо заранее!!!

24
задан Dan McGrath 9 February 2010 в 06:24
поделиться

2 ответа

Причина использования оберток JAXBElement в сгенерированных бобах, вероятно, заключается в том, что WSDL объявляет это поле необязательным и нулевым. Чтобы отличить "не присутствует" от "присутствует, но но ноль", тип Строка не может быть использован напрямую, так как Строка в обоих случаях будет нулевой.

Если вам не нужно проводить различие между двумя ситуациями, вы можете настроить генератор кода на использование вместо него типа Строка. Я не на 100% уверен, как это сделать с задачей муравейника, но вы, вероятно, найдете соответствующую информацию в документации к задаче муравейника.

28
ответ дан 28 November 2019 в 23:52
поделиться
4
ответ дан 28 November 2019 в 23:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: