Hi Josh, What I've been doing so far is putting this into a file called 'valueobject-custom.xdt' in the merge directory:
public void getXML(org.jdom.Element el) throws org.dentaku.exception.XMLBeanException { try { <XDtEjbPersistent:forAllPersistentFields superclasses="false" valueobject="<XDtEjbValueObj:valueObjectMatch/>"> addChild(el, "<XDtMethod:methodNameWithoutPrefix/>", org.apache.commons.beanutils.BeanUtils.getSimpleProperty(this, "<XDtMethod:propertyName/>")); </XDtEjbPersistent:forAllPersistentFields> } catch (Exception e) { throw new org.dentaku.exception.XMLBeanException("error creating DOM", e); } } This generates code for one of my value objects that looks like: public void getXML(org.jdom.Element el) throws org.dentaku.exception.XMLBeanException { try { addChild(el, "Remarks", org.apache.commons.beanutils.BeanUtils.getSimpleProperty(this, "remarks")); addChild(el, "BillingStatus", org.apache.commons.beanutils.BeanUtils.getSimpleProperty(this, "billingStatus")); addChild(el, "Amount", org.apache.commons.beanutils.BeanUtils.getSimpleProperty(this, "amount")); addChild(el, "Id", org.apache.commons.beanutils.BeanUtils.getSimpleProperty(this, "id")); } catch (Exception e) { throw new org.dentaku.exception.XMLBeanException("error creating DOM", e); } } You'll notice the call to 'addChild' right away. This is declared in a base class that the value object inherits from. You can do this with a tag such as: @ejb:value-object name="VOBean" extends="org.dentaku.ejb.beans.vo.VOBase" ...and the class itself: public abstract class VOBase implements XMLBean { protected static void addChild(org.jdom.Element el, String name, Object prop) { org.jdom.Element child = new org.jdom.Element(name); if (prop instanceof XMLBean) { ((XMLBean)prop).getXML(child); } else if (prop instanceof java.util.Date) { child.addContent(dateFormat.format(prop)); } else { child.addContent(prop.toString()); } el.addContent(child); } } XMLBean simply allows polymorphic access to the various beans. You can flesh out addChild for specific special formatting cases that you need. Reverse serialization is handled with something like: public void setFromNode(Node node) throws IllegalAccessException, InvocationTargetException { NodeList childNodes = node.getChildNodes(); for (int i = 0; i < childNodes.getLength(); i++) { Node child = childNodes.item(i); if (child.getNodeType() != Node.ELEMENT_NODE) { continue; } String name = child.getNodeName(); String value = child.getFirstChild().getNodeValue(); if (name != null && value != null) { setProperty(name, value); } } } Again, I'd like to get this into the XDoclet source tree sooner than later, and focused on Hibernate instead of VOs. Any input/concerns/etc appreciated. brian > -----Original Message----- > From: Josh Rehman [mailto:[EMAIL PROTECTED] > Sent: Friday, August 08, 2003 11:03 AM > To: Brian Topping > Subject: Re: [Hibernate] Moving Hibernate objects with SOAP > > > Hi Brain. Comments below. > > Brian Topping wrote: > > One of the things that I currently do is use XDoclet to > generate inline > > transforms for going back and forth from XML to entity. > You end up with > > hardcoded serializers, which are very fast, but I don't have enough > > experience with it yet to know what extended maintenance is > going to be > > like. It would theoretically be possible to generate a > schema/dtd that > > goes with the serializers, and one maintenance process > might rename the > > then-current serializers and schema pair to something new > as the system > > grew (giving the ability to support backwards compatibility). Some > > environments won't need all this though. > > This sounds like a neat idea, and may lessen the maintenance headache > somewhat. Can you post some example XDoclet code? I'd like to > get a feel > for how large the serialization code is. > > > > > > Note that I am currently using it with XDoclet value > objects (DTOs, if I > > understand the two correctly) from entity beans. So what I > have will > > need a bit of work to make it work with Hibernate POJOs, > but not much > > and I plan on doing that work within the next few days. As it works > > today, simply changing your XDoclet tags for your entities > rewrites the > > serializers automagically. The same thing will happen with > the POJOs > > when I am done. > > I'd like to know how this works out for you. > > Thanks, > Josh > > ------------------------------------------------------- This SF.Net email sponsored by: Free pre-built ASP.NET sites including Data Reports, E-commerce, Portals, and Forums are available now. Download today and enter to win an XBOX or Visual Studio .NET. http://aspnet.click-url.com/go/psa00100003ave/direct;at.aspnet_072303_01/01 _______________________________________________ hibernate-devel mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/hibernate-devel