package jadex.xml.tutorial.jibx.example21; import jadex.commons.SUtil; import jadex.xml.AccessInfo; import jadex.xml.AttributeInfo; import jadex.xml.IContext; import jadex.xml.IObjectObjectConverter; import jadex.xml.IReturnValueCommand; import jadex.xml.MappingInfo; import jadex.xml.ObjectInfo; import jadex.xml.SubObjectConverter; import jadex.xml.SubobjectInfo; import jadex.xml.TypeInfo; import jadex.xml.XMLInfo; import jadex.xml.bean.BeanAccessInfo; import jadex.xml.bean.BeanObjectReaderHandler; import jadex.xml.reader.Reader; import java.io.InputStream; import java.util.HashMap; import java.util.HashSet; import java.util.Map; import java.util.Set; import javax.xml.namespace.QName; /** * Main class to execute tutorial lesson c (taken from Jibx website). */ public class Main { /** * Main method for using the xml reader/writer. */ public static void main(String[] args) throws Exception { Set typeinfos = new HashSet(); typeinfos.add(new TypeInfo(new XMLInfo("name"), new ObjectInfo(Name.class), new MappingInfo(null, new AttributeInfo[]{ new AttributeInfo(new AccessInfo("first-name", "firstName")), new AttributeInfo(new AccessInfo("last-name", "lastName")) }))); typeinfos.add(new TypeInfo(new XMLInfo("customer"), new ObjectInfo(Customer.class))); typeinfos.add(new TypeInfo(new XMLInfo("entry"), new ObjectInfo(HashMap.class), new MappingInfo(null, new AttributeInfo[]{ new AttributeInfo(new AccessInfo("key", null, null, null, new BeanAccessInfo(AccessInfo.THIS)))}, new SubobjectInfo[]{ new SubobjectInfo(new AccessInfo("customer", null, null, null, new BeanAccessInfo(AccessInfo.THIS))) }))); typeinfos.add(new TypeInfo(new XMLInfo("directory"), new ObjectInfo(Directory.class), new MappingInfo(null, new SubobjectInfo[]{ new SubobjectInfo(new AccessInfo("entry", null, null, null, new BeanAccessInfo(Directory.class.getField("customerMap"), null, "customerMap", new IReturnValueCommand() { public Object execute(Object args) { return ((Map)args).get("key"); } })), new SubObjectConverter(new IObjectObjectConverter() { public Object convertObject(Object val, IContext context) { return ((Map)val).get("customer"); } }, null)) }))); // Create an xml reader with standard bean object reader and the // custom typeinfos Reader xmlreader = new Reader(new BeanObjectReaderHandler(typeinfos)); InputStream is = SUtil.getResource("jadex/xml/tutorial/jibx/example21/data0.xml", null); Object object1 = xmlreader.read(is, null, null); is.close(); // And print out the result. System.out.println("Read object 1: "+object1); typeinfos = new HashSet(); String uri = "http://www.sosnoski.com"; typeinfos.add(new TypeInfo(new XMLInfo(new QName[]{new QName(uri, "name")}), new ObjectInfo(Name.class), new MappingInfo(null, new AttributeInfo[]{ new AttributeInfo(new AccessInfo(new QName(uri, "first-name"), "firstName")), new AttributeInfo(new AccessInfo(new QName(uri, "last-name"), "lastName")) }))); typeinfos.add(new TypeInfo(new XMLInfo(new QName[]{new QName(uri, "customer")}), new ObjectInfo(Customer.class))); typeinfos.add(new TypeInfo(new XMLInfo(new QName[]{new QName(uri, "entry")}), new ObjectInfo(HashMap.class), new MappingInfo(null, new AttributeInfo[]{ new AttributeInfo(new AccessInfo(new QName(uri, "key"), null, null, null, new BeanAccessInfo(AccessInfo.THIS)))}, new SubobjectInfo[]{ new SubobjectInfo(new AccessInfo(new QName(uri, "customer"), null, null, null, new BeanAccessInfo(AccessInfo.THIS))) }))); typeinfos.add(new TypeInfo(new XMLInfo(new QName[]{new QName(uri, "directory")}), new ObjectInfo(Directory.class), new MappingInfo(null, new SubobjectInfo[]{ new SubobjectInfo(new AccessInfo(new QName(uri, "entry"), null, null, null, new BeanAccessInfo(Directory.class.getField("customerMap"), null, "customerMap", new IReturnValueCommand() { public Object execute(Object args) { return ((Map)args).get("key"); } })), new SubObjectConverter(new IObjectObjectConverter() { public Object convertObject(Object val, IContext context) { return ((Map)val).get("customer"); } }, null)) }))); xmlreader = new Reader(new BeanObjectReaderHandler(typeinfos)); is = SUtil.getResource("jadex/xml/tutorial/jibx/example21/data1.xml", null); Object object2 = xmlreader.read(is, null, null); is.close(); System.out.println("Read object 2: "+object2); } }