jvanzyl 2002/11/24 09:59:53 Added: src/java/org/apache/maven/jelly JellyUtils.java Log: refactoring Revision Changes Path 1.1 jakarta-turbine-maven/src/java/org/apache/maven/jelly/JellyUtils.java Index: JellyUtils.java =================================================================== package org.apache.maven.jelly; /* ==================================================================== * The Apache Software License, Version 1.1 * * Copyright (c) 2001 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 acknowledgment: * "This product includes software developed by the * Apache Software Foundation (http://www.apache.org/)." * Alternately, this acknowledgment may appear in the software itself, * if and wherever such third-party acknowledgments normally appear. * * 4. The names "Apache" and "Apache Software Foundation" and * "Apache Maven" 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", * "Apache Maven", nor may "Apache" appear in their name, without * prior written permission of the Apache Software Foundation. * * 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/>. * * ==================================================================== */ import org.apache.commons.jelly.JellyContext; import org.apache.commons.jelly.XMLOutput; import org.apache.commons.jelly.Script; import org.apache.commons.jelly.expression.Expression; import org.apache.commons.jelly.expression.CompositeExpression; import org.apache.commons.jelly.expression.ExpressionFactory; import org.apache.commons.jelly.parser.XMLParser; import com.bluecast.xml.JAXPSAXParserFactory; import java.io.File; import java.io.FileInputStream; import java.io.InputStream; import java.io.InputStreamReader; import java.net.URL; import javax.xml.parsers.SAXParserFactory; import org.xml.sax.XMLReader; /** * Utilities for Jelly. * * @see <a href="http://jakarta.apache.org/commons/sandbox/jelly/"> * commons-jelly</a> * @author <a href="mailto:[EMAIL PROTECTED]">bob mcwhirter</a> * @author <a href="mailto:[EMAIL PROTECTED]">Jason van Zyl</a> * @version $Id: JellyUtils.java,v 1.1 2002/11/24 17:59:52 jvanzyl Exp $ */ public class JellyUtils { /** * Run a jelly script. * * @param scriptInputStream Script input stream. * @param rootUrl Root explicit context of the script. * @param context Jelly context. * @param output Output sink. * @throws Exception If an error occurs while locating, compiling or * executing the script. */ public static void runScript(InputStream scriptInputStream, URL rootUrl, JellyContext context, XMLOutput output) throws Exception { URL oldRoot = context.getRootURL(); URL oldCurrent = context.getCurrentURL(); if (rootUrl != null) { context.setRootURL(rootUrl); context.setCurrentURL(rootUrl); } Script script = compileScript(scriptInputStream, context); script.run(context,output); context.setRootURL(oldRoot); context.setCurrentURL(oldCurrent); } /** * Run a jelly script. * * @param scriptFile Location of the script to run. * @param rootUrl Root explicit context of the script. * @param context Jelly context. * @param output Output sink. * @throws Exception If an error occurs while locating, compiling or * executing the script. */ public static void runScript(File scriptFile, URL rootUrl, JellyContext context, XMLOutput output) throws Exception { if (!scriptFile.canRead() || scriptFile.length() < 1) { return; } runScript( new FileInputStream(scriptFile), rootUrl, context, output); } /** * Compile a jelly script. * * @param scriptFile Location of the script to run. * @param context Jelly context. * @throws Exception If an error occurs while locating or compiling the * script. * @return The compiled script. */ public static Script compileScript(File scriptFile, JellyContext context) throws Exception { return context.compileScript(scriptFile.toURL()); } /** * Compile a jelly script. * * @param scriptInputStream Script input stream. * @param context Jelly context. * @throws Exception If an error occurs while locating or compiling the * script. * @return The compiled script. */ public static Script compileScript(InputStream scriptInputStream, JellyContext context) throws Exception { return compileScript(scriptInputStream, context, null); } /** * Compile a jelly script. * * @param scriptInputStream Script input stream. * @param context Jelly context. * @throws Exception If an error occurs while locating or compiling the * script. * @return The compiled script. */ public static Script compileScript(InputStream scriptInputStream, JellyContext context, String encoding) throws Exception { SAXParserFactory factory = new JAXPSAXParserFactory(); factory.setNamespaceAware(true); XMLReader reader = factory.newSAXParser().getXMLReader(); XMLParser parser = new XMLParser(reader); parser.setContext(context); Script script = null; if (encoding != null) { script = parser.parse(new InputStreamReader(scriptInputStream, encoding)); } else { script = parser.parse(scriptInputStream); } script = script.compile(); return script; } public static Expression decomposeExpression( String text, ExpressionFactory factory, JellyContext context) { Expression expression = null; try { expression = CompositeExpression.parse(text, factory); String expressionText = expression.evaluateAsString(context); if (CompositeExpression.parse(expressionText, factory) instanceof CompositeExpression) { expression = decomposeExpression(expressionText, factory, context); } } catch (Exception e) { // do nothing. } return expression; } }
-- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>
