[ 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} 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: 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> > 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} > 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)