Alex,
Inspired by this blog http://www.almaer.com/blog/archives/000356.html, I tried to implement a basic JythonBeanFactory in the last weekend. By reading the source code of Jython utility package, I finally make this BeanFactory work.
Basically, the configuraiton(ApplicaitionContext.py) looks like this:
Code:
from JythonContextUtil import getBeansList
beans_list = {}
# Real Configuration.
from java import util
d = util.Date()
beans_list["d"] = d
from org.apache.commons.dbcp import BasicDataSource
myDataSource = BasicDataSource(
driverClassName = "com.mysql.jdbc.Driver",
url="jdbc:mysql://localhost:3306/xplanner",
username="test",
password="test"
)
beans_list["datasource"] = myDataSource
# convert beans_list to java Map
beanlist = getBeansList(beans_list)
From Java side, we can use "getBean" method to get the real java instance.
Code:
BeanFactory factory = new JythonBeanFactory("ApplicaitionContext.py");
Date d = (Date)factory.getBean("d");
System.out.println(d);
DataSource datasource = (DataSource) factory.getBean("datasource");
The way I implement the BeanFactory is using a PyDictionary object to store PyObjects or Java instances created in Jython file, then convert it to Java Map object in the JythonBeanFactory. In the above "ApplicaitionContext.py" file, we actually get two beans, whose names are "d" and "datasource".
cheers,
Yan