Генерируемый объект из плагина wsdl через jaxb
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "WebAuthenticationCredential", propOrder = {
"key",
"password"
})
public class WebAuthenticationCredential {
@XmlElement(name = "Key", required = true)
protected String key;
@XmlElement(name = "Password", required = true)
protected String password;
Метод:
public RateReply getRates(
Request sRequest) {
try {
ObjectFactory objectFactory = new ObjectFactory();
JAXBElement<WebAuthenticationCredential> soapRateRequest =
objectFactory.createRateRequest(sRequest);
XmlMapper xmlMapper = new XmlMapper();
String xmlContent = xmlMapper.writeValueAsString(soapRateRequest);
logger.info(xmlContent); // check below the response
Reply rReply = (Reply) JAXBIntrospector
.getValue(WebServiceTemplate.marshalSendAndReceive(serviceUri, soapRateRequest));
handleErrors(rateReply);
return rateReply;
} catch (SoapFaultClientException e) {
logger.error("Caught exception rates", e);
throw new Exception("Failed calling service ", null);
}
}
метод createRequest из ObjectFactory класс, сгенерированный JAXB:
/**
* Create an instance of {@link JAXBElement }{@code <}{@link RateRequest }{@code >}}
*
*/
@XmlElementDecl(namespace = "http://fedex.com/ws/rate/v14", name = "PreAuthorizedRateRequest")
public JAXBElement<RateRequest> createPreAuthorizedRateRequest(RateRequest value) {
return new JAXBElement<RateRequest>(_PreAuthorizedRateRequest_QNAME, RateRequest.class, null, value);
информация регистратора для xmlContent (напечатанного с элементами чехлов для верблюдов):
<JAXBElement>
<name>PreRequest</name>
<declaredType>Request</declaredType>
<scope>javax.xml.bind.JAXBElement$GlobalScope</scope>
<value>
<webAuthenticationDetail>
<key>test</key>
<password>password</password>
</webAuthenticationDetail>
</value>
</JAXBElement>
Ожидаемый результат: все элементы внутри должны быть pascal case ( W ebAuthenticationDetail, K ey, P assword), возможно ли это с JAXB ??
<JAXBElement>
<name>PreRequest</name>
<declaredType>Request</declaredType>
<scope>javax.xml.bind.JAXBElement$GlobalScope</scope>
<value>
<WebAuthenticationDetail>
<Key>test</Key>
<Password>password</Password>
</WebAuthenticationDetail>
</value>
</JAXBElement>