<?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>
    <release version="1.0.9-SNAPSHOT" date="as in GIT">
       <action dev="gk" type="update">
         Update scm to git and configure project
      </action>
      <action dev="gk" type="update">
        Add Log4j2Logger here to use in Fulcrums more easily in upcoming releases.
        Deprecate the same class in Turbine core and Fulcrum Testcontainer.
      </action>
       <action dev="gk" type="update">
        Update Tests to Junit 5
      </action>
     <action dev="painter" type="fix">
        Add missing NOTICE
      </action>
       <action dev="tv" type="fix">
         Make YAAFI less chatty
      </action>
     <action dev="gk" type="update">
         git patch 1 merged to svn repo (w/o maven.xml), thanks to Jimmy Casey &lt;casey.jimmy@gmail.com&gt;.
      </action>
      <action dev="painter" type="update">
        Updating dependencies
      </action>
    </release>
    <release version="1.0.8" date="2018-12-14">
      <action dev="painter" type="update">
        Removed custom byte array handling code and updated to use JDK standard methods and IOUtils as needed
      </action>
      <action dev="painter" type="update">
        Addressed all PMD static code analyzer issues and corrected where appropriate
      </action>
      <action dev="painter" type="update">
        Update javasimon to 4.1.4
      </action>
      <action dev="painter" type="update">
        Replace byte array and input stream methods to JDK and commons managed code
      </action>
      <action dev="painter" type="update">
        Use new Turbine 5 parent pom
      </action>
      <action dev="painter" type="update">
        Use junit 4.12
      </action>
      <action dev="painter" type="update">
        Use Java 8, clean up some issues from findbugs
      </action>
    </release>  
    <release version="1.0.7-SNAPSHOT" date="2015-11-10">
      <action dev="sgoeschl" type="add" issue="TRB-97" data="2015-08-06">
        Integrate JavaSimon for performance monitoring
      </action>
      <action dev="sgoeschl" type="update" data="2015-08-06">
        Fixing typos and cleaning up code to keep IntelliJ happy.
      </action>
      <action dev="sgoeschl" type="update" issue="TRB-96" data="2015-08-06">
        Provide a more graceful shutdown of Fulcrum services
      </action>
      <action dev="sgoeschl" type="update" data="2015-03-19">
        Upgrading to jamon-2.81.
      </action>      
      <action dev="sgoeschl" type="update" data="2015-03-19">
        Fixing typos and cleaning up code to keep IntelliJ happy.
      </action>
      <action dev="sgoeschl" type="update" data="2010-03-02">
        During property expansion of the component configuration any
        non-expanded variables are retained in the lenient mode. This
        fixes the problem that some services doing the property expansion
        dynamically.
      </action>
    </release>
    <release version="1.0.6" date="2009-03-26">
      <action dev="sgoeschl" type="add">
        Added support of "fallback service managers" to transparently lookup
        services not managed by the Avalon container instance. A good example
        is the integration of Spring services or remote services hidden behind
        some SOAP proxies.        
      </action>
      <action dev="sgoeschl" type="update">
        Moved the code regarding transparent decryption of configuration files
        into 'fulcrum-yaafi-crypto' project and decoupled the code using
        dynamic class loading and reflection.
      </action>
      <action dev="sgoeschl" type="fix">
        Setting custom JAMon ranges for every invocation because those ranges
        are discarded when resetting JAMon through the GUI.
      </action>
      <action dev="sgoeschl" type="add">
        Added M2 build
      </action>
    </release>
    <release version="1.0.5" date="2007-10-01">
      <action dev="sgoeschl" type="add">
        Addded README.txt and NOTICE.txt to create a proper release.
      </action>
      <action dev="sgoeschl" type="fix">
        Fixing broken JAMon 2.x integration. To decouple the service framework
        from the JAMon library reflection was used but broke with JAMon 2.x. 
      </action>
      <action dev="sgoeschl" type="add">
        Added componentConfiguration.properties to resolve custom properties
        used for expanding the componentConfiguration.xml. Furthermore added
        a resolver functionality to allow to use commons-configuration.
      </action>
      <action dev="sgoeschl" type="add">
        Added JamonInterceptorService to capture statistical performance data
      </action>
      <action dev="sgoeschl" type="update">
        The SmartToStringBuilder was renamed to ArgumentStringBuilder
      </action>
      <action dev="sgoeschl" type="add">
        Added AdviceService to provide interceptors for any
        arbitrary object.
      </action>
      <action dev="sgoeschl" type="add">
        Added SmartToStringBuilder to get more information out
        of the LoggingInterceptorService.
      </action>
      <action dev="sgoeschl" type="fix">
        Fixed a few JavaDoc warnings
      </action>
      <action dev="sgoeschl" type="add">
        Using the parent ServiceManager (if available) during
        lookup() and hasService()
      </action>
      <action dev="sgoeschl" type="update">
        Adding Fortress context variables to enable a smooth
        transition when making all Fulcrum service compatible
        to a Fortress container
      </action>
      <action dev="sgoeschl" type="update">
        Incarnating service is done in two steps now. This
        allows to declare the services in any order in the
        roleConfiguration.xml
      </action>
      <action dev="sgoeschl" type="update">
        Updating to avalon-framework-api/impl-4.3.0.jar
      </action>
      <action dev="sgoeschl" type="add">
        Adding interceptor services to YAAFI. This allows
        to add interceptors for the whole container or
        individual services.
      </action>
      <action dev="sgoeschl" type="add">
        Using ReadWriteLocks for reconfiguring YAAFI on the fly
      </action>
      <action dev="sgoeschl" type="add">
        Added a "logger" attribute to the role configuration
        file to simplify setting up Log4j loggers.
      </action>
      <action dev="sgoeschl" type="update">
        For logging during initializing of a service we use
        the parent logger (=container's logger) instead of the service
        logger. This is an issue when writing CSV files otherwise the
        layout is messed up.
      </action>
    </release>
    <release version="1.0.4" date="2005-05-13">
      <action dev="sgoeschl" type="add">
        Added a simple tutorial
      </action>
      <action dev="sgoeschl" type="fix">
        Fixed bug in ShutdownService resulting in excessive CPU usage.
      </action>
      <action dev="sgoeschl" type="update">
        Improved the implementation of BaseServiceImpl
      </action>
      <action dev="sgoeschl" type="add">
        The CLI can be now configured using SystemProperties and the command
        line.
      </action>
      <action dev="sgoeschl" type="add">
        Added a getParameters() to the ServiceContainer interface. This
        allows to retrieve the Avalon parameters easily.
      </action>
      <action dev="sgoeschl" type="add">
        The YAAFI service container implements Parameterizable
      </action>
      <action dev="sgoeschl" type="add">
        Added a Shutdown service to dispose the YAAFI container
      </action>
      <action dev="sgoeschl" type="fix">
        Updated Turbine integration found in the 'contrib' directory
      </action>
      <action dev="sgoeschl" type="fix">
        Updated CLI to make it fit for one of our products
      </action>
      <action dev="sgoeschl" type="fix">
        Removed CVS tags since it makes maintainance difficult
      </action>
      <action dev="sgoeschl" type="fix">
        Removed obsolete email address
      </action>
      <action dev="sgoeschl" type="fix">
        Fixed wrong default values for parameters file if no value was
        defined.
      </action>
      <action dev="sgoeschl" type="fix">
        Fixed bug in ServiceManagerService - the static field was not
        reset during a dispose() leading to a NPE in the second invocation.
      </action>
      <action dev="sgoeschl" type="add">
        Transparent decryption of configuration files
      </action>
      <action dev="sgoeschl" type="add">
        Added reconfiuration service ro reconfigure YAAFI if the component
        configuration file has changed
      </action>
      <action dev="sgoeschl" type="add">
        Provide context mapping in the case that YAAFI is embedded in another
        Avalon container (experimental)
      </action>
      <action dev="sgoeschl" type="add">
        Improved bootstrapping of YAAFI using containerConfiguration.xml
      </action>
      <action dev="sgoeschl" type="add">
        Decryption of configuration files
      </action>
      <action dev="sgoeschl" type="add">
        Added cryptography support based on JCE/JCA
      </action>
      <action dev="sgoeschl" type="add">
        Using ServiceManagerConfig to capture the configuration
        data for YAAFI
      </action>
      <action dev="sgoeschl" type="add">
        Refactored some code into AvalonContextHelper and InputStreamLocator
      </action>
      <action dev="sgoeschl" type="add">
        Parsing a "component-type" element for the future
      </action>
      <action dev="sgoeschl" type="add">
        Parsing a "description" element of the role configuration file
      </action>
      <action dev="sgoeschl" type="update">
        Improved creation of child logger to avoid overly long names by using the shorthand
        instead of the class name
      </action>
      <action dev="sgoeschl" type="add">
        Extending ServiceManagerService to store Parameters and Context
      </action>
      <action dev="sgoeschl" type="add">
        Setting proper context to achive compatibility with Phoenix container. YAAFI
        now works embedded into JAMES.
      </action>
    </release>
    <release version="1.0.3" date="2004-11-24">
      <action dev="sgoeschl" type="add">
        Added a little bit of documentation
      </action>
      <action dev="sgoeschl" type="fix">
        Fixed most of the Eclipse complaints about coding conventions
      </action>
      <action dev="epugh" type="fix" due-to="Siegfried Goeschl">
        Container was missing call to decomission objects, therefore
        Disposeable interface never working.
      </action>
      <action dev="epugh" type="update">
        Initial import to Fulcrum project.
      </action>
    </release>
    <release version="1.0.2" date="2004-10-19">
      <action dev="sgoeschl" type="update">
        Using LogEnabled.enableLogging() and Configurable.configure() to create a service container
      </action>
      <action dev="sgoeschl" type="fix">
        Locating an absolute file should now also work with Windows
      </action>
      <action dev="sgoeschl" type="fix">
        Removed log4j dpendency
      </action>
    </release>
    <release version="1.0.1" date="2004-10-11">
      <action dev="sgoeschl" type="update">
        Refactored the source code to extract ServiceComponent and ServiceContainer interface
      </action>
      <action dev="sgoeschl" type="update">
        Renamed the classes to org.apache.fulcrum.yaafi
      </action>
      <action dev="sgoeschl" type="add">
        Added a ServiceManager service to keep track of the service manager singleton
      </action>
      <action dev="sgoeschl" type="add">
        Added a ServiceManagerFactory to encapsulate the details of initializing YAAFI
      </action>
      <action dev="sgoeschl" type="add">
        Added a simple SystemPropertyService since it is useful and does not introduce any new dependencies
      </action>
    </release>
    <release version="1.0.0" date="2004-10-04">
      <action dev="sgoeschl" type="fix">
        Cleaned up the implementation
      </action>
    </release>
  </body>
</document>

