ingo@332: 2011-09-19 RELEASE 1.4 ingo@332: ingo@332: !! Release 1.4 is no longer API compatible with old versions of this module !! ingo@332: ingo@332: NEW: ingo@332: ingo@332: * Modified the signature of Artifact.setup() -> Artifact.setup(CallMeta). ingo@332: The CallMeta is required for I18N support while setting up an ingo@332: Artifact. !! THIS MODIFICATION BREAKS THE CURRENT API !! ingo@332: ingo@332: * Modified the signature of Service.setup() -> Service.setup(GlobalContext). ingo@332: ingo@332: * Introduced a LifetimeListener interface: applications can register ingo@332: instances of this interface to execute tasks after the system goes and ingo@332: and before the system goes down. ingo@332: ingo@332: * Introduced a BackendListener interface: applications can register ingo@332: instances of this interface to execute tasks after an event has been ingo@332: fired. See the JavaDoc of BackendListener for detailed descriptions of ingo@332: the events. ingo@332: ingo@332: * Introduced "Hooks": Hooks can be used to execute tasks at a specific ingo@332: point in time. In our cases, Hooks can be executed before/after feed() ingo@332: and advance() operations. ingo@332: ingo@332: * Introduced a GlobalContext interface for the global context object: ingo@332: this interface describes two method to put new objects into this ingo@332: context and a method to retrieve objects from this context. ingo@332: ingo@332: * Introduced a CreationFilter: this filter might be used to create ingo@332: Artifacts with restricted Outputs/Facets. ingo@332: ingo@332: * Introduced a Message interface: Messages might be used by background ingo@332: threads to provide information about the process (e.g. status reports). ingo@332: ingo@332: * Improved ArtifactDatabaseImpl to support background messages. ingo@332: ingo@332: * Improved the CallContext interface: added a method isInBackground() ingo@332: that determines if the current Artifact has started a background ingo@332: thread which is still processing. ingo@332: ingo@332: * Improved the CallContext interface: added methods to add/retrieve ingo@332: background messages. ingo@332: ingo@332: * Improved the State interface: added a endOfLife() method that should ingo@332: be called by owner Artifacts. ingo@332: ingo@332: * Improved the interface of Facets: added a deepCopy() method to be able ingo@332: to clone Facets. ingo@332: ingo@332: * Improved the interface of Facets: added a toXML() method. ingo@332: ingo@332: * Improved the ArtifactDatabase: added a method loadAllArtifacts(ArtifactLoadedCallback) ingo@332: to load all Artifacts of an ArtifactCollection. ingo@332: ingo@332: * Improved XMLUtils: added support for variables in XPath expression. ingo@332: ingo@332: * Added a FileTools helper class that implements some convinience ingo@332: functions to work with files. ingo@332: ingo@332: * Some little improvements in ClientProtocolUtils. ingo@332: ingo@332: * Bumped SLF4J up to 2.0.7. ingo@332: ingo@332: * Bumped H2 up to 1.3.158. ingo@332: ingo@332: * Bumped Apache DBCP up to 1.4. ingo@332: ingo@332: * Bumped PostgreSQL driver up to 8.4-702.jdbc4. ingo@332: ingo@332: ingo@332: FIXED: ingo@332: ingo@332: * flys/issue20 (Versions-Clash bei slf4j verhindert Start des Artefakt-Servers.) ingo@332: ingo@332: ingo@332: ingo@287: 2011-06-27 RELEASE 1.3 ingo@287: ingo@287: NEW: ingo@287: ingo@287: * Bumped Restlet to version 2.0.7. ingo@287: ingo@287: * Use a Jetty server by default to handle HTTP requests. ingo@287: ingo@287: * Introduced a config option that allows to switch the HTTP server ingo@287: manually. ingo@287: ingo@287: * Introduced a config option that allows to limit the max number of ingo@287: threads used by the Restlet server. Defaults to 1024. ingo@287: ingo@287: * New REST interface to set the time-to-live of a Collection. This ingo@287: operation takes a java native long value or one of the strings "INF" - ingo@287: which means a Collection lives forever - or "DEFAULT" which means to ingo@287: reset the time-to-live to the default value configured in the artifact ingo@287: server. ingo@287: ingo@287: * New REST interface to set the name of a Collection. ingo@287: ingo@287: * Improved the ClientProtocolUtils to create documents for the operation ingo@287: to set the Collection's time-to-live. ingo@287: ingo@287: * The time-to-live of Collections is accessible in Collection objects. ingo@287: ingo@287: * Introduced a "creation" timestamp for CollectionItems. ingo@287: ingo@287: * Facets got a new property "index". ingo@287: ingo@287: ingo@287: FIXED: ingo@287: ingo@287: * A a new out() method is called that takes the "type" parameter specified in ingo@287: the REST url to specify the concrete output type. This parameter has ingo@287: not been used until now. ingo@287: ingo@287: * flys/issue75 Fixed SQL syntax error in trigger creation. ingo@287: ingo@287: ingo@287: ingo@259: 2011-05-13 RELEASE 1.2 ingo@259: ingo@259: NEW: ingo@259: ingo@259: * Introduced "facets" as a new concept to select only parts/concrete ingo@259: types of an Artifact's output. E.g. a computation might return data ingo@259: that is used to draw two curves into a chart. With a "facet", just a ingo@259: single curve might be selected to be drawn into the chart. ingo@259: ingo@259: * New REST interfaces to set/get attributes of an ArtifactCollection. ingo@259: ingo@259: * Artifacts that live in ArtifactCollections don't die (because of their ingo@259: last_access time). A database trigger is used to update their ingo@259: last_access time if their owner ArtifactCollection is updated. ingo@259: ingo@259: * DatabaseCleaner removes outdated ArtifactCollections. ingo@259: ingo@259: * XML documents stored aside users, collections and collection items are ingo@259: compressed to reduce i/o costs. ingo@259: ingo@259: * Introduced a listener mechanism that is called if a context is ingo@259: created/closed. This listener might be implemented in concrete ingo@259: artifact packages. ingo@259: ingo@259: * Improvements in the ClientProtocolUtils: new functions to create ingo@259: special xml documents ingo@259: ingo@259: ingo@259: FIXED: ingo@259: ingo@259: * flys/issue8 (Cleanup des DatabaseCleaner schlägt fehl) ingo@259: ingo@259: * flys/issue9 (Fehler beim Laden von Artefakten - NO SUCH ARTIFACT obwohl Artefakt in DB vorhanden) ingo@259: ingo@259: ingo@259: 2011-03-30 RELEASE 1.1 ingo@259: ingo@96: 2010-04-28 RELEASE 1.0 ingo@96: ingo@96: New: ingo@96: ingo@96: * The path to database in the configuration can be relative to the ingo@96: central configuration document using ${artifacts.config.dir} as ingo@96: root. ingo@96: ingo@96: * New interfaces to export and import artifacts: ingo@96: ingo@96: HTTP GET '/export/{uuid}' returns an xml document representing ingo@96: the state of an artifact ingo@96: HTTP POST '/import' takes an xml document that have ingo@96: been created by /export before ingo@96: ingo@96: The export mechanism uses a secret configured in the configuration ingo@96: to sign export documents. An artifact import fails if the ingo@96: signature of the xml document is not valid. ingo@96: ingo@96: * The time to live of an artifact is queriable at the CallContext ingo@96: object. ingo@96: ingo@96: ingo@96: Added: ingo@96: ingo@96: * JavaDoc documentation ingo@96: ingo@96: ingo@96: ingo@96: 2010-03-08 RELEASE 0.5 ingo@96: ingo@96: hans@74: 2010-01-27 RELEASE 0.4 hans@74: hans@74: New: hans@74: hans@74: * Extended XML helper utilities a bit more hans@74: * Added a new interface describing services hans@74: via XML documents via /services hans@74: hans@74: sascha@63: 2009-12-17 RELEASE 0.3 sascha@63: sascha@63: New: sascha@63: sascha@63: * Extended XML helper utilities a bit sascha@63: * Added a new general proxy artifact. sascha@63: sascha@63: FIXED: sascha@63: sascha@63: * issue106: Konfiguration der GNV-Chart-Templates gehört nicht in das Artefakt-Framework sascha@63: hans@57: 2009-11-13 RELEASE 0.2 hans@57: hans@57: New: hans@57: hans@57: * Configuration documents can be made relativ to hans@57: ${artifacts.config.dir} hans@74: hans@57: * Splitting up configuration of artifacts in depence to the hans@57: product. hans@57: hans@57: * Added a first HOWTO for setting up the environemt and the hans@57: artifact server hans@57: sascha@53: 2009-10-07 RELEASE 0.1 sascha@53: sascha@53: New: sascha@53: sascha@53: * Two sub projects: 'artifacts' and 'artifact-database' sascha@53: sascha@53: - 'artifacts' is a set of generic interfaces modelling sascha@53: the workflow to parameterize a process and producing sascha@53: outputs. sascha@53: sascha@53: An artifact is created via factories. It describes sascha@53: itself via 'describe', it is parameterized via sascha@53: 'feed' and brought to new states with 'advance'. sascha@53: Once able to produce output 'out' returns the sascha@53: requested product. sascha@53: sascha@53: - 'artifact-database' is the default implemention sascha@53: of the workflow described with 'artifact'. sascha@53: sascha@53: * artifact-database persists artifacts with a H2-database sascha@53: [http://www.h2database.com] (default) or a sascha@53: PostgeSQL 8.3+ database [http://www.postgresql.org/] (optional) sascha@53: sascha@53: * artifacts may spawn background threads to copy with long running sascha@53: processes. After finishing work they are able to re-synchronize sascha@53: themselves to the artifact database. sascha@53: sascha@53: * artifact-database is accessible via an HTTP REST server sascha@53: implemented on top of the Restlet API http://www.restlet.org/ sascha@53: It has to be started as a service. Default TCP port: 8181 sascha@53: sascha@53: HTTP GET '/factories' returns list of available factories. sascha@53: HTTP GET '/create' creates new artifact. sascha@53: HTTP GET '/artifact/{uuid}' returns a description of an artifact. sascha@53: HTTP POST '/artifact/{uuid}' modifies an artifact ('feed', 'advance') sascha@53: HTTP POST '/artifact/{uuid}/{out}' delivers output for an artifact. sascha@53: sascha@53: * artifact-database is configured with as XML file named conf.xml sascha@53: (default placement in directory $HOME/.artitactdb, directory sascha@53: may be changed with system property "artifact.database.dir")