<?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 Factory</title>
    <author email="epugh@opensourceconnections.com">Eric Pugh</author>
  </properties>

  <body>
    <release version="1.1.1" date="in SVN">
		<action dev="painter" type="update">
			Addressed all PMD static code analyzer issues and corrected where appropriate
		</action>
		<action dev="painter" type="update">
			Derive from Turbine parent POM 5
		</action>
		<action dev="painter" type="update">
			Require Java 8
		</action>
    </release>
    <release version="1.1.0" date="2016-11-27">
      <action dev="tv" type="add">
        Added generics
      </action>
      <action dev="tv" type="update">
        Employ more standard Maven layout
      </action>
    </release>
    <release version="1.0.4" date="2009-06-16">
      <action dev="tv" type="add">
        Added a Maven-2 build
      </action>
    </release>
    <release version="1.0.3" 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="update">
      	Clean up dependencies.  Use TestContainer.
      </action>
    </release>
	<release version="1.0.2" date="">
      <action dev="epugh" type="update">
      	Update to use Merlin 3.3.0
      </action>
    </release>
  </body>
</document>

