<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<body link="#355491" alink="#4262a1" vlink="#355491" style="background: #e2e2e2; margin: 0; padding: 20px;">
<div>
        <table cellpadding="0" bgcolor="#FFFFFF" border="0" cellspacing="0" style="border: 1px solid #dadada; margin-bottom: 30px; width: 100%; -moz-border-radius: 6px; -webkit-border-radius: 6px;">
                <tbody>
                        <tr>
                                <td>
                                        <table border="0" cellpadding="0" cellspacing="0" bgcolor="#FFFFFF" style="border: solid 2px #ccc; background: #dadada; width: 100%; -moz-border-radius: 6px; -webkit-border-radius: 6px;">
                                                <tbody>
                                                        <tr>
                                                                <td bgcolor="#000000" valign="middle" height="58px" style="border-bottom: 1px solid #ccc; padding: 20px; -moz-border-radius-topleft: 3px; -moz-border-radius-topright: 3px; -webkit-border-top-right-radius: 5px; -webkit-border-top-left-radius: 5px;">
                                                                        <h1 style="color: #333333; font: bold 22px Arial, Helvetica, sans-serif; margin: 0; display: block !important;">
                                                                        <!-- To have a header image/logo replace the name below with your img tag -->
                                                                        <!-- Email clients will render the images when the message is read so any image -->
                                                                        <!-- must be made available on a public server, so that all recipients can load the image. -->
                                                                        <a href="http://community.jboss.org/index.jspa" style="text-decoration: none; color: #E1E1E1">Community</a></h1>
                                                                </td>
                                                        </tr>
                                                        <tr>
                                                                <td bgcolor="#FFFFFF" style="font: normal 12px Arial, Helvetica, sans-serif; color:#333333; padding: 20px; -moz-border-radius-bottomleft: 4px; -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 5px; -webkit-border-bottom-left-radius: 5px;"><h3 style="margin: 10px 0 5px; font-size: 17px; font-weight: normal;">
Problem in retrieving WSDL from remote endpoint
</h3>
<span style="margin-bottom: 10px;">
reply from <a href="http://community.jboss.org/people/dward">David Ward</a> in <i>JBoss ESB Development</i> - <a href="http://community.jboss.org/message/540036#540036">View the full discussion</a>
</span>
<hr style="margin: 20px 0; border: none; background-color: #dadada; height: 1px;">
<div class="jive-rendered-content"><p>Magesh,</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>I disagree that you believe StreamUtils.readStreamString(stream, charset):String is correctly implemented.  It creates a String with the passed bytes and passed encoding, however the passed bytes contain character data which might not be in the passed encoding!  Using ICU4J can fix this.<br/>Specifically, change this:<br/>    public static String readStreamString(InputStream stream, String charset) throws UnsupportedEncodingException {<br/>        return new String(StreamUtils.readStream(stream), charset);<br/>    }<br/>to this:<br/>    public static String readStreamString(InputStream stream, String charset) {<br/>        return new CharsetDetector().getString(StreamUtils.readStream(stream), charset);<br/>    }</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>Regarding the statement: "The user application may be expecting only the specified encoding, whereas due to intelligent scanning we might read all encoded streams", I do worry about this a bit from a performance perspective (although it has not been substantiated yet), however I do not worry about it as a security issue.  Either way we're building up a String.  I should also note that I didn't change any methods that just read an InputStream into a byte[] array.  I only changed the methods readStreamString and getResourceAsString - the two utility methods that want those bytes <em>as a <strong>String</strong></em>, and not just as a data-bucket.</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>I would be okay with just sticking to fixing the WSDL encoding problem, which would mean removing my change to StreamUtils and convert the characters "closer" to the WSDL handling code, however:</p><ol><li>I wouldn't add a property called "wsdl-encoding" to any Action.  Again, we would be depending on the user to specificy it correctly, which we've already seen here they don't do.</li><li>What do we do about all the other areas of our code that need to do String handling/outputting that are assuming the bytes contain characters encoded as UTF-8, but they're not???</li></ol><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>I think the thing that intrigues me the most about your reply is that non-UTF-8 WSDL should not be allowed according to Basic Profile.  This could change everything.  I have to admit I was ignorant of this.  Now, should we:</p><ol><li>Say "all WSDL must adhere to Basic Profile so we are rejecting this jira." - Seems a bit harsh, but might be acceptable.</li><li>Understand that many people (myself included up until now) don't know about this, or <em>don't <strong>want</strong> to adhere to it</em>, so we should just handle the possibility of non-UTF-8 or UTF-16 encoded documents just in case?</li></ol><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>Thanks for the feedback,</p><p>David</p></div>
<div style="background-color: #f4f4f4; padding: 10px; margin-top: 20px;">
<p style="margin: 0;">Reply to this message by <a href="http://community.jboss.org/message/540036#540036">going to Community</a></p>
        <p style="margin: 0;">Start a new discussion in JBoss ESB Development at <a href="http://community.jboss.org/choose-container!input.jspa?contentType=1&containerType=14&container=2032">Community</a></p>
</div></td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</div>
</body>
</html>