Mercurial > dive4elements > river
diff artifacts/src/main/java/org/dive4elements/river/artifacts/context/RiverContext.java @ 7037:5c6fd2c010dd generator-refactoring
Add setup(Element config) method to Generator interface to be initialized from configuration.
author | Sascha L. Teichmann <teichmann@intevation.de> |
---|---|
date | Wed, 18 Sep 2013 15:04:26 +0200 |
parents | af13ceeba52a |
children | 24f153ad1f40 |
line wrap: on
line diff
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/context/RiverContext.java Wed Sep 18 10:12:47 2013 +0200 +++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/context/RiverContext.java Wed Sep 18 15:04:26 2013 +0200 @@ -13,10 +13,12 @@ import org.apache.log4j.Logger; import org.w3c.dom.Document; +import org.w3c.dom.Element; import org.dive4elements.artifactdatabase.DefaultArtifactContext; import org.dive4elements.artifacts.CallContext; import org.dive4elements.river.exports.OutGenerator; +import org.dive4elements.river.utils.Pair; /** @@ -99,17 +101,26 @@ ? (RiverContext) context : (RiverContext) context.globalContext(); - Map<String, Class> generators = (Map<String, Class>) - flysContext.get(RiverContext.OUTGENERATORS_KEY); + Map<String, Pair<Class<OutGenerator>, Element>> generators = + (Map<String, Pair<Class<OutGenerator>, Element>>)flysContext + .get(RiverContext.OUTGENERATORS_KEY); if (generators == null) { return null; } - Class clazz = generators.get(name); + Pair<Class<OutGenerator>, Element> pair = generators.get(name); + + if (pair == null) { + logger.warn("No generator class found for " + name); + return null; + } try { - return clazz != null ? (OutGenerator) clazz.newInstance() : null; + Class<OutGenerator> clazz = pair.getA(); + OutGenerator generator = clazz.newInstance(); + generator.setup(pair.getB()); + return generator; } catch (InstantiationException ie) { logger.error(ie, ie);