<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 TRANSITIONAL//EN">
<HTML>
<HEAD>
  <META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=UTF-8">
  <META NAME="GENERATOR" CONTENT="GtkHTML/3.2.4">
</HEAD>
<BODY>
On Thu, 2005-02-17 at 21:14 -0800, Tatu Saloranta wrote: 
<BLOCKQUOTE TYPE=CITE>
<PRE>
<FONT COLOR="#000000">--- &quot;Gregory S. Hill&quot; &lt;<A HREF="mailto:ghill@vmtllc.com">ghill@vmtllc.com</A>&gt; wrote:</FONT>

<FONT COLOR="#000000">&gt; I know almost nothing about Reflection, (other than</FONT>
<FONT COLOR="#000000">&gt; it's supposed to be </FONT>
<FONT COLOR="#000000">&gt; this really nifty-slick technology that solves all</FONT>
<FONT COLOR="#000000">&gt; problems magically!) </FONT>
<FONT COLOR="#000000">&gt; but would there be a way of using it to analyze the</FONT>
<FONT COLOR="#000000">&gt; setters </FONT>
<FONT COLOR="#000000">&gt; (transformers?  I get lost in the terminology</FONT>
<FONT COLOR="#000000">&gt; sometimes) and </FONT>
<FONT COLOR="#000000">&gt; automatically set the values according to the</FONT>
<FONT COLOR="#000000">&gt; element names in the XML? </FONT>
<FONT COLOR="#000000">&gt;   Am I completely talking out of my ass right now?</FONT>
<FONT COLOR="#000000">&gt; :)</FONT>

<FONT COLOR="#000000">Nope -- using Reflection is the obvious way to create</FONT>
<FONT COLOR="#000000">automated Object/XML bindings dynamically, along the</FONT>
<FONT COLOR="#000000">lines you are thinking of. It can dynamically figure</FONT>
<FONT COLOR="#000000">out available methods, and call them. There is some</FONT>
<FONT COLOR="#000000">overhead in doing so (both regarding convenience of</FONT>
<FONT COLOR="#000000">method calls and performance), but that's just part of</FONT>
<FONT COLOR="#000000">the trade-off; it buys flexibility.</FONT>
<FONT COLOR="#000000">So if you want to make a truly flexible system, that's</FONT>
<FONT COLOR="#000000">one obvious way to go, and used by most existing</FONT>
<FONT COLOR="#000000">binding system. Using Reflection API is bit cumbersome</FONT>
<FONT COLOR="#000000">(since it was bolted on to JVMs afterwards, not an</FONT>
<FONT COLOR="#000000">initial part of Java), but not all that complicated.</FONT>
<FONT COLOR="#000000">Another bit more advanced alternative is to generate</FONT>
<FONT COLOR="#000000">equivalent byte-code (optimally in run-time), usually</FONT>
<FONT COLOR="#000000">based on Reflection-obtained or configuration file</FONT>
<FONT COLOR="#000000">configuration.</FONT>

<FONT COLOR="#000000">There are other ways to solve the problem, and there's</FONT>
<FONT COLOR="#000000">often the compromise between writing/generating glue</FONT>
<FONT COLOR="#000000">code (to get better static type safety, but do more</FONT>
<FONT COLOR="#000000">monkey work one way or the other) and losing</FONT>
<FONT COLOR="#000000">type-safety (using generic 'getString(&quot;author&quot;);',</FONT>
<FONT COLOR="#000000">'getInt(&quot;salary&quot;)' etc methods).</FONT>

<FONT COLOR="#000000">-+ Tatu +-</FONT>



<FONT COLOR="#000000">                </FONT>
<FONT COLOR="#000000">__________________________________ </FONT>
<FONT COLOR="#000000">Do you Yahoo!? </FONT>
<FONT COLOR="#000000">Take Yahoo! Mail with you! Get it on your mobile phone. </FONT>
<FONT COLOR="#000000"><A HREF="http://mobile.yahoo.com/maildemo">http://mobile.yahoo.com/maildemo</A> </FONT>
<FONT COLOR="#000000">_______________________________________________</FONT>
<FONT COLOR="#000000">To control your jdom-interest membership:</FONT>
<FONT COLOR="#000000"><A HREF="http://www.jdom.org/mailman/options/jdom-interest/youraddr@yourhost.com">http://www.jdom.org/mailman/options/jdom-interest/youraddr@yourhost.com</A></FONT>
</PRE>
</BLOCKQUOTE>
I was just about to reply as you did ... <BR>
<BR>
Anton, if you name the methods in Customer say setName and so on you can just call the method by the child name (just capitalize the 1st char) and instantiate the class by the element name ( again capitalize the 1st char ) . Done in this way you have a simple &quot;generic factory&quot; for all of the your objects stated that your xml files must at least conform : <BR>
1) the name of the element is the same of the class (apart for the 1st char that can be lower case)<BR>
2) the name of the children must follow the same rule as the parent.<BR>
and your class must implement the empty contructor (for simplicity) <BR>
<BR>
hope this helps<BR>
<BR>
<BR>
Marco
</BODY>
</HTML>