You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by sk...@apache.org on 2006/03/14 03:21:44 UTC
svn commit: r385714 -
/jakarta/commons/proper/digester/trunk/src/java/org/apache/commons/digester/Digester.java
Author: skitching
Date: Mon Mar 13 18:21:42 2006
New Revision: 385714
URL: http://svn.apache.org/viewcvs?rev=385714&view=rev
Log:
Make createInputSourceFromURL public, so it can be called from other places
in Digester (eg xmlrules module). Improve javadoc for the method. Minor
varname changes.
Modified:
jakarta/commons/proper/digester/trunk/src/java/org/apache/commons/digester/Digester.java
Modified: jakarta/commons/proper/digester/trunk/src/java/org/apache/commons/digester/Digester.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/digester/trunk/src/java/org/apache/commons/digester/Digester.java?rev=385714&r1=385713&r2=385714&view=diff
==============================================================================
--- jakarta/commons/proper/digester/trunk/src/java/org/apache/commons/digester/Digester.java (original)
+++ jakarta/commons/proper/digester/trunk/src/java/org/apache/commons/digester/Digester.java Mon Mar 13 18:21:42 2006
@@ -1779,20 +1779,41 @@
* Given a URL, return an InputSource that reads from that URL.
* <p>
* Ideally this function would not be needed and code could just use
- * <code>new InputSource(entityURL)</code>.
- * Unforunately it appears that when the entityURL points to a file
- * within a jar archive a caching mechanism inside the InputSource
- * implementation causes a file-handle to the jar file to remain open.
- * On Windows systems this then causes the jar archive file to be
- * locked on disk ("in use") which makes it impossible to delete the
- * jar file - and that really stuffs up "undeploy" in webapps in
- * particular.
+ * <code>new InputSource(entityURL)</code>. Unfortunately it appears
+ * that when the entityURL points to a file within a jar archive a
+ * caching mechanism inside the InputSource implementation causes a
+ * file-handle to the jar file to remain open. On Windows systems
+ * this then causes the jar archive file to be locked on disk
+ * ("in use") which makes it impossible to delete the jar file -
+ * and that really stuffs up "undeploy" in webapps in particular.
+ * <p>
+ * In JDK1.4 and later, Apache XercesJ is used as the xml parser.
+ * The InputSource object provided is converted into an XMLInputSource,
+ * and eventually passed to an instance of XMLDocumentScannerImpl to
+ * specify the source data to be converted into tokens for the rest
+ * of the XMLReader code to handle. XMLDocumentScannerImpl calls
+ * fEntityManager.startDocumentEntity(source), where fEntityManager
+ * is declared in ancestor class XMLScanner to be an XMLEntityManager. In
+ * that class, if the input source stream is null, then:
+ * <code>
+ * URL location = new URL(expandedSystemId);
+ * URLConnection connect = location.openConnection();
+ * if (connect instanceof HttpURLConnection) {
+ * setHttpProperties(connect,xmlInputSource);
+ * }
+ * stream = connect.getInputStream();
+ * </code>
+ * This method pretty much duplicates the standard behaviour, except
+ * that it calls URLConnection.setUseCaches(false) before opening
+ * the connection.
*/
- private InputSource createInputSourceFromURL(String url)
+ public static InputSource createInputSourceFromURL(String url)
throws MalformedURLException, IOException {
- URLConnection urlConnection = new URL(url).openConnection();
- urlConnection.setUseCaches(false);
- InputSource source = new InputSource(urlConnection.getInputStream());
+ URL location = new URL(url);
+ URLConnection connection = location.openConnection();
+ connection.setUseCaches(false);
+ InputStream stream = connection.getInputStream();
+ InputSource source = new InputSource(stream);
source.setSystemId(url);
return source;
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org