Mercurial > dive4elements > framework
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();