java - Static property Intercept in groovy -


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