<?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.
-->
<document>
  <properties>
    <title>Fulcrum Localization</title>
    <author email="epugh@upstate.com">Eric Pugh</author>
  </properties>

  <body>
    <release version="1.0.6" date="2009-06-18">
      <action dev="tv" type="add">
        Added a Maven-2 build.
      </action>
      <action dev="tv" type="add">
        Split the service into a simple one that does not depend on servlet-api
        and an extended one that does. This allows to use the service in non-web
        environments without hassles.
      </action>
      <action dev="epugh" type="update" due-to="Kostyantyn Shchekotykhin">
        Fix unit tests to run properly in non US english environments.
      </action>
    </release>
    <release version="1.0.5" date="2004-11-24">
      <action dev="epugh" type="update" due-to="Kostyantyn Shchekotykhin">
        Merge api and impl jars into one project.
      </action>
      <action dev="epugh" type="remove">
        Remove Localization, it was a facade that shouldn't be here.
        Facade's of this nature are specific to the user...
      </action>
      <action dev="epugh" type="update">
        Tweak dependencies to build under gump.
      </action>
      <action dev="epugh" type="update">
        Bump versions, clean up dependencies
      </action>
    </release>
    <release version="1.0.4" date="">
      <action dev="epugh" type="update">
        Use inherited getLogger() instead of Log in classes
        extending AbstractLogEnabled.
      </action>
      <action dev="epugh" type="update">
        Update to use Merlin 3.3.0
      </action>
      <action dev="epugh" type="add">
                Merlinized code with input from Stephen
      </action>
    </release>
    <release version="1.0-alpha-3" date="">
      <action dev="epugh" type="add">
        New Localization class that is a facade to the underlying service.
      </action>
    </release>

  </body>
</document>

