<?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">
			Update to junit 5 test cases
		</action>
		<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>

