You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by rd...@apache.org on 2004/08/30 16:45:48 UTC

cvs commit: jakarta-commons/betwixt/xdocs/guide binding.xml

rdonkin     2004/08/30 07:45:48

  Modified:    betwixt/xdocs/guide binding.xml
  Log:
  Added documentation concerning inner classes. Contributed by Daniel C. Amadei.
  
  Revision  Changes    Path
  1.9       +73 -0     jakarta-commons/betwixt/xdocs/guide/binding.xml
  
  Index: binding.xml
  ===================================================================
  RCS file: /home/cvs/jakarta-commons/betwixt/xdocs/guide/binding.xml,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- binding.xml	27 Aug 2004 21:13:36 -0000	1.8
  +++ binding.xml	30 Aug 2004 14:45:48 -0000	1.9
  @@ -145,7 +145,80 @@
       capitals in the property separated by hyphens after being converted to lower case.
       </p>
   </subsection>
  +    <subsection name='Nested Classes'>
  +        <p>
  +When using a public nested class (whether static or not) the naming of the base type 
  +passed into the <code>NameMapper</code> obeys the standard inner classes naming semantics
  +(using $). Typically, the mappers that ship with <code>Betwixt</code> ignore this symbol
  +during type name processing. It will therefore appear in the name of the element. 
  +    </p>
  +        <p>
  +For example, running the following application:
  +    </p>
  +<source><![CDATA[
  +public class InnerClassWriter {
  +    public class TallTreeBean {
   
  +        private float heightOfTree;
  +
  +        public TallTreeBean(float height) {
  +                setHeightOfTree(height);
  +        }
  +
  +        public float getHeightOfTree() {
  +                return heightOfTree;
  +        }       
  +
  +        public void setHeightOfTree(float heightOfTree) {
  +                this.heightOfTree = heightOfTree;
  +        }
  +    }
  +
  +    public static final void main(String args[]) throws Exception {
  +
  +        // create write and set basic properties
  +        BeanWriter writer = new BeanWriter();
  +        writer.getXMLIntrospector().getConfiguration()
  +            .setAttributesForPrimitives (true);
  +        writer.enablePrettyPrint();
  +        writer.getBindingConfiguration().setMapIDs(false);
  +
  +        // set a custom name mapper for attributes
  +        writer.getXMLIntrospector().getConfiguration()
  +            .setAttributeNameMapper(new HyphenatedNameMapper());
  +        // set a custom name mapper for elements
  +        writer.getXMLIntrospector().getConfiguration()
  +            .setElementNameMapper(new  DecapitalizeNameMapper());
  +
  +        // write out the bean
  +        writer.write(new InnerClassWriter().new TallTreeBean(15.1f));
  +    }
  +}
  +]]></source>
  +        <p>
  +results in:    
  +    </p>
  +<source><![CDATA[
  +    <innerClassWriter$TallTreeBean height-of-tree="15.1"/>
  +]]></source>
  +        <p>
  +It is recommended that those that make extensive use of inner classes create
  +a custom <code>NameMapper</code> implementation that processes inner class names
  +appropriately.
  +    </p>
  +        <p>
  +<strong>Note:</strong> that since <code>Betwixt</code> uses reflection during 
  +introspection, the usual rules concerning class scoping and visibility apply.
  +    </p>
  +        <p>
  +For example, if the scope of the nested class in the example above is changed 
  +from public to protected, friendly or private then the following result will be 
  +produced:
  +    </p>
  +<source><![CDATA[
  +    <innerClassWriter$TallTreeBean/>
  +]]></source>
  +</subsection>    
   </section>
   
   <section name="Using Adder Methods For Composite Properties">
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org