Mercurial > dive4elements > river
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++; } }