<?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.
-->
<status>
  <developers>
    <person name="Thorsten Scherler" email="thorsten@.apache.org" id="TS"/>
<!-- Add new developers here -->
    <person name="Volunteer needed" email="dev@forrest.apache.org" id="open"/>
  </developers>
<!-- Define here the Title of the Context you want to display in the Changes pages.
       id = the context value of actions
       title = Title of the Context
  -->
  <contexts>
<!-- Add new contexts here -->
    <context id="code" title="Changes to the Code Base"/>
    <context id="docs" title="Changes to Documentation"/>
    <context id="admin" title="Changes to Project Administration"/>
    <context id="design" title="Changes to Design"/>
    <context id="build" title="Changes to Build"/>
  </contexts>
  <changes>
<!-- Add new releases here -->
    <release version="0.1" date="not-released">
      <action dev="TS" type="add" context="code"> Initial plugin code. The 
        heart of this plugin is the ModuleGenerator. The generator is 
        contacting the input module and gets an iterator of all attributes 
        names. This iterator will be then used to receive the values of the 
        key. Till now we only use a Object to String cast but an input module 
        does not have to return a simple String but can return any object. This 
        may cause ClassCastExceptions for the values. </action>
      <action dev="TS" context="docs" type="add">Adding initial samples and 
        documentation</action>
    </release>
  </changes>
  <todo>
    <actions priority="high">
      <action context="code" dev="TS">
        Needs more testing.
      </action>
    </actions>
  </todo>
</status>
