Saturday, September 19, 2009

Spring Bean locator

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
from xml.etree import ElementTree as ET
except ImportError:
from elementtree import ElementTree as ET

package xxx.util;

import xxx.SpringUtils;
public class SpringBeanLocator {
public static %(className)s get%(methodName)s() {
return (%(className)s) SpringUtils.getApplicationContext().getBean("%(beanId)s");
def main(contextPath, targetDir):
f = open(contextPath, 'r')
contextXml =;
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})
classStr = CLASS_TEMPLATE % ("".join(methods))
f = open(targetDir + '/', 'w')

def init():
main(sys.argv[1], sys.argv[2])

if __name__ == '__main__':

Subeclipse ignore whitespace compare

Subeclipse uses eclipse compare functionality.
Go to Windows->Preferences->General->Compare and check the ignore whitespace property

Thursday, September 17, 2009

TimeStamp your ant build

Download your ant contrib from and add it to your ANT_HOME\lib directory and run

ant -listener net.sf.antcontrib.perf.AntPerformanceListener deploy

This will print a summary report at the end like


Total time: 6 minutes 23 seconds

-------------- Target Results ---------------------
ui._applet_jar_deploy: 0.000 sec
server.replaceLdapTokens: 0.001 sec
ui.replace_applet_version_tags: 0.008 sec
server.baseDeploy.common: 0.018 sec
server.baseDeploy.common: 0.019 sec
server.baseDeploy.common: 0.023 sec
server.baseDeploy.common: 0.052 sec
ui.baseDeploy.common: 0.062 sec
server.baseDeploy: 0.102 sec
server.baseDeploy: 0.105 sec
server.baseDeploy: 0.108 sec
server.baseDeploy: 0.149 sec
ui.svnversion: 0.160 sec