<?xml version="1.0" encoding="UTF-8"?>
<!--
     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.
  -->
<document xmlns="http://maven.apache.org/changes/1.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/changes/1.0.0 http://maven.apache.org/plugins/maven-changes-plugin/xsd/changes-1.0.0.xsd">
  <properties>
    <title>Commons OGNL Changes</title>
  </properties>
  <body>
    <release version="4.0-incubating" date="TBD" description="First ASF release under Incubation.">
      <action issue="" type="update" dev="nhojpatrick">
        Upgrade to JUnit v4.13.1
      </action>
      <action issue="OGNL-39" type="update" dev="mcucchiara">
        Simplify OgnlRuntime: Greatly simplified OgnlRuntime, delegating away responsibilities to several new classes.
        Caching responsibilities are now taken by a new OgnlCache class.
        Added new classes PrimitiveWrapperClasses, NumericCasts, PrimitiveDefaults, NumericValues, PrimitiveTypes,
        NumericLiterals and NumericDefaults. (contributed by Adrian Cumiskey).
      </action>
      <action issue="OGNL-38" type="update" dev="mcucchiara">Use StringBuilder instead of StringBuffer, deprecate
        >=JDK1.5 conditionals and use CONSTANT.equals(variable) (contributed by Adrian Cumiskey).
      </action>
      <action issue="OGNL-37" type="fix" dev="mcucchiara">Findbugs fixes (contributed by Adrian Cumiskey).</action>
      <action issue="OGNL-35" type="update" dev="mcucchiara">Improvements to {List,Map,Array}PropertyAccessor and
        ASTProperty (contributed by Adrian Cumiskey).
      </action>
      <action issue="OGNL-36" type="fix" dev="mcucchiara">Link "Benchmarks" on left hand navigation is broken
        (contributed by Adrian Cumiskey).
      </action>
      <action issue="OGNL-33" type="update" dev="mcucchiara">Improvements to JJTOgnlParserState (contributed by Adrian
        Cumiskey).
      </action>
      <action issue="OGNL-32" type="update" dev="mcucchiara">CPD fix to ASTProperty (contributed by Adrian Cumiskey).
      </action>
      <action issue="OGNL-31" type="update" dev="mcucchiara">Some CPD fixes around ASTMethod and ASTStaticMethod
        (contributed by Adrian Cumiskey).
      </action>
      <action issue="OGNL-28" type="update" dev="mcucchiara">Visitor pattern needs way to propagate exceptions
        (contributed by Daniel Pitts).
      </action>
      <action issue="OGNL-27" type="update" dev="simonetripodi">Move "toString" implementations into visitor pattern
        (contributed by Daniel Pitts).
      </action>
      <action issue="OGNL-26" type="update" dev="grobmeier">JUnit Tests produce confusing output.</action>
      <action issue="OGNL-23" type="fix" dev="simonetripodi">Class.forName() usage is malicious inside OSGi (contributed
        by Adrian Cumiskey)
      </action>
      <action issue="OGNL-22" type="update" dev="mcucchiara">Change the generics signature of ClassCache and
        ClassCacheImpl (with contributions by Daniel Pitts)
      </action>
      <action issue="OGNL-21" type="update" dev="grobmeier">Remove dead and broken code from OgnlRuntime/SimpleNode
        (with contributions by Daniel Pitts)
      </action>
      <action issue="OGNL-20" type="update" dev="mcucchiara, simonetripodi">Performance - Replace synchronized blocks
        with ReentrantReadWriteLock (with contributions by Daniel Pitts)
      </action>
      <action issue="OGNL-24" type="update" dev="grobmeier">Support visitor pattern on AST (contributed by Daniel Pitts)
      </action>
      <action issue="OGNL-17" type="update" dev="mcucchiara">Links "Download" and "Release Notes" do not work</action>
      <action issue="OGNL-15" type="update" dev="simonetripodi">OGNL needs a new Logo</action>
      <action issue="OGNL-14" type="update" dev="mcucchiara">Documentation site has to be published</action>
      <action issue="OGNL-13" type="update" dev="simonetripodi">Ant maintenance</action>
      <action issue="OGNL-10" type="update" dev="simonetripodi">Update the User/Developer guide according the Commons
        standard
      </action>
      <action issue="OGNL-9" type="update" dev="mcucchiara, simonetripodi">Upgrade JUnit to version4</action>
      <action issue="OGNL-8" type="update" dev="grobmeier">enabled generation of javacc Parser classes</action>
      <action issue="OGNL-6" type="update" dev="simonetripodi">Upgrade groupId/artifactId/version on pom</action>
      <action issue="OGNL-2" type="update" dev="">Update legals to all OGNL file</action>
      <action issue="OGNL-1" type="update" dev="lukaszlenart">Import the OGNL codebase</action>
    </release>
  </body>
</document>
