diff artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java @ 348:f2277458823e

Enabled 'post-describe' hooks for Artifacts. artifacts/trunk@3176 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Ingo Weinzierl <ingo.weinzierl@intevation.de>
date Mon, 07 Nov 2011 16:40:01 +0000
parents 542caebea773
children 9798e4d83681
line wrap: on
line diff
--- a/artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java	Fri Oct 28 10:08:35 2011 +0000
+++ b/artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java	Mon Nov 07 16:40:01 2011 +0000
@@ -444,6 +444,12 @@
      */
     protected List<Hook> postAdvanceHooks;
 
+    /**
+     * Hooks that are executed after an artifact's describe() operation was
+     * called.
+     */
+    protected List<Hook> postDescribeHooks;
+
     protected List<LifetimeListener> lifetimeListeners;
 
     /**
@@ -511,6 +517,10 @@
         this.postAdvanceHooks = postAdvanceHooks;
     }
 
+    public void setPostDescribeHook(List<Hook> postDescribeHooks) {
+        this.postDescribeHooks = postDescribeHooks;
+    }
+
     /**
      * Used to extract the artifact collection factory from bootstrap.
      *
@@ -558,6 +568,7 @@
     protected void setupHooks(FactoryBootstrap bootstrap) {
         setPostFeedHook(bootstrap.getPostFeedHooks());
         setPostAdvanceHook(bootstrap.getPostAdvanceHooks());
+        setPostDescribeHook(bootstrap.getPostDescribeHooks());
     }
 
     protected void setupBackendListeners(FactoryBootstrap bootstrap) {
@@ -847,7 +858,16 @@
             artifact);
 
         try {
-            return artifact.getArtifact().describe(data, cc);
+            Artifact art = artifact.getArtifact();
+            Document res = art.describe(data, cc);
+
+            if (postDescribeHooks != null) {
+                for (Hook hook: postDescribeHooks) {
+                    hook.execute(art, cc, res);
+                }
+            }
+
+            return res;
         }
         finally {
             cc.postCall();

http://dive4elements.wald.intevation.org