You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by br...@apache.org on 2006/03/11 11:35:16 UTC
svn commit: r385051 -
/cocoon/trunk/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/expression/AbstractStringTemplateParser.java
Author: bruno
Date: Sat Mar 11 02:35:15 2006
New Revision: 385051
URL: http://svn.apache.org/viewcvs?rev=385051&view=rev
Log:
Missing file in previous commit (Sharing template block with 2.1: step 1: make StringTemplateParser an interface)
Added:
cocoon/trunk/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/expression/AbstractStringTemplateParser.java (with props)
Added: cocoon/trunk/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/expression/AbstractStringTemplateParser.java
URL: http://svn.apache.org/viewcvs/cocoon/trunk/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/expression/AbstractStringTemplateParser.java?rev=385051&view=auto
==============================================================================
--- cocoon/trunk/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/expression/AbstractStringTemplateParser.java (added)
+++ cocoon/trunk/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/expression/AbstractStringTemplateParser.java Sat Mar 11 02:35:15 2006
@@ -0,0 +1,100 @@
+/*
+ * $Id: StringTemplateParser.java 325973 2005-10-17 19:59:39Z lgawron $
+ *
+ * Created on 2005-09-06
+ *
+ * Copyright (c) 2005, MobileBox sp. z o.o.
+ * All rights reserved.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS 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 COPYRIGHT OWNER OR
+ * 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.
+ */
+package org.apache.cocoon.template.expression;
+
+import java.io.Reader;
+import java.io.StringReader;
+import java.util.List;
+
+import org.apache.avalon.framework.activity.Disposable;
+import org.apache.avalon.framework.logger.AbstractLogEnabled;
+import org.apache.avalon.framework.service.ServiceException;
+import org.apache.avalon.framework.service.ServiceManager;
+import org.apache.avalon.framework.service.Serviceable;
+import org.apache.avalon.framework.thread.ThreadSafe;
+import org.apache.cocoon.components.expression.ExpressionFactory;
+import org.apache.cocoon.template.environment.ErrorHolder;
+import org.xml.sax.Locator;
+import org.xml.sax.SAXException;
+import org.xml.sax.SAXParseException;
+
+public abstract class AbstractStringTemplateParser extends AbstractLogEnabled
+ implements Serviceable, Disposable,ThreadSafe, StringTemplateParser {
+
+ private ServiceManager manager;
+ private ExpressionFactory expressionFactory;
+
+ public void service(ServiceManager manager) throws ServiceException {
+ this.manager = manager;
+ this.expressionFactory = (ExpressionFactory) this.manager.lookup(ExpressionFactory.ROLE);
+ }
+
+ public void dispose() {
+ this.manager.release(this.expressionFactory);
+ }
+
+ protected JXTExpression compile(final String expression) throws Exception {
+ return new JXTExpression(expression, this.expressionFactory.getExpression(expression));
+ }
+
+ protected JXTExpression compile(final String expression, String language) throws Exception {
+ return new JXTExpression(expression, this.expressionFactory.getExpression(language, expression));
+ }
+
+ public JXTExpression compileBoolean(String val, String msg, Locator location) throws SAXException {
+ JXTExpression res = compileExpr(val, msg, location);
+ if (res != null && res.getCompiledExpression() == null && res.getRaw() != null) {
+ res.setCompiledExpression(Boolean.valueOf(res.getRaw()));
+ }
+ return res;
+ }
+
+ public JXTExpression compileInt(String val, String msg, Locator location) throws SAXException {
+ JXTExpression res = compileExpr(val, msg, location);
+ if (res != null && res.getCompiledExpression() == null && res.getRaw() != null) {
+ res.setCompiledExpression(Integer.valueOf(res.getRaw()));
+ }
+ return res;
+ }
+
+ public JXTExpression compileExpr(String inStr, String errorPrefix, Locator location) throws SAXParseException {
+ if (inStr == null) {
+ return null;
+ }
+ StringReader in = new StringReader(inStr.trim());
+ List substitutions = parseSubstitutions(in, errorPrefix, location);
+ if (substitutions.size() == 0 || !(substitutions.get(0) instanceof JXTExpression))
+ return new JXTExpression(inStr, null);
+
+ return (JXTExpression) substitutions.get(0);
+ }
+
+ public List parseSubstitutions(Reader in, String errorPrefix, Locator location) throws SAXParseException {
+ try {
+ return parseSubstitutions(in);
+ } catch (Exception exc) {
+ throw new SAXParseException(errorPrefix + exc.getMessage(), location, exc);
+ } catch (Error err) {
+ throw new SAXParseException(errorPrefix + err.getMessage(), location, new ErrorHolder(err));
+ }
+ }
+
+}
Propchange: cocoon/trunk/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/expression/AbstractStringTemplateParser.java
------------------------------------------------------------------------------
svn:eol-style = native