OGNL 2.7.2 Released

Not knowing where else to announce it I thought I should mention that version 2.7.2 of OGNL was quietly released yesterday and is now available via ibiblio. Special thanks to Toby Tmjee for his recent contributions and help on the project.

The number of issues being reported related to expression compilation seems to have gone way down - so it may tentatively be safe to say this feature is “becoming stable”.

The javacc grammar parser code was also re-generated for this recent release using some of the new improvements that Tom Copeland mentions here.

As I’ve not really done a good job posting updates about releases I’ll go ahead and dump the full 2.7 - 2.7.2 jira issue log here as well. The good majority of issues fixed have been related to the expression compiler work - but there is still a lot of good stuff in there that projects using it without expression compilation will still find very useful. (from straight up bug fixes to substantial performance / concurrency improvements and even full Java 5 support for generics and varargs)

Release Notes - OGNL - Version 2.7.2

Bug

  • [OGNL-80] - CastCastException when setting properties on objects that use generics in superclass properties
  • [OGNL-121] - Race condition in SimpleNode#evaluateGetValueBody(OgnlContext, Object)
  • [OGNL-122] - OGNL Double to BigDecimal type conversion
  • [OGNL-124] - When OgnlException is wrapped in another exception, any exception wrapped by the OgnlException appears to be swallowed
  • [OGNL-125] - When OgnlException is wrapped in another exception, any exception wrapped by the OgnlException appears to be swallowed
  • [OGNL-126] - Don’t call setter properly
  • [OGNL-127] - can’t find methods with varargs parameter
  • [OGNL-128] - remainder expression doesn’t look for child syntax expressions
  • [OGNL-129] - Collision property and method with same name
  • [OGNL-130] - Array syntax error
  • [OGNL-134] - primitive character conversion in statement compilation
  • [OGNL-136] - Ignore synthetic methods when using getDeclaredMethods()
  • [OGNL-141] - Very serious OgnlRuntime scalability and concurrency bug in versions greater than 2.6.10
  • [OGNL-142] - scope=provided on javassist dependency leads to NoClassDefFoundError

New Feature

  • [OGNL-7] - Full Java 5 Support for OGNL

Task

  • [OGNL-133] - bring back old OgnlContext.callMethod parameter
  • [OGNL-137] - Port OGNL docs from ogn.org to OpenSymphony’s OGNL confluence space

Release Notes - OGNL - Version 2.7.1

Bug

  • [OGNL-96] - object equality b0rken
  • [OGNL-97] - Compile OGNL expressions often require #this
  • [OGNL-98] - Simple ognl expressions like comparison “==” or divide “/” cause errors
  • [OGNL-103] - Unable to find correct readMethod named is…()
  • [OGNL-104] - object equality still broken
  • [OGNL-105] - Compiled OGNL using bracket notation requires #this
  • [OGNL-106] - Null Pointer Exception when parsing enum constant
  • [OGNL-107] - CLONE -ClassCastException in ASTChain
  • [OGNL-108] - Console Stack traces when using instanceof in OGNL
  • [OGNL-110] - Subtracting or multiplying two doubles causes error in log, though the calculation is correct
  • [OGNL-112] - Unable to find getter when multiple getters exist with similar naming
  • [OGNL-113] - Object with null toString() causes NPE in OGNL
  • [OGNL-114] - fails method name resolution for boolean JavaBean properties

Release Notes - OGNL - Version 2.7

Bug

  • [OGNL-6] - When setting fields type conversion returning null falsly reports a NoSuchPropertyException
  • [OGNL-9] - Cannot handle hivemind’s messages.format
  • [OGNL-10] - Calling methods with parameters containing more calls ?
  • [OGNL-11] - ClassCastException in ASTChain
  • [OGNL-12] - expression compilation problem
  • [OGNL-13] - Class loading issue with in OGNL 2.6.7+ when multiple classloaders
  • [OGNL-14] - Ternary expression, NPE
  • [OGNL-16] - Unable to parse OGNL expressio
  • [OGNL-17] - OR expression compile error
  • [OGNL-18] - bad array index selectedPresenters[index]
  • [OGNL-19] - expression concatenated via “and” / “&&” is not evaluated correctly
  • [OGNL-20] - expressions compilation complains about a null setter body
  • [OGNL-21] - another “setter body: null ” error
  • [OGNL-25] - Expression stop working in Tapestry 4.1.2
  • [OGNL-26] - Try to access to the hidden class java.util.HashMap$Entry
  • [OGNL-27] - Bug in new version of OGNL
  • [OGNL-28] - CLONE -OR expression compile error
  • [OGNL-29] - String concatenation of different types fails in ternary expression
  • [OGNL-30] - NOT with OR fails
  • [OGNL-31] - Caching problem when looping over different implementations of the same interface
  • [OGNL-32] - Contatenation of single character string results in wrong outcome
  • [OGNL-33] - problem evaluating an expression on an abstract class not implementing all methods of an implemented interface
  • [OGNL-35] - CLONE -expression concatenated via “and” / “&&” is not evaluated correctly
  • [OGNL-36] - Another “getter body: null setter body: null ” Error in combination with “||”
  • [OGNL-37] - messages.format with 3 parameters causes ArrayIndexOutOfBoundsException
  • [OGNL-38] - CLONE -NOT with OR fails
  • [OGNL-39] - Ternary expression with date formatting causes Mismatched stack types error
  • [OGNL-40] - Error appending strings
  • [OGNL-41] - javassist CannotCompileException for Expression ” value || !okOnly “
  • [OGNL-43] - getValue() not called on second parameter to && if the first returns true
  • [OGNL-44] - Appending a Long, String, and int results in error
  • [OGNL-46] - CLONE -Caching problem when looping over different implementations of the same interface
  • [OGNL-47] - Using a property from an enum constant as a method argument fails
  • [OGNL-48] - ognl string concatenation + static syntax does not render properly
  • [OGNL-49] - VerifyError: wrong return type in function
  • [OGNL-50] - Nullcheck with && and ! fails
  • [OGNL-52] - setAccessible(false) threading bug
  • [OGNL-53] - OR fails with boolean expression as first condition
  • [OGNL-54] - Calling method of object and passing a ‘conditional’ expression as parameter
  • [OGNL-55] - Calling method of object with String parameter
  • [OGNL-56] - the NOT of complex expression fails
  • [OGNL-57] - The compilation of expressions with negate symbol (!) causes javassist exception
  • [OGNL-58] - Ternary that appends multiple types fails
  • [OGNL-59] - Target is null for method
  • [OGNL-60] - messages.format with one parameter on a component fails
  • [OGNL-61] - Method call gets some (javassist?) code fragment passed as argument instead of the evaluated expression
  • [OGNL-62] - Boolean property with is() and toggle() methods causes failsafe error
  • [OGNL-63] - IllegalArgumentException
  • [OGNL-64] - Appending a Long with dot notation, a String, and an int creates failsafe error
  • [OGNL-65] - OR expression with && and comparisons causes failsafe error
  • [OGNL-66] - Ternary evaluates unused expression
  • [OGNL-67] - Invalid Types error for inequality operator (!=) when used in Ternary Expression
  • [OGNL-69] - Tapestry Exception with a map object
  • [OGNL-70] - CLONE -Ternary evaluates unused expression
  • [OGNL-72] - Wrong return type in function
  • [OGNL-73] - Ternary evaluates unused expression with date formatting
  • [OGNL-74] - Error in ASTProperty when running in JDK1.4
  • [OGNL-75] - Ognl Exception source is null for getProperty(null, “mapKey”) when using split on a map
  • [OGNL-76] - Iterating over an Object Array in a For causes NoClassDefFoundError
  • [OGNL-77] - javassist classname error
  • [OGNL-78] - Appending strings in ternary causes failsafe error
  • [OGNL-81] - Boolean expression not evaluated
  • [OGNL-82] - java.lang.Integer.valueOf() failling in 1.4 jre
  • [OGNL-83] - Can’t get object properties returned from Map
  • [OGNL-84] - Indexed expressions (”prop[index]“) do not lookup for the getProp(int index) method in the right class
  • [OGNL-85] - constructor signature matching problem (int <-> java.lang.Integer)
  • [OGNL-86] - use of incorrect expression root object in some arithmetic expressions
  • [OGNL-87] - Get an ognl.InappropriateExpressionException when negating a boolean
  • [OGNL-89] - expression compilation problem
  • [OGNL-90] - cannot create empty list using {}
  • [OGNL-91] - compilation problem in case of minus operator
  • [OGNL-92] - “incompatible array types” with enum values
  • [OGNL-93] - expression compilation problem
  • [OGNL-94] - Tacos:Tree does not work with the current snapshot

Improvement

  • [OGNL-3] - Allow setter properties to have another return type than VOID
  • [OGNL-15] - public abstract Boolean getQuery() vs isQuery()

Leave a Comment