<?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-86" dev="britter" type="update" due-to="Jonas Sprenger">
          Make CatalogFactory an interface
      </action>
      <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>
