Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/skltp/patches-mule-331-fix-cdata-mule-8941
⛔️ DEPRECATED ⛔️
https://github.com/skltp/patches-mule-331-fix-cdata-mule-8941
deprecated java mule patch
Last synced: 7 days ago
JSON representation
⛔️ DEPRECATED ⛔️
- Host: GitHub
- URL: https://github.com/skltp/patches-mule-331-fix-cdata-mule-8941
- Owner: skltp
- Created: 2014-10-17T13:40:28.000Z (about 10 years ago)
- Default Branch: master
- Last Pushed: 2014-10-19T13:57:09.000Z (about 10 years ago)
- Last Synced: 2024-03-25T22:14:18.151Z (8 months ago)
- Topics: deprecated, java, mule, patch
- Language: Java
- Homepage:
- Size: 145 KB
- Stars: 0
- Watchers: 11
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.txt
Awesome Lists containing this project
README
MuleSoft casenr: 00008941
1, In the case when the request contains CData elements there is an error indicating problems in ReversibleXMLStreamReader.
2, In the case when the request contains CData elements, the CData elements are not copied using XMLUtils##############################
The request containing CData
##############################
?
]]>
########################
The error occuring in log pointing at ReversibleXMLStreamReader
########################INFO 2013-09-16 13:46:02,896 [[cdatatest-reversiblexmlstreamreader].connector.http.mule.default.receiver.02] org.mule.component.simple.LogComponent:
********************************************************************************
* Message received in service: cdatatest-flow. Content is: '[Message could *
* not be converted to string]' *
********************************************************************************
WARN 2013-09-16 13:46:02,974 [[cdatatest-reversiblexmlstreamreader].connector.http.mule.default.receiver.02] org.apache.cxf.phase.PhaseInterceptorChain: Interceptor for {urn:skl:tjanst1:rivtabp20}Tjanst1Service has thrown exception, unwinding now
java.lang.ClassCastException: javanet.staxutils.events.CDataEvent cannot be cast to javanet.staxutils.events.CharactersEvent
at org.mule.module.xml.stax.ReversibleXMLStreamReader.getText(ReversibleXMLStreamReader.java:583)
at org.apache.cxf.staxutils.StaxUtils.copy(StaxUtils.java:541)
at org.apache.cxf.staxutils.StaxUtils.copy(StaxUtils.java:513)
at org.mule.module.cxf.support.OutputPayloadInterceptor$1.write(OutputPayloadInterceptor.java:83)
at org.apache.cxf.databinding.stax.StaxDataBinding$XMLStreamDataWriter.write(StaxDataBinding.java:127)
at org.apache.cxf.databinding.stax.StaxDataBinding$XMLStreamDataWriter.write(StaxDataBinding.java:117)
at org.apache.cxf.databinding.stax.StaxDataBinding$XMLStreamDataWriter.write(StaxDataBinding.java:113)
at org.apache.cxf.interceptor.AbstractOutDatabindingInterceptor.writeParts(AbstractOutDatabindingInterceptor.java:119)
at org.apache.cxf.interceptor.BareOutInterceptor.handleMessage(BareOutInterceptor.java:68)
at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:263)
at org.apache.cxf.phase.PhaseInterceptorChain.resume(PhaseInterceptorChain.java:232)
at org.mule.module.cxf.CxfInboundMessageProcessor$1.write(CxfInboundMessageProcessor.java:373)
at org.mule.transport.http.HttpServerConnection.writeResponse(HttpServerConnection.java:351)
at org.mule.transport.http.HttpMessageProcessTemplate.sendResponseToClient(HttpMessageProcessTemplate.java:176)
at org.mule.execution.FlowProcessingPhase$1.run(FlowProcessingPhase.java:82)
at org.mule.work.WorkerContext.run(WorkerContext.java:311)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
at java.lang.Thread.run(Thread.java:722)##############################################################
The fix in org.mule.module.xml.stax.ReversibleXMLStreamReader
#############################################################In org.mule.module.xml.stax.ReversibleXMLStreamReader, line 584-589 is changed:
public String getText()
{
if (replay)
{
if (current instanceof CommentEvent)
{
return ((CommentEvent) current).getText();
}
else
{
//#####################################################################
//FIX for case 00008941, CData not handled in ReversibleXMLStreamReader
//#####################################################################
return ((AbstractCharactersEvent) current).getData();
//return ((CharactersEvent) current).getData();
//#####################################################################
}
}
else
{
return super.getText();
}
}##############################################################
The fix in org.mule.module.xml.util.XMLUtils
#############################################################In org.mule.module.xml.util.XMLUtils, line 468-474 is changed:
public static void copy(XMLStreamReader reader, XMLStreamWriter writer,
boolean fragment) throws XMLStreamException {
// number of elements read in
int read = 0;
int event = reader.getEventType();while (reader.hasNext()) {
switch (event) {
case XMLStreamConstants.START_ELEMENT:
read++;
writeStartElement(reader, writer);
break;
case XMLStreamConstants.END_ELEMENT:
writer.writeEndElement();
read--;
if (read <= 0 && !fragment) {
return;
}
break;
case XMLStreamConstants.CHARACTERS:
writer.writeCharacters(reader.getText());
break;
//######################################################
//FIX for case 00008941, CData not handled in XMLUtils.copy
//######################################################
case XMLStreamConstants.CDATA:
writer.writeCData(reader.getText());
break;
//######################################################
case XMLStreamConstants.START_DOCUMENT:
case XMLStreamConstants.END_DOCUMENT:
case XMLStreamConstants.ATTRIBUTE:
case XMLStreamConstants.NAMESPACE:
break;
default:
break;
}
event = reader.next();
}
}############################################
Apply the patch
############################################Apply the patches-mule-3.3.1-fix-cdata-MULE-8941-1.0.jar in the /lib/user folder and restart mule.
Verify by using a request containing CData elements.