<?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
        greater than JDK 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>
      <!-- UPDATE -->
      <action type="update" dev="ggregory" due-to="Dependabot">Bump build-helper-maven-plugin from 3.2.0 to 3.3.0 #61.</action>
      <action type="update" dev="ggregory" due-to="Dependabot">Bump h2 from 2.0.202 to 2.1.210 #57, #62.</action>
      <action type="update" dev="ggregory" due-to="Dependabot">Bump ognl from 3.3.0 to 3.3.2 #59.</action>
      <action type="update" dev="ggregory" due-to="Dependabot">Bump maven-javadoc-plugin 3.2.0 from to 3.3.1.</action>
      <action type="update" dev="ggregory" due-to="Dependabot">Bump slf4j-api from 1.7.32 to 1.7.36 #66.</action>
      <action type="update" dev="ggregory" due-to="Dependabot">Bump actions/checkout from 2 to 3 #68.</action>
      <action type="update" dev="ggregory" due-to="Dependabot">Bump taglist-maven-plugin from 2.4 to 3.0.0 #65.</action>
      <action type="update" dev="ggregory" due-to="Dependabot">Bump maven-jar-plugin from 3.2.1 to 3.2.2 #63.</action>
      <action type="update" dev="ggregory" due-to="Dependabot">Bump actions/setup-java from 2 to 3 #70.</action>
      <action type="update" dev="ggregory" due-to="Dependabot">Bump commons-parent from 52 to 53 #69.</action>
         
    </release>
  </body>
</document>
