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