ingo@84: 2010-03-25 Ingo Weinzierl ingo@84: ingo@84: * artifacts/src/main/java/de/intevation/artifacts/CallContext.java: Added a ingo@84: method 'getTimeToLive()' which retrieves the current artifact's time to ingo@84: live. The ttl of an artifact is available where ever a CallContext object ingo@84: is existing. ingo@84: ingo@84: * artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java: ingo@84: Added new field ttl of an artifact to an PersistentArtifact. ingo@84: ingo@84: * artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java: ingo@84: Implemented 'getTimeToLive()' in CallContextImpl. ingo@84: ingo@83: 2010-03-22 Ingo Weinzierl ingo@83: ingo@83: * artifact-database/src/main/java/de/intevation/artifactdatabase/App.java: ingo@83: Install a SLF4JBridgeHandler after logging is configured. This handler is ingo@83: used to route incoming java.util.logging logs to SLF4J. In our case, we ingo@83: route this incoming log to our log4j logger. ingo@83: ingo@83: * artifact-database/pom.xml: Added dependencies for SLF4J 1.5.11. ingo@83: ingo@82: 2010-03-22 Ingo Weinzierl ingo@82: ingo@82: Issue208 (Remove special data of an 'out'-target before exporting ingo@82: artifacts) ingo@82: ingo@82: * artifacts/src/main/java/de/intevation/artifacts/Artifact.java: Added a ingo@82: 'cleanup(Object context)' method to the interface definition of artifacts. ingo@82: This method should be called before exporting an artifact and should ingo@82: remove data stored on an artifact (or its current state) which have been ingo@82: written by an 'out'. ingo@82: ingo@82: * artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifact.java: ingo@82: Default implementation of cleanup method - nothing is done here yet. ingo@82: Override this method if an artifact needs to be cleaned before an export. ingo@82: ingo@82: * artifact-database/src/main/java/de/intevation/artifactdatabase/ProxyArtifact.java: ingo@82: Call cleanup method on the proxied artifact if proxied is existing. ingo@82: ingo@82: * artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java: ingo@82: Call cleanup method before exporting an artifact as xml. ingo@82: ingo@81: 2010-03-19 Ingo Weinzierl ingo@81: ingo@81: Issue208 (Artifact gets a new identifier after being imported) ingo@81: ingo@81: * artifacts/src/main/java/de/intevation/artifacts/Artifact.java: Added a new ingo@81: method setIdentifier(String identifier). ingo@81: ingo@81: * artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifact.java: ingo@81: Default implementation of setIdentifier(String identifier) to give an ingo@81: artifact a new identifier. ingo@81: ingo@81: * artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java: ingo@81: Set a new identifier on an artifact after deserializing it. ingo@81: ingo@81: * artifact-database/src/main/java/de/intevation/artifactdatabase/ProxyArtifact.java: ingo@81: Set the identifier of the proxied artifact right after setting its own ingo@81: identifier. ingo@81: ingo@80: 2010-03-19 Ingo Weinzierl ingo@80: ingo@80: Issue208 (Artifact import) ingo@80: ingo@80: * artifact-database/src/main/java/de/intevation/artifactdatabase/rest/ImportResource.java: ingo@80: New server resource to import an artifact from an incoming xml document. ingo@80: The resource is available as /import and accepts xml documents send via ingo@80: HTTP POST. ingo@80: ingo@80: * artifact-database/src/main/resources/sql/org-postgresql-driver.properties, ingo@80: artifact-database/src/main/resources/sql/org-h2-driver.properties: New sql ingo@80: statements to update an existing artifact. ingo@80: ingo@80: * artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java: ingo@80: New method to import an artifact from an incoming xml document. The data ingo@80: contained in this document is decoded using the secret. ingo@80: ingo@80: * artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java: ingo@80: New method to store an artifact into database or replace it if an artifact ingo@80: with the given id is already existing. ingo@80: ingo@80: * artifact-database/src/main/java/de/intevation/artifactdatabase/StringUtils.java: ingo@80: Removed method to convert a byte array into a string (this is done by ingo@80: Apache's Hex class in commons codec) and added a new method to convert a ingo@80: string into a byte array using Apache commons codec as well. ingo@80: ingo@80: * artifact-database/src/main/java/de/intevation/artifactdatabase/rest/RestApp.java: ingo@80: Register ImportResource to webserver. ingo@80: ingo@80: ingo@80: * artifact-database/src/main/java/de/intevation/artifactdatabase/DatabaseCleaner.java, ingo@80: artifact-database/src/main/java/de/intevation/artifactdatabase/SQL.java, ingo@80: artifact-database/src/main/java/de/intevation/artifactdatabase/Config.java, ingo@80: artifact-database/src/main/java/de/intevation/artifactdatabase/Id.java: ingo@80: Converted the author javadocs. ingo@80: ingo@79: 2010-03-16 Ingo Weinzierl ingo@79: ingo@80: Issue208 (Artifact export) ingo@79: ingo@79: * artifact-database/doc/example-conf/conf.xml: Added a section to configure ingo@79: a secret string used to identify artifact imports for security reason. ingo@79: Incoming artifact imports need to be identified with this secret, otherwise ingo@79: the import should be blocked. ingo@79: Xpath for this secret: '/artifact-database/export-secret/text()' ingo@79: ingo@79: * artifact-database/src/main/java/de/intevation/artifactdatabase/FactoryBootstrap.java: ingo@79: New attribute 'exportSecret' and some code to read the secret from ingo@79: configuration while application startup. ingo@79: ingo@79: * artifact-database/pom.xml: Added Apache Commons Codec library used to ingo@79: encode/decode artifact data. ingo@79: ingo@79: * artifact-database/src/main/java/de/intevation/artifactdatabase/StringUtils.java: ingo@79: New utilities class for frequently used string operations. ingo@79: ingo@79: * artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java: ingo@79: Added some methods for exporting artifacts as xml documents. The data part ingo@79: is base64 encoded. A secret key is used while encoding this data to verify ingo@79: artifact imports, later. ingo@79: ingo@79: * artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java: ingo@79: Added an artifact loader interface used to deserialize artifacts. ingo@79: getArtifact() implements such an ArtifactLoader to return ingo@79: PersistentArtifacts. ingo@79: ingo@79: * artifact-database/src/main/java/de/intevation/artifactdatabase/rest/ExportResource.java: ingo@79: New. ServerResource to export artifacts (innerGet). This resource is ingo@79: available under "/export/{uuid}" via HTTP-GET request and returns an ingo@79: artifact specified by uuid as xml document. ingo@79: ingo@79: * artifact-database/src/main/java/de/intevation/artifactdatabase/rest/RestApp.java: ingo@79: Register ExportResource to webserver. ingo@79: ingo@79: * artifacts/src/main/java/de/intevation/artifacts/ArtifactDatabase.java: ingo@79: Added method to export artifacts. ingo@79: ingo@79: * artifact-database/src/main/java/de/intevation/artifactdatabase/App.java: ingo@79: Reset bootstrap after application startup. ingo@79: sascha@78: 2010-03-11 Sascha L. Teichmann sascha@78: sascha@78: * artifacts/src/main/java/de/intevation/artifacts/ArtifactNamespaceContext.java, sascha@78: artifacts/src/main/java/de/intevation/artifacts/CallContext.java, sascha@78: artifacts/src/main/java/de/intevation/artifacts/Service.java, sascha@78: artifacts/src/main/java/de/intevation/artifacts/ArtifactDatabaseException.java, sascha@78: artifacts/src/main/java/de/intevation/artifacts/CallMeta.java, sascha@78: artifacts/src/main/java/de/intevation/artifacts/ArtifactFactory.java, sascha@78: artifacts/src/main/java/de/intevation/artifacts/ArtifactSerializer.java, sascha@78: artifacts/src/main/java/de/intevation/artifacts/ServiceFactory.java, sascha@78: artifacts/src/main/java/de/intevation/artifacts/ArtifactContextFactory.java, sascha@78: artifacts/src/main/java/de/intevation/artifacts/Artifact.java, sascha@78: artifacts/src/main/java/de/intevation/artifacts/PreferredLocale.java: sascha@78: Repaired the javadoc stuff. sascha@78: sascha@77: 2010-02-21 Sascha L. Teichmann sascha@77: sascha@77: * artifact-database/src/main/java/de/intevation/artifactdatabase/ProxyArtifact.java, sascha@77: artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifactContextFactory.java, sascha@77: artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifact.java, sascha@77: artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultPreferredLocale.java, sascha@77: artifact-database/src/main/java/de/intevation/artifactdatabase/FactoryBootstrap.java, sascha@77: artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifactContext.java, sascha@77: artifact-database/src/main/java/de/intevation/artifactdatabase/App.java, sascha@77: artifact-database/src/main/java/de/intevation/artifactdatabase/XMLUtils.java, sascha@77: artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultCallMeta.java, sascha@77: artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifactFactory.java, sascha@77: artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifactSerializer.java, sascha@77: artifact-database/src/main/java/de/intevation/artifactdatabase/rest/BaseResource.java, sascha@77: artifact-database/src/main/java/de/intevation/artifactdatabase/rest/ArtifactResource.java, sascha@77: artifact-database/src/main/java/de/intevation/artifactdatabase/rest/FactoriesResource.java, sascha@77: artifact-database/src/main/java/de/intevation/artifactdatabase/rest/Standalone.java, sascha@77: artifact-database/src/main/java/de/intevation/artifactdatabase/rest/ServiceResource.java, sascha@77: artifact-database/src/main/java/de/intevation/artifactdatabase/rest/OutRepresentation.java, sascha@77: artifact-database/src/main/java/de/intevation/artifactdatabase/rest/CreateResource.java, sascha@77: artifact-database/src/main/java/de/intevation/artifactdatabase/rest/ServicesResource.java, sascha@77: artifact-database/src/main/java/de/intevation/artifactdatabase/rest/ArtifactOutResource.java, sascha@77: artifact-database/src/main/java/de/intevation/artifactdatabase/rest/RestApp.java, sascha@77: artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultServiceFactory.java, sascha@77: artifacts/src/main/java/de/intevation/artifacts/ArtifactNamespaceContext.java, sascha@77: artifacts/src/main/java/de/intevation/artifacts/Service.java, sascha@77: artifacts/src/main/java/de/intevation/artifacts/ArtifactDatabaseException.java, sascha@77: artifacts/src/main/java/de/intevation/artifacts/ArtifactDatabase.java, sascha@77: artifacts/src/main/java/de/intevation/artifacts/CallMeta.java, sascha@77: artifacts/src/main/java/de/intevation/artifacts/ArtifactFactory.java, sascha@77: artifacts/src/main/java/de/intevation/artifacts/ArtifactSerializer.java, sascha@77: artifacts/src/main/java/de/intevation/artifacts/ServiceFactory.java, sascha@77: artifacts/src/main/java/de/intevation/artifacts/ArtifactContextFactory.java, sascha@77: artifacts/src/main/java/de/intevation/artifacts/Artifact.java, sascha@77: artifacts/src/main/java/de/intevation/artifacts/PreferredLocale.java: sascha@77: find -name \*.java | \ sascha@77: xargs sed -i \ sascha@77: -e 's/@author[ ]\+\([^(<]\+\)[<(]\([^>)]\+\)[>)]/@author \1<\/a>/g' \ sascha@77: -e 's@[ ]\+@@g' sascha@77: sascha@77: Bring @author javadoc tags in form '@author John Doe' sascha@77: to make the sources to be able to be formatted with jalopy (http://jalopy.sourceforge.net). sascha@77: ingo@76: 2010-02-05 Ingo Weinzierl ingo@76: ingo@76: Issue170 ingo@76: ingo@76: * artifact-database/pom.xml: Changed log4j version to 1.2.14 (later version ingo@76: causes errors and breaks while maven build process). ingo@76: tim@75: 2010-02-01 Tim Englich tim@75: tim@75: * artifact-database/src/main/java/de/intevation/artifactdatabase/rest/CreateResource.java (innerPost): tim@75: Put the XML-Document which was send by the client to the tim@75: ArtifactDatabase.createArtifactWithFactory-Method. tim@75: tim@75: * artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifactFactory.java (createArtifact), tim@75: artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java (createArtifactWithFactory), tim@75: artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifact.java (setup), tim@75: artifacts/src/main/java/de/intevation/artifacts/ArtifactFactory.java (setup), tim@75: artifacts/src/main/java/de/intevation/artifacts/ArtifactDatabase.java (createArtifactWithFactory), tim@75: artifacts/src/main/java/de/intevation/artifacts/Artifact.java (setup): tim@75: Changed Method signatures so that it is possible to put the Document tim@75: which will be send during the create Step of an Artifact to the Setup-Routine tim@75: of an Artifact. tim@75: Now it is possible to send further Informations to the Artifact using the tim@75: XML-Document. tim@75: This is nessesary for manipoulating the Artifact e.g. setting Parameters tim@75: which should only be displaied or e.g. put an Geometry-Object into the tim@75: Artifact which should limit the displayed results. tim@75: hans@74: 2010-01-27 Hans Plum hans@74: hans@74: RELEASE 0.4 hans@74: hans@74: * Changes, NEWS, ChangeLog: summarized activities. hans@74: sascha@73: 2010-01-22 Sascha L. Teichmann sascha@73: sascha@73: * artifact-database/src/main/java/de/intevation/artifactdatabase/rest/ServiceResource.java: sascha@73: New REST wrapper to call the service. Bound under '/service/{service}' sascha@73: where '{service}' is the name of the service as announced by '/services'. sascha@73: sascha@73: * artifact-database/src/main/java/de/intevation/artifactdatabase/rest/RestApp.java: sascha@73: Register new resource to web server. sascha@73: sascha@72: 2010-01-22 Sascha L. Teichmann sascha@72: sascha@72: * artifact-database/src/main/java/de/intevation/artifactdatabase/rest/ServicesResource.java: sascha@72: New. Serves a list of available services under '/services' as XML. Structure sascha@72: is much like '/factories' with 's/artifact/service/'. sascha@72: sascha@72: * artifact-database/src/main/java/de/intevation/artifactdatabase/rest/RestApp.java: sascha@72: Register new resource to web server. sascha@72: sascha@71: 2010-01-22 Sascha L. Teichmann sascha@71: sascha@71: * artifact-database/src/main/java/de/intevation/artifactdatabase/FactoryBootstrap.java: sascha@71: Load service factories while bootstrapping the server. sascha@71: sascha@71: * artifact-database/doc/example-conf/conf.xml: Added examples for trivial services. sascha@71: sascha@70: 2010-01-22 Sascha L. Teichmann sascha@70: sascha@70: * artifacts/src/main/java/de/intevation/artifacts/ArtifactDatabase.java: sascha@70: Forgot to throw exception if service is not available. sascha@70: sascha@70: * artifacts/src/main/java/de/intevation/artifacts/ServiceFactory.java: sascha@70: Fixed indention. sascha@70: sascha@70: * artifact-database/src/main/java/de/intevation/artifactdatabase/FactoryBootstrap.java: sascha@70: Implemented service factory loading trivial. TODO: Load sascha@70: them from the configuration. sascha@70: sascha@70: * artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java: sascha@70: Serve the services. sascha@70: sascha@70: 2010-01-22 Sascha L. Teichmann sascha@69: sascha@69: * artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultService.java: sascha@69: Default implementation of a service. Useful as a base class. sascha@69: sascha@69: * artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultServiceFactory.java: sascha@69: Default implementation of a service factory. Modelled right after sascha@69: DefaultArtifactFactory. Useful as a base class. sascha@69: sascha@70: 2010-01-22 Sascha L. Teichmann sascha@68: sascha@68: * artifacts/src/main/java/de/intevation/artifacts/Service.java: New. sascha@68: Interface to describe a service. It takes XML documents and produces sascha@68: XML documents. sascha@68: sascha@68: * artifacts/src/main/java/de/intevation/artifacts/ServiceFactory.java: sascha@68: Factory to create services. Setup at startup. sascha@68: sascha@68: * artifacts/src/main/java/de/intevation/artifacts/ArtifactDatabase.java: sascha@68: Added methods to describe the available services and call them. sascha@68: sascha@68: * artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java: sascha@68: Implemented new ArtifactDatabase interface trivial. TODO: sascha@68: Setting it up from configuration, do the processing, register sascha@68: urls in REST server and so on. sascha@68: sascha@70: 2010-01-22 Sascha L. Teichmann sascha@67: sascha@67: * artifact-database/src/main/java/de/intevation/artifactdatabase/XMLUtils.java: sascha@67: Added method 'toStream()' to copy a document into an output stream. sascha@67: ingo@66: 2010-01-15 Ingo Weinzierl ingo@66: ingo@66: * artifacts/src/main/java/de/intevation/artifacts/ArtifactDatabase.java, ingo@66: artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java: ingo@66: Added a method 'getInternalArtifactFactory' to get an ArtifactFactory by ingo@66: its name. ingo@66: ingo@66: * artifacts/src/main/java/de/intevation/artifacts/CallContext.java: Added ingo@66: 'getDatabase' method to get access to the ArtifactDatabase from context. ingo@66: ingo@65: 2010-01-12 Ingo Weinzierl ingo@65: ingo@65: * artifact-database/src/main/java/de/intevation/artifactdatabase/rest/ArtifactOutResource.java, ingo@65: artifact-database/src/main/java/de/intevation/artifactdatabase/rest/CreateResource.java: ingo@65: Create document namespace aware and adapted XPath expressions for this. ingo@65: ingo@64: 2010-01-09 Ingo Weinzierl ingo@64: ingo@64: * artifact-database/src/main/java/de/intevation/artifactdatabase/XMLUtils.java: ingo@64: Added convenient method to add attributes to nodes. Attributes have no ingo@64: prefix as default. ingo@64: ingo@64: * artifact-database/src/main/java/de/intevation/artifactdatabase/rest/ArtifactResource.java: ingo@64: Adapted xpath (added prefix) to find action and made the document which is ingo@64: created by this resource namespace aware. ingo@64: sascha@63: 2009-12-17 Sascha L. Teichmann sascha@63: sascha@63: RELEASE 0.3 sascha@63: sascha@63: * Changes, NEWS, ChangeLog: summarized activities. sascha@63: sascha@62: 2009-12-16 Sascha L. Teichmann sascha@62: sascha@62: * artifact-database/src/main/java/de/intevation/artifactdatabase/XMLUtils.java: sascha@62: Added static method parseDocument(File) to load document from sascha@62: file. sascha@62: ingo@61: 2009-12-15 Ingo Weinzierl ingo@61: ingo@61: Issue106 ingo@61: ingo@61: * artifact-database/src/main/java/de/intevation/artifactdatabase/Config.java: ingo@61: Removed path to chart template which doesn't belong here. ingo@61: sascha@60: 2009-12-11 Sascha L. Teichmann sascha@60: sascha@60: * artifact-database/src/main/java/de/intevation/artifactdatabase/ProxyArtifact.java: sascha@60: Removed needless import. sascha@60: 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