[ 
https://issues.apache.org/jira/browse/CXF-7064?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Daniel Kulp updated CXF-7064:
-----------------------------
    Description: 
HI,

When implementing a CDATA interceptor in order to include a signed XML file in 
a SOAP envelope, we are getting several CDATA sections in the XML that makes 
the service reject the envelope: 

{code:java}
import java.util.regex.Pattern;

import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamWriter;

import org.apache.cxf.staxutils.DelegatingXMLStreamWriter;
 
/**
 * Simple CDATA XML Stream Writer that exports some items as CDATA
 */
public class CDataXMLStreamWriter extends DelegatingXMLStreamWriter {
 
    private static final Pattern XML_CHARS = Pattern.compile( "[&<>]" );
    private static final String CDataOpen = "<![CDATA[";
    private static final String CDataClose = "]]>";
    
    public CDataXMLStreamWriter(XMLStreamWriter del) { 
        super(del);
    } 

    @Override 
    public void writeCharacters(String text) throws XMLStreamException { 
        boolean useCData = XML_CHARS.matcher( text ).find();

        if (useCData) {
                //super.writeCharacters(CDataOpen);
System.out.println("text" + text);              
                //super.writeCharacters(text);
                //super.writeCharacters(CDataClose);
                super.writeCData(text);
        }else { 
                super.writeCharacters(text); 
        } 
    }
    
    public void writeStartElement(String local) throws XMLStreamException { 
        super.writeStartElement(local); 
    } 
}

{code:java}

That's urgent to solve this for us. 

This is an example of the unwanted output:
EwJVWTErMCkGA1UECgwiQURNSU5JU1RSQUNJT04gTkFDSU9OQUwgREUgQ09SUk]]><![CDATA[VPUzEfMB0GA1UE]]><![CDATA[
CwwWU0VSVklDSU9TIEVMRUNUUk9OSUNPUzEdMBsGA1UEAwwUQ29ycmVvIFVydWd1YXlvIC0gQ0Ew
HhcNMTUxMTI3MTk0NzE4WhcNMTYxMTI3MTk0NzE4WjCBmzEmMCQGCSqGSIb3DQEJARYXdml0YW1p
bmljby4wNUBnbWFpbC5jb20xEzARBgNVBAoMClZJVEFNSU5JQ08xEzARBgNVBAgMCk1vbnRldmlk
ZW8xCzAJBgNVBAYTAlVZMRgwFgYDVQQFEw9SVUMyMTUyMTcxOTAwMTUxIDAeBgNVBAMMF1ZJTkFM
UyBJVkFOSUNIIExFT05BUkRPMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6LdZWhEJaqiFa
Zb1VG+o7aEckJT4hkFfTj1FqfBzbS/Ug4uXcESdmOahQPVCpJcG8jgW6HuCO1dlQ9P0Qwsxk+zjC
He+Bm4+lnFQfcn1ClMvkGJzAxE/HJbBXkr1WD]]><![CDATA[pcDKVt4nhMjGYj5w77H1p2Fj3CXC0eMAlf9MpHD]]><![CDATA[
gFy7pwIDAQABo4IBZjCCAWIwIgYDVR0RBBswGYEXdml0YW1pbmljby4wNUBnbWFpbC5jb20wDAYD
VR0TAQH/BAIwADAOBgNVHQ8BAf8EBAMCA/gwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwME
MBEGCWCGSAGG+EIBAQQEAwIFoDAdBgNVHQ4EFgQU96b4IO3javZcFCwkmb7fiyJsNXYwHwYDVR0j
BBgwFoAUJY/fQy+OaroLvkZcV1CTt1G+/NkwVAYDVR0gBE0wSzBJBgwrBgEEAYH1TwEBAQQwOTA3
BggrBgEFBQcCARYraHR0cDovL3d3dy5jb3JyZW8uY29tLnV5L2NvcnJlb2NlcnQvY3BzLnBkZjAY
Bg0rBgEEAYH1TwEBAQQBBAcMBURpc2NvMDwGA1UdHwQ1MDMwMaAvoC2GK2h0dHA6Ly93d3cuY29y
cmVvLmNvbS51eS9Db3JyZW9DZXJ0L2FuYy5jc]]><![CDATA[mwwDQYJKoZIhvcNAQEFBQADggIBAJVsv8h04Qjn]]><![CDATA[
JBGl0Z4DS9n47Fw+uFd9O9joLfDz0fIe1jbI9TEZ+9gfpw3+YiXIfSGOMP3i/MeIYSob42J5J9Ax
vAmxhC4TTH/AD8VnbGdGmqbUaaQAtFandJMegHihSJt4dsfZZU3VZHxcFVZdAr/SVDvljRLlQ2tg
onE0Z7de7xngFzfy0vfscI3AsVFuFb6FFQlLjRnc/30TmMbbmdFyVPGZvVLJqgTe5d8gSTwky282
C9qd9kcI+zN8mGwq5ByW5JsrYbJbOO0vXZiV4WQNcq2Y42kYHHekWPPA9QwSGKe+hHQ216M98iLI
BQukSWxoQkB+EP6jpluSYC+RSUlZ68e3lnaqx4AjM8jSCE6ZTMSvrKi9CGEIIcZ/EczpwnGzqBBw
anMopB2yQGuoV7nnzyt9+O0MpEbxyXYzsWPhhqwXAgmyUyVXivg2HAjqAjhMTOLHDXLJLKKL0wUW
q16jZshSpLTXzsO8rYtDl5bFXW6YjeTNBDm60]]><![CDATA[o4bTTFLLbfO1LZIM8JpubIzsE7+c4Ph4FTuW/Hx]]><![CDATA[
OE8F8HkLk0X1bxf4o1Did3pDjXDlIafi66//F7z5gf8xJeams5/w7ToikOmW+pjpLolOT64RvY0W
jQs5/FdEXu+7ivjrOk5xRzxdnKLIr9vUOYyFfE0627yA2mS8+uUWy41BISdsXI6z</X509Certificate></X509Data></KeyInfo></Signature></ns0:CFE></DGICFE:EnvioCFE>]]></xmlData>


  was:
HI,

When implementing a CDATA interceptor in order to include a signed XML file in 
a SOAP envelope, we are getting several CDATA sections in the XML that makes 
the service reject the envelope: 

{code:java}
import java.util.regex.Pattern;

import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamWriter;

import org.apache.cxf.staxutils.DelegatingXMLStreamWriter;
 
/**
 * Simple CDATA XML Stream Writer that exports some items as CDATA
 */
public class CDataXMLStreamWriter extends DelegatingXMLStreamWriter {
 
    private static final Pattern XML_CHARS = Pattern.compile( "[&<>]" );
    private static final String CDataOpen = "<![CDATA[";
    private static final String CDataClose = "]]>";
    
    public CDataXMLStreamWriter(XMLStreamWriter del) { 
        super(del);
    } 

    @Override 
    public void writeCharacters(String text) throws XMLStreamException { 
        boolean useCData = XML_CHARS.matcher( text ).find();

        if (useCData) {
                //super.writeCharacters(CDataOpen);
System.out.println("text" + text);              
                //super.writeCharacters(text);
                //super.writeCharacters(CDataClose);
                super.writeCData(text);
        }else { 
                super.writeCharacters(text); 
        } 
    }
    
    public void writeStartElement(String local) throws XMLStreamException { 
        super.writeStartElement(local); 
    } 
}
{code:java}
That's urgent to solve this for us. 

This is an example of the unwanted output:
{code:xml}
EwJVWTErMCkGA1UECgwiQURNSU5JU1RSQUNJT04gTkFDSU9OQUwgREUgQ09SUk]]><![CDATA[VPUzEfMB0GA1UE]]><![CDATA[
CwwWU0VSVklDSU9TIEVMRUNUUk9OSUNPUzEdMBsGA1UEAwwUQ29ycmVvIFVydWd1YXlvIC0gQ0Ew
HhcNMTUxMTI3MTk0NzE4WhcNMTYxMTI3MTk0NzE4WjCBmzEmMCQGCSqGSIb3DQEJARYXdml0YW1p
bmljby4wNUBnbWFpbC5jb20xEzARBgNVBAoMClZJVEFNSU5JQ08xEzARBgNVBAgMCk1vbnRldmlk
ZW8xCzAJBgNVBAYTAlVZMRgwFgYDVQQFEw9SVUMyMTUyMTcxOTAwMTUxIDAeBgNVBAMMF1ZJTkFM
UyBJVkFOSUNIIExFT05BUkRPMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6LdZWhEJaqiFa
Zb1VG+o7aEckJT4hkFfTj1FqfBzbS/Ug4uXcESdmOahQPVCpJcG8jgW6HuCO1dlQ9P0Qwsxk+zjC
He+Bm4+lnFQfcn1ClMvkGJzAxE/HJbBXkr1WD]]><![CDATA[pcDKVt4nhMjGYj5w77H1p2Fj3CXC0eMAlf9MpHD]]><![CDATA[
gFy7pwIDAQABo4IBZjCCAWIwIgYDVR0RBBswGYEXdml0YW1pbmljby4wNUBnbWFpbC5jb20wDAYD
VR0TAQH/BAIwADAOBgNVHQ8BAf8EBAMCA/gwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwME
MBEGCWCGSAGG+EIBAQQEAwIFoDAdBgNVHQ4EFgQU96b4IO3javZcFCwkmb7fiyJsNXYwHwYDVR0j
BBgwFoAUJY/fQy+OaroLvkZcV1CTt1G+/NkwVAYDVR0gBE0wSzBJBgwrBgEEAYH1TwEBAQQwOTA3
BggrBgEFBQcCARYraHR0cDovL3d3dy5jb3JyZW8uY29tLnV5L2NvcnJlb2NlcnQvY3BzLnBkZjAY
Bg0rBgEEAYH1TwEBAQQBBAcMBURpc2NvMDwGA1UdHwQ1MDMwMaAvoC2GK2h0dHA6Ly93d3cuY29y
cmVvLmNvbS51eS9Db3JyZW9DZXJ0L2FuYy5jc]]><![CDATA[mwwDQYJKoZIhvcNAQEFBQADggIBAJVsv8h04Qjn]]><![CDATA[
JBGl0Z4DS9n47Fw+uFd9O9joLfDz0fIe1jbI9TEZ+9gfpw3+YiXIfSGOMP3i/MeIYSob42J5J9Ax
vAmxhC4TTH/AD8VnbGdGmqbUaaQAtFandJMegHihSJt4dsfZZU3VZHxcFVZdAr/SVDvljRLlQ2tg
onE0Z7de7xngFzfy0vfscI3AsVFuFb6FFQlLjRnc/30TmMbbmdFyVPGZvVLJqgTe5d8gSTwky282
C9qd9kcI+zN8mGwq5ByW5JsrYbJbOO0vXZiV4WQNcq2Y42kYHHekWPPA9QwSGKe+hHQ216M98iLI
BQukSWxoQkB+EP6jpluSYC+RSUlZ68e3lnaqx4AjM8jSCE6ZTMSvrKi9CGEIIcZ/EczpwnGzqBBw
anMopB2yQGuoV7nnzyt9+O0MpEbxyXYzsWPhhqwXAgmyUyVXivg2HAjqAjhMTOLHDXLJLKKL0wUW
q16jZshSpLTXzsO8rYtDl5bFXW6YjeTNBDm60]]><![CDATA[o4bTTFLLbfO1LZIM8JpubIzsE7+c4Ph4FTuW/Hx]]><![CDATA[
OE8F8HkLk0X1bxf4o1Did3pDjXDlIafi66//F7z5gf8xJeams5/w7ToikOmW+pjpLolOT64RvY0W
jQs5/FdEXu+7ivjrOk5xRzxdnKLIr9vUOYyFfE0627yA2mS8+uUWy41BISdsXI6z</X509Certificate></X509Data></KeyInfo></Signature></ns0:CFE></DGICFE:EnvioCFE>]]></xmlData>
{code:xml}


> DelegatingXMLStreamWriter.writeCData(text) writes several CDATA sections for 
> a signed XML file
> ----------------------------------------------------------------------------------------------
>
>                 Key: CXF-7064
>                 URL: https://issues.apache.org/jira/browse/CXF-7064
>             Project: CXF
>          Issue Type: Bug
>          Components: JAX-WS Runtime
>    Affects Versions: 3.1.7
>         Environment: windows 7/ linux centos 6
>            Reporter: Javier Irazazábal
>   Original Estimate: 168h
>  Remaining Estimate: 168h
>
> HI,
> When implementing a CDATA interceptor in order to include a signed XML file 
> in a SOAP envelope, we are getting several CDATA sections in the XML that 
> makes the service reject the envelope: 
> {code:java}
> import java.util.regex.Pattern;
> import javax.xml.stream.XMLStreamException;
> import javax.xml.stream.XMLStreamWriter;
> import org.apache.cxf.staxutils.DelegatingXMLStreamWriter;
>  
> /**
>  * Simple CDATA XML Stream Writer that exports some items as CDATA
>  */
> public class CDataXMLStreamWriter extends DelegatingXMLStreamWriter {
>  
>     private static final Pattern XML_CHARS = Pattern.compile( "[&<>]" );
>     private static final String CDataOpen = "<![CDATA[";
>     private static final String CDataClose = "]]>";
>     
>     public CDataXMLStreamWriter(XMLStreamWriter del) { 
>       super(del);
>     } 
>     @Override 
>     public void writeCharacters(String text) throws XMLStreamException { 
>       boolean useCData = XML_CHARS.matcher( text ).find();
>       if (useCData) {
>               //super.writeCharacters(CDataOpen);
> System.out.println("text" + text);                    
>               //super.writeCharacters(text);
>               //super.writeCharacters(CDataClose);
>               super.writeCData(text);
>       }else { 
>               super.writeCharacters(text); 
>       } 
>     }
>     
>     public void writeStartElement(String local) throws XMLStreamException { 
>       super.writeStartElement(local); 
>     } 
> }
> {code:java}
> That's urgent to solve this for us. 
> This is an example of the unwanted output:
> EwJVWTErMCkGA1UECgwiQURNSU5JU1RSQUNJT04gTkFDSU9OQUwgREUgQ09SUk]]><![CDATA[VPUzEfMB0GA1UE]]><![CDATA[
> CwwWU0VSVklDSU9TIEVMRUNUUk9OSUNPUzEdMBsGA1UEAwwUQ29ycmVvIFVydWd1YXlvIC0gQ0Ew
> HhcNMTUxMTI3MTk0NzE4WhcNMTYxMTI3MTk0NzE4WjCBmzEmMCQGCSqGSIb3DQEJARYXdml0YW1p
> bmljby4wNUBnbWFpbC5jb20xEzARBgNVBAoMClZJVEFNSU5JQ08xEzARBgNVBAgMCk1vbnRldmlk
> ZW8xCzAJBgNVBAYTAlVZMRgwFgYDVQQFEw9SVUMyMTUyMTcxOTAwMTUxIDAeBgNVBAMMF1ZJTkFM
> UyBJVkFOSUNIIExFT05BUkRPMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6LdZWhEJaqiFa
> Zb1VG+o7aEckJT4hkFfTj1FqfBzbS/Ug4uXcESdmOahQPVCpJcG8jgW6HuCO1dlQ9P0Qwsxk+zjC
> He+Bm4+lnFQfcn1ClMvkGJzAxE/HJbBXkr1WD]]><![CDATA[pcDKVt4nhMjGYj5w77H1p2Fj3CXC0eMAlf9MpHD]]><![CDATA[
> gFy7pwIDAQABo4IBZjCCAWIwIgYDVR0RBBswGYEXdml0YW1pbmljby4wNUBnbWFpbC5jb20wDAYD
> VR0TAQH/BAIwADAOBgNVHQ8BAf8EBAMCA/gwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwME
> MBEGCWCGSAGG+EIBAQQEAwIFoDAdBgNVHQ4EFgQU96b4IO3javZcFCwkmb7fiyJsNXYwHwYDVR0j
> BBgwFoAUJY/fQy+OaroLvkZcV1CTt1G+/NkwVAYDVR0gBE0wSzBJBgwrBgEEAYH1TwEBAQQwOTA3
> BggrBgEFBQcCARYraHR0cDovL3d3dy5jb3JyZW8uY29tLnV5L2NvcnJlb2NlcnQvY3BzLnBkZjAY
> Bg0rBgEEAYH1TwEBAQQBBAcMBURpc2NvMDwGA1UdHwQ1MDMwMaAvoC2GK2h0dHA6Ly93d3cuY29y
> cmVvLmNvbS51eS9Db3JyZW9DZXJ0L2FuYy5jc]]><![CDATA[mwwDQYJKoZIhvcNAQEFBQADggIBAJVsv8h04Qjn]]><![CDATA[
> JBGl0Z4DS9n47Fw+uFd9O9joLfDz0fIe1jbI9TEZ+9gfpw3+YiXIfSGOMP3i/MeIYSob42J5J9Ax
> vAmxhC4TTH/AD8VnbGdGmqbUaaQAtFandJMegHihSJt4dsfZZU3VZHxcFVZdAr/SVDvljRLlQ2tg
> onE0Z7de7xngFzfy0vfscI3AsVFuFb6FFQlLjRnc/30TmMbbmdFyVPGZvVLJqgTe5d8gSTwky282
> C9qd9kcI+zN8mGwq5ByW5JsrYbJbOO0vXZiV4WQNcq2Y42kYHHekWPPA9QwSGKe+hHQ216M98iLI
> BQukSWxoQkB+EP6jpluSYC+RSUlZ68e3lnaqx4AjM8jSCE6ZTMSvrKi9CGEIIcZ/EczpwnGzqBBw
> anMopB2yQGuoV7nnzyt9+O0MpEbxyXYzsWPhhqwXAgmyUyVXivg2HAjqAjhMTOLHDXLJLKKL0wUW
> q16jZshSpLTXzsO8rYtDl5bFXW6YjeTNBDm60]]><![CDATA[o4bTTFLLbfO1LZIM8JpubIzsE7+c4Ph4FTuW/Hx]]><![CDATA[
> OE8F8HkLk0X1bxf4o1Did3pDjXDlIafi66//F7z5gf8xJeams5/w7ToikOmW+pjpLolOT64RvY0W
> jQs5/FdEXu+7ivjrOk5xRzxdnKLIr9vUOYyFfE0627yA2mS8+uUWy41BISdsXI6z</X509Certificate></X509Data></KeyInfo></Signature></ns0:CFE></DGICFE:EnvioCFE>]]></xmlData>



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to