You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by se...@apache.org on 2011/11/30 15:42:48 UTC

svn commit: r1208451 - in /commons/proper/jexl/branches/2.0-API-COMPAT/src/main/java/org/apache/commons/jexl2: Interpreter.java JexlArithmetic.java JexlEngine.java UnifiedJEXL.java parser/ASTFloatLiteral.java parser/ASTIntegerLiteral.java

Author: sebb
Date: Wed Nov 30 14:42:47 2011
New Revision: 1208451

URL: http://svn.apache.org/viewvc?rev=1208451&view=rev
Log:
Initial set of fixes to improve binary compatibility

Added:
    commons/proper/jexl/branches/2.0-API-COMPAT/src/main/java/org/apache/commons/jexl2/parser/ASTFloatLiteral.java   (with props)
    commons/proper/jexl/branches/2.0-API-COMPAT/src/main/java/org/apache/commons/jexl2/parser/ASTIntegerLiteral.java   (with props)
Modified:
    commons/proper/jexl/branches/2.0-API-COMPAT/src/main/java/org/apache/commons/jexl2/Interpreter.java
    commons/proper/jexl/branches/2.0-API-COMPAT/src/main/java/org/apache/commons/jexl2/JexlArithmetic.java
    commons/proper/jexl/branches/2.0-API-COMPAT/src/main/java/org/apache/commons/jexl2/JexlEngine.java
    commons/proper/jexl/branches/2.0-API-COMPAT/src/main/java/org/apache/commons/jexl2/UnifiedJEXL.java

Modified: commons/proper/jexl/branches/2.0-API-COMPAT/src/main/java/org/apache/commons/jexl2/Interpreter.java
URL: http://svn.apache.org/viewvc/commons/proper/jexl/branches/2.0-API-COMPAT/src/main/java/org/apache/commons/jexl2/Interpreter.java?rev=1208451&r1=1208450&r2=1208451&view=diff
==============================================================================
--- commons/proper/jexl/branches/2.0-API-COMPAT/src/main/java/org/apache/commons/jexl2/Interpreter.java (original)
+++ commons/proper/jexl/branches/2.0-API-COMPAT/src/main/java/org/apache/commons/jexl2/Interpreter.java Wed Nov 30 14:42:47 2011
@@ -27,6 +27,8 @@ import java.util.Set;
 import org.apache.commons.jexl2.parser.SimpleNode;
 import org.apache.commons.logging.Log;
 
+import org.apache.commons.jexl2.parser.ASTFloatLiteral;
+import org.apache.commons.jexl2.parser.ASTIntegerLiteral;
 import org.apache.commons.jexl2.parser.JexlNode;
 import org.apache.commons.jexl2.parser.ASTAdditiveNode;
 import org.apache.commons.jexl2.parser.ASTAdditiveOperator;
@@ -861,6 +863,22 @@ public class Interpreter implements Pars
         }
     }
 
+    /**
+     * @deprecated Do not use
+     */
+    @Deprecated
+    public Object visit(ASTFloatLiteral node, Object data) {
+        throw new UnsupportedOperationException("Method should not be called; only present for API compatibiltiy");
+    }
+
+    /**
+     * @deprecated Do not use
+     */
+    @Deprecated
+    public Object visit(ASTIntegerLiteral node, Object data) {
+        throw new UnsupportedOperationException("Method should not be called; only present for API compatibiltiy");
+    }
+
     /** {@inheritDoc} */
     public Object visit(ASTVar node, Object data) {
         return visit((ASTIdentifier) node, data);

Modified: commons/proper/jexl/branches/2.0-API-COMPAT/src/main/java/org/apache/commons/jexl2/JexlArithmetic.java
URL: http://svn.apache.org/viewvc/commons/proper/jexl/branches/2.0-API-COMPAT/src/main/java/org/apache/commons/jexl2/JexlArithmetic.java?rev=1208451&r1=1208450&r2=1208451&view=diff
==============================================================================
--- commons/proper/jexl/branches/2.0-API-COMPAT/src/main/java/org/apache/commons/jexl2/JexlArithmetic.java (original)
+++ commons/proper/jexl/branches/2.0-API-COMPAT/src/main/java/org/apache/commons/jexl2/JexlArithmetic.java Wed Nov 30 14:42:47 2011
@@ -54,8 +54,9 @@ public class JexlArithmetic {
     protected static final BigInteger BIGI_LONG_MIN_VALUE = BigInteger.valueOf(Long.MIN_VALUE);
     /** Default BigDecimal scale. */
     protected static final int BIGD_SCALE = -1;
-    /** Whether this JexlArithmetic instance behaves in strict or lenient mode. */
-    protected final boolean strict;
+    /** Whether this JexlArithmetic instance behaves in strict or lenient mode. 
+     * DO NOT MODIFY - will be made final. */
+    protected boolean strict;
     /** The big decimal math context. */
     protected final MathContext mathContext;
     /** The big decimal scale. */

Modified: commons/proper/jexl/branches/2.0-API-COMPAT/src/main/java/org/apache/commons/jexl2/JexlEngine.java
URL: http://svn.apache.org/viewvc/commons/proper/jexl/branches/2.0-API-COMPAT/src/main/java/org/apache/commons/jexl2/JexlEngine.java?rev=1208451&r1=1208450&r2=1208451&view=diff
==============================================================================
--- commons/proper/jexl/branches/2.0-API-COMPAT/src/main/java/org/apache/commons/jexl2/JexlEngine.java (original)
+++ commons/proper/jexl/branches/2.0-API-COMPAT/src/main/java/org/apache/commons/jexl2/JexlEngine.java Wed Nov 30 14:42:47 2011
@@ -452,6 +452,26 @@ public class JexlEngine {
      * This method parses the script which validates the syntax.
      *
      * @param scriptText A String containing valid JEXL syntax
+     * @param info An info structure to carry debugging information if needed
+     * @return A {@link Script} which can be executed using a {@link JexlContext}.
+     * @throws JexlException if there is a problem parsing the script.
+     * @deprecated Use {@link #createScript(String, JexlInfo, String[])}
+     */
+    @Deprecated
+    public Script createScript(String scriptText, JexlInfo info) {
+        if (scriptText == null) {
+            throw new NullPointerException("scriptText is null");
+        }
+        // Parse the expression
+        ASTJexlScript tree = parse(scriptText, info);
+        return createScript(tree, scriptText);
+    }
+
+    /**
+     * Creates a Script from a String containing valid JEXL syntax.
+     * This method parses the script which validates the syntax.
+     *
+     * @param scriptText A String containing valid JEXL syntax
      * @param names the script parameter names
      * @return A {@link Script} which can be executed using a {@link JexlContext}.
      * @throws JexlException if there is a problem parsing the script.
@@ -1171,6 +1191,19 @@ public class JexlEngine {
      * Parses an expression.
      * @param expression the expression to parse
      * @param info debug information structure
+     * @return the parsed tree
+     * @throws JexlException if any error occured during parsing
+     * @deprecated Use {@link #parse(CharSequence, JexlInfo, Scope)} instead
+     */
+    @Deprecated
+    protected ASTJexlScript parse(CharSequence expression, JexlInfo info) {
+        return parse(expression, info, null);
+    }
+
+    /**
+     * Parses an expression.
+     * @param expression the expression to parse
+     * @param info debug information structure
      * @param frame the script frame to use
      * @return the parsed tree
      * @throws JexlException if any error occured during parsing

Modified: commons/proper/jexl/branches/2.0-API-COMPAT/src/main/java/org/apache/commons/jexl2/UnifiedJEXL.java
URL: http://svn.apache.org/viewvc/commons/proper/jexl/branches/2.0-API-COMPAT/src/main/java/org/apache/commons/jexl2/UnifiedJEXL.java?rev=1208451&r1=1208450&r2=1208451&view=diff
==============================================================================
--- commons/proper/jexl/branches/2.0-API-COMPAT/src/main/java/org/apache/commons/jexl2/UnifiedJEXL.java (original)
+++ commons/proper/jexl/branches/2.0-API-COMPAT/src/main/java/org/apache/commons/jexl2/UnifiedJEXL.java Wed Nov 30 14:42:47 2011
@@ -275,10 +275,11 @@ public final class UnifiedJEXL {
         /**
          * Formats this expression, adding its source string representation in
          * comments if available: 'expression /*= source *\/'' .
+         * <b>Note:</b> do not override; will be made final in a future release.
          * @return the formatted expression string
          */
         @Override
-        public final String toString() {
+        public String toString() {
             StringBuilder strb = new StringBuilder();
             asString(strb);
             if (source != this) {
@@ -340,11 +341,12 @@ public final class UnifiedJEXL {
          * <p>
          * If the underlying JEXL engine is silent, errors will be logged through its logger as warning.
          * </p>
+         * <b>Note:</b> do not override; will be made final in a future release.
          * @param context the context to use for immediate expression evaluations
          * @return an expression or null if an error occurs and the {@link JexlEngine} is running in silent mode
          * @throws UnifiedJEXL.Exception if an error occurs and the {@link JexlEngine} is not in silent mode
          */
-        public final Expression prepare(JexlContext context) {
+        public Expression prepare(JexlContext context) {
             try {
                 Interpreter interpreter = new Interpreter(jexl, context, !jexl.isLenient(), jexl.isSilent());
                 if (context instanceof TemplateContext) {
@@ -366,12 +368,13 @@ public final class UnifiedJEXL {
          * <p>
          * If the underlying JEXL engine is silent, errors will be logged through its logger as warning.
          * </p>
+         * <b>Note:</b> do not override; will be made final in a future release.
          * @param context the variable context
          * @return the result of this expression evaluation or null if an error occurs and the {@link JexlEngine} is
          * running in silent mode
          * @throws UnifiedJEXL.Exception if an error occurs and the {@link JexlEngine} is not silent
          */
-        public final Object evaluate(JexlContext context) {
+        public Object evaluate(JexlContext context) {
             try {
                 Interpreter interpreter = new Interpreter(jexl, context, !jexl.isLenient(), jexl.isSilent());
                 if (context instanceof TemplateContext) {

Added: commons/proper/jexl/branches/2.0-API-COMPAT/src/main/java/org/apache/commons/jexl2/parser/ASTFloatLiteral.java
URL: http://svn.apache.org/viewvc/commons/proper/jexl/branches/2.0-API-COMPAT/src/main/java/org/apache/commons/jexl2/parser/ASTFloatLiteral.java?rev=1208451&view=auto
==============================================================================
--- commons/proper/jexl/branches/2.0-API-COMPAT/src/main/java/org/apache/commons/jexl2/parser/ASTFloatLiteral.java (added)
+++ commons/proper/jexl/branches/2.0-API-COMPAT/src/main/java/org/apache/commons/jexl2/parser/ASTFloatLiteral.java Wed Nov 30 14:42:47 2011
@@ -0,0 +1,48 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.jexl2.parser;
+
+/**
+ * @deprecated Only for use in maintaining binary compatibility - should not actually be used
+ */
+@Deprecated
+public final class ASTFloatLiteral extends JexlNode implements JexlNode.Literal<Float> {
+    /** The type literal value. */
+    Float literal = null;
+
+    public ASTFloatLiteral(int id) {
+        super(id);
+    }
+
+    public ASTFloatLiteral(Parser p, int id) {
+        super(p, id);
+    }
+    
+    /**
+     * Gets the literal value.
+     * @return the float literal
+     */
+    public Float getLiteral() {
+        return literal;
+    }
+    
+    /** {@inheritDoc} */
+    @Override
+    public Object jjtAccept(ParserVisitor visitor, Object data) {
+        return visitor.visit(this, data);
+    }
+}

Propchange: commons/proper/jexl/branches/2.0-API-COMPAT/src/main/java/org/apache/commons/jexl2/parser/ASTFloatLiteral.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: commons/proper/jexl/branches/2.0-API-COMPAT/src/main/java/org/apache/commons/jexl2/parser/ASTFloatLiteral.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Added: commons/proper/jexl/branches/2.0-API-COMPAT/src/main/java/org/apache/commons/jexl2/parser/ASTIntegerLiteral.java
URL: http://svn.apache.org/viewvc/commons/proper/jexl/branches/2.0-API-COMPAT/src/main/java/org/apache/commons/jexl2/parser/ASTIntegerLiteral.java?rev=1208451&view=auto
==============================================================================
--- commons/proper/jexl/branches/2.0-API-COMPAT/src/main/java/org/apache/commons/jexl2/parser/ASTIntegerLiteral.java (added)
+++ commons/proper/jexl/branches/2.0-API-COMPAT/src/main/java/org/apache/commons/jexl2/parser/ASTIntegerLiteral.java Wed Nov 30 14:42:47 2011
@@ -0,0 +1,48 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.jexl2.parser;
+
+/**
+ * @deprecated Only for use in maintaining binary compatibility - should not actually be used
+ */
+@Deprecated
+public final class ASTIntegerLiteral extends JexlNode implements JexlNode.Literal<Integer> {
+    /** The type literal value. */
+    Integer literal = null;
+
+    ASTIntegerLiteral(int id) {
+        super(id);
+    }
+
+    ASTIntegerLiteral(Parser p, int id) {
+        super(p, id);
+    }
+    
+    /**
+     * Gets the literal value.
+     * @return the integer literal
+     */
+    public Integer getLiteral() {
+        return literal;
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public Object jjtAccept(ParserVisitor visitor, Object data) {
+        return visitor.visit(this, data);
+    }
+}

Propchange: commons/proper/jexl/branches/2.0-API-COMPAT/src/main/java/org/apache/commons/jexl2/parser/ASTIntegerLiteral.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: commons/proper/jexl/branches/2.0-API-COMPAT/src/main/java/org/apache/commons/jexl2/parser/ASTIntegerLiteral.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision