mrglavas 2003/08/20 11:47:24 Modified: java/src/org/apache/xerces/impl XMLEntityManager.java Log: Errata fo XML 1.0 Second Edition: E43 (partial): the base URI is the URI of the resource after all redirection has occurred. Fixes Bug #20383. Revision Changes Path 1.65 +20 -3 xml-xerces/java/src/org/apache/xerces/impl/XMLEntityManager.java Index: XMLEntityManager.java =================================================================== RCS file: /home/cvs/xml-xerces/java/src/org/apache/xerces/impl/XMLEntityManager.java,v retrieving revision 1.64 retrieving revision 1.65 diff -u -r1.64 -r1.65 --- XMLEntityManager.java 27 Mar 2003 16:27:34 -0000 1.64 +++ XMLEntityManager.java 20 Aug 2003 18:47:24 -0000 1.65 @@ -63,6 +63,8 @@ import java.io.Reader; import java.io.StringReader; import java.net.URL; +import java.net.HttpURLConnection; +import java.net.URLConnection; import java.util.Hashtable; import java.util.Locale; import java.util.Stack; @@ -917,7 +919,7 @@ // get information final String publicId = xmlInputSource.getPublicId(); - final String literalSystemId = xmlInputSource.getSystemId(); + String literalSystemId = xmlInputSource.getSystemId(); String baseSystemId = xmlInputSource.getBaseSystemId(); String encoding = xmlInputSource.getEncoding(); Boolean isBigEndian = null; @@ -933,7 +935,22 @@ if (reader == null) { stream = xmlInputSource.getByteStream(); if (stream == null) { - stream = new URL(expandedSystemId).openStream(); + URL location = new URL(expandedSystemId); + URLConnection connect = location.openConnection(); + stream = connect.getInputStream(); + + // REVISIT: If the URLConnection has external encoding + // information, we should be reading it here. It's located + // in the charset parameter of Content-Type. -- mrglavas + if (connect instanceof HttpURLConnection) { + String redirect = connect.getURL().toString(); + // E43: Check if the URL was redirected, and then + // update literal and expanded system IDs if needed. + if (!redirect.equals(expandedSystemId)) { + literalSystemId = redirect; + expandedSystemId = redirect; + } + } } // wrap this stream in RewindableInputStream stream = new RewindableInputStream(stream);
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]