diff artifacts/src/main/java/org/dive4elements/river/artifacts/context/RiverContextFactory.java @ 8219:9667900536b6

Added context injector to generators.
author Sascha L. Teichmann <teichmann@intevation.de>
date Mon, 08 Sep 2014 13:17:49 +0200
parents e4606eae8ea5
children c87c87544cc6
line wrap: on
line diff
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/context/RiverContextFactory.java	Mon Sep 08 12:28:16 2014 +0200
+++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/context/RiverContextFactory.java	Mon Sep 08 13:17:49 2014 +0200
@@ -28,6 +28,8 @@
 import org.dive4elements.artifacts.ArtifactContextFactory;
 import org.dive4elements.artifacts.GlobalContext;
 
+import org.dive4elements.artifacts.ContextInjector;
+
 import org.dive4elements.artifacts.common.utils.Config;
 import org.dive4elements.artifacts.common.utils.ElementConverter;
 import org.dive4elements.artifacts.common.utils.XMLUtils;
@@ -350,9 +352,10 @@
         for (int i = 0; i < num; i++) {
             Element item = (Element)outGenerators.item(i);
 
-            String names = item.getAttribute("names").trim();
-            String clazz = item.getAttribute("class").trim();
+            String names     = item.getAttribute("names").trim();
+            String clazz     = item.getAttribute("class").trim();
             String converter = item.getAttribute("converter").trim();
+            String injector  = item.getAttribute("injector").trim();
 
             if (names.isEmpty() || clazz.isEmpty()) {
                 continue;
@@ -388,9 +391,28 @@
                 }
             }
 
+            ContextInjector ci = null;
+
+            if (!injector.isEmpty()) {
+                try {
+                    ci = (ContextInjector)Class.forName(injector)
+                        .newInstance();
+                    ci.setup(item);
+                }
+                catch (ClassNotFoundException cnfe) {
+                    log.error(cnfe, cnfe);
+                }
+                catch (InstantiationException ie) {
+                    log.error(ie);
+                }
+                catch (IllegalAccessException iae) {
+                    log.error(iae);
+                }
+            }
+
             for (String key: names.split("[\\s,]")) {
                 if (!(key = key.trim()).isEmpty()) {
-                    generators.putGenerator(key, generatorClass, cfg);
+                    generators.putGenerator(key, generatorClass, cfg, ci);
                     idx++;
                 }
             }

http://dive4elements.wald.intevation.org