JAX-WS wsgen и коллекции коллекций: wsgen сломан? - PullRequest
1 голос
/ 22 декабря 2009

Я играл с "снизу вверх" JAX-WS и столкнулся с чем-то странным при запуске wsgen.

Если у меня есть класс обслуживания, который делает что-то вроде:

@WebService
public class Foo {
public ArrayList<Bar> getBarList(String baz) { ... }
}

затем, запустив wsgen, я получаю FooService_schema1.xsd, который имеет что-то вроде этого:

<xs:complexType name="getBarListResponse">
<xs:sequence>
<xs:element name="return" type="tns:bar" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>

, что кажется разумным.

Однако, если я хочу коллекцию коллекций, такую ​​как:

public BarCollection getBarCollection(String baz) { ... }  // BarCollection is just a container for an ArrayList<Bar>

тогда генерируемая схема заканчивается такими вещами, как:

<xs:complexType name="barCollection">
  <xs:sequence/>
</xs:complexType>

<xs:complexType name="getBookCollectionsResponse">
<xs:sequence>
<xs:element name="return" type="tns:barCollection" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>

Пустая последовательность не , что я имел в виду.

Мой оригинальный подход заключался в следующем:

public ArrayList<ArrayList<Bar>> getBarLists(String baz) { ... }

но это заканчивается большой цепочкой сложных типов, которые также заканчиваются пустой последовательностью в конце:

<xs:complexType name="getBarListsResponse">
<xs:sequence>
<xs:element name="return" type="tns:arrayList" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>

<xs:complexType name="arrayList">
<xs:complexContent>
<xs:extension base="tns:abstractList">
<xs:sequence/>
</xs:extension>
</xs:complexContent>
</xs:complexType>

<xs:complexType name="abstractList" abstract="true">
<xs:complexContent>
<xs:extension base="tns:abstractCollection">
<xs:sequence/>
</xs:extension>
</xs:complexContent>
</xs:complexType>

<xs:complexType name="abstractCollection" abstract="true">
<xs:sequence/>
</xs:complexType>

Я что-то упустил или это известная дыра в wsgen? JAXB?

Andy

...