i creating configuration class in groovy below
class environmentconfig { string configfilepath config envconfig public environmentconfig (string configfilepath) { this.configfilepath = configfilepath envconfig = configfactory.load(configfilepath) } def propertymissing(string name) { envconfig.getstring(name) } } the idea class should instantiated once when application comes up, , every other class should able access class. have written small main class check something.
public static void main(string[] args) { environmentconfig envconfig = new environmentconfig(envconf) println "${envconfig.tess_workdir}" } this works fine, if write this
public static void main(string[] args) { environmentconfig envconfig = new environmentconfig(envconf) println "${environmentconfig.tess_workdir}" } it not works, want class should able use environmentconfig.tess_workdir , call should routed missingproperty method should return value.
it seems following code job, didn't test extensively:
class environmentconfig { map m environmentconfig (map m) { this.m = m this.class.metaclass.static.propertymissing = { name -> this.propertymissing(name) } } def propertymissing(string name) { this.@m[name] } } environmentconfig envconfig = new environmentconfig([tess_workdir:1]) assert envconfig.tess_workdir == 1 assert environmentconfig.tess_workdir == 1 envconfig = new environmentconfig([:]) assert envconfig.tess_workdir == null assert environmentconfig.tess_workdir == null
Comments
Post a Comment