Add a line:

message.put("disable.outputstream.optimization", Boolean.TRUE);

into the handleMessage method of your interceptor.  That likely will fix that.


Dan


On Thursday, March 01, 2012 1:42:00 PM Idar Borlaug wrote:
> Ok i am now trying to create an interceptor that captures element name
> and prints CDATA in the correct element.
> 
> The problem is my code intercept everyting until soap:body tag, then it
> stops.
> 
> I probably have it injected the wrong way in the cxf interceptro
> chain. Can anyone point me in the right direction. the output is now:
> <soap:Envelope
> xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/";><soap:Body><![CDATA[
> ]]><Insert
> 
> public class CDataXMLStreamWriter extends DelegatingXMLStreamWriter {
> 
>       private String currentElementName;
> 
>       public CDataXMLStreamWriter(XMLStreamWriter del) {
>               super(del);
>       }
> 
>       @Override
>       public void writeCharacters(String text) throws XMLStreamException {
>               boolean useCData = checkIfCDATAneededForCurrentElement();
>               if (useCData) {
>                       System.out.println("WritingCData" + text);
>                       super.writeCData(text);
>               }else {
>               super.writeCharacters(text);
>               }
>       }
> 
>       private boolean checkIfCDATAneededForCurrentElement() {
>               System.out.println("ElementName " + currentElementName);
>               return true;
>       }
> 
>       public void writeStartElement(String prefix, String local, String
> uri) throws XMLStreamException {
>               currentElementName = local;
>               super.writeStartElement(prefix, local, uri);
>       }
> }
> 
> public class CdataWriterInterceptor extends
> AbstractPhaseInterceptor<Message> {
> 
>       public CdataWriterInterceptor() {
>               super(Phase.WRITE);
>               addBefore(BareOutInterceptor.class.getName());
>       }
> 
>       @Override
>       public void handleMessage(Message message) {
>               System.out.println("setting altinnfix on message");
>               XMLStreamWriter writer =
> StaxUtils.createXMLStreamWriter(message.getContent(OutputStream.class));
>               message.setContent(XMLStreamWriter.class, new
> CDataXMLStreamWriter(writer)); }
> }
-- 
Daniel Kulp
[email protected] - http://dankulp.com/blog
Talend Community Coder - http://coders.talend.com

Reply via email to