<?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 YAAFI Avalon Container</title>
    <author email="siegfried.goeschl@it20one.at">Siegfried Goeschl</author>
  </properties>

  <body>

    <section name="TODO">

      <subsection name="Long-term Compatibilty with Fortress">
        <p>
          Since Fortress is the only other remaining Avalon container
          within Jakarta we try to achieve compatibility with Fortress
          regarding configuration files. The problem is that there is no
          specification available how the Fortress configuration files
          look like ... :-(
        </p>
      </subsection>

      <subsection name="Testing the cross-container portabilty">
        <p>
          YAAFI actually maps the Avalon context depending on the container
          flavour of the service component. We still need to test this
          functionality with Fortress services.
        </p>
      </subsection>

      <subsection name="Use URLConnection for InputStreamLocator">
        <p>
          Using a URLConnection enables downloading the configuration
          files from a HTTP server therefore allowing to run a set
          of application distributed over multiple boxes from a single
          configuration file.
        </p>
      </subsection>

    </section>

  </body>

</document>
