++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
A python file to read applicationcontext.xml and generate Spring bean locator class. this will remove the need to lookup bean using string constant. This class assumes that you have a SpringUtil class that will provide you the application context. A sample class that will be generated looks like
package xxx.util;
import xxx.util.SpringUtils;
public class SpringBeanLocator {
public static xxx.cache.JCache getJcache() {
return (xxx.cache.JCache) SpringUtils.getApplicationContext().getBean("jcache");
}
public static xxx.ldap.LDAPHelper getLdapHelper() {
return (xxx.ldap.LDAPHelper) SpringUtils.getApplicationContext().getBean("ldapHelper");
}
......................
}
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
import sys
try:
from xml.etree import ElementTree as ET
except ImportError:
from elementtree import ElementTree as ET
CLASS_TEMPLATE ="""
package xxx.util;
import xxx.SpringUtils;
public class SpringBeanLocator {
%s
}
"""
METHOD_TEMPLATE ="""
public static %(className)s get%(methodName)s() {
return (%(className)s) SpringUtils.getApplicationContext().getBean("%(beanId)s");
}
"""
def main(contextPath, targetDir):
f = open(contextPath, 'r')
contextXml = f.read();
f.close()
root = ET.fromstring(contextXml)
methods = []
for bean in root.findall('bean'):
beanId = bean.get('id')
if beanId == None:
beanId = bean.get('name')
className = bean.get('class')
methodName = beanId[0].upper() + beanId[1:]
method = METHOD_TEMPLATE % ({'className':className, 'methodName':methodName, 'beanId':beanId})
methods.append(method)
classStr = CLASS_TEMPLATE % ("".join(methods))
f = open(targetDir + '/SpringBeanLocator.java', 'w')
f.write(classStr)
f.close()
def init():
main(sys.argv[1], sys.argv[2])
if __name__ == '__main__':
init()
A python file to read applicationcontext.xml and generate Spring bean locator class. this will remove the need to lookup bean using string constant. This class assumes that you have a SpringUtil class that will provide you the application context. A sample class that will be generated looks like
package xxx.util;
import xxx.util.SpringUtils;
public class SpringBeanLocator {
public static xxx.cache.JCache getJcache() {
return (xxx.cache.JCache) SpringUtils.getApplicationContext().getBean("jcache");
}
public static xxx.ldap.LDAPHelper getLdapHelper() {
return (xxx.ldap.LDAPHelper) SpringUtils.getApplicationContext().getBean("ldapHelper");
}
......................
}
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
import sys
try:
from xml.etree import ElementTree as ET
except ImportError:
from elementtree import ElementTree as ET
CLASS_TEMPLATE ="""
package xxx.util;
import xxx.SpringUtils;
public class SpringBeanLocator {
%s
}
"""
METHOD_TEMPLATE ="""
public static %(className)s get%(methodName)s() {
return (%(className)s) SpringUtils.getApplicationContext().getBean("%(beanId)s");
}
"""
def main(contextPath, targetDir):
f = open(contextPath, 'r')
contextXml = f.read();
f.close()
root = ET.fromstring(contextXml)
methods = []
for bean in root.findall('bean'):
beanId = bean.get('id')
if beanId == None:
beanId = bean.get('name')
className = bean.get('class')
methodName = beanId[0].upper() + beanId[1:]
method = METHOD_TEMPLATE % ({'className':className, 'methodName':methodName, 'beanId':beanId})
methods.append(method)
classStr = CLASS_TEMPLATE % ("".join(methods))
f = open(targetDir + '/SpringBeanLocator.java', 'w')
f.write(classStr)
f.close()
def init():
main(sys.argv[1], sys.argv[2])
if __name__ == '__main__':
init()
so greeaaat
ReplyDelete