<html>
<head>
  <meta http-equiv="content-type" content="">
  <title></title>
</head>

<body>
<h1>ADB Tweaking Guide</h1>

<h2>Introduction</h2>

<p>ADB is written with future extensions in mind, with a clear and flexible
way to extend or modify it's functionality. This document explains available
mechanisms to extend ADB and possibly adopt it to compile schemas to support
other languages.</p>

<h2>Know the Configuration</h2>

<p>The configuration for the ADB framework is in the
<strong>schema-compile.properties</strong> file found in the
<strong>org.apache.axis2.databinding.schema</strong> package. This properties
file has the following important properties</p>
<ul>
  <li>schema.bean.writer.class
    <p>This is the writer class. This is used by the schema compiler to write
    the beans and should implement the
    <strong>org.apache.axis2.databinding.schema.writer.BeanWriter</strong>
    inteface. The schema compiler delegates the bean writing task to the
    specified instance of the BeanWriter.</p>
  </li>
  <li>schema.bean.writer.template
    <p>This specifies the template to be used in the BeanWriter. The
    beanWriter author is free to use any mechanism to write the classes but
    the default mechanism is to use a xsl template. This property may be left
    blank if the BeanWriter implementation does not require a template.</p>
  </li>
  <li>schema.bean.typemap
    <p>This is the type map to be used by the schema compiler. it should be
    an implementation of the
    <strong>org.apache.axis2.databinding.schema.typemap</strong> interface.
    The default typemap implementation encapsulates a hashmap with type QName
    to Class name string mapping.</p>
  </li>
</ul>

<h2>The First Tweak - Generate Plain Java Beans</h2>

<p>The first, most simple tweak for the code generator could be to switch to
plain bean generation. The default behavior of the ADB framework is to
generate ADBBeans, but most users, if they want to use ADB as a standalone
compiler, would love to have plain java beans. This can infact be done by
simply changing the template used.</p>

<p>The template for plain java beans is already available in the
<strong>org.apache.axis2.databinding.schema.template </strong>package. To
make this work replace the
<strong>/org/apache/axis2/databinding/schema/template/ADBBeanTemplate.xsl
</strong>with the
<strong>/org/apache/axis2/databinding/schema/template/PlainBeanTemplate.xsl
</strong>in the schema-compile.properties<strong>.</strong> Congratualtions!
You just tweaked ADB to generate plain java beans.</p>

<p>To generate custom formats, the templates need to be modified. The schema
for the xml generated by the JavaBeanWriter is availble in the source tree
under the Other directory in the codegen module. Advanced users with
knowledge of XSLT can easily modify the templates to generate code in their
own formats.</p>

<h2>A More Advanced Tweak - Generate Code for Another Language</h2>

<p>To generate code for another language, there are two main components are
to be written.</p>
<ul>
  <li>The BeanWriter
    <p>Implement the BeanWriter interface for this class. A nice example is
    the
    <strong>org.apache.axis2.databinding.schema.writer.JavaBeanWriter</strong>
    which has a lot of reusable code. Infact if the language is OOP based
    (such as C# or even C++), one would even be able to extend the
    JavaBeanWriter itself.</p>
  </li>
  <li>The TypeMap
    <p>Implement the TypeMap interface for this class. The
    <strong>org.apache.axis2.databinding.schema.typemap.JavaTypeMap</strong>
    class is a simple implementation for the typemap where the QName to class
    name strings are kept inside a hashmap instance. This technique is fairly
    sufficient and only the type names would need to change to support
    another language.</p>
  </li>
</ul>

<p>Surprisngly this is enough to have other language support for ADB. Change
the configuration and you are ready to generate code for other lanuages!</p>

<hr/>
</body>
</html>
