<?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
SVN commits.  Set the project.properties' maven.changelog.range 
property to the number of days since the last release.


The <action> type attribute can be add,update,fix,remove.
-->
<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>Release Notes</title>
  </properties>

  <body>
    <release version="2.0" description="Major release">
      <action issue="CHAIN-108" dev="britter" type="update">
          Build fails with Java 6
      </action>
      <action issue="CHAIN-94" dev="britter" type="update" due-to="Jonas Sprenger">
          Refactor tests in class TestContextTestCase
      </action>
      <action issue="CHAIN-100" dev="britter" type="add">
          Add Maven PMD Plugin to the site build
      </action>
      <action issue="CHAIN-91" dev="britter" type="update">
          Split up CopyCommand
      </action>
      <action issue="CHAIN-93" dev="britter" type="add">
          Create test case for o.a.c.chain2.base.RemoveCommand
      </action>
      <action issue="CHAIN-92" dev="britter" type="add">
          Create a new module containing common test code and utilities
      </action>
      <action issue="CHAIN-88" dev="britter" type="update" due-to="Stephan Köninger">
          Refactor tests in class ContextBaseTestCase
      </action>
      <action issue="CHAIN-83" dev="britter" type="update">
          Rename o.a.c.chain2.generic package to o.a.c.chain2.base
      </action>
      <action issue="CHAIN-90" dev="britter" type="add">
          Create test for o.a.c.chain.generic.CopyCommand
      </action>
      <action issue="CHAIN-89" dev="britter" type="update">
          Combine XmlConfigParserTestCase and XmlConfigParser2TestCase into a parameterized test case
      </action>
      <action issue="CHAIN-87" dev="britter" type="update">
          Change method signature of ConfigParser.parse(URL)
      </action>
      <action issue="CHAIN-79" dev="simonetripodi" type="update">
        Extract APIs in a separate module from default core implementation
      </action>
      <action issue="CHAIN-78" dev="simonetripodi" type="update" due-to="Steve Westwood">
        Move to a more recent version of commons-parent POM
      </action>
      <action issue="CHAIN-75" dev="elijah" type="update">
        Update serialVersionUID in all classes to a date based format.
      </action>
      <action issue="CHAIN-74" dev="simonetripodi" type="update">
        Improve Chain/Catalog use of Generics.
      </action>
      <action issue="CHAIN-73" dev="simonetripodi" type="add">
        Add a small EDSL to simplify Catalog setup.
      </action>
      <action issue="CHAIN-72" dev="elijah" type="update">
        Refactored configuration module to a facade that supports multiple implementations.
      </action>
      <action issue="CHAIN-71" dev="elijah" type="update">
        Removed methods deprecated in 1.xx releases.
      </action>
      <action issue="CHAIN-70" dev="simonetripodi" type="add">
        Add a small EDSL to simplify Chain setup and execution.
      </action>
      <action issue="CHAIN-69" dev="simonetripodi" type="fix" due-to="Elijah Zupancic">
        Fixed Checkstyle / PMD Warnings
      </action>
      <action issue="CHAIN-68" dev="simonetripodi" type="fix" due-to="Elijah Zupancic">
        SNAPSHOT tomcat plugin breaks the build
      </action>
      <action issue="CHAIN-67" dev="simonetripodi" type="add" due-to="Elijah Zupancic">
        Refactor of explicit Exception throws to a RuntimeException type
      </action>
      <action issue="CHAIN-66" dev="simonetripodi" type="add" due-to="Elijah Zupancic">
        Updated Chain documentation to include new changes to the API
      </action>
      <action issue="CHAIN-65" dev="simonetripodi" type="add" due-to="Elijah Zupancic">
        Rename package org.apache.commons.chain to org.apache.commons.chain2 for v2 of chain.
      </action>
      <action issue="CHAIN-61" dev="simonetripodi" type="add" due-to="Elijah Zupancic">
        Chain 2.0 trunk build is throwing many warnings as a result of generification changes.
      </action>
      <action issue="CHAIN-58" dev="simonetripodi" type="update" due-to="Elijah Zupancic">
        Update Chain Context interface to use K,V generics
      </action>
      <action issue="CHAIN-56" dev="simonetripodi" type="add">
        clever Context with generic type "auto-cast" feature.
      </action>
      <action issue="CHAIN-55" dev="simonetripodi" type="add">
        split the huge project in submodules.
      </action>
      <action issue="CHAIN-53" dev="simonetripodi" type="add" due-to="Elijah Zupancic">
        Global Update of Chain - Generics, JDK 1.5, Update Dependency Versions.
      </action>
      <action issue="CHAIN-47" dev="elijah" type="fix">
        WebContext, ServletWebContext are now interfaces
      </action>
    </release>

    <release version="1.2" date="2008-06-02" description="OSGi enabled / minor bug fixes">
      <action dev="niallp" type="add">
         Chain 1.2 is the first OSGi-enabled release.
      </action>
      <action dev="niallp" type="add" issue="CHAIN-36">
         Add Example webapp for Servlet Mapper Commands
      </action>
      <action dev="rahul" type="update">
         Upgrade Commons Logging dependency to 1.1.1
      </action>
      <action dev="niallp" type="update" issue="CHAIN-32" due-to="Joshua Graham">
         Improve instantiation performance of ContextBase subclasses.
      </action>
      <action dev="niallp" type="update" issue="CHAIN-4" due-to="Joe Germuska">
         Update servlet implementation classes to be aware of CatalogFactory
      </action>
      <action dev="niallp" type="fix" issue="CHAIN-44" due-to="FindBugs">
         CatalogFactory instance variable prevents ChainProcessor from being serializable.
      </action>
      <action dev="niallp" type="fix" issue="CHAIN-43" due-to="Ales Dolecek">
         ChainListener URL translation does not work as expected.
      </action>
      <action dev="niallp" type="fix" issue="CHAIN-42" due-to="Isaac Shabtay">
         Various scope mappers use incorrect equalization.
      </action>
      <action dev="skitching" type="fix" issue="CHAIN-41" due-to="Isaac Shabtay">
         Ant build fails due to usage of old Digester.
      </action>
      <action dev="niallp" type="fix" issue="CHAIN-35">
         PathInfoMapper command can not obtain the current catalog instance.
      </action>
      <action dev="niallp" type="fix" issue="CHAIN-34" due-to="Mark Vedder">
         Unbalanced tags in JavaDoc for ContextBase class.
      </action>
      <action dev="niallp" type="fix" issue="CHAIN-33">
         Upgrade to Commons Digester 1.8 to fix bug loading webapp resources.
      </action>
      <action dev="niallp" type="fix">
         Corrections to the project.xml - mark servlet, portlet and myfaces dependencies
         as "optional" to prevent dependency problems for maven2 users.
      </action>
    </release>

    <release version="1.1" date="2006-06-14">
      <action dev="niallp" type="fix" issue="CHAIN-30">
         ServletSessionScopeMap always forces a Session to be Created.
      </action>
      <action dev="niallp" type="fix" issue="CHAIN-31">
         Portlet Map implementations' entry Set should contain Map.Entry elements.
      </action>
      <action dev="niallp" type="add" issue="CHAIN-28">
        Provide a Map of Cookies in the WebContext.
      </action>
      <action dev="niallp" type="fix" issue="CHAIN-29">
         Remove Static Log instances - see
         http://wiki.apache.org/commons/Logging/StaticLog
      </action>
      <action dev="niallp" type="fix" issue="CHAIN-11">
         Modify DispatchCommand so that it will compile using JDK 1.3 (remove JDK 1.4 method).
      </action>
      <action dev="germuska" type="fix">
         DispatchCommand - fix bug in handling InvocationTargetException.
      </action>
      <action dev="germuska" type="fix" issue="CHAIN-9" due-to="Wendy Smoak">
         Maven build updates.
      </action>
      <action dev="germuska" type="update">
         CatalogBase - add constructor which takes an already built map of commands, for easier use in dependency-injection environments.
      </action>
      <action dev="germuska" type="fix" issue="CHAIN-25">
         DispatchCommand should unwrap InvocationTargetException.
      </action>
      <action dev="germuska" type="update">
         Expose catalogFactory so that subclasses can get at it.
      </action>
      <action dev="germuska" type="update" issue="CHAIN-3">
         Decouple CatalogFactory lookup from LookupAction.
      </action>
      <action dev="craigmcc" type="fix" issue="CHAIN-12" due-to="Jeff Ramsdale and Dennis Lundberg">
         Make ContextBase live up to the Serializable contract that it inherits by virtue of extending HashMap.
      </action>
      <action dev="martinc" type="update">
         ChainResources - factor out the comma-delimited parsing into a separate method, fix the whitespace-skipping bugs in it.
      </action>
      <action dev="germuska" type="update">
         Add support for using LookupCommand in a way which does not pass through the result from the looked up command.
      </action>
      <action dev="jmitchell" type="add" issue="CHAIN-14" due-to="Sean Schofield">
         Add new DispatchLookupCommand.
      </action>
      <action dev="jmitchell" type="add" issue="CHAIN-26" due-to="Sean Schofield">
         Add new test for LookupCommand.
      </action>
      <action dev="germuska" type="add" issue="CHAIN-20">
         Add new  DispatchCommand.
      </action>
      <action dev="jmitchell" type="fix" issue="CHAIN-6" due-to="William Slough and Sean Schofield">
         CopyCommand does not work unless setValue is called.
      </action>
      <action dev="craigmcc" type="add" issue="CHAIN-19" due-to="Joe Germuska">
         Provide a  mechanism for encoding catalog and command in a single string
      </action>
      <action dev="martinc" type="fix" issue="CHAIN-1" due-to="Sergio Moretto">
         Code fragment from 'cookbook' is incorrect.
      </action>
    </release>

    <release version="1.0" date="2004-12-09" description="Initial Release">
      <action dev="mardon" type="fix" issue="CHAIN-5" due-to="Manfred Wolff">
         Make CatalogBase.getCommand() thread safe.
      </action>
      <action dev="craigmcc" type="update" issue="CHAIN-2" due-to="Sean Schofield">
         LookupCommand should use new CatalogFactory.
      </action>
      <action dev="craigmcc" type="fix" issue="CHAIN-10" due-to="Sean Schofield">
         Sample catalog.xml missing &lt;catalog&gt; tag.
      </action>
      <action dev="craigmcc" type="add" issue="CHAIN-7" due-to="Sean Schofield">
         Add missing new class ConfigCatalogRule.
      </action>
      <action dev="craigmcc" type="update" issue="CHAIN-21">
         Make the impl. class of chainbase configurable.
      </action>
      <action dev="craigmcc" type="fix" issue="CHAIN-23" due-to="Sean Schofield">
         Support for new CatalogFactory.
      </action>
      <action dev="martinc" type="fix" issue="CHAIN-8" due-to="Otis Gospodnetic">
         tabs to spaces, Log name fix.
      </action>
      <action dev="husted" type="fix" issue="CHAIN-15" due-to="Joe Germuska">
         build.properties.sample should add commons-logging.
      </action>
      <action dev="husted" type="update" issue="CHAIN-22" due-to="Matthew Sgarlata">
         Added JavaDoc and a toString() method to CatalogBase.
      </action>
    </release>
  </body>

</document>
