Spring RestTemplate игнорирует package-info.java - PullRequest
0 голосов
/ 24 мая 2018

я сгенерировал некоторые классы из xsd с помощью команды 'xjc'.

Проблема, с которой я столкнулся, заключается в том, что в сгенерированном пакете есть файл информации о пакете с только аннотацией @XmlSchema напакет:

например,

@javax.xml.bind.annotation.XmlSchema(namespace = "https://plazaapi.bol.com/services/xsd/v2/plazaapi.xsd", elementFormDefault = XmlNsForm.QUALIFIED)
package com.xxx.bolapp.dto;

У меня возникли две проблемы: во-первых, маршаллер всегда выдает исключение при демаршаллинге:

exception is org.springframework.http.converter.HttpMessageNotReadableException: Could not unmarshal to [class nl.minc.bolapp.dto.Orders]: unexpected element (uri:"https://plazaapi.bol.com/services/xsd/v2/plazaapi.xsd", local:"Orders"). Expected elements are <{}Orders>; nested exception is javax.xml.bind.UnmarshalException: unexpected element (uri:"https://plazaapi.bol.com/services/xsd/v2/plazaapi.xsd", local:"Orders"). Expected elements are <{}Orders>

Я могу удалить это при настройке пространства именнепосредственно на @XmlRoot. Как только я это сделаю, начальные заказы будут правильно проанализированы.Тогда проблема, с которой я сталкиваюсь, заключается в том, что дочерние элементы имеют нулевое значение, где должны быть данные.

В настоящее время проблема главным образом в том, что дочерний элемент является нулевым, но я подозреваю, что он как-то связан с пространством имен.

РЕДАКТИРОВАТЬ 1 Проблема с нулевыми дочерними элементами исчезает при публикации пространства имен в каждом элементе XmlEle, так что это определенно прямая причина.

Я публикую сгенерированный класс и xml:

Класс:

package com.xxx.bolapp.dto;

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
    "order"
})
@XmlRootElement(name = "Orders")
public class Orders
    implements Serializable
{

    private final static long serialVersionUID = 1L;
    @XmlElement(name = "Order")
    protected List<Orders.Order> order;
....
    @XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
    "orderId",
    "dateTimeCustomer",
    "dateTimeDropShipper",
    "customerDetails",
    "orderItems"
})
public static class Order
    implements Serializable
{
....
}
}

XML:

<?xml version="1.0" encoding="UTF-8"?>
<Orders xmlns="https://plazaapi.bol.com/services/xsd/v2/plazaapi.xsd">
<Order>
 <OrderId>4123456789</OrderId>
 <DateTimeCustomer>2017-02-09T12:39:48.000+01:00</DateTimeCustomer>
 <DateTimeDropShipper>2017-02-09T12:39:48.000+01:00</DateTimeDropShipper>
 <CustomerDetails>
   <ShipmentDetails>
     <SalutationCode>02</SalutationCode>
     <Firstname>Billie</Firstname>
     <Surname>Van der Bol.com</Surname>
     <Streetname>Dorpstraat</Streetname>
     <Housenumber>1</Housenumber>
     <HousenumberExtended>B</HousenumberExtended>
     <ZipCode>1111 ZZ</ZipCode>
     <City>Utrecht</City>
     <CountryCode>NL</CountryCode>
     <Email>2awq74td4z4mizmx6dcdbsdbdcna@verkopen.bol.com</Email>
     <Company>bol.com</Company>
   </ShipmentDetails>
   <BillingDetails>
     <SalutationCode>02</SalutationCode>
     <Firstname>Billie</Firstname>
     <Surname>van der Bol.com</Surname>
     <Streetname>Dorpstraat</Streetname>
     <Housenumber>1</Housenumber>
     <HousenumberExtended>B</HousenumberExtended>
     <ZipCode>1111 ZZ</ZipCode>
     <City>Utrecht</City>
     <CountryCode>NL</CountryCode>
     <Email>2awq74td4z4mizmx6dcdbsdbdcna@verkopen.bol.com</Email>
     <Company>bol.com</Company>
   </BillingDetails>
 </CustomerDetails>
 <OrderItems>
   <OrderItem>
     <OrderItemId>2012345678</OrderItemId>
     <EAN>5412810182312</EAN>
     <OfferReference>BOLCOM00123</OfferReference>
     <Title>Basicxl - Rijdende Wekker - Kunststof - 16x11cm - Zwart</Title>
     <Quantity>1</Quantity>
     <OfferPrice>27.95</OfferPrice>
     <TransactionFee>5.18</TransactionFee>
     <LatestDeliveryDate>2017-02-10+01:00</LatestDeliveryDate>
     <OfferCondition>NEW</OfferCondition>
     <CancelRequest>false</CancelRequest>
     <FulfilmentMethod>FBR</FulfilmentMethod>
   </OrderItem>
 </OrderItems>
 </Order>
</Orders>
...