<?xml version="1.0"?>

<document>

<properties>
  <title>2.x Changes</title>
  <author email="jvanzyl@apache.org">Jason van Zyl</author>
  <author email="jmcnally@apache.org">John D. McNally</author>
  <author email="mpoeschl@marmot.at">Martin Poeschl</author>
</properties>

<body>

<section name="Turbine 2.2b1">

<p>
Changes between Turbine 2.1 and 2.2b1.
</p>

<p>
Torque and Fulcrum (the service framework) have been decoupled in preparation
for Turbine 3.0. The decoupled versions can be used with Turbine 2.2.
We strongly recommend to use the decoupled versions (some of the 'old' services
must be used, because they are used internally by Turbine)
</p>

<p>
The following services could (and should) be replaced by the Fulcrum versions:
<ul>
  <li>XmlRpcService</li>
</ul>
</p>

<p>
If you wrote your own services you should also change them to be Fulcrum
services to make them work with Turbine 3.x
</p>

<subsection name="Changes that could break older environments">

<p>
  <ul>
    <li>
      The Service interface was extended to allow integration of Service
      implementations: <br/>
      <b>Service.getName()</b> <br/>
      since most Service implementations extend BaseService
      (which implements a public getName method), this should not be an issue.
    </li>
  </ul>
</p>

</subsection>


<subsection name="Other changes">

<p>
  <ul>
    <li>
      <b>ECS, Freemarker and Webmacro</b> services/modules are marked
      <b>deprecated</b>. You should use Velocity instead.
    </li>
    <li>
      <b>Castor</b> service is marked as <b>deprecated</b>. You should use
      om/peer classes instead!
    </li>
    <li>
      The XSLT Service is updated to use Xalan 2.0
    </li>
    <li>
      Improved datatype mappings for mysql, oracle, postgresql, sapdb
    </li>
    <li>
      adding support for DB2 on AS400 (patch by Sweaver@rippe.com).
    </li>
    <li>
      adding support for secure connections in the xmlrpc service.
    </li>
    <li>
      Added a configuration parameter to torque, addTimeStamp, that allows the
      user to generate files without a timestamp. Default is true, timestamps
      will be generated.
    </li>
    <li>
      Criteria.Criterion implements Serializable
    </li>
    <li>
      DB implements Serializable
    </li>
    <li>
      torque: id-methods <i>sequence</i> and <i>autoincrement</i> are
      <b>deprecated</b>. You should use <b>native</b>. torque uses the method
      provided by your database
    </li>
    <li>
      added static strings for ISNULL and ISNOTNULL to Criteria.
    </li>
    <li>
      added getDateString() method to format date fields to DB.
    </li>
    <li>
      added VelocityDirectLayout/Screen to make it possible to embed
      servlet/JSP outputs into a Velocity template used within Turbine.
      (patch by raphael.luta@networks.groupvu.com)
    </li>
    <li>
      added an easy to use localization pull tool.
    </li>
    <li>
      Javadocs improvements.
    </li>
    <li>
      Documentation improvements.
    </li>
  </ul>
</p>

</subsection>


<subsection name="Fixed bugs">

<p>
  <ul>

    <li>
      fixed error in Mssql unique.vm template (removed a blank line)
    </li>
    <li>
      [2301] Embedding message parts in HtmlEmail throws NullPointerException.
    </li>
    <li>
      bugfix for BigDecimal attributes with default value
    </li>
    <li>
      fixed handling of sequences for db2, oracle, postgresql, sapdb
    </li>
    <li>
      fixed syntax for create index (postgresql)
    </li>
    <li>
      fixed problem for postgres with blob style column in TurbineUser table.
      (patch by Jerome Veryleyen)
    </li>
    <li>
      BaseUnicastRemoteService.java: Corrected method name (setName -> getName).
    </li>
    <li>
      fixed Roleset.add(RoleSet) (patch by lujin@yahoo.com)
    </li>
    <li>
      fixed database - defaultIdMethod (torque)
    </li>
    <li>
      fixed date formating problem with Oracle.
    </li>
    <li>
      fixed problem when ignoreCase was used with ISNULL or ISNOTNULL.
    </li>
    <li>
      fixed Option object initialisation in SelectorBox
      (patch by Kurt Grafius kurtg@jvoom.com)
    </li>
  </ul>
</p>

</subsection>

</section>

</body>
</document>
