package org.oddjob.swing;
import java.util.Date;
import org.oddjob.Oddjob;
import org.oddjob.OddjobDescriptorFactory;
import org.oddjob.OddjobLookup;
import org.oddjob.Resetable;
import org.oddjob.arooa.ArooaParseException;
import org.oddjob.arooa.convert.ArooaConversionException;
import org.oddjob.arooa.reflect.ArooaPropertyException;
import org.oddjob.arooa.standard.StandardArooaSession;
import org.oddjob.arooa.xml.XMLConfiguration;
import org.oddjob.persist.MapPersister;
public class ConfigureBeanMain {
public static class MyBean {
private String name;
private Date dateOfBirth;
private double height;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Date getDateOfBirth() {
return dateOfBirth;
}
public void setDateOfBirth(Date dateOfBirth) {
this.dateOfBirth = dateOfBirth;
}
public double getHeight() {
return height;
}
public void setHeight(double height) {
this.height = height;
}
}
public void simpleBeanOnly() {
ConfigureBeanJob job = new ConfigureBeanJob();
MyBean bean = new MyBean();
job.setBean(bean);
job.setArooaSession(new StandardArooaSession(
new OddjobDescriptorFactory().createDescriptor(
getClass().getClassLoader())));
job.run();
System.out.println(bean.getName());
System.out.println(bean.getDateOfBirth());
System.out.println(bean.getHeight());
}
public void simpleInOddjob() throws ArooaPropertyException, ArooaConversionException {
String inner =
"<oddjob xmlns:magic='http://rgordon.co.uk/oddjob/magic'>" +
" <job>" +
" <class class='org.oddjob.swing.ConfigureBeanJob'" +
" id='job'>" +
" <bean>" +
" <magic:my-bean id='my-bean'/>" +
" </bean>" +
" </class>" +
" </job>" +
"</oddjob>";
String outer =
"<oddjob xmlns:arooa='http://rgordon.co.uk/oddjob/arooa'>" +
" <job>" +
" <oddjob id='inner' name='Inner'>" +
" <descriptorFactory>" +
" <arooa:magic-beans>" +
" <definitions>" +
" <arooa:magic-bean name='my-bean'>" +
" <properties>" +
" <arooa:magic-property name='name'/>" +
" <arooa:magic-property name='dateOfBirth'" +
" type='java.util.Date'/>" +
" <arooa:magic-property name='height'" +
" type='java.lang.Double'/>" +
" </properties>" +
" </arooa:magic-bean>" +
" </definitions>" +
" </arooa:magic-beans>" +
" </descriptorFactory>" +
" <configuration>" +
" <arooa:configuration>" +
" <xml>" +
" <xml>" +
inner +
" </xml>" +
" </xml>" +
" </arooa:configuration>" +
" </configuration>" +
" </oddjob>" +
" </job>" +
"</oddjob>";
MapPersister persister = new MapPersister();
persister.setPath("test");
Oddjob oddjob = new Oddjob();
oddjob.setConfiguration(new XMLConfiguration("XML", outer));
oddjob.setPersister(persister);
oddjob.run();
OddjobLookup lookup = new OddjobLookup(oddjob);
System.out.println(lookup.lookup("inner/my-bean.name"));
System.out.println(lookup.lookup("inner/my-bean.dateOfBirth"));
System.out.println(lookup.lookup("inner/my-bean.height"));
oddjob.destroy();
Oddjob oddjob2 = new Oddjob();
oddjob2.setConfiguration(new XMLConfiguration("XML", outer));
oddjob2.setPersister(persister);
oddjob2.setName("Outer");
oddjob2.load();
OddjobLookup lookup2 = new OddjobLookup(oddjob2);
Oddjob innerOddjob = lookup2.lookup("inner", Oddjob.class);
innerOddjob.load();
Object resetable = lookup2.lookup("inner/job");
((Resetable) resetable).hardReset();
((Runnable) resetable).run();
System.out.println(lookup2.lookup("inner/my-bean.name"));
System.out.println(lookup2.lookup("inner/my-bean.dateOfBirth"));
System.out.println(lookup2.lookup("inner/my-bean.height"));
}
public static void main(String... args) throws ArooaParseException, ArooaPropertyException, ArooaConversionException {
// new ConfigureBeanMain().simpleBeanOnly();
new ConfigureBeanMain().simpleInOddjob();
}
}