You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by di...@apache.org on 2006/02/27 01:14:51 UTC
svn commit: r381203 - in
/jakarta/commons/proper/jexl/trunk/src/java/org/apache/commons/jexl:
ExpressionFactory.java parser/ASTIfStatement.java
Author: dion
Date: Sun Feb 26 16:14:47 2006
New Revision: 381203
URL: http://svn.apache.org/viewcvs?rev=381203&view=rev
Log:
Start work on if statement
Modified:
jakarta/commons/proper/jexl/trunk/src/java/org/apache/commons/jexl/ExpressionFactory.java
jakarta/commons/proper/jexl/trunk/src/java/org/apache/commons/jexl/parser/ASTIfStatement.java
Modified: jakarta/commons/proper/jexl/trunk/src/java/org/apache/commons/jexl/ExpressionFactory.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/jexl/trunk/src/java/org/apache/commons/jexl/ExpressionFactory.java?rev=381203&r1=381202&r2=381203&view=diff
==============================================================================
--- jakarta/commons/proper/jexl/trunk/src/java/org/apache/commons/jexl/ExpressionFactory.java (original)
+++ jakarta/commons/proper/jexl/trunk/src/java/org/apache/commons/jexl/ExpressionFactory.java Sun Feb 26 16:14:47 2006
@@ -18,6 +18,7 @@
import java.io.StringReader;
import org.apache.commons.jexl.parser.ASTExpressionExpression;
+import org.apache.commons.jexl.parser.ASTIfStatement;
import org.apache.commons.jexl.parser.ASTReferenceExpression;
import org.apache.commons.jexl.parser.ASTStatementExpression;
import org.apache.commons.jexl.parser.Parser;
@@ -130,6 +131,10 @@
Expression e = new ExpressionImpl(expression, node);
return e;
+ }
+ else if (node instanceof ASTIfStatement)
+ {
+ return new ExpressionImpl(expression, node);
}
log.error( "Invalid Expression, node of type: " + node.getClass().getName() );
throw new Exception("Invalid Expression: neither Reference nor Expression");
Modified: jakarta/commons/proper/jexl/trunk/src/java/org/apache/commons/jexl/parser/ASTIfStatement.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/jexl/trunk/src/java/org/apache/commons/jexl/parser/ASTIfStatement.java?rev=381203&r1=381202&r2=381203&view=diff
==============================================================================
--- jakarta/commons/proper/jexl/trunk/src/java/org/apache/commons/jexl/parser/ASTIfStatement.java (original)
+++ jakarta/commons/proper/jexl/trunk/src/java/org/apache/commons/jexl/parser/ASTIfStatement.java Sun Feb 26 16:14:47 2006
@@ -1,19 +1,60 @@
/* Generated By:JJTree: Do not edit this line. ASTIfStatement.java */
+/*
+ * Copyright 2002,2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.apache.commons.jexl.parser;
+import org.apache.commons.jexl.JexlContext;
+import org.apache.commons.jexl.util.Coercion;
+
+/**
+ * if ( expression ) statement [else statement]
+ *
+ * @author Dion Gillard
+ * @since 1.0.1
+ */
public class ASTIfStatement extends SimpleNode {
- public ASTIfStatement(int id) {
- super(id);
- }
-
- public ASTIfStatement(Parser p, int id) {
- super(p, id);
- }
+ public ASTIfStatement(int id) {
+ super(id);
+ }
+
+ public ASTIfStatement(Parser p, int id) {
+ super(p, id);
+ }
+
+ /** Accept the visitor. * */
+ public Object jjtAccept(ParserVisitor visitor, Object data) {
+ return visitor.visit(this, data);
+ }
+
+ public Object value(JexlContext jc) throws Exception {
+ Object result = null;
+ /* first child is the expression */
+ Object expression = ((SimpleNode) jjtGetChild(0)).value(jc);
+ if (Coercion.coerceBoolean(expression).booleanValue()) {
+ // true statement
+ result = ((SimpleNode) jjtGetChild(1)).value(jc);
+ } else {
+ // if there is a false, execute it
+ if (jjtGetNumChildren() == 3) {
+ result = ((SimpleNode) jjtGetChild(2)).value(jc);
+ }
+ }
+ return result;
+ }
- /** Accept the visitor. **/
- public Object jjtAccept(ParserVisitor visitor, Object data) {
- return visitor.visit(this, data);
- }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org