ingo@59: 2009-11-23 Ingo Weinzierl ingo@59: ingo@59: * artifact-database/src/main/java/de/intevation/artifactdatabase/Config.java: ingo@59: Added path to chart template file and a new method to retrieve the ingo@59: configuration. ingo@59: sascha@58: 2009-11-23 Sascha L. Teichmann sascha@58: sascha@58: * artifacts/src/main/java/de/intevation/artifacts/CallContext.java: sascha@58: Added a context dictionary accessible through putContextValue(key, value) sascha@58: and getContextValue(key). Purpose is make artifact calls stackable and sascha@58: transfer information through the call level transparently. sascha@58: sascha@58: * artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java: sascha@58: Adjusted default implementation of CallContext. sascha@58: sascha@58: * artifact-database/src/main/java/de/intevation/artifactdatabase/ProxyArtifact.java: sascha@58: New. A general proxy class for artifacts in artifact databases. This class uses sascha@58: the extended call context semantics. sascha@58: sascha@58: The artifact calls (feed, describe, out, ...) are passed to a proxied artifact. sascha@58: If the proxied artifact decides to be replaced by some other artifact it has to sascha@58: to store a reference to the replacement artifact in the call context with sascha@58: putContextValue(ProxyArtifact.REPLACE_PROXY, my_new_artifact). After the call sascha@58: is finished the proxied object will change. This indirect callback mechanism is sascha@58: used to minimize side effects. sascha@58: sascha@58: The identifier() call is not forwarded to the proxied artifact to have a stable id. sascha@58: sascha@58: Limitations: This mechanism does not let you build real matroska (multi level) sascha@58: like artifact structures. This would only be possible if a kind of call context sascha@58: stack is introduced. sascha@58: hans@57: 2009-11-13 Hans Plum hans@57: hans@57: RELEASE 0.2 hans@57: hans@57: * Changes, NEWS summarized hans@57: ingo@56: 2009-11-11 Ingo Weinzierl ingo@56: ingo@56: * HOWTO: Added HOWTO describing the setup of the environment (apache, ingo@56: tomcat, gnv). ingo@56: sascha@55: 2009-11-04 Sascha L. Teichmann sascha@55: sascha@55: * artifacts/src/main/java/de/intevation/artifacts/Artifact.java: describe() now may sascha@55: given an input XML document (which can be null to indicate that no input is given). sascha@55: sascha@55: * artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifact.java: sascha@55: Adjusted to implemented the Artifact interface. sascha@55: sascha@55: * artifacts/src/main/java/de/intevation/artifacts/ArtifactDatabase.java: Pass through sascha@55: the optional XML input document to describe(). sascha@55: sascha@55: * artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java: sascha@55: Implements the adjusted ArtifactDatabase interface. sascha@55: sascha@55: * artifact-database/src/main/java/de/intevation/artifactdatabase/rest/ArtifactResource.java: sascha@55: Now its also possible to send describe() as a POST request. The request body is handled as sascha@55: XML. sascha@55: tim@54: 2009-10-21 Tim Englich tim@54: hans@57: Issue 59: Make paths in configuration relativ hans@57: sascha@55: * src/main/java/de/intevation/artifactdatabase/Config.java (replaceConfigDir): sascha@55: Applied patch from slt to set the Configuration Folder into the AbsoluteFileName issue59 sascha@55: sascha@53: 2009-10-07 Sascha L. Teichmann sascha@53: sascha@53: RELEASE 0.1 sascha@53: sascha@53: * Changes, NEWS: Summaried changes. sascha@53: sascha@52: 2009-10-06 Sascha L. Teichmann sascha@52: sascha@52: * Changelog -> ChangeLog: Renamed to make eclipse happy. sascha@52: sascha@52: 2009-10-02 Sascha L. Teichmann sascha@52: sascha@52: * artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultCallMeta.java: sascha@52: Initial instance variable with given languages in constructor. sascha@52: sascha@52: 2009-10-02 Sascha L. Teichmann sascha@52: sascha@52: * artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultCallMeta.java: sascha@52: Better implementation for fetching the preferred locale. sascha@52: sascha@52: 2009-10-02 Sascha L. Teichmann sascha@52: sascha@52: * artifacts/src/main/java/de/intevation/artifacts/CallMeta.java: sascha@52: Added method to fetch preferred locale. sascha@52: sascha@52: * artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultCallMeta.java: sascha@52: Trivial (and incorrect!) implementation. sascha@52: sascha@52: 2009-10-01 Sascha L. Teichmann sascha@52: sascha@52: Add i18n support via "Accept-Language" HTTP headers. sascha@52: sascha@52: * artifact-database/pom.xml: Using restlet 2.0 snapshot. sascha@52: M3 does not implement the required API, M4 is not in maven repo yet. sascha@52: TODO: Bring to M4 as soon it is released in maven repository. sascha@52: sascha@52: * contrib/run.sh: Adjusted to use the snapshot. sascha@52: sascha@52: * artifacts/src/main/java/de/intevation/artifacts/CallMeta.java: sascha@52: New. Meta information of a call, languages, e.g. sascha@52: sascha@52: * artifacts/src/main/java/de/intevation/artifacts/PreferredLocale.java: sascha@52: New. Model preferred languages. sascha@52: sascha@52: * artifacts/src/main/java/de/intevation/artifacts/CallContext.java: sascha@52: Has now a reference to the meta information. sascha@52: sascha@52: * artifacts/src/main/java/de/intevation/artifacts/ArtifactDatabase.java: sascha@52: describe, feed, advance and out call contexts are now enriched with sascha@52: external meta data. sascha@52: sascha@52: * artifact-database/src/main/java/de/intevation/artifactdatabase/DatabaseCleaner.java: sascha@52: Additional debug output how long the cleaner slept between cleanups. sascha@52: sascha@52: * artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultPreferredLocale.java: sascha@52: New. Default implementation of PreferredLocale. sascha@52: sascha@52: * artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultCallMeta.java: sascha@52: New. Default implementation of CallMeta. sascha@52: sascha@52: * artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java: sascha@52: Adjusted to take the additional meta information. sascha@52: sascha@52: * artifact-database/src/main/java/de/intevation/artifactdatabase/rest/BaseResource.java: sascha@52: Added a method to create a CallMeta object from web client information. sascha@52: sascha@52: * artifact-database/src/main/java/de/intevation/artifactdatabase/rest/ArtifactResource.java, sascha@52: artifact-database/src/main/java/de/intevation/artifactdatabase/rest/CreateResource.java, sascha@52: artifact-database/src/main/java/de/intevation/artifactdatabase/rest/ArtifactOutResource.java: sascha@52: Call the artifact database with the meta data from there base class BaseResoure. sascha@52: sascha@52: 2009-10-01 Sascha L. Teichmann sascha@52: sascha@52: * artifact-database/src/main/java/de/intevation/artifactdatabase/SQL.java, sascha@52: artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifact.java, sascha@52: artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java, sascha@52: artifact-database/src/main/java/de/intevation/artifactdatabase/XMLUtils.java, sascha@52: artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java, sascha@52: artifact-database/src/main/java/de/intevation/artifactdatabase/rest/BaseResource.java, sascha@52: artifact-database/src/main/java/de/intevation/artifactdatabase/rest/FactoriesResource.java, sascha@52: artifact-database/src/main/java/de/intevation/artifactdatabase/rest/Standalone.java, sascha@52: artifact-database/src/main/java/de/intevation/artifactdatabase/DatabaseCleaner.java, sascha@52: artifacts/src/main/java/de/intevation/artifacts/ArtifactNamespaceContext.java, sascha@52: artifacts/src/main/java/de/intevation/artifacts/Artifact.java: sascha@52: Removed trailing whitespace. sascha@52: sascha@52: 2009-10-01 Sascha L. Teichmann sascha@52: sascha@52: * artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java: sascha@52: Removed needless imports. sascha@52: sascha@52: * artifact-database/src/main/java/de/intevation/artifactdatabase/rest/Standalone.java: sascha@52: Be more verbose on output on which host the REST server is bound. sascha@52: sascha@52: 2009-09-30 Hans Plum sascha@52: sascha@52: * artifact-database/doc/example-conf/conf.xml, README: sascha@52: Fixed inconsistencies after changes in h2-configuraton. sascha@52: sascha@52: 2009-09-29 Sascha L. Teichmann sascha@52: sascha@52: * pom.xml, artifacts/pom.xml, artifact-database/pom.xml: sascha@52: Set source encoding to UTF-8. sascha@52: sascha@52: * artifact-database/src/main/java/de/intevation/artifactdatabase/rest/Standalone.java: sascha@52: If '/artifact-database/rest-server/listen/text()' is given in conf.xml sascha@52: the value is used to bind REST server to that interface. sascha@52: sascha@52: * artifact-database/doc/example-conf/conf.xml: Added 'listen' to sascha@52: demo configuration. sascha@52: sascha@52: 2009-09-24 Sascha L. Teichmann sascha@52: sascha@52: * artifact-database/src/main/resources/sql/org-h2-driver.properties: sascha@52: Time delta calculation in SQL statement to figure out outdated artifacts sascha@52: was broken. sascha@52: sascha@52: 2009-09-24 Sascha L. Teichmann sascha@52: sascha@52: * artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifact.java: sascha@52: Added debug output to make tracing of artifact lifecyle easier. sascha@52: sascha@52: 2009-09-23 Sascha L. Teichmann sascha@52: sascha@52: * artifact-database/doc/schema-pg.sql, artifact-database/doc/schema-h2.sql: sascha@52: Added column 'factory' to artifacts table to store the name of the sascha@52: creating factory. sascha@52: sascha@52: !!! sascha@52: !!! THIS BREAKS OLD ARTIFACT DATABASES! sascha@52: !!! sascha@52: !!! To update old databases issue at database prompt: sascha@52: !!! ALTER TABLE artifacts ADD COLUMN factory VARCHAR(256) NOT NULL; sascha@52: !!! sascha@52: sascha@52: * artifact-database/src/main/resources/sql/org-h2-driver.properties, sascha@52: artifact-database/src/main/resources/sql/org-postgresql-driver.properties: sascha@52: Fixed issue in SQL statements for touching artifacts. Fill factory name sascha@52: into artifact relation. sascha@52: sascha@52: * artifacts/src/main/java/de/intevation/artifacts/ArtifactSerializer.java: sascha@52: To allow different serialization models each ArtifactFactory has sascha@52: serializer for the artifacts. sascha@52: sascha@52: * artifacts/src/main/java/de/intevation/artifacts/ArtifactFactory.java: sascha@52: Add method to return ArtifactSerializer. sascha@52: sascha@52: * artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifactSerializer.java: sascha@52: Uses Java standard object serialisation. sascha@52: sascha@52: * artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifactFactory.java: sascha@52: Uses th DefaultArtifactSerializer as ArtifactSerializer sascha@52: sascha@52: * artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java: sascha@52: The serialisation method is select via the 'factory' column of the 'artifacts' sascha@52: table. sascha@52: sascha@52: * artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java, sascha@52: artifact-database/src/main/java/de/intevation/artifactdatabase/App.java, sascha@52: artifact-database/src/main/java/de/intevation/artifactdatabase/rest/FactoriesResource.java, sascha@52: artifact-database/src/main/java/de/intevation/artifactdatabase/DatabaseCleaner.java: sascha@52: Adjusted to fit the new serialisation model. sascha@52: sascha@52: 2009-09-23 Sascha L. Teichmann sascha@52: sascha@52: * artifact-database/src/main/java/de/intevation/artifactdatabase/rest/BaseResource.java: sascha@52: New. Base class to log RuntimeExceptions to log4j error log. sascha@52: sascha@52: * artifact-database/src/main/java/de/intevation/artifactdatabase/rest/ArtifactResource.java, sascha@52: artifact-database/src/main/java/de/intevation/artifactdatabase/rest/FactoriesResource.java, sascha@52: artifact-database/src/main/java/de/intevation/artifactdatabase/rest/CreateResource.java, sascha@52: artifact-database/src/main/java/de/intevation/artifactdatabase/rest/ArtifactOutResource.java: sascha@52: Adjusted to extend from BaseResource. sascha@52: sascha@52: 2009-09-21 Tim Englich sascha@52: sascha@52: * Added some IDE-specific files to the Ignorelist. sascha@52: sascha@52: 2009-09-18 Sascha L. Teichmann sascha@52: sascha@52: * artifact-database/doc/schema.sql: removed. sascha@52: * artifact-database/doc/schema-h2.sql: re-added here. It is H2 specific. sascha@52: sascha@52: * artifact-database/doc/schema-pg.sql: New. Schema for PostgreSQL 8.3 + sascha@52: sascha@52: * artifact-database/src/main/resources/sql/org-postgresql-driver.properties: New. sascha@52: SQL statements for PostgreSQL. sascha@52: sascha@52: * artifact-database/src/main/java/de/intevation/artifactdatabase/DBConnection.java: sascha@52: XPath expressions to access config were wrong. Added some debug logging. sascha@52: sascha@52: * artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java: sascha@52: Added some debug logging. sascha@52: sascha@52: * artifact-database/pom.xml: Added dependency to postgresql JDBC driver sascha@52: sascha@52: * contrib/run.sh: Added postgresql JDBC to CLASSPATH. sascha@52: sascha@52: 2009-09-16 Tim Englich sascha@52: sascha@52: * src/main/java/de/intevation/artifactdatabase/rest/ArtifactOutResource.java (represent) Edited: sascha@52: Switched from Get to Post communication. sascha@52: sascha@52: 2009-09-16 Tim Englich sascha@52: sascha@52: * src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java (feed) Edited: sascha@52: Bug fixed: Now the method will call the feed Method of the used Artifact instead sascha@52: of the advance Method. sascha@52: sascha@52: 2009-09-15 Sascha L. Teichmann sascha@52: sascha@52: * artifact-database/src/main/java/de/intevation/artifactdatabase/rest/ArtifactResource.java: sascha@52: More warning log output in POST case. sascha@52: sascha@52: 2009-09-15 Tim Englich sascha@52: sascha@52: * src/main/java/de/intevation/artifactdatabase/Backend.java: sascha@52: Bug Fixed: Comparation for outdated Artifacts was Wrong. sascha@52: sascha@52: * src/main/java/de/intevation/artifactdatabase/rest/ArtifactResource.java (represent): sascha@52: Warn-Logging Integrated for Exception analysys. sascha@52: sascha@52: 2009-09-14 Tim Englich sascha@52: sascha@52: * src/main/java/de/intevation/artifacts/ArtifactFactory.java Edited: sascha@52: Make Objects Serializable sascha@52: sascha@52: * src/main/resources/sql/org-h2-driver.properties: sascha@52: Bug Fixed in SQL-Query sascha@52: sascha@52: 2009-09-13 Sascha L. Teichmann sascha@52: sascha@52: Refactored the persistent handling of the artifacts in the sascha@52: artifact database. When an artifact is called (describe, feed, sascha@52: advance, out) a new CallContext is given instead of the sascha@52: old Object context. CallContext.globalContext() returns the sascha@52: old Object context now. CallContext.afterCall() may be sascha@52: called from inside describe, feed, advance and out to tell sascha@52: the artifact database what to do after the processing of sascha@52: the specific call. sascha@52: sascha@52: The accepted values are: sascha@52: - NOTHING for doing nothing sascha@52: - TOUCH for just update the last access time sascha@52: - STORE for persisting the artifact. sascha@52: - BACKGROUND to signal that the artifact has started sascha@52: a background operation. sascha@52: sascha@52: After the background operation the artifact has to call sascha@52: CallContext.fromBackground() to signal the artifact sascha@52: database that the artifact needs to be touched or stored. sascha@52: sascha@52: !!! Without this call the artifact database assumes there sascha@52: !!! is still some background operation on this artifact sascha@52: !!! which prevents reclaiming resources sascha@52: sascha@52: * artifacts/src/main/java/de/intevation/artifacts/CallContext.java: sascha@52: New. New API to cope with background processing. sascha@52: sascha@52: * artifacts/src/main/java/de/intevation/artifacts/Artifact.java: sascha@52: Replaced old Object context with CallContext context. sascha@52: sascha@52: * artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifact.java: sascha@52: Adjusted. sascha@52: sascha@52: * artifacts/src/main/java/de/intevation/artifacts/ArtifactDatabase.java: sascha@52: For a better encapsulation of the persistence operations of the sascha@52: artifacts the database does not return artifacts any more. It delegates sascha@52: the describe, feed, advance and out call to internal structures. sascha@52: sascha@52: * artifacts/src/main/java/de/intevation/artifacts/ArtifactDatabaseException.java: sascha@52: New. Simplifies handling of error conditions inside of artifact database. sascha@52: sascha@52: * artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java: sascha@52: Adjusted to new interface. Internally it handles the background API. sascha@52: sascha@52: * artifact-database/src/main/java/de/intevation/artifactdatabase/rest/ArtifactResource.java, sascha@52: artifact-database/src/main/java/de/intevation/artifactdatabase/rest/FactoriesResource.java, sascha@52: artifact-database/src/main/java/de/intevation/artifactdatabase/rest/OutRepresentation.java, sascha@52: artifact-database/src/main/java/de/intevation/artifactdatabase/rest/CreateResource.java, sascha@52: artifact-database/src/main/java/de/intevation/artifactdatabase/rest/ArtifactOutResource.java: sascha@52: Adjusted to new artifact database interface (which greatly simplifies things) sascha@52: sascha@52: * artifact-database/src/main/java/de/intevation/artifactdatabase/DatabaseCleaner.java: sascha@52: Artifacts in background are not removed from database any longer. sascha@52: sascha@52: * artifact-database/src/main/java/de/intevation/artifactdatabase/App.java: Little sascha@52: re-wirering need for new cleanup. sascha@52: sascha@52: * artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java: sascha@52: Simplified to do the SQL stuff only. The most infrastructure stuff is now done sascha@52: in ArtifactDatabaseImpl. sascha@52: sascha@52: * artifact-database/src/main/java/de/intevation/artifactdatabase/Id.java: sascha@52: New. Helper base class to enable filtering of background artifacts by there sascha@52: database id. sascha@52: sascha@52: * artifact-database/src/main/resources/sql/org-h2-driver.properties: sascha@52: Modified the INSERT statement to write the serialized artifact, too. sascha@52: sascha@52: 2009-09-12 Sascha L. Teichmann sascha@52: sascha@52: * artifacts/src/main/java/de/intevation/artifacts/Artifact.java(out): sascha@52: out() is now called with an java.io.Outputstream to place sascha@52: the output. sascha@52: sascha@52: * artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifact.java, sascha@52: artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java, sascha@52: artifact-database/src/main/java/de/intevation/artifactdatabase/rest/OutRepresentation.java: sascha@52: Adjusted. sascha@52: sascha@52: 2009-09-11 Sascha L. Teichmann sascha@52: sascha@52: * artifact-database/doc/example-conf/conf.xml: Added sascha@52: sleep time for cleanup thread. sascha@52: sascha@52: * artifact-database/src/main/java/de/intevation/artifactdatabase/App.java: sascha@52: Start cleanup thread at startup. sascha@52: sascha@52: * artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java: sascha@52: Make artifact restoring bit more robust, added ref to sascha@52: cleanup thread to do an immediate cleanup when dead artifact sascha@52: is found by lookup. sascha@52: sascha@52: * artifact-database/src/main/java/de/intevation/artifactdatabase/DatabaseCleaner.java: sascha@52: New. The cleanup thread. It cleans up the artifact database sascha@52: perodically and calls the endOfLife() methods of the dead sascha@52: artifacts. Default cleanup interval is 5 minutes. sascha@52: sascha@52: * artifact-database/src/main/resources/sql/org-h2-driver.properties: sascha@52: Tuned SQL a bit to fetch only a 50 artifacts in search for sascha@52: outdated artifacts to avoid too much memory consumption. sascha@52: sascha@52: * contrib/run.sh: Little tweak to work with more than one sascha@52: commons-pool version installed. sascha@52: sascha@52: * TODO: Removed remarks about the now implemented killer sascha@52: thread and the moves XML stuff. sascha@52: sascha@52: * README: Changed text how to create a H2 database from sascha@52: command line only. XXX: This is still broken. The best sascha@52: way to set up the database by now is to start the Console sascha@52: client, connect to the database, c&p the schema.sql sascha@52: into the SQL text area and execute it. sascha@52: sascha@52: 2009-09-10 Sascha L. Teichmann sascha@52: sascha@52: * artifact-database/src/main/java/de/intevation/artifactdatabase/rest/ArtifactOutResource.java: sascha@52: New. Handler for 'out'. Reachable via HTTP GET '/artifact/{uuid}/{type}'. sascha@52: sascha@52: * artifact-database/src/main/java/de/intevation/artifactdatabase/rest/OutRepresentation.java: sascha@52: New. Special representation for out. TODO: use streaming API. sascha@52: sascha@52: * artifact-database/src/main/java/de/intevation/artifactdatabase/rest/ArtifactResource.java: sascha@52: Regrouped imports. sascha@52: sascha@52: * artifact-database/src/main/java/de/intevation/artifactdatabase/rest/RestApp.java: Added sascha@52: handler for 'out' to routing table. sascha@52: sascha@52: 2009-09-10 Sascha L. Teichmann sascha@52: sascha@52: * artifact-database/src/main/java/de/intevation/artifactdatabase/rest/ArtifactResource.java: sascha@52: Added handler for 'advance' and 'feed' to be called by HTTP POST '/artifact/{uuid}'. sascha@52: sascha@52: 2009-09-10 Sascha L. Teichmann sascha@52: sascha@52: * artifact-database/src/main/java/de/intevation/artifactdatabase/rest/ArtifactResource.java: sascha@52: Added handler for 'describe' to be fetched by HTTP GET '/artifact/{uuid}'. sascha@52: sascha@52: * artifact-database/src/main/java/de/intevation/artifactdatabase/rest/RestApp.java: sascha@52: Add route to new describe handler. sascha@52: sascha@52: * artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java: Fixed sascha@52: problems with serialization of artifacts to backing database. sascha@52: sascha@52: 2009-09-10 Sascha L. Teichmann sascha@52: sascha@52: * artifact-database/src/main/java/de/intevation/artifactdatabase/XMLUtils.java: sascha@52: Added method to get strings from XML documents via XPath. sascha@52: sascha@52: * artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifact.java: sascha@52: Used XMLUtils to create new XML documents. sascha@52: sascha@52: * artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java: sascha@52: Forgot to store backend in instance variable. sascha@52: sascha@52: * artifacts/src/main/java/de/intevation/artifacts/ArtifactNamespaceContext.java: sascha@52: Added static instance of this class. sascha@52: sascha@52: * artifact-database/src/main/java/de/intevation/artifactdatabase/rest/CreateResource.java: sascha@52: Forward call to ArtifactDatabase, do some error handling. sascha@52: sascha@52: * artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java: sascha@52: Treat problems with database errors more gracefully. sascha@52: sascha@52: * contrib/run.sh: Added dependencies to common-pool and common-dbcp. sascha@52: sascha@52: * artifact-database/doc/data/create-artifact.xml: New. example data set to sascha@52: create an artifact. Usage sascha@52: sascha@52: $ curl --data-binary @doc/data/create-artifact.xml -D - http://localhost:8181/create sascha@52: sascha@52: 2009-09-10 Sascha L. Teichmann sascha@52: sascha@52: * artifact-database/src/main/java/de/intevation/artifactdatabase/rest/FactoriesResource.java: sascha@52: Removed needless import. sascha@52: sascha@52: * artifact-database/src/main/java/de/intevation/artifactdatabase/Config.java, sascha@52: artifact-database/src/main/java/de/intevation/artifactdatabase/XMLUtils.java: sascha@52: Moved some XPath stuff from Config into XMLUtils. sascha@52: sascha@52: 2009-09-10 Sascha L. Teichmann sascha@52: sascha@52: * artifacts/src/main/java/de/intevation/artifacts/Artifact.java(setup): Added sascha@52: callback parameter in form of the creating factory. sascha@52: sascha@52: * artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java, sascha@52: artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifact.java: sascha@52: Adjusted to match new Artifact interface. sascha@52: sascha@52: * artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifactFactory.java: sascha@52: Call artifact.setup() with this. sascha@52: sascha@52: * artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifact.java: sascha@52: Removed namespace stuff. sascha@52: sascha@52: * artifacts/src/main/java/de/intevation/artifacts/ArtifactNamespaceContext.java: sascha@52: Created namespace stuff, need for XPath for e.g. sascha@52: sascha@52: * artifact-database/src/main/java/de/intevation/artifactdatabase/rest/FactoriesResource.java: sascha@52: Use new namespace stuff. sascha@52: sascha@52: * artifact-database/src/main/java/de/intevation/artifactdatabase/rest/Standalone.java: sascha@52: Added author. sascha@52: sascha@52: 2009-09-09 Sascha L. Teichmann sascha@52: sascha@52: * artifact-database/src/main/java/de/intevation/artifactdatabase/XMLUtils.java: sascha@52: Added method newXPath() to create XPaths with namespace binding. sascha@52: sascha@52: * artifact-database/src/main/java/de/intevation/artifactdatabase/Config.java: sascha@52: Uses new method from XMLUtils. sascha@52: sascha@52: 2009-09-09 Sascha L. Teichmann sascha@52: sascha@52: * trunk/artifact-database/src/main/java/de/intevation/artifactdatabase/rest/FactoriesResource.java, sascha@52: trunk/artifact-database/src/main/java/de/intevation/artifactdatabase/rest/CreateResource.java: sascha@52: Removed meta data from resources. They prevented serving the right results. sascha@52: sascha@52: * artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java: sascha@52: Removed needless import. sascha@52: sascha@52: 2009-09-09 Sascha L. Teichmann sascha@52: sascha@52: * artifact-database/src/main/java/de/intevation/artifactdatabase/rest/CreateResource.java: sascha@52: New. Resource to create an artifact. Not working on artifact database yet. sascha@52: sascha@52: * artifact-database/src/main/java/de/intevation/artifactdatabase/rest/RestApp.java: sascha@52: Attached create to web server. sascha@52: sascha@52: * artifact-database/src/main/java/de/intevation/artifactdatabase/rest/FactoriesResource.java: sascha@52: Added meta data to Get annotation. sascha@52: sascha@52: 2009-09-09 Sascha L. Teichmann sascha@52: sascha@52: * artifact-database/pom.xml: Added dependency to restlet.ext.xml sascha@52: for XML handling in representations. sascha@52: sascha@52: * contrib/run.sh: Adjusted to fit new dependency. sascha@52: sascha@52: * artifact-database/src/main/java/de/intevation/artifactdatabase/XMLUtils.java: sascha@52: New. Handle some boiler plate XML stuff. Move more stuff of this kind sascha@52: into this file. sascha@52: sascha@52: * TODO: Added remark to move more XML stuff into XMLUtils. sascha@52: sascha@52: * artifact-database/src/main/java/de/intevation/artifactdatabase/rest/Standalone.java: sascha@52: Tell at startup on which port we are listing. sascha@52: sascha@52: * artifact-database/src/main/java/de/intevation/artifactdatabase/rest/FactoriesResource.java: sascha@52: Representation to list the available factories. sascha@52: sascha@52: * artifact-database/src/main/java/de/intevation/artifactdatabase/rest/RestApp.java: sascha@52: Attach new factory listing to web app. sascha@52: sascha@52: 2009-09-09 Sascha L. Teichmann sascha@52: sascha@52: * artifact-database/doc/artifactdb-example-conf.xml: removed sascha@52: * artifact-database/doc/example-conf/conf.xml: Re-added here. sascha@52: sascha@52: The configuration is now found in a subdirectory set by the sascha@52: system property 'artifact.database.dir'. If this property is sascha@52: not set '~/.artitactdb' is used. This directory should contain sascha@52: a file 'conf.xml' with the configuration details. sascha@52: If the artifact database is started as a standalone the config sascha@52: directory is searched for 'log4j.properties' to configure the sascha@52: logging. sascha@52: The H2 database is also search in this directory with the sascha@52: name 'artifacts.db' if the connection url in config.xml is sascha@52: not overwritten. sascha@52: sascha@52: * artifact-database/src/main/java/de/intevation/artifactdatabase/Config.java: sascha@52: Refactored a bit to follow the new configuration policy. sascha@52: sascha@52: * artifact-database/src/main/java/de/intevation/artifactdatabase/DBConnection.java: sascha@52: Build default connection url as described. sascha@52: sascha@52: * artifact-database/doc/example-conf/log4j.properties: New. sascha@52: example logging config sascha@52: sascha@52: * artifact-database/src/main/java/de/intevation/artifactdatabase/FactoryBootstrap.java: sascha@52: Added some more logging infos. sascha@52: sascha@52: * artifact-database/src/main/java/de/intevation/artifactdatabase/App.java: sascha@52: Load the log4j configuration at startup and starts a REST standalone web server. sascha@52: sascha@52: * artifact-database/src/main/java/de/intevation/artifactdatabase/rest: New. sascha@52: Package for REST binding. sascha@52: sascha@52: * artifact-database/src/main/java/de/intevation/artifactdatabase/rest/Standalone.java: sascha@52: Convenience wrapper to start a standalone REST web server. sascha@52: sascha@52: * artifact-database/src/main/java/de/intevation/artifactdatabase/rest/RestApp.java: sascha@52: Concrete REST application. TODO: attach restlets to interact with artifact database. sascha@52: sascha@52: * contrib/run.sh: Little start script to launch artifact database for test sascha@52: purpose from classes without the need to build packages. sascha@52: Background: The maven exec:exec goal does not work consistently for me (slt). sascha@52: At home it does, at work it doe not. Anyway. Usage: sascha@52: sascha@52: $ ./contrib/run.sh \ sascha@52: -Dartifact.database.dir=artifact-database/doc/example-conf/ \ sascha@52: de.intevation.artifactdatabase.App sascha@52: sascha@52: 2009-09-08 Tim Englich sascha@52: sascha@52: * src/main/java/de/intevation/artifactdatabase/DefaultArtifact.java : Edited sascha@52: Constants for Namespace-URL and Namespace-Prefix added sascha@52: sascha@52: 2009-09-08 Sascha L. Teichmann sascha@52: sascha@52: * artifact-database/src/main/java/de/intevation/artifactdatabase/SQL.java, sascha@52: artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifact.java, sascha@52: artifact-database/src/main/java/de/intevation/artifactdatabase/Config.java, sascha@52: artifact-database/src/main/java/de/intevation/artifactdatabase/FactoryBootstrap.java, sascha@52: artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java, sascha@52: artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifactFactory.java: sascha@52: Integrated log4j sascha@52: sascha@52: * artifact-database/pom.xml: Added dependency to log4j sascha@52: sascha@52: * TODO: Removed remark to integrate logging. sascha@52: sascha@52: 2009-09-07 Tim Englich sascha@52: sascha@52: * src/main/java/de/intevation/artifactdatabase/FactoryBootstrap.java: edited sascha@52: Bug fixed in XPath Expression. Now the Nodes and not the Text of the Nodes will sascha@52: be used instantiating the ArtifactFactory. sascha@52: sascha@52: 2009-09-07 Sascha L. Teichmann sascha@52: sascha@52: * artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java: sascha@52: Implemented loading of artifacts from database. If the last access of an sascha@52: artifact is too long ago for its time to life, null is returned. sascha@52: sascha@52: * TODO: Added remark to implement a "killer" thread which periodically cleans the sascha@52: database from outdated artifacts and calls the endOfLife() method on those. sascha@52: sascha@52: 2009-09-07 Sascha L. Teichmann sascha@52: sascha@52: * artifact-database/src/main/java/de/intevation/artifactdatabase/SQL.java: sascha@52: Properties wrapper for SQL statements. The properties are looked up sascha@52: in resorces /sql/DRIVER.properties (DRIVER is the name of the db driver class, sascha@52: lowercased and '.' replaced by '-'. 'org.h2.Driver' turns to sascha@52: 'org-h2-driver.properties', e.g. sascha@52: sascha@52: * artifact-database/src/main/resources/sql/org-h2-driver.properties: sascha@52: SQL statements for H2 database. sascha@52: sascha@52: * artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java: sascha@52: Artifacts are proxies/wrapped by an special Artifact implementation sascha@52: to bound db activities transparentely to the Artifact. XXX: It has sascha@52: to be evaluated if a more direct concept like extending the Artifact API sascha@52: to store itself would be more robust for future implementations. sascha@52: TODO: Loading Artifact from db is not implemented yet. sascha@52: sascha@52: 2009-09-06 Sascha L. Teichmann sascha@52: sascha@52: * artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java: sascha@52: New. Used to wrap database presentations of artifacts into artifacts. sascha@52: sascha@52: * artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java: sascha@52: New. Implements a ArtifactDatabase backed by Backend. sascha@52: sascha@52: * artifact-database/src/main/java/de/intevation/artifactdatabase/Config.java: sascha@52: Removed empty last line. sascha@52: sascha@52: * artifact-database/src/main/java/de/intevation/artifactdatabase/App.java: sascha@52: Wired together Backend, ArtifactDatabaseImpl and FactoryBootstrap. sascha@52: sascha@52: 2009-09-06 Sascha L. Teichmann sascha@52: sascha@52: * artifact-database/src/main/java/de/intevation/artifactdatabase/DBConnection.java: sascha@52: Typo in XPath expression. sascha@52: sascha@52: 2009-09-06 Sascha L. Teichmann sascha@52: sascha@52: * artifacts/src/main/java/de/intevation/artifacts/Artifact.java(setup): sascha@52: Added the setup() method to have symmetric counter part to endOfLife(). sascha@52: sascha@52: * artifacts/src/main/java/de/intevation/artifacts/ArtifactFactory.java(timeToLiveUntouched): sascha@52: Added this method to let the factory decide how long an artifact should live in ms. sascha@52: This is not a part of the Artifact itself because this is only evaluated once when sascha@52: the artifact is created. sascha@52: sascha@52: * artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifact.java: sascha@52: New. Simple base class implementation of the Artifact interface. sascha@52: sascha@52: * artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifactFactory.java: sascha@52: New. Simple base class implementation of the ArtifactFactory interface. When setup() sascha@52: on instances of this class is called, it pull ttl, name, description and sascha@52: the artifact class name from the node given. See artifactdb-example-conf.xml sascha@52: for examples. sascha@52: sascha@52: * artifact-database/pom.xml: Cleaned up XML. sascha@52: Introduced dependency to apache commons dbcp, used for pooling of the sascha@52: database connections to artifact db. sascha@52: Added parameters for the exec:exec goal to make the project sascha@52: startable without building packages. sascha@52: sascha@52: * artifact-database/doc/schema.sql: Removed AUTO_INCREMENT from primary key sascha@52: to avoid compatibility issues with other non-H2 databases (PostgreSQL, Oracle, ...) sascha@52: which have no or limited support for generated keys in the JDBC driver. Now sascha@52: using an explicit sequence. TTL ist now big int to bring the resolution to ms. sascha@52: sascha@52: * artifact-database/src/main/java/de/intevation/artifactdatabase/Config.java: sascha@52: Refactored a bit to make the XPath access function usable on arbitrary XML sascha@52: documents and parts of. sascha@52: sascha@52: * artifact-database/src/main/java/de/intevation/artifactdatabase/DBConnection.java: sascha@52: New. Exposes DataSource from a apache dbcp connection pool configured by the sascha@52: global configuration file. See artifactdb-example-conf.xml for examples. sascha@52: TODO: Write some documentation about this. sascha@52: sascha@52: * artifact-database/doc/artifactdb-example-conf.xml: Adjusted to be a more realistic sascha@52: example config file. Added references to DefaultArtifact/DefaultArtifactFactory and sascha@52: demonstrate how to configure the connection pool. sascha@52: sascha@52: * TODO: Add remark to document the connection file. sascha@52: sascha@52: * artifact-database/src/main/java/de/intevation/artifactdatabase/FactoryBootstrap.java: sascha@52: Do not crash when config does not contain any factories. sascha@52: sascha@52: 2009-09-04 Sascha L. Teichmann sascha@52: sascha@52: * artifact-database/src/main/java/de/intevation/artifactdatabase/Config.java (getNodeXPath): sascha@52: New method to get a single node from configuration. sascha@52: sascha@52: * artifacts/src/main/java/de/intevation/artifacts/Artifact.java (endOfLife): sascha@52: New method called when artifact is going to be removed from artifact data base. sascha@52: sascha@52: 2009-09-04 Tim Englich sascha@52: sascha@52: * src/main/java/de/intevation/artifactdatabase/FactoryBootstrap.java (loa, sascha@52: * src/main/java/de/intevation/artifacts/ArtifactFactory.java (setup): sascha@52: New Parameter for Setop to put the ArtifactFactoryNode into the setup routine. sascha@52: sascha@52: 2009-09-04 Tim Englich sascha@52: sascha@52: * pom.xml: Edited sascha@52: Buildplugins for Maven-Compiler and Maven-Eclipse Plugin integrated. sascha@52: sascha@52: 2009-09-04 Sascha L. Teichmann sascha@52: sascha@52: * artifact-database/doc/artifactdb-example-conf.xml: Example for artifact db sascha@52: configuration. sascha@52: sascha@52: * artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifactContextFactory.java: sascha@52: New. Default implementation of ArtifactContextFactory. Creates a DefaultArtifactContext. sascha@52: sascha@52: * artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifactContext.java: sascha@52: New. Default implementation of ArtifactContext. sascha@52: sascha@52: * artifact-database/src/main/java/de/intevation/artifactdatabase/FactoryBootstrap.java: sascha@52: New. Class to bootstrap the context and the artifact factories. sascha@52: sascha@52: * artifact-database/src/main/java/de/intevation/artifactdatabase/App.java: Bootstrap sascha@52: factories. sascha@52: sascha@52: * artifact-database/src/main/java/de/intevation/artifactdatabase/Config.java: New. sascha@52: Loads configuration as XML from a file. The file is specified by the system sascha@52: property "artifact.database.config" and defaults to "artifactdb-conf.xml". sascha@52: The configuration can be searched via XPath. sascha@52: sascha@52: * artifact-database/pom.xml: Made de.intevation.artifactdatabase.App the main sascha@52: class for start up. sascha@52: sascha@52: * TODO: Added remark to add logging to artifact database. sascha@52: sascha@52: 2009-09-04 Sascha L. Teichmann sascha@52: sascha@52: * artifacts/src/main/java/de/intevation/artifacts/ArtifactContextFactory.java: sascha@52: New. Factory for a global context in the artifact data base. Useful to sascha@52: create shared ressources for artifacts like caches et al. sascha@52: sascha@52: * artifacts/src/main/java/de/intevation/artifacts/ArtifactDatabase.java, sascha@52: artifacts/src/main/java/de/intevation/artifacts/ArtifactFactory.java, sascha@52: artifacts/src/main/java/de/intevation/artifacts/ArtifactContextFactory.java, sascha@52: artifacts/src/main/java/de/intevation/artifacts/Artifact.java: Uses the sascha@52: global context more consistent. sascha@52: sascha@52: * artifact-database/doc/schema.sql: Using BINARY instead of BLOB to sascha@52: avoid external files for each artifact blob. See H2 documentation sascha@52: for details. sascha@52: sascha@52: 2009-09-03 Sascha L. Teichmann sascha@52: sascha@52: * artifact-database/doc/schema.sql: Schema to store artifacts sascha@52: in H2 databases. sascha@52: sascha@52: * artifact-database/pom.xml: Added dependencies to H2 and sascha@52: restlet. sascha@52: sascha@52: * pom.xml: Added repository to fetch restlet. sascha@52: sascha@52: * README: Describe how to create a H2 database to store artifacts. sascha@52: TODO: Make it more general because description assumes usage of sascha@52: a unixoid system. sascha@52: sascha@52: 2009-09-03 Sascha L. Teichmann sascha@52: sascha@52: * artifact-database/**: created new sub project for the artefact sascha@52: database server. sascha@52: sascha@52: * pom.xml: Registered new sub project and made artifacts a sascha@52: sub project, too. sascha@52: sascha@52: * artifacts/pom.xml: Adjusted to make a artifacts a sub project. sascha@52: sascha@52: 2009-09-02 Sascha L. Teichmann sascha@52: sascha@52: * artifacts/src/main/java/de/intevation/artifacts/Artifact.java: sascha@52: Interface of the central component of the system. sascha@52: sascha@52: * artifacts/src/main/java/de/intevation/artifacts/ArtifactDatabase.java: sascha@52: Central place to store artifacts in. sascha@52: sascha@52: * artifacts/src/main/java/de/intevation/artifacts/ArtifactFactory.java: sascha@52: Factory to build artifacts. Works together with ArtifactDatabase. sascha@52: sascha@52: * artifacts/pom.xml: Simple maven file to compile the project. sascha@52: sascha@52: 2009-09-01 Sascha L. Teichmann sascha@52: sascha@52: * README, Changelog, Changes, NEWS, TODO: New. Initial setup