<?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 dev="elijah" type="update" issue="CHAIN-75">
        Update serialVersionUID in all classes to a date based format.
      </action>
      <action dev="simonetripodi" type="update" issue="CHAIN-74">
        Improve Chain/Catalog use of Generics.
      </action>
      <action dev="simonetripodi" type="add" issue="CHAIN-73">
        Add a small EDSL to simplify Catalog setup.
      </action>
      <action dev="elijah" type="update" issue="CHAIN-71">
        Removed methods deprecated in 1.xx releases.
      </action>
      <action dev="simonetripodi" type="add" issue="CHAIN-70">
        Add a small EDSL to simplify Chain setup and execution.
      </action>
      <action dev="simonetripodi" type="fix" issue="CHAIN-69" due-to="Elijah Zupancic">
        Fixed Checkstyle / PMD Warnings
      </action>
      <action dev="simonetripodi" type="fix" issue="CHAIN-68" due-to="Elijah Zupancic">
        SNAPSHOT tomcat plugin breaks the build
      </action>
      <action dev="simonetripodi" type="add" issue="CHAIN-67" due-to="Elijah Zupancic">
        Refactor of explicit Exception throws to a RuntimeException type
      </action>
      <action dev="simonetripodi" type="add" issue="CHAIN-66" due-to="Elijah Zupancic">
        Updated Chain documentation to include new changes to the API
      </action>
      <action dev="simonetripodi" type="add" issue="CHAIN-65" due-to="Elijah Zupancic">
        Rename package org.apache.commons.chain to org.apache.commons.chain2 for v2 of chain.
      </action>
      <action dev="simonetripodi" type="add" issue="CHAIN-61" due-to="Elijah Zupancic">
        Chain 2.0 trunk build is throwing many warnings as a result of generification changes.
      </action>
      <action dev="simonetripodi" type="update" issue="CHAIN-58" due-to="Elijah Zupancic">
        Update Chain Context interface to use K,V generics
      </action>
      <action dev="simonetripodi" type="add" issue="CHAIN-56">
         clever Context with generic type "auto-cast" feature.
      </action>
      <action dev="simonetripodi" type="add" issue="CHAIN-55">
         split the huge project in submodules.
      </action>
      <action dev="simonetripodi" type="add" issue="CHAIN-53" due-to="Elijah Zupancic">
         Global Update of Chain - Generics, JDK 1.5, Update Dependency Versions.
      </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>
