org.apache.commons.jexl2
Class JexlThreadedArithmetic

java.lang.Object
  extended by org.apache.commons.jexl2.JexlArithmetic
      extended by org.apache.commons.jexl2.JexlThreadedArithmetic

public class JexlThreadedArithmetic
extends JexlArithmetic

A derived arithmetic that allows different threads to operate with different strict/lenient/math modes using the same JexlEngine.

Since:
2.1

Field Summary
 
Fields inherited from class org.apache.commons.jexl2.JexlArithmetic
BIGD_DOUBLE_MAX_VALUE, BIGD_DOUBLE_MIN_VALUE, BIGD_SCALE, BIGI_LONG_MAX_VALUE, BIGI_LONG_MIN_VALUE, mathContext, mathScale
 
Constructor Summary
JexlThreadedArithmetic(boolean lenient)
          Standard ctor.
JexlThreadedArithmetic(boolean lenient, MathContext bigdContext, int bigdScale)
          Creates a JexlThreadedArithmetic instance.
 
Method Summary
 MathContext getMathContext()
          The MathContext instance used for +,-,/,*,% operations on big decimals.
 int getMathScale()
          The BigDecimal scale used for comparison and coercion operations.
 boolean isLenient()
          Checks whether this JexlArithmetic instance triggers errors during evaluation when null is used as an operand.
static void setLenient(Boolean flag)
          Overrides the default behavior and sets whether this JexlArithmetic instance triggers errors during evaluation when null is used as an operand for the current thread.
static void setMathContext(MathContext mc)
          Sets the math context.
static void setMathScale(Integer scale)
          Sets the math scale.
 
Methods inherited from class org.apache.commons.jexl2.JexlArithmetic
add, bitwiseAnd, bitwiseComplement, bitwiseOr, bitwiseXor, compare, controlNullNullOperands, controlNullOperand, divide, equals, greaterThan, greaterThanOrEqual, isFloatingPoint, isFloatingPointNumber, isFloatingPointType, isNumberable, lessThan, lessThanOrEqual, matches, mod, multiply, narrow, narrowAccept, narrowArguments, narrowArrayType, narrowBigDecimal, narrowBigInteger, narrowNumber, negate, roundBigDecimal, subtract, toBigDecimal, toBigInteger, toBoolean, toDouble, toInteger, toLong, toString
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

JexlThreadedArithmetic

public JexlThreadedArithmetic(boolean lenient)
Standard ctor.

Parameters:
lenient - lenient versus strict evaluation flag

JexlThreadedArithmetic

public JexlThreadedArithmetic(boolean lenient,
                              MathContext bigdContext,
                              int bigdScale)
Creates a JexlThreadedArithmetic instance.

Parameters:
lenient - whether this arithmetic is lenient or strict
bigdContext - the math context instance to use for +,-,/,*,% operations on big decimals.
bigdScale - the scale used for big decimals.
Method Detail

setLenient

public static void setLenient(Boolean flag)
Overrides the default behavior and sets whether this JexlArithmetic instance triggers errors during evaluation when null is used as an operand for the current thread.

It is advised to protect calls by either calling JexlThreadedArithmetic.setLenient explicitly before evaluation or add a try/finally clause resetting the flag to avoid unexpected reuse of the lenient flag value through thread pools side-effects.

Parameters:
flag - true means no JexlException will occur, false allows them, null reverts to default behavior
See Also:
JexlEngine.setSilent(boolean), JexlEngine.setDebug(boolean)

setMathScale

public static void setMathScale(Integer scale)
Sets the math scale.

The goal and constraints are the same than for setLenient.

Parameters:
scale - the scale

setMathContext

public static void setMathContext(MathContext mc)
Sets the math context.

The goal and constraints are the same than for setLenient.

Parameters:
mc - the math context

isLenient

public boolean isLenient()
Checks whether this JexlArithmetic instance triggers errors during evaluation when null is used as an operand.

Overrides:
isLenient in class JexlArithmetic
Returns:
true if lenient, false if strict

getMathScale

public int getMathScale()
Description copied from class: JexlArithmetic
The BigDecimal scale used for comparison and coercion operations.

Overrides:
getMathScale in class JexlArithmetic
Returns:
the scale

getMathContext

public MathContext getMathContext()
Description copied from class: JexlArithmetic
The MathContext instance used for +,-,/,*,% operations on big decimals.

Overrides:
getMathContext in class JexlArithmetic
Returns:
the math context


Copyright © 2001-2011 The Apache Software Foundation. All Rights Reserved.