dion 2004/08/11 22:34:34 Modified: jelly/src/java/org/apache/commons/jelly JellyContext.java jelly/xdocs changes.xml Log: Jelly-108 Revision Changes Path 1.53 +54 -3 jakarta-commons/jelly/src/java/org/apache/commons/jelly/JellyContext.java Index: JellyContext.java =================================================================== RCS file: /home/cvs/jakarta-commons/jelly/src/java/org/apache/commons/jelly/JellyContext.java,v retrieving revision 1.52 retrieving revision 1.53 diff -u -r1.52 -r1.53 --- JellyContext.java 26 Mar 2004 22:40:12 -0000 1.52 +++ JellyContext.java 12 Aug 2004 05:34:34 -0000 1.53 @@ -28,6 +28,7 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.xml.sax.InputSource; import org.xml.sax.SAXException; /** <p><code>JellyContext</code> represents the Jelly context.</p> @@ -460,6 +461,26 @@ return script.compile(); } + /** + * Attempts to parse the script from the given InputSource using the + * [EMAIL PROTECTED] #getResource} method then returns the compiled script. + */ + public Script compileScript(InputSource source) throws JellyException { + XMLParser parser = getXMLParser(); + parser.setContext(this); + + Script script = null; + try { + script = parser.parse(source); + } catch (IOException e) { + throw new JellyException("Could not parse Jelly script",e); + } catch (SAXException e) { + throw new JellyException("Could not parse Jelly script",e); + } + + return script.compile(); + } + /** * @return a thread pooled XMLParser to avoid the startup overhead * of the XMLParser @@ -502,6 +523,16 @@ } /** + * Parses the script from the given InputSource then compiles it and runs it. + * + * @return the new child context that was used to run the script + */ + public JellyContext runScript(InputSource source, XMLOutput output) throws JellyException { + return runScript(source, output, JellyContext.DEFAULT_EXPORT, + JellyContext.DEFAULT_INHERIT); + } + + /** * Parses the script from the given uri using the * JellyContext.getResource() API then compiles it and runs it. * @@ -565,11 +596,21 @@ */ public JellyContext runScript(URL url, XMLOutput output, boolean export, boolean inherit) throws JellyException { - Script script = compileScript(url); + return runScript(new InputSource(url.toString()), output, export, inherit); + } + + /** + * Parses the script from the given InputSource then compiles it and runs it. + * + * @return the new child context that was used to run the script + */ + public JellyContext runScript(InputSource source, XMLOutput output, + boolean export, boolean inherit) throws JellyException { + Script script = compileScript(source); URL newJellyContextURL = null; try { - newJellyContextURL = getJellyContextURL(url); + newJellyContextURL = getJellyContextURL(source); } catch (MalformedURLException e) { throw new JellyException(e.toString()); } @@ -586,7 +627,7 @@ } if (log.isDebugEnabled() ) { - log.debug( "About to run script: " + url ); + log.debug( "About to run script: " + source.getSystemId() ); log.debug( "root context URL: " + newJellyContext.rootURL ); log.debug( "current context URL: " + newJellyContext.currentURL ); } @@ -838,6 +879,16 @@ */ protected URL getJellyContextURL(URL url) throws MalformedURLException { String text = url.toString(); + int idx = text.lastIndexOf('/'); + text = text.substring(0, idx + 1); + return new URL(text); + } + + /** + * Strips off the name of a script to create a new context URL + */ + protected URL getJellyContextURL(InputSource source) throws MalformedURLException { + String text = source.getSystemId(); int idx = text.lastIndexOf('/'); text = text.substring(0, idx + 1); return new URL(text); 1.5 +1 -0 jakarta-commons/jelly/xdocs/changes.xml Index: changes.xml =================================================================== RCS file: /home/cvs/jakarta-commons/jelly/xdocs/changes.xml,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- changes.xml 12 Aug 2004 05:08:29 -0000 1.4 +++ changes.xml 12 Aug 2004 05:34:34 -0000 1.5 @@ -25,6 +25,7 @@ </properties> <body> <release version="1.0-beta-4-SNAPSHOT" date="in CVS"> + <action dev="dion" type="add" issue="JELLY-108" due-to="Maarten Coene">Run a script from an input source</action> <action dev="dion" type="add" issue="JELLY-113" due-to="Gary Franklin">Thread safety of tag support</action> <action dev="dion" type="add" issue="JELLY-115" due-to="Felipe Leme">Add var to break tag</action> <action dev="dion" type="add" issue="JELLY-116" due-to="Felipe Leme">Add exceptionVar to invoke and invokeStatic</action>
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]