blob: d7a868474793f818a53827db547a864c63ffb5c8 [file] [log] [blame]
<!--
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.
-->
<body>
<p>Interfaces for the Taverna 2 reference manager. This replaces the
(badly named) DataManager and is, in effect, a version 2 of that system.
While these APIs are implementation neutral the intent is heavily
towards the use of an object relational mapping (ORM) tool such as
Hibernate backed by a relational database to hold the various
collection, external reference and error documents managed by the
reference manager.</p>
<p>For those familiar with the previous DataManager code the table
below shows the old class names and the equivalent (where appropriate)
in the new code:
</p>
<table>
<tr>
<td>DataDocument</td>
<td>{@link net.sf.taverna.t2.reference.ReferenceSet}</td>
</tr>
<tr>
<td>ReferenceScheme</td>
<td>{@link net.sf.taverna.t2.reference.ExternalReferenceSPI}</td>
</tr>
<tr>
<td>EntityIdentifier</td>
<td>{@link net.sf.taverna.t2.reference.T2Reference}</td>
</tr>
<tr>
<td colspan="2">...</td>
</tr>
</table>
<p>One fundamental change is a move to runtime exceptions rather
than checked exceptions. This follows the pattern used by Spring and
Hibernate. The rationale is the same as in those systems - in general
checked exceptions are not handled properly by client code. The loss of
compiler level functionality from moving to runtime exceptions is
countered by much higher readability of code which in itself leads to
more robust and reliable systems.</p>
<p>A second change is the availability of asynchronous versions of
all the critical APIs. Reference construction or translation in
particular can be a costly process taking substantial time to complete.
Synchronous versions of the get methods still exist but in general the
simple callback based asynchronous ones are recommended over them for
most applications.</p>
</body>