<?xml version="1.0"?>
<!--
 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.
-->

<!--
This file is used by the maven-changes-plugin to generate the release notes.
Useful ways of finding items to add to this file are:

1.  Add items when you fix a bug or add a feature (this makes the 
release process easy :-).

2.  Do a Jira search for tickets closed since the previous release.

3.  Use the report generated by the maven-changelog-plugin to see all
CVS commits.  Set the project.properties' maven.changelog.range 
property to the number of days since the last release.


To generate the release notes from this file:

mvn changes:announcement-generate -Prelease-notes [-Dchanges.version=nnn]

then tweak the source formatting if necessary and regenerate, then commit

The <action> type attribute can be add,update,fix,remove.
-->

<document>
  <properties>
    <title>Release Notes</title>
  </properties>

  <body>
    <!-- The release date is the date RC is cut -->
    <release version="1.4" date="2014-??-??" description="New features and bug fixes.">
      <action issue="JXPATH-184" dev="britter" type="update" >
        Update to Java 7
      </action>
      <action issue="JXPATH-172" dev="britter" type="update" due-to="Michele Vivoda">
        Clarify Javadoc of JXPathContext#getPointer
      </action>
      <action issue="JXPATH-113" dev="britter" type="fix" due-to="Michele Vivoda">
        NullPointerException in ChildContext when document only contains an empty root node
      </action>
      <action issue="JXPATH-160" dev="britter" type="fix" due-to="Stefan Albrecht, Michele Vivoda, Uwe Barthel">
        ValueUtils.getValue throws exception with set and index above size
      </action>
      <action issue="JXPATH-162" dev="britter" type="fix" due-to="Uwe Barthel">
        Concurrency problem for JXPathContextFactory.factoryImplName static field
      </action>
      <action issue="JXPATH-141" dev="mbenson" type="fix">
        FunctionLibrary Multithreading issue
      </action>
      <action issue="JXPATH-131" dev="mbenson" type="fix" due-to="Gabriel Buades Rubio">
        Bean exception handling
      </action>
      <action issue="JXPATH-128" dev="mbenson" type="fix" due-to="Gabriel Buades Rubio">
        JXPath support for LazyDynaBean is broken.
      </action>
      <action issue="JXPATH-129" dev="mbenson" type="fix">
        MethodLookupUtils#matchType uses TypeUtils#canConvert which causes "Ambiguous method call" exception.
      </action>
      <action issue="JXPATH-153" dev="mbenson" type="fix">
        Wrong entry IMPORT-PACKAGE in the file MANIFEST.MF for jdom and commons-beanutils
      </action>
      <action issue="JXPATH-153" dev="mbenson" type="update" due-to="John Trimble">
        Change dynamic class loading to consult context class loader.
      </action>
      <action issue="JXPATH-123" dev="mbenson" type="add">
        "ends-with" XPath function is not implemented (although "starts-with" is)
      </action>
      <action issue="JXPATH-152" dev="mbenson" type="fix">
        Concurrent access on hashmap of JXPathIntrospector
      </action>
    </release>
  </body>
</document>
