[Ejtools-cvs] CVS: libraries/xmlweb/src/main/net/sourceforge/ejtools/xml/beans BeanContextXmlProxy.j
Brought to you by:
letiemble
From: Laurent E. <let...@us...> - 2002-04-20 11:42:10
|
Update of /cvsroot/ejtools/libraries/xmlweb/src/main/net/sourceforge/ejtools/xml/beans In directory usw-pr-cvs1:/tmp/cvs-serv28695 Added Files: BeanContextXmlProxy.java BeanContextXmlTree.java GenericXmlCustomizer.java MethodXmlCustomizer.java PropertyXmlCustomizer.java XmlCustomizer.java Log Message: Initial Import --- NEW FILE: BeanContextXmlProxy.java --- /* * EJTools, the Enterprise Java Tools * * Distributable under LGPL license. * See terms of license at www.gnu.org. */ package net.sourceforge.ejtools.xml.beans; import net.sourceforge.ejtools.xml.XmlComponent; /** * Description of the Class * * @author letiembl * @created 26 février 2002 */ public interface BeanContextXmlProxy { /** * Getter for the xmlProxy attribute * * @return The value of xmlProxy attribute */ public XmlComponent getXmlProxy(); } --- NEW FILE: BeanContextXmlTree.java --- /* * EJTools, the Enterprise Java Tools * * Distributable under LGPL license. * See terms of license at www.gnu.org. */ package net.sourceforge.ejtools.xml.beans; import java.beans.beancontext.BeanContext; import java.util.Collection; import java.util.Iterator; import net.sourceforge.ejtools.xml.XmlTreeNode; /** * Description of the Class * * @author letiembl * @created 26 février 2002 */ public class BeanContextXmlTree extends XmlTreeNode { /** * Constructor for the BeanContextXmlTree object * * @param context Description of Parameter */ public BeanContextXmlTree(BeanContext context) { this.setUserObject(context); updateTree((BeanContext) getUserObject(), this); } /** * Description of the Method * * @param collection Description of Parameter * @param node Description of Parameter */ private void updateTree(Collection collection, XmlTreeNode node) { for (Iterator iterator = collection.iterator(); iterator.hasNext(); ) { Object obj = iterator.next(); XmlTreeNode node2 = new XmlTreeNode(); node2.setUserObject(obj); node.add(node2); if (obj instanceof Collection) { updateTree((Collection) obj, node2); } } } } --- NEW FILE: GenericXmlCustomizer.java --- /* * EJTools, the Enterprise Java Tools * * Distributable under LGPL license. * See terms of license at www.gnu.org. */ package net.sourceforge.ejtools.xml.beans; import java.beans.BeanInfo; import java.beans.Introspector; import java.beans.MethodDescriptor; import java.beans.PropertyDescriptor; import java.lang.reflect.Method; import java.util.Enumeration; import org.w3c.dom.Document; import org.w3c.dom.Element; import net.sourceforge.ejtools.xml.XmlContainer; import net.sourceforge.ejtools.xml.XmlText; /** * Description of the Class * * @author letiembl * @created 26 février 2002 */ public class GenericXmlCustomizer extends XmlContainer implements XmlCustomizer { /** Description of the Field */ protected Object object = null; /** Description of the Field */ protected BeanInfo beaninfo = null; /** Constructor for the GenericXMLCustomizer object */ public GenericXmlCustomizer() { this(null, null); } /** * Constructor for the GenericXmlCustomizer object * * @param object Description of Parameter */ public GenericXmlCustomizer(Object object) { this(object, null); } /** * Constructor * * @param object Description of Parameter * @param beaninfo Description of Parameter */ public GenericXmlCustomizer(Object object, BeanInfo beaninfo) { super("customizer"); setObject(object); setBeanInfo(beaninfo); } /** * Setter for the beanInfo attribute * * @param beaninfo The new value */ public void setBeanInfo(BeanInfo beaninfo) { if (beaninfo != null) { this.beaninfo = beaninfo; } else { try { if (object instanceof BeanInfo) { // The object is a BeanInfo this.beaninfo = (BeanInfo) object; } else { // Get the default BeanInfo this.beaninfo = Introspector.getBeanInfo(object.getClass()); } } catch (Exception e) { } } try { XmlContainer descriptor = new XmlContainer("descriptor"); add(descriptor); XmlText name = new XmlText("name"); name.setText(beaninfo.getBeanDescriptor().getName()); descriptor.add(name); XmlText displayName = new XmlText("display-name"); displayName.setText(beaninfo.getBeanDescriptor().getDisplayName()); descriptor.add(displayName); XmlText description = new XmlText("description"); description.setText(beaninfo.getBeanDescriptor().getShortDescription()); descriptor.add(description); Enumeration enum = beaninfo.getBeanDescriptor().attributeNames(); while (enum.hasMoreElements()) { String featureName = (String) enum.nextElement(); String featureValue = beaninfo.getBeanDescriptor().getValue(featureName).toString(); XmlText feature = new XmlText(featureName); feature.setText(featureValue); descriptor.add(feature); } XmlContainer properties = new XmlContainer("properties"); add(properties); PropertyDescriptor[] pd = this.beaninfo.getPropertyDescriptors(); for (int i = 0; i < pd.length; i++) { Method rm = pd[i].getReadMethod(); System.out.println("Read Method " + rm); if (rm != null) { if (!rm.getDeclaringClass().equals(java.lang.Object.class) && !pd[i].isHidden()) { PropertyXmlCustomizer pc = new PropertyXmlCustomizer(object, pd[i]); properties.add(pc); } } } XmlContainer methods = new XmlContainer("methods"); add(methods); MethodDescriptor[] md = this.beaninfo.getMethodDescriptors(); for (int i = 0; i < md.length; i++) { Method m = md[i].getMethod(); Class c = m.getDeclaringClass(); // Skip java.lang.Object methods // Skip java.lang.reflect.Proxy methods // Skip java.beans.BeanInfo methods if (!c.equals(java.lang.Object.class) && !c.equals(java.lang.reflect.Proxy.class) && !c.equals(java.beans.BeanInfo.class)) { // Skip the getters and the setters if (!m.getName().startsWith("get") && !m.getName().startsWith("set") && !m.getName().startsWith("is")) { MethodXmlCustomizer mc = new MethodXmlCustomizer(md[i]); methods.add(mc); } } } } catch (Exception e) { e.printStackTrace(); } } /** * Setter for the object attribute * * @param object The new value for object attribute */ public void setObject(Object object) { this.object = object; } } --- NEW FILE: MethodXmlCustomizer.java --- /* * EJTools, the Enterprise Java Tools * * Distributable under LGPL license. * See terms of license at www.gnu.org. */ package net.sourceforge.ejtools.xml.beans; import java.beans.MethodDescriptor; import java.util.Enumeration; import org.w3c.dom.Document; import org.w3c.dom.Element; import net.sourceforge.ejtools.xml.XmlContainer; import net.sourceforge.ejtools.xml.XmlText; /** * Description of the Class * * @author letiembl * @created 26 février 2002 */ public class MethodXmlCustomizer extends XmlContainer { /** Description of the Field */ protected MethodDescriptor md = null; /** * Constructor for the MethodXmlEditor object * * @param md Description of Parameter */ public MethodXmlCustomizer(MethodDescriptor md) { super("method"); this.md = md; // Add method attributes Enumeration enum = md.attributeNames(); while (enum.hasMoreElements()) { String featureName = (String) enum.nextElement(); String featureValue = md.getValue(featureName).toString(); XmlText feature = new XmlText(featureName); feature.setText(featureValue); add(feature); } // Add return type XmlText type = new XmlText("type"); type.setText(md.getMethod().getReturnType().getName()); add(type); /* * ParameterDescriptor[] params = md.getParameterDescriptors(); * for (int i = 0; i < params.length; i++) * { * } */ } /** * Description of the Method * * @return Description of the Returned Value */ public String toString() { return "Xml Method (method=" + md.getMethod().getName() + ")"; } /** * Description of the Method * * @param document Description of Parameter * @return Description of the Returned Value * @exception Exception Description of Exception */ public Element printXml(Document document) throws Exception { // Build output Element element = super.printXml(document); element.setAttribute("name", md.getName()); element.setAttribute("display-name", md.getDisplayName()); element.setAttribute("description", md.getShortDescription()); return element; } } --- NEW FILE: PropertyXmlCustomizer.java --- /* * EJTools, the Enterprise Java Tools * * Distributable under LGPL license. * See terms of license at www.gnu.org. */ package net.sourceforge.ejtools.xml.beans; import java.beans.PropertyDescriptor; import java.lang.reflect.Method; import org.w3c.dom.Document; import org.w3c.dom.Element; import net.sourceforge.ejtools.xml.XmlComponent; import net.sourceforge.ejtools.xml.XmlContainer; import net.sourceforge.ejtools.xml.XmlText; import net.sourceforge.ejtools.xml.editors.XmlPropertyEditor; import net.sourceforge.ejtools.xml.editors.XmlPropertyEditorManager; /** * Description of the Class * * @author letiembl * @created 26 février 2002 */ public class PropertyXmlCustomizer extends XmlContainer { /** Description of the Field */ protected PropertyDescriptor pd = null; /** Description of the Field */ protected Object object = null; /** * Constructor for the GenericXMLCustomizer object * * @param object Description of Parameter * @param pd Description of Parameter */ public PropertyXmlCustomizer(Object object, PropertyDescriptor pd) { super("property"); this.object = object; this.pd = pd; try { Class propertyType = pd.getPropertyType(); XmlText type = new XmlText("type"); type.setText(propertyType.getName()); add(type); Method getter = pd.getReadMethod(); Object value = getter.invoke(object, new Object[0]); if (propertyType.isArray()) { Class componentType = propertyType.getComponentType(); System.out.println("Component " + componentType); XmlPropertyEditor editor = XmlPropertyEditorManager.findXmlEditor(componentType); if (editor != null && value != null) { Object[] list = (Object[]) value; for (int i = 0; i < list.length; i++) { XmlComponent renderer = null; editor = XmlPropertyEditorManager.findXmlEditor(componentType); editor.setValue(list[i]); if (editor.supportsCustomRenderer()) { renderer = editor.getCustomRenderer(); } else { XmlText content = new XmlText(); content.setText(list[i].toString()); renderer = content; } add(renderer); } } } else { XmlPropertyEditor editor = XmlPropertyEditorManager.findXmlEditor(propertyType); if (editor != null) { XmlComponent renderer = null; editor.setValue(value); if (editor.supportsCustomRenderer()) { renderer = editor.getCustomRenderer(); } else { XmlText content = new XmlText(); content.setText((String) value); renderer = content; } add(renderer); } } } catch (Exception e) { e.printStackTrace(); } } /** * Description of the Method * * @return Description of the Returned Value */ public String toString() { return "Xml Property (Name=" + pd.getName() + ")"; } /** * Description of the Method * * @param document Description of Parameter * @return Description of the Returned Value * @exception Exception Description of Exception */ public Element printXml(Document document) throws Exception { // Build output Element element = super.printXml(document); element.setAttribute("name", pd.getName()); element.setAttribute("display-name", pd.getDisplayName()); element.setAttribute("description", pd.getShortDescription()); return element; } } --- NEW FILE: XmlCustomizer.java --- /* * EJTools, the Enterprise Java Tools * * Distributable under LGPL license. * See terms of license at www.gnu.org. */ package net.sourceforge.ejtools.xml.beans; import java.beans.BeanInfo; /** * Description of the Class * * @author letiembl * @created 26 février 2002 */ public interface XmlCustomizer { /** * Setter for the object attribute * * @param bean The new value for object attribute */ public void setObject(Object bean); /** * Setter for the beanInfo attribute * * @param beaninfo The new value */ public void setBeanInfo(BeanInfo beaninfo); } |