<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!-- Generated by Apache Maven Doxia at Apr 17, 2012 -->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title>Apache Axis2 - 

ADB Tweaking Guide</title>
    <style type="text/css" media="all">
      @import url("../../css/maven-base.css");
      @import url("../../css/maven-theme.css");
      @import url("../../css/site.css");
    </style>
    <link rel="stylesheet" href="../../css/print.css" type="text/css" media="print" />
    <meta name="Date-Revision-yyyymmdd" content="20120417" />
    <meta http-equiv="Content-Language" content="en" />
        <meta name="generator" content="HTML Tidy for Windows (vers 14 June 2007), see www.w3.org" />
  </head>
  <body class="composite">
    <div id="banner">
                  <a href="http://www.apache.org/" id="bannerLeft">
                                        <img src="http://www.apache.org/images/asf_logo_wide.png" alt="Apache Axis2" />
                </a>
                        <a href="" id="bannerRight">
                                                <img src="../../images/axis.jpg" alt="Apache Axis2" />
                </a>
            <div class="clear">
        <hr/>
      </div>
    </div>
    <div id="breadcrumbs">
            
        
                <div class="xleft">
        <span id="publishDate">Last Published: 2012-04-17</span>
                  &nbsp;| <span id="projectVersion">Version: 1.6.2</span>
                      </div>
            <div class="xright">                    <a href="../../index.html" title="Axis2/Java">Axis2/Java</a>
            |
                        <a href="http://www.apache.org" class="externalLink" title="Apache">Apache</a>
              
        
      </div>
      <div class="clear">
        <hr/>
      </div>
    </div>
    <div id="leftColumn">
      <div id="navcolumn">
             
        
                                <h5>Axis2/Java</h5>
                  <ul>
                  <li class="none">
                          <a href="../../index.html" title="Home">Home</a>
            </li>
          </ul>
                       <h5>Downloads</h5>
                  <ul>
                  <li class="none">
                          <a href="../../download.cgi" title="Releases">Releases</a>
            </li>
                  <li class="none">
                          <a href="../../modules/index.html" title="Modules">Modules</a>
            </li>
                  <li class="none">
                          <a href="../../tools/index.html" title="Tools">Tools</a>
            </li>
          </ul>
                       <h5>Documentation</h5>
                  <ul>
                  <li class="none">
                          <a href="../../docs/toc.html" title="Table of Contents">Table of Contents</a>
            </li>
                  <li class="none">
                          <a href="../../docs/installationguide.html" title="Installation Guide">Installation Guide</a>
            </li>
                  <li class="none">
                          <a href="../../docs/quickstartguide.html" title="QuickStart Guide">QuickStart Guide</a>
            </li>
                  <li class="none">
                          <a href="../../docs/userguide.html" title="User Guide">User Guide</a>
            </li>
                  <li class="none">
                          <a href="../../docs/jaxws-guide.html" title="JAXWS Guide">JAXWS Guide</a>
            </li>
                  <li class="none">
                          <a href="../../docs/pojoguide.html" title="POJO Guide">POJO Guide</a>
            </li>
                  <li class="none">
                          <a href="../../docs/spring.html" title="Spring Guide">Spring Guide</a>
            </li>
                  <li class="none">
                          <a href="../../docs/webadminguide.html" title="Web Administrator's Guide">Web Administrator's Guide</a>
            </li>
                  <li class="none">
                          <a href="../../docs/migration.html" title="Migration Guide (from Axis1)">Migration Guide (from Axis1)</a>
            </li>
          </ul>
                       <h5>Resources</h5>
                  <ul>
                  <li class="none">
                          <a href="../../faq.html" title="FAQ">FAQ</a>
            </li>
                  <li class="none">
                          <a href="../../articles.html" title="Articles">Articles</a>
            </li>
                  <li class="none">
                          <a href="http://wiki.apache.org/ws/FrontPage/Axis2/" class="externalLink" title="Wiki">Wiki</a>
            </li>
                  <li class="none">
                          <a href="../../refLib.html" title="Reference Library">Reference Library</a>
            </li>
                  <li class="none">
                          <a href="../../api/index.html" title="Online Java Docs">Online Java Docs</a>
            </li>
          </ul>
                       <h5>Get Involved</h5>
                  <ul>
                  <li class="none">
                          <a href="../../overview.html" title="Overview">Overview</a>
            </li>
                  <li class="none">
                          <a href="../../svn.html" title="Checkout the Source">Checkout the Source</a>
            </li>
                  <li class="none">
                          <a href="../../mail-lists.html" title="Mailing Lists">Mailing Lists</a>
            </li>
                  <li class="none">
                          <a href="../../release-process.html" title="Release Process">Release Process</a>
            </li>
                  <li class="none">
                          <a href="../../guidelines.html" title="Developer Guidelines">Developer Guidelines</a>
            </li>
                  <li class="none">
                          <a href="../../siteHowTo.html" title="Build the Site">Build the Site</a>
            </li>
          </ul>
                       <h5>Project Information</h5>
                  <ul>
                  <li class="none">
                          <a href="../../team-list.html" title="Project Team">Project Team</a>
            </li>
                  <li class="none">
                          <a href="../../issue-tracking.html" title="Issue Tracking">Issue Tracking</a>
            </li>
                  <li class="none">
                          <a href="http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/" class="externalLink" title="Source Code">Source Code</a>
            </li>
                  <li class="none">
                          <a href="../../thanks.html" title="Acknowledgements">Acknowledgements</a>
            </li>
                  <li class="none">
                          <a href="http://www.apache.org/licenses/LICENSE-2.0.html" class="externalLink" title="License">License</a>
            </li>
                  <li class="none">
                          <a href="http://www.apache.org/foundation/sponsorship.html" class="externalLink" title="Sponsorship">Sponsorship</a>
            </li>
                  <li class="none">
                          <a href="http://www.apache.org/foundation/thanks.html" class="externalLink" title="Thanks">Thanks</a>
            </li>
                  <li class="none">
                          <a href="http://www.apache.org/security/" class="externalLink" title="Security">Security</a>
            </li>
          </ul>
                             <a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy">
        <img class="poweredBy" alt="Built by Maven" src="../../images/logos/maven-feather.png" />
      </a>
                   
        
            </div>
    </div>
    <div id="bodyColumn">
      <div id="contentBox">
        <!-- ~ Licensed to the Apache Software Foundation (ASF) under one
  ~ or more contributor license agreements. See the NOTICE file
  ~ distributed with this work for additional information
  ~ regarding copyright ownership. The ASF licenses this file
  ~ to you under the Apache License, Version 2.0 (the
  ~ "License"); you may not use this file except in compliance
  ~ with the License. You may obtain a copy of the License at
  ~
  ~ http://www.apache.org/licenses/LICENSE-2.0
  ~
  ~ Unless required by applicable law or agreed to in writing,
  ~ software distributed under the License is distributed on an
  ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  ~ KIND, either express or implied. See the License for the
  ~ specific language governing permissions and limitations
  ~ under the License. --><html xmlns="http://www.w3.org/1999/xhtml">

<h1>ADB Tweaking Guide</h1>
<p>This document explains the mechanisms available to extend ADB
and possibly adopt it to compile schemas to support other
languages.</p>
<div class="section"><h2>Content<a name="Content"></a></h2>
<ul>
<li><a href="#intro">Introduction</a></li>
<li><a href="#config">Know the Configuration</a></li>
<li><a href="#first_tweak">The First Tweak - Generate Plain Java
Beans</a></li>
<li><a href="#advanced_tweak">A More Advanced Tweak - Generate Code
for Another Language</a></li>
</ul>
<a name="intro" id="intro"></a>
<div class="section"><h2>Introduction<a name="Introduction"></a></h2>
<p>ADB was written with future extensibility in mind, with a clear
and flexible way to extend or modify its functionality. Available
mechanisms to extend ADB and possibly adopt it to compile schemas
to support other languages are described below.</p>
<a name="config" id="config"></a>
<div class="section"><h2>Know the Configuration<a name="Know_the_Configuration"></a></h2>
<p>The configuration for the ADB framework is in the
<b>schema-compile.properties</b> file found in the
<b>org.apache.axis2.schema</b> 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
<b>org.apache.axis2.schema.writer.BeanWriter</b>
interface. 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 use 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
<b>org.apache.axis2.schema.typemap.TypeMap</b> interface.
The default typemap implementation encapsulates a hashmap with type
QName to Class name string mapping.</p>
</li>
</ul>
<a name="first_tweak" id="first_tweak"></a>
<div class="section"><h2>The First Tweak - Generate Plain Java Beans<a name="The_First_Tweak_-_Generate_Plain_Java_Beans"></a></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 prefer to have plain java
beans. This can in fact be done by simply changing the template
used.</p>
<p>The template for plain java beans is already available in the
<b>org.apache.axis2.schema.template</b> package. To make
this work replace the
<b>/org/apache/axis2/databinding/schema/template/ADBBeanTemplate.xsl</b>
with the
<b>/org/apache/axis2/databinding/schema/template/PlainBeanTemplate.xsl</b>
in the schema-compile.properties<b>.</b></p>
<p>Congratulations! 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 available
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>
<a name="advanced_tweak" id="advanced_tweak"></a>
<div class="section"><h2>A More Advanced Tweak - Generate Code for Another Language<a name="A_More_Advanced_Tweak_-_Generate_Code_for_Another_Language"></a></h2>
<p>To generate code for another language, there are two main
components that need to be written.</p>
<ul>
<li>The BeanWriter
<p>Implement the BeanWriter interface for this class. A nice
example is the
<b>org.apache.axis2.schema.writer.JavaBeanWriter</b>
which has a lot of reusable code. In fact if the target language is
object-oriented (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
<b>org.apache.axis2.schema.typemap.JavaTypeMap</b> 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>Surprisingly, this is all that needs to be done to have other
language support for ADB. Change the configuration and you are
ready to generate code for other languages!</p>
<p>This tweaking guide is supposed to be a simple guideline for
anyone who wishes to dig deep into the mechanics of the ADB code
generator. Users are free to experiment with it and modify the
schema compiler accordingly to their needs. Also note that the
intention of this section is <i>not</i> to be a step by step
guide to custom code generation. Anyone who wish to do so would
need to dig into the code and get their hands dirty!</p>

</html>
      </div>
    </div>
    <div class="clear">
      <hr/>
    </div>
    <div id="footer">
      <div class="xright">Copyright &#169;                    2004-2012
                        <a href="http://www.apache.org/">The Apache Software Foundation</a>.
            All Rights Reserved.      
        
      </div>
      <div class="clear">
        <hr/>
      </div>
    </div>
  </body>
</html>
