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