本人一直想把zkconfigutil推向开源,虽现在不是很完善,但也从未停止前进的步伐,最近一直在想如何解决大量resolve的编写问题,写个eclipse插件看来是比较好的做法,JET也不好弄,所以由于时间限制,短期内没有过多时间去研究eclipse插件(虽对osgi还算熟悉),也在博客中发表过想找合作伙伴开发一个eclipse插件,但也不是很容易实现,所以产生了这个模版,这个实现相对比较容易,但也不能说是万能的,有弊端,但也可以完美满足非特殊情况,请您慢慢往下欣赏!!
resolve template文件在工程template下,网络地址:template resolve
这个模版实际上就是eclipse editor template,是个xml文件,您可以在Window -> Preferences -> Java -> Editor -> Templates
,选择import导入该xml即可
到底什么是resolve,为什么需要resolve,请您看这篇博客zkconfigutil详解
这里假设您看过了zkconfigutil的使用或原理实现,我们知道,想对某个class的某个属性实现zookeeper配置,我们需要为每个字段都写一个自己的resolve,这个工作量非常大,并重复性严重,那么有了这个工具后,假如我有个 Demo class
@TypeZkConfigurable(path = "/test/jerry", server = "localhost:2181", useOwnZkServer = false)
public final class Demo {
@FieldZkConfigurable(resolve = DemoF1Resolve.class, dynamicUpdate = true)
public static String F1 = "F1";
@FieldZkConfigurable(resolve = DemoF2Resolve.class, dynamicUpdate = true)
public static String F2 = "F2";
@FieldZkConfigurable(resolve = DemoF3Resolve.class, dynamicUpdate = true)
public static Boolean F3 = false;
}
现在我想写F2字段的DemoF2Resolve.class,您可以在这个demo的空白位置,写个F2(必须与相应属性的名字相同,不同也可以,自己再调整),然后按eclipse的提示快捷键,一般为 ALT+/,在提示列表中会看到resolve,选择这个resolve,eclipse就会根据resolve_template.xml生成DemoF2Resolve.class了,如果您的这个属性是string类型,那么接下来就不需要做任何事情,直接可以使用
代码实例如下:
private static final class DemoF2Resolve extends AbstractResolve {
@Override
public String resolve() {
// TODO Auto-generated method stub
return Demo.F2.toString();
}
@Override
public void dResolve(String src) {
// TODO Auto-generated method stub
Demo.F2 = src;
}
}
---------------------------------------------------------------------------
添加通用resolve生成模板
cast_resolve_template.xml文件在工程template下,地址:cast_resolve_template
自动生成resolve如下:
public static final class DemoF3Resolve extends AbstractResolve {
@Override
public String resolve() {
// TODO Auto-generated method stub
return Demo.F3.toString();
}
@Override
public void dResolve(String src) {
// TODO Auto-generated method stub
Demo.F3 = Demo.F3.getClass().cast(src);
}
}
时候不早了,写的比较仓促,有些地方可能说的不是很清晰,希望大家有问题或有更好的实现、idea,可以在下方留言或直接联系兄弟
email:search.jerry@gmail.com
jerry 于2014-03-01 凌晨