source: trunk/doc/src/docbook/appendix/incompatible.xml @ 7221

Last change on this file since 7221 was 7221, checked in by Nicklas Nordborg, 6 years ago

References #2033 and #2034. Added a note about the changes to the list of update warnings and incompatible changes.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Date Id
File size: 16.5 KB
1<?xml version="1.0" encoding="UTF-8"?>
2<!DOCTYPE appendix PUBLIC
3    "-//Dawid Weiss//DTD DocBook V3.1-Based Extension for XML and graphics inclusion//EN"
4    "../../../../lib/docbook/preprocess/dweiss-docbook-extensions.dtd">
6  $Id: incompatible.xml 7221 2016-11-04 10:06:26Z nicklas $
8  Copyright (C) 2007 Peter Johansson, Nicklas Nordborg
10  This file is part of BASE - BioArray Software Environment.
11  Available at
13  BASE is free software; you can redistribute it and/or
14  modify it under the terms of the GNU General Public License
15  as published by the Free Software Foundation; either version 3
16  of the License, or (at your option) any later version.
18  BASE is distributed in the hope that it will be useful,
19  but WITHOUT ANY WARRANTY; without even the implied warranty of
21  GNU General Public License for more details.
23  You should have received a copy of the GNU General Public License
24  along with BASE. If not, see <>.
27<appendix id="appendix.incompatible">
28  <?dbhtml filename="incompatible.html" ?>
29  <title>API changes that may affect backwards compatibility</title>
30  <para>
31    In this document we list all changes to code in the <emphasis>Public API</emphasis>
32    that may be backwards incompatible with existing client applications
33    and or plug-ins. See <xref linkend="base_api.public" /> for more
34    information about what we mean with the <emphasis>Public API</emphasis>
35    and backwards compatible.
36  </para>
38  <sect1 id="appendix.incompatible.3.10">
39    <title>BASE 3.10 release</title>
41    <bridgehead id="appendix.incompatible.annotate-permission">Annotate permission</bridgehead>
42    <para>
43      A new permission level, <code>ANNOTATE</code> has been added to
44      the permission system. Extensions and other clients that are not
45      aware of this permission may think that the user only has
46      <code>READ</code> permission.
47    </para>
49  </sect1>
51  <sect1 id="appendix.incompatible.3.9">
52    <title>BASE 3.9 release</title>
54    <bridgehead id="appendix.incompatible.session-control">Application.getSessionControl()</bridgehead>
55    <para>
56      The <classname docapi="net.sf.basedb.core">Application.getSessionControl()</classname> 
57      method for getting access to an existing session has been deprecated. A new
58      version has been implemented that require that an <emphasis>external client id</emphasis>
59      is specified. This change was needed to avoid sessions leaking between client
60      applications and prevent users to use an application they don't have permission to use.
61    </para>
63    <para>
64      The deprecated method use the client id from the BASE web client. Extensions and
65      other clients that use a different client id are affected and may stop to work
66      until they have been updated to use the new API. For more information see
67      <ulink url="">ticket 2011</ulink>.
68    </para>
70  </sect1>
73  <sect1 id="appendix.incompatible.3.8">
74    <title>BASE 3.8 release</title>
76    <bridgehead id="appendix.incompatible.service-session-control">ServiceSessionControl API</bridgehead>
77    <para>
78      The <classname docapi="net.sf.basedb.core">ServiceSessionControl</classname> API for
79      configuration and building Hibernate <classname>SessionFactory</classname>
80      instances has been changed due the Hibernate 5 upgrade. This change affects
81      extensions that use the API for storing their own data inside the BASE database.
82      Extensions that use this API must be updated or they will not work with BASE 3.8.
83    </para>
85  </sect1>
88  <sect1 id="appendix.incompatible.3.6">
89    <title>BASE 3.6 release</title>
91    <bridgehead id="appendix.incompatible.cloned-annotation">Cloned annotations</bridgehead>
92    <para>
93      A new feature that allows an inherited annotation to be cloned has been implemented.
94      Several methods in <classname docapi="net.sf.basedb.core">AnnotationSet</classname>,
95      <classname docapi="net.sf.basedb.core.snapshot">AnnotationSnapshot</classname> and some
96      other classes has been deprecated and replaced with new methods. Existing code that
97      is not aware of cloned annotations should continue to work, but may experience some
98      inconsistent behaviour in case the cloned values are out-of-sync with the original
99      values.
100    </para>
102    <bridgehead id="appendix.incompatible.experimental-factors">Experimental factors have moved</bridgehead>
103    <para>
104      To allow the owner of an experiment to manage experimental factor values as part
105      of the experiment, the <classname docapi="net.sf.basedb.core">RootRawBioassay</classname>
106      item was introduced. The new item is a one-to-one representation of a <classname 
107      docapi="net.sf.basedb.core">RawBioAssay</classname> inside that experiment.
108      Experimental factor values that are found on existing raw bioassays are copied to the
109      root rawbioassays when updating BASE. Changes made after the update will only
110      affect the root raw bioassays. Existing code that is not aware of root raw bioassays
111      may not find the experimental factor values.
112    </para>
114  </sect1>
116  <sect1 id="appendix.incompatible.3.5">
117    <title>BASE 3.5 release</title>
119    <bridgehead id="appendix.incompatible.itemlists">Biomaterial lists has been replaced with item lists</bridgehead>
120    <para>
121      The <classname docapi="net.sf.basedb.core">BioMaterialList</classname> 
122      class has been removed and replaced with <classname 
123      docapi="net.sf.basedb.core">ItemList</classname>. The API is similar
124      but not exactly the same. In most cases only minor changes are required
125      to make existing code work with the new API.
126    </para>
128    <para>
129      Queries that use the <code>BioMaterial.bioMaterialLists</code> association
130      for joining will no longer work. There is no replacement functionality for
131      joining item lists.
132    </para>
134    <para>
135      All classes in the <code>net.sf.basedb.util.biomaterial</code> package has
136      been deprecated. It is recommended that code that uses any of these classes
137      are updated to use classes in <code>net.sf.basedb.util.listable</code> instead.
138      The API is a bit different, but the new implementations typically performs a
139      lot better so it is worth the work.
140    </para>
142    <para>
143      There are several other minor changes in the API that previously worked with
144      the <code>BioMaterialList</code> class that has been removed and replaced
145      with something else.
146    </para>
148  </sect1>
150  <sect1 id="appendix.incompatible.3.4">
151    <title>BASE 3.4 release</title>
153    <bridgehead>Updated JDOM to 2.0</bridgehead>
154    <para>
155      The JDOM library has been updated to version 2.0 from 1.1. The
156      new version is incompatible with the old version. BASE 3.4 will
157      ship with both versions but JDOM 1.1 will be removed in BASE 3.5
158      and so will all API methods that expose JDOM 1.1 classes.
159      It is recommended that plug-ins and extensions that use JDOM also
160      update to JDOM 2.0.
161    </para>
163    <bridgehead>Updated to Apache HttpClient 4.3.4</bridgehead>
164    <para>
165      The Apache HTTP Client library has been updated to version 4.3.4.
166      The new version has deprecated some classes that are exposed through
167      the BASE API (mainly in <classname docapi="net.sf.basedb.util.ssl">SSLUtil</classname>).
168      As a result we had to deprecate parts of the BASE API, which will
169      be removed in BASE 3.5. It is recommended that plug-ins and
170      extensions that are affected are updated to use the replacement API
171      instead.
172    </para>
174  </sect1>
176  <sect1 id="appendix.incompatible.3.3">
177    <title>BASE 3.3 release</title>
179    <bridgehead>Content security policy</bridgehead>
180    <para>
181      The BASE web client now set a rather strict <emphasis>Content
182      Security Policy</emphasis> that prevent browsers from executing
183      code (including JavaScript) that is considered unsafe. Some extensions
184      may cease to work due to this. Go to
185      <menuchoice>
186        <guimenu>Administrate</guimenu>
187        <guimenuitem>Plug-ins &amp; extensions</guimenuitem>
188        <guimenuitem>Overview</guimenuitem>
189      </menuchoice> 
190      (after upgrading) to see if there are any warnings about this.
191      Read more in <xref linkend="appendix.web.xml.csp-filter" />
192      for information about how to relax the policy.
193    </para>
195    <bridgehead>Re-factored JavaScript API</bridgehead>
196    <para>
197      The BASE web client has undergone a major refactoring with respect to
198      the JavaScript API that is used on the server. A lot of functions have
199      been replaced with new implementations. We have tried to map the old
200      functions to the new ones, but this has not always been possible. Extentions
201      that use the BASE JavaScript API must be tested with BASE 3.3 to find
202      out if they are still working or if modifications are needed.
203    </para>
205    <note>
206      <title>Avoid in-line event handlers and script</title>
207      <para>
208        The main reason for the refactoring is to get rid of all in-line
209        event handlers and script sections since this is a possible entry
210        point for cross-site scripting attacks (see <ulink 
211          url="">ticket 1712</ulink>).
212        Extension developers are encouraged to make the same changes in
213        their applications.
214      </para>
215    </note>
217    <bridgehead>Biomaterial items are now lazy-loading</bridgehead>
218    <para>
219      For performance reasons biomaterial items have been changed from
220      eager-loading to lazy-loading. This may affect clients and/or plug-ins
221      that expect the parent chain of biomaterials to always be fully initialized
222      without explicitely having told the BASE core to do so.
223    </para>
225    <bridgehead>Tables can have columns with different sort order</bridgehead>
226    <para>
227      A new feature has been implemented which allows columns in a table to
228      have different sort order. This is implemented by allowing '+' or '-'
229      as a prefix to properties returned by the <methodname>ItemContext.getSortProperty()</methodname>
230      method. Properties without a prefix still use the global sort order as returned
231      by <methodname>ItemContext.getSortDirection()</methodname>.
232    </para>
234    <para>
235      Code that is not aware of the prefixes may fail since '+' and '-' are not
236      allowed in property names.
237    </para>
239    <bridgehead>External authentication has been converted to an extension point</bridgehead>
240    <para>
241      External authentication plug-ins using the old system are supported through a
242      wrapper extension, but the recommendation is to update those plug-in to the
243      new system. See <xref linkend="extensions_developer.login-manager" /> for more information.
244    </para>
246    <bridgehead>Setting parameters for a job no longer set it to status=WAITING</bridgehead>
247    <para>
248      Added <methodname>Job.setScheduled()</methodname> to switch the state
249      from <constant>UNCONFIGURED</constant> to <constant>WAITING</constant>.
250      A job can't be executed before it has entered the <constant>WAITING</constant>
251      state. The change makes it possible to register a job and some parameters for
252      it and remain in the <constant>UNCONFIGURED</constant> state.
253    </para>
255  </sect1>
257  <sect1 id="appendix.incompatible.3.2">
258    <title>BASE 3.2 release</title>
260    <bridgehead>Derived bioassays can now have multiple parents</bridgehead>
261    <para>
262      Before BASE 3.2 a derived bioassay was restricted to a single parent
263      item. This affects the API and the <methodname>DerivedBioAssay.getParent()</methodname>
264      and <methodname>DerivedBioAssay.getPhysicalBioAssays()</methodname> now always
265      return null. Existing code should be updated to use <methodname>getPhysicalBioAssays()</methodname>
266      and <methodname>getParents()</methodname> (which return <classname>ItemQuery</classname> instances)
267      instead. Code that is using queries to filter or sort on parent items must also be
268      updated since the association names have changed.
269    </para>
271    <bridgehead>BASEfile exporter automatically closes the output stream</bridgehead>
272    <para>
273      The implementation of the BASEfile exporter has been changed to
274      automatically close the provided output stream when the export
275      is complete. Clients that need the old behavior should call
276      <code>BaseFileExporter.setAutoCloseWriters(false)</code> before
277      using it.
278    </para>
280    <bridgehead>Change history logging is now an extension point</bridgehead>
281    <para>
282      The change history logging has been converted to an extension point.
283      The <constant>changelog.factory</constant> setting in <filename>base.config</filename>
284      is no longer used. Existing logging implementations should be updated
285      to use the extension system. See <xref linkend="extensions_developer.logging" />.
286      A temporary solution is to use one of the debugging action factories to
287      define the extension point:
288    </para>
290    <programlisting language="xml">
293   id="id-of-custom-log-manager"
294   extends="net.sf.basedb.core.log-manager"
295   >
296   <about>
297      <name>My custom log manager</name>
298      <description>
299         Temporary solution to allow the old log manager to work with the extension system.
300      </description>
301   </about>
302   <index>1</index>
303   <action-factory>
304      <factory-class>net.sf.basedb.util.extensions.debug.BeanActionFactory</factory-class>
305      <parameters>
306         <beanClass>my.custom.LogmangerClass</beanClass>
307      </parameters>
308   </action-factory>
313  </sect1>
315  <sect1 id="appendix.incompatible.3.1">
316    <title>BASE 3.1 release</title>
318    <bridgehead>Web service framework updated to Axis2 1.6</bridgehead>
319    <para>
320      We have updated the web services framework to Axis2 1.6. Clients
321      that use earlier Axis2 versions may not work when connecting to a
322      BASE 3.1 server. Unfortunately, clients that use the Axis2 1.6
323      framework may have problems connecting to BASE 3.0 servers so it
324      may be difficult to implement support for both BASE 3.0 and BASE 3.1
325      in a single client application.
326    </para>
328    <bridgehead>New GUI look and feel</bridgehead>
329    <para>
330      Taglibs, stylesheets and javscript functions have been changed
331      to create a new look and feel. Plug-ins and extensions that uses
332      GUI elements from the core BASE installation may need to be updated
333      for the best user experience. The changes are too numerous so we can't
334      list them here. Please use the developers mailing list if specific
335      information is needed or see <ulink url="">ticket
336      1655</ulink> for some screenshots and other information.
337    </para>
339    <bridgehead>Per-experiment copy of reporter annotations</bridgehead>
340    <para>
341      A new feature has been implemented that allows a user to make a
342      local copy of reporter annotations for reporters that are used
343      in an experiment. The existing API will by default use the local
344      copy if one is available. It is possible to use the master reporter
345      annotations by invoking certain API methods (for example:
346      <code>DynamicQuery.setUseClonedReporters(false)</code>). Since the copy
347      may include only a subset of the available reporter annotations this
348      may cause problems for code that is expecting all annotations to be
349      available. See <classname docapi="net.sf.basedb.core">ReporterCloneTemplate</classname>
350      and <ulink url="">ticket 1616</ulink>
351      for more information.
352    </para>
354    <bridgehead>Annotations can be inherited/pushed from child to parent item</bridgehead>
355    <para>
356      A new feature has been implemented that allows an item to "push" annotations
357      up to it's parent in addition to the normal "inherit to child" method.
358      This has been implemented as a change in the <methodname>getAnnotatableParents()</methodname>
359      method defined by the <interfacename docapi="net.sf.basedb.core">Annotatable</interfacename>
360      interface. This may cause unexpected issues with code that is not prepared to handle
361      this situation. Particulary, infinite loops must be avoided when traversing the "parent"
362      tree of an item (but this should already be in place since it can already happen due to
363      mistakes when creating items). See <ulink url="">ticket 1605</ulink>
364      for more information.
365    </para>
367  </sect1>
370  <sect1 id="appendix.incompatible.3.0">
371    <title>BASE 3.0 release</title>
373    <para>
374      There are a lot incompatible changes between BASE 3 and any of the BASE 2.x
375      versions. We do not list list those changes here since we do not expect existing
376      plug-ins, extensions or other client application to work with BASE 3 without
377      modification. See <xref linkend="migrate_2_3" /> for more information.
378    </para>
379  </sect1>
381  <sect1 id="appendix.incompatible.2.x">
382    <title>All BASE 2.x releases</title>
384    <para>
385      The list of changes made in the various BASE 2.x releases can be found
386      in the <ulink url=""
387      >BASE 2.17 documentation</ulink>.
388    </para>
390  </sect1>
Note: See TracBrowser for help on using the repository browser.