jstrachan 02/05/15 00:47:50 Modified: jelly/src/test/org/apache/commons/jelly TestXMLTags.java jelly/src/java/org/apache/commons/jelly/tags/sql DataSourceWrapper.java SetDataSourceTag.java QueryTag.java DataSourceUtil.java jelly/src/java/org/apache/commons/jelly JellyContext.java jelly/src/java/org/apache/commons/jelly/tags/bsf ContextRegistry.java Removed: jelly/src/java/org/apache/commons/jelly Context.java Log: removed unnecessary debug messages and old Context class Revision Changes Path 1.6 +1 -130 jakarta-commons-sandbox/jelly/src/test/org/apache/commons/jelly/TestXMLTags.java Index: TestXMLTags.java =================================================================== RCS file: /home/cvs/jakarta-commons-sandbox/jelly/src/test/org/apache/commons/jelly/TestXMLTags.java,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- TestXMLTags.java 15 May 2002 06:25:49 -0000 1.5 +++ TestXMLTags.java 15 May 2002 07:47:50 -0000 1.6 @@ -1,130 +1 @@ -/* - * $Header: /home/cvs/jakarta-commons-sandbox/jelly/src/test/org/apache/commons/jelly/TestXMLTags.java,v 1.5 2002/05/15 06:25:49 jstrachan Exp $ - * $Revision: 1.5 $ - * $Date: 2002/05/15 06:25:49 $ - * - * ==================================================================== - * - * The Apache Software License, Version 1.1 - * - * Copyright (c) 1999-2002 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Commons", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact [EMAIL PROTECTED] - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * <http://www.apache.org/>. - * - * $Id: TestXMLTags.java,v 1.5 2002/05/15 06:25:49 jstrachan Exp $ - */ -package org.apache.commons.jelly; - -import java.io.InputStream; -import java.io.IOException; -import java.io.StringWriter; - -import junit.framework.Test; -import junit.framework.TestCase; -import junit.framework.TestSuite; -import junit.textui.TestRunner; - -import org.apache.commons.jelly.JellyContext; -import org.apache.commons.jelly.Script; -import org.apache.commons.jelly.XMLOutput; -import org.apache.commons.jelly.impl.TagScript; -import org.apache.commons.jelly.parser.XMLParser; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - - -/** Tests the parser, the engine and the XML tags - * - * @author <a href="mailto:[EMAIL PROTECTED]">James Strachan</a> - * @version $Revision: 1.5 $ - */ -public class TestXMLTags extends TestCase { - - /** The Log to which logging calls will be made. */ - private static final Log log = LogFactory.getLog( TestXMLTags.class ); - - public static void main( String[] args ) { - TestRunner.run( suite() ); - } - - public static Test suite() { - return new TestSuite(TestXMLTags.class); - } - - public TestXMLTags(String testName) { - super(testName); - } - - public void testParse() throws Exception { - InputStream in = getClass().getResourceAsStream( "example.jelly" ); - XMLParser parser = new XMLParser(); - Script script = parser.parse( in ); - script = script.compile(); - - log.debug( "Found: " + script ); - - assertTrue( "Script is a TagScript", script instanceof TagScript ); - - JellyContext context = new JellyContext(); - StringWriter buffer = new StringWriter(); - - script.run( context, XMLOutput.createXMLOutput( buffer ) ); - - String text = buffer.toString().trim(); - - if ( log.isDebugEnabled() ) { - log.debug( "Evaluated script as..." ); - log.debug( text ); - } - - assertEquals( "Produces the correct output", "It works!", text ); - } -} - +/* * $Header: /home/cvs/jakarta-commons-sandbox/jelly/src/test/org/apache/commons/jelly/TestXMLTags.java,v 1.6 2002/05/15 07:47:50 jstrachan Exp $ * $Revision: 1.6 $ * $Date: 2002/05/15 07:47:50 $ * * ==================================================================== * * The Apache Software License, Version 1.1 * * Copyright (c) 1999-2002 The Apache Software Foundation. All rights * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3. The end-user documentation included with the redistribution, if * any, must include the following acknowlegement: * "This product includes software developed by the * Apache Software Foundation (http://www.apache.org/)." * Alternately, this acknowlegement may appear in the software itself, * if and wherever such third-party acknowlegements normally appear. * * 4. The names "The Jakarta Project", "Commons", and "Apache Software * Foundation" must not be used to endorse or promote products derived * from this software without prior written permission. For written * permission, please contact [EMAIL PROTECTED] * * 5. Products derived from this software may not be called "Apache" * nor may "Apache" appear in their names without prior written * permission of the Apache Group. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * ==================================================================== * * This software consists of voluntary contributions made by many * individuals on behalf of the Apache Software Foundation. For more * information on the Apache Software Foundation, please see * <http://www.apache.org/>. * * $Id: TestXMLTags.java,v 1.6 2002/05/15 07:47:50 jstrachan Exp $ */ package org.apache.commons.jelly; import java.io.InputStream; import java.io.IOException; import java.io.StringWriter; import junit.framework.Test; import junit.framework.TestCase; import junit.framework.TestSuite; import junit.textui.TestRunner; import org.apache.commons.jelly.JellyContext; import org.apache.commons.jelly.Script; import org.apache.commons.jelly.XMLOutput; import org.apache.commons.jelly.impl.TagScript; import org.apache.commons.jelly.parser.XMLParser; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; /** Tests the parser, the engine and the XML tags * * @author <a href="mailto:[EMAIL PROTECTED]">James Strachan</a> * @version $Revision: 1.6 $ */ public class TestXMLTags extends TestCase { /** The Log to which logging calls will be made. */ private static final Log log = LogFactory.getLog(TestXMLTags.class); public static void main(String[] args) { TestRunner.run(suite()); } public static Test suite() { return new TestSuite(TestXMLTags.class); } public TestXMLTags(String testName) { super(testName); } public void testParse() throws Exception { InputStream in = getClass().getResourceAsStream("example.jelly"); XMLParser parser = new XMLParser(); Script script = parser.parse(in); script = script.compile(); log.debug("Found: " + script); assertTrue("Script is a TagScript", script instanceof TagScript); JellyContext context = new JellyContext(); StringWriter buffer = new StringWriter(); script.run(context, XMLOutput.createXMLOutput(buffer)); String text = buffer.toString().trim(); if (log.isDebugEnabled()) { log.debug("Evaluated script as..."); log.debug(text); } assertEquals("Produces the correct output", "It works!", text); } } \ No newline at end of file 1.2 +90 -81 jakarta-commons-sandbox/jelly/src/java/org/apache/commons/jelly/tags/sql/DataSourceWrapper.java Index: DataSourceWrapper.java =================================================================== RCS file: /home/cvs/jakarta-commons-sandbox/jelly/src/java/org/apache/commons/jelly/tags/sql/DataSourceWrapper.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- DataSourceWrapper.java 15 May 2002 06:25:47 -0000 1.1 +++ DataSourceWrapper.java 15 May 2002 07:47:50 -0000 1.2 @@ -73,87 +73,96 @@ */ public class DataSourceWrapper implements DataSource { - /** The Log to which logging calls will be made. */ - private static final Log log = LogFactory.getLog(DataSourceWrapper.class); + /** The Log to which logging calls will be made. */ + private static final Log log = LogFactory.getLog(DataSourceWrapper.class); - private String driverClassName; - private String jdbcURL; - private String userName; - private String password; - - public void setDriverClassName(String driverClassName) - throws ClassNotFoundException, InstantiationException, IllegalAccessException { - log.info("Loading JDBC driver: [" + driverClassName + "]"); - - this.driverClassName = driverClassName; - getClass().getClassLoader().loadClass(driverClassName).newInstance(); - } - - public void setJdbcURL(String jdbcURL) { - log.info("Setting url to: " + jdbcURL); - this.jdbcURL = jdbcURL; - } - - public void setUserName(String userName) { - this.userName = userName; - } - - public void setPassword(String password) { - this.password = password; - } - - /** - * Returns a Connection using the DriverManager and all - * set properties. - */ - public Connection getConnection() throws SQLException { - Connection conn = null; - if (userName != null) { - log.info("Creating connection from url: " + jdbcURL + " userName: " + userName); - conn = DriverManager.getConnection(jdbcURL, userName, password); - } - else { - log.info("Creating connection from url: " + jdbcURL); - conn = DriverManager.getConnection(jdbcURL); - } - return conn; - } - - /** - * Always throws a SQLException. Username and password are set - * in the constructor and can not be changed. - */ - public Connection getConnection(String username, String password) - throws SQLException { - throw new SQLException(Resources.getMessage("NOT_SUPPORTED")); - } - - /** - * Always throws a SQLException. Not supported. - */ - public int getLoginTimeout() throws SQLException { - throw new SQLException(Resources.getMessage("NOT_SUPPORTED")); - } - - /** - * Always throws a SQLException. Not supported. - */ - public PrintWriter getLogWriter() throws SQLException { - throw new SQLException(Resources.getMessage("NOT_SUPPORTED")); - } - - /** - * Always throws a SQLException. Not supported. - */ - public void setLoginTimeout(int seconds) throws SQLException { - throw new SQLException(Resources.getMessage("NOT_SUPPORTED")); - } - - /** - * Always throws a SQLException. Not supported. - */ - public synchronized void setLogWriter(PrintWriter out) throws SQLException { - throw new SQLException(Resources.getMessage("NOT_SUPPORTED")); - } + private String driverClassName; + private String jdbcURL; + private String userName; + private String password; + + public void setDriverClassName(String driverClassName) + throws ClassNotFoundException, InstantiationException, IllegalAccessException { + + if (log.isDebugEnabled()) { + log.debug("Loading JDBC driver: [" + driverClassName + "]"); + } + + this.driverClassName = driverClassName; + getClass().getClassLoader().loadClass(driverClassName).newInstance(); + } + + public void setJdbcURL(String jdbcURL) { + this.jdbcURL = jdbcURL; + } + + public void setUserName(String userName) { + this.userName = userName; + } + + public void setPassword(String password) { + this.password = password; + } + + /** + * Returns a Connection using the DriverManager and all + * set properties. + */ + public Connection getConnection() throws SQLException { + Connection conn = null; + if (userName != null) { + if (log.isDebugEnabled()) { + log.debug( + "Creating connection from url: " + jdbcURL + " userName: " + userName); + } + + conn = DriverManager.getConnection(jdbcURL, userName, password); + } + else { + if (log.isDebugEnabled()) { + log.debug("Creating connection from url: " + jdbcURL); + } + + conn = DriverManager.getConnection(jdbcURL); + } + return conn; + } + + /** + * Always throws a SQLException. Username and password are set + * in the constructor and can not be changed. + */ + public Connection getConnection(String username, String password) + throws SQLException { + throw new SQLException(Resources.getMessage("NOT_SUPPORTED")); + } + + /** + * Always throws a SQLException. Not supported. + */ + public int getLoginTimeout() throws SQLException { + throw new SQLException(Resources.getMessage("NOT_SUPPORTED")); + } + + /** + * Always throws a SQLException. Not supported. + */ + public PrintWriter getLogWriter() throws SQLException { + throw new SQLException(Resources.getMessage("NOT_SUPPORTED")); + } + + /** + * Always throws a SQLException. Not supported. + */ + public void setLoginTimeout(int seconds) throws SQLException { + throw new SQLException(Resources.getMessage("NOT_SUPPORTED")); + } + + /** + * Always throws a SQLException. Not supported. + */ + public synchronized void setLogWriter(PrintWriter out) throws SQLException { + throw new SQLException(Resources.getMessage("NOT_SUPPORTED")); + } } 1.2 +0 -1 jakarta-commons-sandbox/jelly/src/java/org/apache/commons/jelly/tags/sql/SetDataSourceTag.java Index: SetDataSourceTag.java =================================================================== RCS file: /home/cvs/jakarta-commons-sandbox/jelly/src/java/org/apache/commons/jelly/tags/sql/SetDataSourceTag.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- SetDataSourceTag.java 15 May 2002 06:25:47 -0000 1.1 +++ SetDataSourceTag.java 15 May 2002 07:47:50 -0000 1.2 @@ -120,7 +120,6 @@ } public void setUrl(String jdbcURL) { - log.info( "Setting url to: "+ jdbcURL ); this.jdbcURL = jdbcURL; } 1.2 +0 -7 jakarta-commons-sandbox/jelly/src/java/org/apache/commons/jelly/tags/sql/QueryTag.java Index: QueryTag.java =================================================================== RCS file: /home/cvs/jakarta-commons-sandbox/jelly/src/java/org/apache/commons/jelly/tags/sql/QueryTag.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- QueryTag.java 15 May 2002 06:25:47 -0000 1.1 +++ QueryTag.java 15 May 2002 07:47:50 -0000 1.2 @@ -131,13 +131,6 @@ } public void setDataSource(Object dataSource) { - if ( dataSource != null ) { - log.info( "Setting data source to: " + dataSource + " of type: " + dataSource.getClass() ); - } - else { - log.info( "Setting data source to: " + dataSource ); - } - this.rawDataSource = dataSource; this.dataSourceSpecified = true; } 1.2 +0 -5 jakarta-commons-sandbox/jelly/src/java/org/apache/commons/jelly/tags/sql/DataSourceUtil.java Index: DataSourceUtil.java =================================================================== RCS file: /home/cvs/jakarta-commons-sandbox/jelly/src/java/org/apache/commons/jelly/tags/sql/DataSourceUtil.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- DataSourceUtil.java 15 May 2002 06:25:47 -0000 1.1 +++ DataSourceUtil.java 15 May 2002 07:47:50 -0000 1.2 @@ -93,10 +93,6 @@ throws JellyException { DataSource dataSource = null; - if (log.isInfoEnabled() ) { - log.info( "Attempting to deduce DataSource from: " + rawDataSource ); - } - if (rawDataSource == null) { rawDataSource = pc.getVariable("org.apache.commons.jelly.sql.DataSource"); } @@ -111,7 +107,6 @@ * a DataSource */ if (rawDataSource instanceof String) { - log.info( "rawDataSource is a String" ); try { Context ctx = new InitialContext(); // relative to standard JNDI root for J2EE app 1.2 +1 -1 jakarta-commons-sandbox/jelly/src/java/org/apache/commons/jelly/JellyContext.java Index: JellyContext.java =================================================================== RCS file: /home/cvs/jakarta-commons-sandbox/jelly/src/java/org/apache/commons/jelly/JellyContext.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- JellyContext.java 15 May 2002 06:25:47 -0000 1.1 +++ JellyContext.java 15 May 2002 07:47:50 -0000 1.2 @@ -1 +1 @@ -/* * $Header: /home/cvs/jakarta-commons-sandbox/jelly/src/java/org/apache/commons/jelly/JellyContext.java,v 1.10 2002/04/26 12:20:12 jstrachan Exp $ * $Revision: 1.10 $ * $Date: 2002/04/26 12:20:12 $ * * ==================================================================== * * The Apache Software License, Version 1.1 * * Copyright (c) 1999-2002 The Apache Software Foundation. All rights * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3. The end-user documentation included with the redistribution, if * any, must include the following acknowlegement: * "This product includes software developed by the * Apache Software Foundation (http://www.apache.org/)." * Alternately, this acknowlegement may appear in the software itself, * if and wherever such third-party acknowlegements normally appear. * * 4. The names "The Jakarta Project", "Commons", and "Apache Software * Foundation" must not be used to endorse or promote products derived * from this software without prior written permission. For written * permission, please contact [EMAIL PROTECTED] * * 5. Products derived from this software may not be called "Apache" * nor may "Apache" appear in their names without prior written * permission of the Apache Group. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * ==================================================================== * * This software consists of voluntary contributions made by many * individuals on behalf of the Apache Software Foundation. For more * information on the Apache Software Foundation, please see * <http://www.apache.org/>. * * $Id: JellyContext.java,v 1.10 2002/04/26 12:20:12 jstrachan Exp $ */ package org.apache.commons.jelly; import java.io.File; import java.io.InputStream; import java.net.MalformedURLException; import java.net.URL; import java.util.Hashtable; import java.util.Iterator; import java.util.Map; import org.apache.commons.jelly.parser.XMLParser; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; /** <p><code>JellyContext</code> represents the Jelly context.</p> * * @author <a href="mailto:[EMAIL PROTECTED]">James Strachan</a> * @version $Revision: 1.10 $ */ public class JellyContext { /** The root URL context (where scripts are located from) */ private URL rootContext; /** The current URL context (where relative scripts are located from) */ private URL currentJellyContext; /** Tag libraries found so far */ private Map taglibs = new Hashtable(); /** synchronized access to the variables in scope */ private Map variables = new Hashtable(); /** The Log to which logging calls will be made. */ private Log log = LogFactory.getLog(JellyContext.class); public JellyContext() { this.currentJellyContext = rootContext; } public JellyContext(URL rootContext) { this.rootContext = rootContext; this.currentJellyContext = rootContext; } public JellyContext(URL rootContext, URL currentJellyContext) { this.rootContext = rootContext; this.currentJellyContext = currentJellyContext; } public JellyContext(JellyContext parentJellyContext) { this.rootContext = parentJellyContext.rootContext; this.currentJellyContext = parentJellyContext.currentJellyContext; this.taglibs = parentJellyContext.taglibs; this.variables.put("parentScope", parentJellyContext.variables); } public JellyContext(JellyContext parentJellyContext, URL currentJellyContext) { this(parentJellyContext); this.currentJellyContext = currentJellyContext; } /** @return the value of the given variable name */ public Object getVariable(String name) { return variables.get(name); } /** Sets the value of the given variable name */ public void setVariable(String name, Object value) { if (value == null) { variables.remove(name); } else { variables.put(name, value); } } /** Removes the given variable */ public void removeVariable(String name) { variables.remove(name); } /** * @return an Iterator over the current variable names in this * context */ public Iterator getVariableNames() { return variables.keySet().iterator(); } /** * @return the Map of variables in this scope */ public Map getVariables() { return variables; } /** * Sets the Map of variables to use */ public void setVariables(Map variables) { this.variables = variables; } /** * A factory method to create a new child context of the * current context. */ public JellyContext newJellyContext(Map newVariables) { // XXXX: should allow this new context to // XXXX: inherit parent contexts? // XXXX: Or at least publish the parent scope // XXXX: as a Map in this new variable scope? newVariables.put("parentScope", variables); JellyContext answer = createChildContext(); answer.setVariables(newVariables); return answer; } /** Registers the given tag library against the given namespace URI. * This should be called before the parser is used. */ public void registerTagLibrary(String namespaceURI, TagLibrary taglib) { log.info("Registering tag library to: " + namespaceURI + " taglib: " + taglib); taglibs.put(namespaceURI, taglib); } /** Registers the given tag library class name against the given namespace URI. * The class will be loaded via the given ClassLoader * This should be called before the parser is used. */ public void registerTagLibrary( String namespaceURI, String className, ClassLoader classLoader) { try { Class theClass = classLoader.loadClass(className); Object object = theClass.newInstance(); if (object instanceof TagLibrary) { registerTagLibrary(namespaceURI, (TagLibrary) object); } else { log.error( "The tag library object mapped to: " + namespaceURI + " is not a TagLibrary. Object = " + object); } } catch (ClassNotFoundException e) { log.error("Could not find the class: " + className, e); } catch (Exception e) { log.error( "Could not instantiate instance of class: " + className + ". Reason: " + e, e); } } /** * @return the TagLibrary for the given namespace URI or null if one could not be found */ public TagLibrary getTagLibrary(String namespaceURI) { return (TagLibrary) taglibs.get(namespaceURI); } /** * Attempts to parse the script from the given uri using the * {#link getResource()} method then returns the compiled script. */ public Script compileScript(String uri) throws Exception { XMLParser parser = new XMLParser(); parser.setJellyContext(this); InputStream in = getResourceAsStream(uri); if (in == null) { throw new JellyException("Could not find Jelly script: " + uri); } Script script = parser.parse(in); return script.compile(); } /** * Attempts to parse the script from the given URL using the * {#link getResource()} method then returns the compiled script. */ public Script compileScript(URL url) throws Exception { XMLParser parser = new XMLParser(); parser.setJellyContext(this); Script script = parser.parse(url.toString()); return script.compile(); } /** * Attempts to parse the script from the given uri using the * JellyContext.getResource() API then compiles it and runs it. */ public void runScript(String uri, XMLOutput output) throws Exception { URL url = getResource(uri); if (url == null) { throw new JellyException("Could not find Jelly script: " + url); } Script script = compileScript(url); URL newJellyContextURL = getJellyContextURL(url); JellyContext newJellyContext = new JellyContext(this, newJellyContextURL); script.run(newJellyContext, output); } /** * Returns a URL for the given resource from the specified path. * If the uri starts with "/" then the path is taken as relative to * the current context root. If the uri is a well formed URL then it * is used. Otherwise the uri is interpreted as relative to the current * context (the location of the current script). */ public URL getResource(String uri) throws MalformedURLException { if (uri.startsWith("/")) { // append this uri to the context root return createRelativeURL(rootContext, uri.substring(1)); } else { try { return new URL(uri); } catch (MalformedURLException e) { // lets try find a relative resource try { return createRelativeURL(currentJellyContext, uri); } catch (MalformedURLException e2) { throw e; } } } } /** * Attempts to open an InputStream to the given resource at the specified path. * If the uri starts with "/" then the path is taken as relative to * the current context root. If the uri is a well formed URL then it * is used. Otherwise the uri is interpreted as relative to the current * context (the location of the current script). * * @return null if this resource could not be loaded, otherwise the resources * input stream is returned. */ public InputStream getResourceAsStream(String uri) { try { URL url = getResource(uri); return url.openStream(); } catch (Exception e) { if (log.isTraceEnabled()) { log.trace( "Caught exception attempting to open: " + uri + ". Exception: " + e, e); } return null; } } // Implementation methods //------------------------------------------------------------------------- /** * @return a new relative URL from the given root and with the addition of the * extra relative URI * * @param rootURL is the root context from which the relative URI will be applied * @param relativeURI is the relative URI (without a leading "/") * @throws MalformedURLException if the URL is invalid. */ protected URL createRelativeURL(URL rootURL, String relativeURI) throws MalformedURLException { String urlText = null; if (rootURL == null) { String userDir = System.getProperty("user.dir"); urlText = "file://" + userDir + relativeURI; } else { urlText = rootURL.toString() + relativeURI; } log.info("Attempting to open url: " + urlText); return new URL(urlText); } /** * Strips off the name of a script to create a new context URL */ 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); } /** * Factory method to create a new child of this context */ protected JellyContext createChildContext() { return new JellyContext(this); } } \ No newline at end of file +/* * $Header: /home/cvs/jakarta-commons-sandbox/jelly/src/java/org/apache/commons/jelly/JellyContext.java,v 1.10 2002/04/26 12:20:12 jstrachan Exp $ * $Revision: 1.10 $ * $Date: 2002/04/26 12:20:12 $ * * ==================================================================== * * The Apache Software License, Version 1.1 * * Copyright (c) 1999-2002 The Apache Software Foundation. All rights * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3. The end-user documentation included with the redistribution, if * any, must include the following acknowlegement: * "This product includes software developed by the * Apache Software Foundation (http://www.apache.org/)." * Alternately, this acknowlegement may appear in the software itself, * if and wherever such third-party acknowlegements normally appear. * * 4. The names "The Jakarta Project", "Commons", and "Apache Software * Foundation" must not be used to endorse or promote products derived * from this software without prior written permission. For written * permission, please contact [EMAIL PROTECTED] * * 5. Products derived from this software may not be called "Apache" * nor may "Apache" appear in their names without prior written * permission of the Apache Group. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * ==================================================================== * * This software consists of voluntary contributions made by many * individuals on behalf of the Apache Software Foundation. For more * information on the Apache Software Foundation, please see * <http://www.apache.org/>. * * $Id: JellyContext.java,v 1.10 2002/04/26 12:20:12 jstrachan Exp $ */ package org.apache.commons.jelly; import java.io.File; import java.io.InputStream; import java.net.MalformedURLException; import java.net.URL; import java.util.Hashtable; import java.util.Iterator; import java.util.Map; import org.apache.commons.jelly.parser.XMLParser; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; /** <p><code>JellyContext</code> represents the Jelly context.</p> * * @author <a href="mailto:[EMAIL PROTECTED]">James Strachan</a> * @version $Revision: 1.10 $ */ public class JellyContext { /** The root URL context (where scripts are located from) */ private URL rootContext; /** The current URL context (where relative scripts are located from) */ private URL currentJellyContext; /** Tag libraries found so far */ private Map taglibs = new Hashtable(); /** synchronized access to the variables in scope */ private Map variables = new Hashtable(); /** The Log to which logging calls will be made. */ private Log log = LogFactory.getLog(JellyContext.class); public JellyContext() { this.currentJellyContext = rootContext; } public JellyContext(URL rootContext) { this.rootContext = rootContext; this.currentJellyContext = rootContext; } public JellyContext(URL rootContext, URL currentJellyContext) { this.rootContext = rootContext; this.currentJellyContext = currentJellyContext; } public JellyContext(JellyContext parentJellyContext) { this.rootContext = parentJellyContext.rootContext; this.currentJellyContext = parentJellyContext.currentJellyContext; this.taglibs = parentJellyContext.taglibs; this.variables.put("parentScope", parentJellyContext.variables); } public JellyContext(JellyContext parentJellyContext, URL currentJellyContext) { this(parentJellyContext); this.currentJellyContext = currentJellyContext; } /** @return the value of the given variable name */ public Object getVariable(String name) { return variables.get(name); } /** Sets the value of the given variable name */ public void setVariable(String name, Object value) { if (value == null) { variables.remove(name); } else { variables.put(name, value); } } /** Removes the given variable */ public void removeVariable(String name) { variables.remove(name); } /** * @return an Iterator over the current variable names in this * context */ public Iterator getVariableNames() { return variables.keySet().iterator(); } /** * @return the Map of variables in this scope */ public Map getVariables() { return variables; } /** * Sets the Map of variables to use */ public void setVariables(Map variables) { this.variables = variables; } /** * A factory method to create a new child context of the * current context. */ public JellyContext newJellyContext(Map newVariables) { // XXXX: should allow this new context to // XXXX: inherit parent contexts? // XXXX: Or at least publish the parent scope // XXXX: as a Map in this new variable scope? newVariables.put("parentScope", variables); JellyContext answer = createChildContext(); answer.setVariables(newVariables); return answer; } /** Registers the given tag library against the given namespace URI. * This should be called before the parser is used. */ public void registerTagLibrary(String namespaceURI, TagLibrary taglib) { if (log.isDebugEnabled()) { log.debug("Registering tag library to: " + namespaceURI + " taglib: " + taglib); } taglibs.put(namespaceURI, taglib); } /** Registers the given tag library class name against the given namespace URI. * The class will be loaded via the given ClassLoader * This should be called before the parser is used. */ public void registerTagLibrary( String namespaceURI, String className, ClassLoader classLoader) { try { Class theClass = classLoader.loadClass(className); Object object = theClass.newInstance(); if (object instanceof TagLibrary) { registerTagLibrary(namespaceURI, (TagLibrary) object); } else { log.error( "The tag library object mapped to: " + namespaceURI + " is not a TagLibrary. Object = " + object); } } catch (ClassNotFoundException e) { log.error("Could not find the class: " + className, e); } catch (Exception e) { log.error( "Could not instantiate instance of class: " + className + ". Reason: " + e, e); } } /** * @return the TagLibrary for the given namespace URI or null if one could not be found */ public TagLibrary getTagLibrary(String namespaceURI) { return (TagLibrary) taglibs.get(namespaceURI); } /** * Attempts to parse the script from the given uri using the * {#link getResource()} method then returns the compiled script. */ public Script compileScript(String uri) throws Exception { XMLParser parser = new XMLParser(); parser.setJellyContext(this); InputStream in = getResourceAsStream(uri); if (in == null) { throw new JellyException("Could not find Jelly script: " + uri); } Script script = parser.parse(in); return script.compile(); } /** * Attempts to parse the script from the given URL using the * {#link getResource()} method then returns the compiled script. */ public Script compileScript(URL url) throws Exception { XMLParser parser = new XMLParser(); parser.setJellyContext(this); Script script = parser.parse(url.toString()); return script.compile(); } /** * Attempts to parse the script from the given uri using the * JellyContext.getResource() API then compiles it and runs it. */ public void runScript(String uri, XMLOutput output) throws Exception { URL url = getResource(uri); if (url == null) { throw new JellyException("Could not find Jelly script: " + url); } Script script = compileScript(url); URL newJellyContextURL = getJellyContextURL(url); JellyContext newJellyContext = new JellyContext(this, newJellyContextURL); script.run(newJellyContext, output); } /** * Returns a URL for the given resource from the specified path. * If the uri starts with "/" then the path is taken as relative to * the current context root. If the uri is a well formed URL then it * is used. Otherwise the uri is interpreted as relative to the current * context (the location of the current script). */ public URL getResource(String uri) throws MalformedURLException { if (uri.startsWith("/")) { // append this uri to the context root return createRelativeURL(rootContext, uri.substring(1)); } else { try { return new URL(uri); } catch (MalformedURLException e) { // lets try find a relative resource try { return createRelativeURL(currentJellyContext, uri); } catch (MalformedURLException e2) { throw e; } } } } /** * Attempts to open an InputStream to the given resource at the specified path. * If the uri starts with "/" then the path is taken as relative to * the current context root. If the uri is a well formed URL then it * is used. Otherwise the uri is interpreted as relative to the current * context (the location of the current script). * * @return null if this resource could not be loaded, otherwise the resources * input stream is returned. */ public InputStream getResourceAsStream(String uri) { try { URL url = getResource(uri); return url.openStream(); } catch (Exception e) { if (log.isTraceEnabled()) { log.trace( "Caught exception attempting to open: " + uri + ". Exception: " + e, e); } return null; } } // Implementation methods //------------------------------------------------------------------------- /** * @return a new relative URL from the given root and with the addition of the * extra relative URI * * @param rootURL is the root context from which the relative URI will be applied * @param relativeURI is the relative URI (without a leading "/") * @throws MalformedURLException if the URL is invalid. */ protected URL createRelativeURL(URL rootURL, String relativeURI) throws MalformedURLException { String urlText = null; if (rootURL == null) { String userDir = System.getProperty("user.dir"); urlText = "file://" + userDir + relativeURI; } else { urlText = rootURL.toString() + relativeURI; } log.info("Attempting to open url: " + urlText); return new URL(urlText); } /** * Strips off the name of a script to create a new context URL */ 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); } /** * Factory method to create a new child of this context */ protected JellyContext createChildContext() { return new JellyContext(this); } } \ No newline at end of file 1.2 +1 -110 jakarta-commons-sandbox/jelly/src/java/org/apache/commons/jelly/tags/bsf/ContextRegistry.java Index: ContextRegistry.java =================================================================== RCS file: /home/cvs/jakarta-commons-sandbox/jelly/src/java/org/apache/commons/jelly/tags/bsf/ContextRegistry.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- ContextRegistry.java 7 Mar 2002 02:46:04 -0000 1.1 +++ ContextRegistry.java 15 May 2002 07:47:50 -0000 1.2 @@ -1,110 +1 @@ -/* - * $Header: /home/cvs/jakarta-commons-sandbox/jelly/src/java/org/apache/commons/jelly/tags/bsf/ContextRegistry.java,v 1.1 2002/03/07 02:46:04 jstrachan Exp $ - * $Revision: 1.1 $ - * $Date: 2002/03/07 02:46:04 $ - * - * ==================================================================== - * - * The Apache Software License, Version 1.1 - * - * Copyright (c) 1999-2002 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Commons", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact [EMAIL PROTECTED] - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * <http://www.apache.org/>. - * - * $Id: ContextRegistry.java,v 1.1 2002/03/07 02:46:04 jstrachan Exp $ - */ -package org.apache.commons.jelly.tags.bsf; - -import com.ibm.bsf.util.ObjectRegistry; - -import org.apache.commons.jelly.Context; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - - -/** A BSF ObjectRegistry which uses the Context to find and - * register objects - * - * @author <a href="mailto:[EMAIL PROTECTED]">James Strachan</a> - * @version $Revision: 1.1 $ - */ -public class ContextRegistry extends ObjectRegistry { - - /** The Log to which logging calls will be made. */ - private static final Log log = LogFactory.getLog( ContextRegistry.class ); - - /** The context */ - private Context context; - - public ContextRegistry() { - } - - public Context getContext() { - return context; - } - - public void setContext(Context context) { - this.context = context; - } - - // ObjectRegistry interface - //------------------------------------------------------------------------- - public Object lookup(String name) { - return context.getVariable( name ); - } - - public void register(String name, Object value) { - context.setVariable( name, value ); - } - - public void unregister(String name) { - context.removeVariable( name ); - } -} +/* * $Header: /home/cvs/jakarta-commons-sandbox/jelly/src/java/org/apache/commons/jelly/tags/bsf/ContextRegistry.java,v 1.2 2002/05/15 07:47:50 jstrachan Exp $ * $Revision: 1.2 $ * $Date: 2002/05/15 07:47:50 $ * * ==================================================================== * * The Apache Software License, Version 1.1 * * Copyright (c) 1999-2002 The Apache Software Foundation. All rights * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3. The end-user documentation included with the redistribution, if * any, must include the following acknowlegement: * "This product includes software developed by the * Apache Software Foundation (http://www.apache.org/)." * Alternately, this acknowlegement may appear in the software itself, * if and wherever such third-party acknowlegements normally appear. * * 4. The names "The Jakarta Project", "Commons", and "Apache Software * Foundation" must not be used to endorse or promote products derived * from this software without prior written permission. For written * permission, please contact [EMAIL PROTECTED] * * 5. Products derived from this software may not be called "Apache" * nor may "Apache" appear in their names without prior written * permission of the Apache Group. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * ==================================================================== * * This software consists of voluntary contributions made by many * individuals on behalf of the Apache Software Foundation. For more * information on the Apache Software Foundation, please see * <http://www.apache.org/>. * * $Id: ContextRegistry.java,v 1.2 2002/05/15 07:47:50 jstrachan Exp $ */ package org.apache.commons.jelly.tags.bsf; import com.ibm.bsf.util.ObjectRegistry; import org.apache.commons.jelly.JellyContext; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; /** A BSF ObjectRegistry which uses the Context to find and * register objects * * @author <a href="mailto:[EMAIL PROTECTED]">James Strachan</a> * @version $Revision: 1.2 $ */ public class ContextRegistry extends ObjectRegistry { /** The Log to which logging calls will be made. */ private static final Log log = LogFactory.getLog(ContextRegistry.class); /** The context */ private JellyContext context; public ContextRegistry() { } public JellyContext getContext() { return context; } public void setContext(JellyContext context) { this.context = context; } // ObjectRegistry interface //------------------------------------------------------------------------- public Object lookup(String name) { return context.getVariable(name); } public void register(String name, Object value) { context.setVariable(name, value); } public void unregister(String name) { context.removeVariable(name); } } \ No newline at end of file
-- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>