Issue with Java to XML marshalling



I have a generic response class which is used for any return type in spring mvc web services. Based on the need i set objects to generic response. I am expecting the client to receive the response as per the below structure.


But there is always exceptions while unmarshalling the Response class in Spring MVC respose. I am getting below error:


org.springframework.integration.transformer.MessageTransformationException: org.springframework.integration.MessageHandlingException: org.w3c.dom.DOMException: INVALID_CHARACTER_ERR: An invalid or illegal XML character is specified.


Please see the Java classes below. Could someone guide me where is the issue. Whether the issue is due to multiple XMLRootElement in every class?



Response.java

@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "Response", propOrder = { "value", "businessMessages" })
public class Response<T> implements Serializable {

/**
* Generated serial version UID
*/
private static final long serialVersionUID = -2079538531780930420L;

/**
* The value.
*/
@XmlElement(name = "Value")
private T value;

/**
* The business messages.
*/
@XmlElementWrapper(name = "BusinessMessages")
@XmlElement(name = "BusinessMessage")
private List<BusinessMessage> businessMessages;


public List<BusinessMessage> getBusinessMessages() {
return this.businessMessages;
}

public T getValue() {
return this.value;
}


public void setBusinessMessages(List<BusinessMessage> arg0) {
this.businessMessages = arg0;
}

public void setValue(T arg0) {
this.value = arg0;

}
}

BusinessMessage.java

@XmlRootElement
@XmlType(name = "BusinessMessage", propOrder = {"mibCode", "parameters", "severity"})
@XmlAccessorType(XmlAccessType.FIELD)
public class BusinessMessage implements Serializable, Cloneable {
private static final long serialVersionUID = 1L;

@XmlElement(name = "MibCode")
private String mibCode;

@XmlElement(name = "Severity")
private BusinessMessageServerityEnum severity;

@XmlElementWrapper(name = "Parameters")
@XmlElement(name = "Parameter")
private List<String> parameters;

// getter and setter ommited
}


Response class which is set in the response:



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

/**
* Serial version identifier generated
*/
private static final long serialVersionUID = -3109695678881152603L;

@XmlElement(name = "MessageId", required = true)
protected String messageId;
// getter and setter ommited
}

Tiada ulasan:

Catat Ulasan