<?xml version="1.0" encoding="UTF-8"?>
<!--
  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.
-->

<!--
  - $Id$
  -->
<document>
  <properties>
    <title>Changes Cocoon FlowScript Implementation</title>
  </properties>
  <body>
    <release version="1.1.0-SNAPSHOT" date="2008-??-??" description="unreleased">
      <action dev="gkossakowski" type="add">
        Made enabling of flowscript debugger possible to configure by setting property org.apache.cocoon.flowscript.debugger to "true" value.
      </action>
      <action dev="gkossakowski" type="fix">
        Remove use of deprecated method setOptimazationLevel that actually does nothing in current implementation of debugger.
        Switched to new method of attaching debugger to the context.
        This fixes a problem with java.lang.IllegalStateException being thrown when Flowscript debugger is enabled.
      </action>
    </release>
    <release version="1.0.0" date="2008-03-26" description="released">
      <action dev="vgritsenko" type="update">
        Reduce thread contention in flowscript interpreter. Do not synchronize
        execution of scripts within current thread scope on global map of
        compiled scripts.
      </action>
      <action dev="vgritsenko" type="fix">
        Fix flow scripts reload check logic.
      </action>
    </release>
    <release version="1.0.0-RC2" date="2007-09-26" description="released">
    </release>
    <release version="1.0.0-RC1" date="2007-05-18" description="released">
    </release>
    <release version="1.0.0-M2" date="2007-03-02" description="released">
      <action dev="cziegeler" type="add">
        Make settings bean and web application context available via the cocoon object in
        flow script (cocoon.settings and cocoon.applicationContext).
      </action>
      <action dev="joerg" type="fix" issue="COCOON-1811" due-to="Rob Berens">
        Allow dynamic loading of JavaScript objects even when scope is locked.
      </action>
    </release> 
    <release version="1.0.0-M1" date="2006-12-19" description="released">
      <action dev="reinhard" type="add">
        Initial creation.
      </action>    
    </release>    
  </body>
</document>

