1 16 package org.outerj.daisy.frontend.editor; 17 18 import org.apache.cocoon.forms.datatype.convertor.ConvertorBuilder; 19 import org.apache.cocoon.forms.datatype.convertor.Convertor; 20 import org.apache.cocoon.forms.util.DomHelper; 21 import org.apache.xmlbeans.XmlOptions; 22 import org.w3c.dom.Element ; 23 import org.outerj.daisy.frontend.editor.XmlBeansConvertor; 24 25 import java.lang.reflect.Method ; 26 import java.io.Reader ; 27 28 public class XmlBeansConvertorBuilder implements ConvertorBuilder { 29 public Convertor build(Element element) throws Exception { 30 String xmlbeansClassName = DomHelper.getAttribute(element, "class"); 31 Class xmlbeansClass = this.getClass().getClassLoader().loadClass(xmlbeansClassName); 32 Class [] factoryClasses = xmlbeansClass.getDeclaredClasses(); 33 Class factoryClass = null; 34 for (int i = 0; i < factoryClasses.length; i++) { 35 if (factoryClasses[i].getName().endsWith("$Factory")) { 36 factoryClass = factoryClasses[i]; 37 break; 38 } 39 } 40 if (factoryClass == null) { 41 throw new Exception ("Could not find Factory inner class in XmlBeans class " + xmlbeansClassName); 42 } 43 44 Method parseMethod = factoryClass.getMethod("parse", new Class [] {Reader .class, XmlOptions.class}); 45 return new XmlBeansConvertor(parseMethod); 46 } 47 } 48 | Popular Tags |