axis-java-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From sam...@apache.org
Subject svn commit: r438918 [1/3] - in /webservices/axis2/site/c: ./ docs/
Date Thu, 31 Aug 2006 13:46:39 GMT
Author: samisa
Date: Thu Aug 31 06:46:38 2006
New Revision: 438918

URL: http://svn.apache.org/viewvc?rev=438918&view=rev
Log:
Updated site for 0.93 release

Modified:
    webservices/axis2/site/c/coding_conventions.html
    webservices/axis2/site/c/cvs-usage.html
    webservices/axis2/site/c/dependencies.html
    webservices/axis2/site/c/docs/architecture_notes.html
    webservices/axis2/site/c/docs/developerguide.html
    webservices/axis2/site/c/docs/index.html
    webservices/axis2/site/c/docs/installationguide.html
    webservices/axis2/site/c/docs/om_tutorial.html
    webservices/axis2/site/c/docs/userguide.html
    webservices/axis2/site/c/download.html
    webservices/axis2/site/c/downloads.html
    webservices/axis2/site/c/index.html
    webservices/axis2/site/c/issue-tracking.html
    webservices/axis2/site/c/mail-lists.html
    webservices/axis2/site/c/maven-reports.html
    webservices/axis2/site/c/project-info.html
    webservices/axis2/site/c/svn.html
    webservices/axis2/site/c/team-list.html

Modified: webservices/axis2/site/c/coding_conventions.html
URL: http://svn.apache.org/viewvc/webservices/axis2/site/c/coding_conventions.html?rev=438918&r1=438917&r2=438918&view=diff
==============================================================================
--- webservices/axis2/site/c/coding_conventions.html (original)
+++ webservices/axis2/site/c/coding_conventions.html Thu Aug 31 06:46:38 2006
@@ -2,66 +2,148 @@
           @import url("./style/maven-base.css");
           
 			    @import url("./style/maven-classic.css");</style><link rel="stylesheet" href="./style/print.css" type="text/css" media="print"></link><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"></meta></head><body class="composite"><div id="banner"><a href="http://www.apache.org/" id="organizationLogo"><img alt="Apache Software Foundation" src="http://www.apache.org/images/asf-logo.gif"></img></a><a href="http://ws.apache.org/axis2/c" id="projectLogo"><img alt="Apache Axis2 C" src="http://ws.apache.org/axis2/images/axis.jpg"></img></a><div class="clear"><hr></hr></div></div><div id="breadcrumbs"><div class="xleft">
-                	Last published: 30 August 2006
-                  | Doc for 0.93</div><div class="xright"></div><div class="clear"><hr></hr></div></div><div id="leftColumn"><div id="navcolumn"><div id="menuAxis2_C"><h5>Axis2/C</h5><ul><li class="none"><a href="index.html">Home</a></li><li class="expanded"><a href="download.cgi">Download Axis2/C</a><ul><li class="none"><a href="download.cgi">Releases</a></li><li class="none"><a href="http://svn.apache.org/viewcvs.cgi/webservices/axis2/trunk/c/" class="externalLink" title="External Link">View Source Code Online</a></li><li class="none"><a href="svn.html">Checkout the Source Code</a></li></ul></li><li class="none"><a href="docs/index.html">Documentation</a></li><li class="expanded"><a href="mail-lists.html">Get Involved</a><ul><li class="none"><a href="mail-lists.html">Mailing Lists</a></li></ul></li><li class="expanded"><a href="team-list.html">Project Information</a><ul><li class="none"><a href="team-list.html">Project Team</a></li><li class="none"><a href="issue-tracking.
 html">Issue Tracking</a></li></ul></li></ul></div><a href="http://maven.apache.org/" title="Built by Maven" id="poweredBy"><img alt="Built by Maven" src="./images/logos/maven-button-1.png"></img></a></div></div><div id="bodyColumn"><div class="contentBox"><div class="section"><a name="Axis2_C_Coding_Conventions"></a><h2>Axis2/C Coding Conventions</h2><p> </p><div class="subsection"><a name="Contents"></a><h3>Contents</h3><ul>
-<li><a href="#1_Naming_conventions_">Naming Conventions</a></li>
-<ul>
-<li><a href="#1_1_Variables">Variables</a>
-</li><li><a href="#1_2_Functions_">Functions</a></li>
-<li><a href="#1_3_Structures_and_user_defined_data">Structures
+                	Last published: 31 August 2006
+                  | Doc for 0.93</div><div class="xright"></div><div class="clear"><hr></hr></div></div><div id="leftColumn"><div id="navcolumn"><div id="menuAxis2_C"><h5>Axis2/C</h5><ul><li class="none"><a href="index.html">Home</a></li><li class="expanded"><a href="download.cgi">Download Axis2/C</a><ul><li class="none"><a href="download.cgi">Releases</a></li><li class="none"><a href="http://svn.apache.org/viewcvs.cgi/webservices/axis2/trunk/c/" class="externalLink" title="External Link">View Source Code Online</a></li><li class="none"><a href="svn.html">Checkout Source Code</a></li></ul></li><li class="none"><a href="docs/index.html">Documentation</a></li><li class="expanded"><a href="mail-lists.html">Get Involved</a><ul><li class="none"><a href="mail-lists.html">Mailing Lists</a></li></ul></li><li class="expanded"><a href="team-list.html">Project Information</a><ul><li class="none"><a href="team-list.html">Project Team</a></li><li class="none"><a href="issue-tracking.html
 ">Issue Tracking</a></li></ul></li></ul></div><a href="http://maven.apache.org/" title="Built by Maven" id="poweredBy"><img alt="Built by Maven" src="./images/logos/maven-button-1.png"></img></a></div></div><div id="bodyColumn"><div class="contentBox"><div class="section"><a name="Axis2_C_Coding_Conventions"></a><h2>Axis2/C Coding Conventions</h2><p> </p><div class="subsection"><a name="Contents"></a><h3>Contents</h3><ul>
+
+
+  <li><a href="#1_Naming_conventions_">Naming
+Conventions</a></li>
+
+
+  
+  <ul>
+
+
+    <li><a href="#1_1_Variables">Variables</a></li>
+
+
+    <li><a href="#1_2_Functions_">Functions</a></li>
+
+
+    <li><a href="#1_3_Structures_and_user_defined_data">Structures
 and User defined data types</a></li>
-<li><a href="#1_4_Macros">Macros</a></li>
-<li><a href="#1_5_Enumerations">Enumerations</a></li>
-</ul>
-<li><a href="#2_Indentation">Indentation</a></li>
-<li><a href="#3_Comments">Comments</a></li>
-<li><a href="#4_Function_parameters_and_Return_Value">Function parameters
+
+
+    <li><a href="#1_4_Macros">Macros</a></li>
+
+
+    <li><a href="#1_5_Enumerations">Enumerations</a></li>
+
+
+  
+  </ul>
+
+
+  <li><a href="#2_Indentation">Indentation</a></li>
+
+
+  <li><a href="#3_Comments">Comments</a></li>
+
+
+  <li><a href="#4_Function_parameters_and_Return_Value">Function
+parameters
 and Return value conventions</a></li>
-<li><a href="#5_Include_directives">Include directives</a></li>
+
+
+  <li><a href="#5_Include_directives">Include
+directives</a></li>
+
+
 </ul><p><a name="1_Naming_conventions_"></a></p></div><div class="subsection"><a name="1__Naming_conventions"></a><h3>1. Naming conventions</h3><ul>
-  <li>Namespace validation is done using the <strong>axis2_</strong>
+
+
+  <li>Namespace validation is done using the <code><strong>axis2_</strong></code>
 prefix. </li>
+
+
   <li>Underscore should be used to separate individual words in
 identifiers.</li>
-  <li>All identifiers should be meaningful and abbreviations must be
+
+
+  <li>All identifiers should be meaningful and abbreviations must
+be
 avoided whenever possible.</li>
+
+
 </ul><p><a name="1_1_Variables"></a></p></div><div class="subsection"><a name="1_1_Variables"></a><h3>1.1 Variables</h3><ul>
+
+
   <li>Use meaningful nouns.</li>
-  <li>Make sure to use all lowercase letters for private &amp; public
+
+
+  <li>Make sure to use all lowercase letters for private
+&amp; public
 variables.</li>
-  <li>If it is a local variable or a member of a struct, there's no
-need to prefix it with axis2_.</li>
+
+
+  <li>If it is a local variable or a member of a struct, there's
+no
+need to prefix it with <code>axis2_</code>.</li>
+
+
 e.g.
+  
   <pre>int count = 0;<br></br>char *prefix = NULL;<br></br></pre>
+
+
 </ul><p><a name="1_2_Functions_"></a></p></div><div class="subsection"><a name="1_2_Functions"></a><h3>1.2 Functions</h3><ul>
-  <li>Function names should always start with the prefix axis2_ except
+
+
+  <li>Function names should always start with the prefix <code>axis2_</code>
+except
 for members of a struct.</li>
+
+
 e.g.
+  
   <pre><p>axis2_om_node_t * axis2_om_node_create(axis2_environment_t *environment);</p></pre>
+
+
 </ul><p><a name="1_3_Structures_and_user_defined_data"></a></p></div><div class="subsection"><a name="1_3_Structures_and_user_defined_data_types"></a><h3>1.3 Structures and user defined data types</h3><ul>
+
+
   <li>Note the _t suffix in the type name.</li>
+
+
 e.g.
+  
   <pre>typedef struct axis2_om_namespace {<br></br>	char *uri;<br></br>	char *prefix;<br></br>} axis2_om_namespace_t;<br></br></pre>
+
+
 </ul><p><a name="1_4_Macros"></a></p></div><div class="subsection"><a name="1_4_Macros"></a><h3>1.4 Macros</h3><ul>
-  <li>Macro names should be in all uppercase letters, except when it is
-a macro
-to help hide the complexity of the use of function pointers in
-operation
-structs or when it is a type definition. </li>
+
+
+  <li>Macro names should be in all uppercase letters. </li>
+
+
 e.g.
-  <pre>#define AXIS2_H<br></br><br></br>#define axis2_error_get_message(error) ((error)-&gt;ops-&gt;get_message())<br></br></pre>
+  
+  <pre>#define AXIS2_H<br></br><br></br>#define AXIS2_ERROR_GET_MESSAGE(error) ((error)-&gt;ops-&gt;get_message(error))<br></br></pre>
+
+
 </ul><p><a name="1_5_Enumerations"></a></p></div><div class="subsection"><a name="1_5_Enumerations"></a><h3>1.5 Enumerations</h3><ul>
+
+
 e.g.
+  
   <pre>typedef enum axis2_status_codes {<br></br>	AXIS2_FAILURE = 0,<br></br>	AXIS2_SUCCESS<br></br>} axis2_status_codes_t;<br></br></pre>
+
+
 </ul><p><a name="2_Indentation"></a></p></div><div class="subsection"><a name="2__Indentation"></a><h3>2. Indentation</h3><ul>
+
+
 Indentation rules are defined in terms of GNU indent options:
 </ul><ul>
+
+
 indent -nbad -bap -nbc -bbo -bl -bli0 -bls -ncdb -nce -cp1 -cs -di2
 -ndj
 -nfc1 -nfca -hnl -i4 -ip5 -lp -pcs -nprs -psl -saf -sai -saw -nsc -nsob
 -ts4
 -nut -nbfda
 </ul><p><a name="3_Comments"></a></p></div><div class="subsection"><a name="3__Comments"></a><h3>3. Comments</h3><ul>
+
+
   <a href="http://www.stack.nl/%7Edimitri/doxygen/docblocks.html" class="newWindow" title="New Window" target="_blank">Doxygen
 style comments</a> should be used to help auto generate API
 documentation.
@@ -69,22 +151,37 @@
 should
 be documented.
 </ul><p><a name="4_Function_parameters_and_Return_Value"></a></p></div><div class="subsection"><a name="4__Function_parameters_and_Return_Value_conventions"></a><h3>4. Function parameters and Return Value conventions</h3><ul>
-Each function should be passed a pointer to an instance of
-axis2_environment_t struct as the first parameter. If the function is
+
+
+Each function should be passed a pointer to an instance of <code>axis2_environment_t</code>
+struct as the first parameter. If the function is
 tightly
 bound to a struct, the second parameter is a pointer to an instance of
 that struct.
 </ul><ul>
+
+
 Functions returning pointers should return NULL in case of an error.
 The developer should make sure to set the relavant error code in
-environment's
+the environment's
 error struct.
 </ul><ul>
+
+
 Functions returning none pointer values should always return
-AXIS2_FAILURE status code on error whenever possible, or some defined
-error value (in case of returning a struct may be). A relavant error code must also be set
-in environment's error struct.</ul><p><a name="5_Include_directives"></a></p></div><div class="subsection"><a name="5__Include_directives"></a><h3>5. Include directives</h3><ul>
+  <code>AXIS2_FAILURE</code> status code on error whenever possible, or some defined
+error value (in case of returning a struct may be). A relavant error
+code must also be set
+in environment's error struct.
+</ul><p><a name="5_Include_directives"></a></p></div><div class="subsection"><a name="5__Include_directives"></a><h3>5. Include directives</h3><ul>
+
+
 It is prefereable to include header files in the following fashion:
 </ul><ul>
+
+
+  
   <pre>&lt;standard header files&gt;<br></br>&lt;other system headers&gt;<br></br>"local header files"<br></br></pre>
+
+
 </ul></div></div></div></div><div class="clear"><hr></hr></div><div id="footer"><div class="xright">© 2005-2006, Apache Software Foundation</div><div class="clear"><hr></hr></div></div></body></html>

Modified: webservices/axis2/site/c/cvs-usage.html
URL: http://svn.apache.org/viewvc/webservices/axis2/site/c/cvs-usage.html?rev=438918&r1=438917&r2=438918&view=diff
==============================================================================
--- webservices/axis2/site/c/cvs-usage.html (original)
+++ webservices/axis2/site/c/cvs-usage.html Thu Aug 31 06:46:38 2006
@@ -2,7 +2,7 @@
           @import url("./style/maven-base.css");
           
 			    @import url("./style/maven-classic.css");</style><link rel="stylesheet" href="./style/print.css" type="text/css" media="print"></link><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"></meta></head><body class="composite"><div id="banner"><a href="http://www.apache.org/" id="organizationLogo"><img alt="Apache Software Foundation" src="http://www.apache.org/images/asf-logo.gif"></img></a><a href="http://ws.apache.org/axis2/c" id="projectLogo"><img alt="Apache Axis2 C" src="http://ws.apache.org/axis2/images/axis.jpg"></img></a><div class="clear"><hr></hr></div></div><div id="breadcrumbs"><div class="xleft">
-                	Last published: 30 August 2006
-                  | Doc for 0.93</div><div class="xright"></div><div class="clear"><hr></hr></div></div><div id="leftColumn"><div id="navcolumn"><div id="menuAxis2_C"><h5>Axis2/C</h5><ul><li class="none"><a href="index.html">Home</a></li><li class="expanded"><a href="download.cgi">Download Axis2/C</a><ul><li class="none"><a href="download.cgi">Releases</a></li><li class="none"><a href="http://svn.apache.org/viewcvs.cgi/webservices/axis2/trunk/c/" class="externalLink" title="External Link">View Source Code Online</a></li><li class="none"><a href="svn.html">Checkout the Source Code</a></li></ul></li><li class="none"><a href="docs/index.html">Documentation</a></li><li class="expanded"><a href="mail-lists.html">Get Involved</a><ul><li class="none"><a href="mail-lists.html">Mailing Lists</a></li></ul></li><li class="expanded"><a href="team-list.html">Project Information</a><ul><li class="none"><a href="team-list.html">Project Team</a></li><li class="none"><a href="issue-tracking.
 html">Issue Tracking</a></li></ul></li></ul></div><a href="http://maven.apache.org/" title="Built by Maven" id="poweredBy"><img alt="Built by Maven" src="./images/logos/maven-button-1.png"></img></a></div></div><div id="bodyColumn"><div class="contentBox"><div class="section"><a name="Repository"></a><h2>Repository</h2><p>
+                	Last published: 31 August 2006
+                  | Doc for 0.93</div><div class="xright"></div><div class="clear"><hr></hr></div></div><div id="leftColumn"><div id="navcolumn"><div id="menuAxis2_C"><h5>Axis2/C</h5><ul><li class="none"><a href="index.html">Home</a></li><li class="expanded"><a href="download.cgi">Download Axis2/C</a><ul><li class="none"><a href="download.cgi">Releases</a></li><li class="none"><a href="http://svn.apache.org/viewcvs.cgi/webservices/axis2/trunk/c/" class="externalLink" title="External Link">View Source Code Online</a></li><li class="none"><a href="svn.html">Checkout Source Code</a></li></ul></li><li class="none"><a href="docs/index.html">Documentation</a></li><li class="expanded"><a href="mail-lists.html">Get Involved</a><ul><li class="none"><a href="mail-lists.html">Mailing Lists</a></li></ul></li><li class="expanded"><a href="team-list.html">Project Information</a><ul><li class="none"><a href="team-list.html">Project Team</a></li><li class="none"><a href="issue-tracking.html
 ">Issue Tracking</a></li></ul></li></ul></div><a href="http://maven.apache.org/" title="Built by Maven" id="poweredBy"><img alt="Built by Maven" src="./images/logos/maven-button-1.png"></img></a></div></div><div id="bodyColumn"><div class="contentBox"><div class="section"><a name="Repository"></a><h2>Repository</h2><p>
           No SCM repository is defined.
         </p></div></div></div><div class="clear"><hr></hr></div><div id="footer"><div class="xright">© 2005-2006, Apache Software Foundation</div><div class="clear"><hr></hr></div></div></body></html>

Modified: webservices/axis2/site/c/dependencies.html
URL: http://svn.apache.org/viewvc/webservices/axis2/site/c/dependencies.html?rev=438918&r1=438917&r2=438918&view=diff
==============================================================================
--- webservices/axis2/site/c/dependencies.html (original)
+++ webservices/axis2/site/c/dependencies.html Thu Aug 31 06:46:38 2006
@@ -2,8 +2,8 @@
           @import url("./style/maven-base.css");
           
 			    @import url("./style/maven-classic.css");</style><link rel="stylesheet" href="./style/print.css" type="text/css" media="print"></link><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"></meta></head><body class="composite"><div id="banner"><a href="http://www.apache.org/" id="organizationLogo"><img alt="Apache Software Foundation" src="http://www.apache.org/images/asf-logo.gif"></img></a><a href="http://ws.apache.org/axis2/c" id="projectLogo"><img alt="Apache Axis2 C" src="http://ws.apache.org/axis2/images/axis.jpg"></img></a><div class="clear"><hr></hr></div></div><div id="breadcrumbs"><div class="xleft">
-                	Last published: 30 August 2006
-                  | Doc for 0.93</div><div class="xright"></div><div class="clear"><hr></hr></div></div><div id="leftColumn"><div id="navcolumn"><div id="menuAxis2_C"><h5>Axis2/C</h5><ul><li class="none"><a href="index.html">Home</a></li><li class="expanded"><a href="download.cgi">Download Axis2/C</a><ul><li class="none"><a href="download.cgi">Releases</a></li><li class="none"><a href="http://svn.apache.org/viewcvs.cgi/webservices/axis2/trunk/c/" class="externalLink" title="External Link">View Source Code Online</a></li><li class="none"><a href="svn.html">Checkout the Source Code</a></li></ul></li><li class="none"><a href="docs/index.html">Documentation</a></li><li class="expanded"><a href="mail-lists.html">Get Involved</a><ul><li class="none"><a href="mail-lists.html">Mailing Lists</a></li></ul></li><li class="expanded"><a href="team-list.html">Project Information</a><ul><li class="none"><a href="team-list.html">Project Team</a></li><li class="none"><a href="issue-tracking.
 html">Issue Tracking</a></li></ul></li></ul></div><a href="http://maven.apache.org/" title="Built by Maven" id="poweredBy"><img alt="Built by Maven" src="./images/logos/maven-button-1.png"></img></a></div></div><div id="bodyColumn"><div class="contentBox"><div class="section"><a name="Dependencies"></a><h2>Dependencies</h2><p> 
+                	Last published: 31 August 2006
+                  | Doc for 0.93</div><div class="xright"></div><div class="clear"><hr></hr></div></div><div id="leftColumn"><div id="navcolumn"><div id="menuAxis2_C"><h5>Axis2/C</h5><ul><li class="none"><a href="index.html">Home</a></li><li class="expanded"><a href="download.cgi">Download Axis2/C</a><ul><li class="none"><a href="download.cgi">Releases</a></li><li class="none"><a href="http://svn.apache.org/viewcvs.cgi/webservices/axis2/trunk/c/" class="externalLink" title="External Link">View Source Code Online</a></li><li class="none"><a href="svn.html">Checkout Source Code</a></li></ul></li><li class="none"><a href="docs/index.html">Documentation</a></li><li class="expanded"><a href="mail-lists.html">Get Involved</a><ul><li class="none"><a href="mail-lists.html">Mailing Lists</a></li></ul></li><li class="expanded"><a href="team-list.html">Project Information</a><ul><li class="none"><a href="team-list.html">Project Team</a></li><li class="none"><a href="issue-tracking.html
 ">Issue Tracking</a></li></ul></li></ul></div><a href="http://maven.apache.org/" title="Built by Maven" id="poweredBy"><img alt="Built by Maven" src="./images/logos/maven-button-1.png"></img></a></div></div><div id="bodyColumn"><div class="contentBox"><div class="section"><a name="Dependencies"></a><h2>Dependencies</h2><p> 
         There are no dependencies for this project.  It is a standalone
         application that does not depend on any other project.
       </p></div></div></div><div class="clear"><hr></hr></div><div id="footer"><div class="xright">© 2005-2006, Apache Software Foundation</div><div class="clear"><hr></hr></div></div></body></html>

Modified: webservices/axis2/site/c/docs/architecture_notes.html
URL: http://svn.apache.org/viewvc/webservices/axis2/site/c/docs/architecture_notes.html?rev=438918&r1=438917&r2=438918&view=diff
==============================================================================
--- webservices/axis2/site/c/docs/architecture_notes.html (original)
+++ webservices/axis2/site/c/docs/architecture_notes.html Thu Aug 31 06:46:38 2006
@@ -2,8 +2,8 @@
           @import url("../style/maven-base.css");
           
 			    @import url("../style/maven-classic.css");</style><link rel="stylesheet" href="../style/print.css" type="text/css" media="print"></link><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"></meta></head><body class="composite"><div id="banner"><a href="http://www.apache.org/" id="organizationLogo"><img alt="Apache Software Foundation" src="http://www.apache.org/images/asf-logo.gif"></img></a><a href="http://ws.apache.org/axis2/c" id="projectLogo"><img alt="Apache Axis2 C" src="http://ws.apache.org/axis2/images/axis.jpg"></img></a><div class="clear"><hr></hr></div></div><div id="breadcrumbs"><div class="xleft">
-                	Last published: 30 August 2006
-                  | Doc for 0.93</div><div class="xright"></div><div class="clear"><hr></hr></div></div><div id="leftColumn"><div id="navcolumn"><div id="menuAxis2_C"><h5>Axis2/C</h5><ul><li class="none"><a href="../index.html">Home</a></li><li class="expanded"><a href="../download.cgi">Download Axis2/C</a><ul><li class="none"><a href="../download.cgi">Releases</a></li><li class="none"><a href="http://svn.apache.org/viewcvs.cgi/webservices/axis2/trunk/c/" class="externalLink" title="External Link">View Source Code Online</a></li><li class="none"><a href="../svn.html">Checkout the Source Code</a></li></ul></li><li class="none"><a href="../docs/index.html">Documentation</a></li><li class="expanded"><a href="../mail-lists.html">Get Involved</a><ul><li class="none"><a href="../mail-lists.html">Mailing Lists</a></li></ul></li><li class="expanded"><a href="../team-list.html">Project Information</a><ul><li class="none"><a href="../team-list.html">Project Team</a></li><li class="non
 e"><a href="../issue-tracking.html">Issue Tracking</a></li></ul></li></ul></div><a href="http://maven.apache.org/" title="Built by Maven" id="poweredBy"><img alt="Built by Maven" src="../images/logos/maven-button-1.png"></img></a></div></div><div id="bodyColumn"><div class="contentBox"><div class="section"><a name="C_Specific_Architectural_Notes_on_Axis2_C"></a><h2>C Specific Architectural Notes on Axis2/C</h2><p>Send your feedback to: <a href="mailto:axis-c-dev@ws.apache.org">axis-c-dev@ws.apache.org</a> (Prefix
+                	Last published: 31 August 2006
+                  | Doc for 0.93</div><div class="xright"></div><div class="clear"><hr></hr></div></div><div id="leftColumn"><div id="navcolumn"><div id="menuAxis2_C"><h5>Axis2/C</h5><ul><li class="none"><a href="../index.html">Home</a></li><li class="expanded"><a href="../download.cgi">Download Axis2/C</a><ul><li class="none"><a href="../download.cgi">Releases</a></li><li class="none"><a href="http://svn.apache.org/viewcvs.cgi/webservices/axis2/trunk/c/" class="externalLink" title="External Link">View Source Code Online</a></li><li class="none"><a href="../svn.html">Checkout Source Code</a></li></ul></li><li class="none"><a href="../docs/index.html">Documentation</a></li><li class="expanded"><a href="../mail-lists.html">Get Involved</a><ul><li class="none"><a href="../mail-lists.html">Mailing Lists</a></li></ul></li><li class="expanded"><a href="../team-list.html">Project Information</a><ul><li class="none"><a href="../team-list.html">Project Team</a></li><li class="none"><
 a href="../issue-tracking.html">Issue Tracking</a></li></ul></li></ul></div><a href="http://maven.apache.org/" title="Built by Maven" id="poweredBy"><img alt="Built by Maven" src="../images/logos/maven-button-1.png"></img></a></div></div><div id="bodyColumn"><div class="contentBox"><div class="section"><a name="C_Specific_Architectural_Notes_on_Axis2_C"></a><h2>C Specific Architectural Notes on Axis2/C</h2><p>Send your feedback to: <a href="mailto:axis-c-dev@ws.apache.org">axis-c-dev@ws.apache.org</a> (Prefix
 the subject with [Axis2]). To subscribe to developer or user mailing lists
 see <a href="../mail-lists.html">here</a></p><div class="subsection"><a name="Content"></a><h3>Content</h3><ul>
   <li><a href="#Introduction">Introduction</a></li>
@@ -16,7 +16,7 @@
 </ul><p><a name="Introduction"></a></p></div><div class="subsection"><a name="Introduction"></a><h3>Introduction</h3><p>One of the main design goals of Axis2/C is the re-useability of the
 library and the ability to plug into different platforms. There are many
 features that allow Axis2/C to be pluggable in to different platforms as well
-as to enable the extension of the functionality of the Axis2/C.</p><p><a name="Axis2_Environment"></a></p></div><div class="subsection"><a name="Axis2_Environment"></a><h3>Axis2 Environment</h3><p>Axis2/C defines an environment to hold platform specific entities such as
+as to enable the extension of the functionality of Axis2/C.</p><p><a name="Axis2_Environment"></a></p></div><div class="subsection"><a name="Axis2_Environment"></a><h3>Axis2 Environment</h3><p>Axis2/C defines an environment to hold platform specific entities such as
 the allocating mechanism, the logging mechanism, etc. This environment is
 initialized at the point of starting Axis2/C and will last for the lifetime
 of Axis2/C library. Different sub environments can also be created to suit
@@ -42,21 +42,26 @@
 selecting a set of modules. The modules can either be compiled at the source
 tree of Axis2 or separately. These modules should be compiled as Dynamic
 Shared Objects (DSOs) that exist separately. Services are also loaded
-dynamically by reading the contents of the services folder . This dynamic
+dynamically by reading the contents of the services folder. This dynamic
 loading is mandatory in order to provide hot deployment / update as well as
 to facilitate the runtime selection of transports.</p><p>The DSO support for loading individual Axis2 components is based on the
-component named <code>class_loader</code> which must be statically compiled
-with Axis2 core components (in the <code>util</code> package). But the
-disadvantage of this approach is that the <code>class_loader</code>
-completely depends on the DSO functionality of the underlying operating
-system, which limits the portability.</p><p><a name="Transport_Abstraction"></a></p></div><div class="subsection"><a name="Transport_Abstraction"></a><h3>Transport Abstraction</h3><p>One of the key advantages of Axis2 is that the Axis2 engine and the other
+component named <code>class_loader</code>, which must be statically compiled
+with Axis2 core components (in the <code>util</code> package). To abstract
+the <code>class_loader</code> from the DSO loading functionality of the
+underlying operating system, a set of platform independent macros such as
+<code>AXIS2_PLATFORM_LOADLIB</code> and <code>AXIS2_PLATFORM_UNLOADLIB</code>
+are used. These macros will be mapped to platform specific system calls in a
+platform specific header file (e.g. <code>axis2_unix.h</code>). The file
+<code>axis2_platform_auto_sense.h</code> will include the correct platform
+specific header file, based on the compiler directives available at compile
+time. </p><p><a name="Transport_Abstraction"></a></p></div><div class="subsection"><a name="Transport_Abstraction"></a><h3>Transport Abstraction</h3><p>One of the key advantages of Axis2 is that the Axis2 engine and the other
 SOAP processing is independent from the transport aspect. Users can develop
 their own transports and the interface is defined in
 <code>axis2_transport_sender.h</code> and
 <code>axis2_transport_receiver.h</code>.</p><p>Currently Axis2/C supports HTTP transport. The transport receiver is a
 Simple HTTP server provided by Axis2 or the Axis2 Apache2 module. The
-transport sender uses sockets to connect and send the SOAP Message.</p><p>Inside the HTTP transport,  the receivers and clients are abstracted so
-that the user can easily plug in their own senders and receivers (eg: A
+transport sender uses sockets to connect and send the SOAP Message.</p><p>Inside the HTTP transport,  the receivers and clients are abstracted
+so that the user can easily plug in their own senders and receivers (eg: A
 <code>libcurl</code> based client can be implemented instead of the simple
 http client available in the axis2 distribution)</p><p><a name="Stream_Abstraction"></a></p></div><div class="subsection"><a name="Stream_Abstraction"></a><h3>Stream Abstraction</h3><p>Stream is a representation of a sequence of bytes. Since Axis2 heavily
 uses streaming mechanisms to read / write xml, an implementation independent
@@ -82,7 +87,7 @@
 </ol><p>These two requirements are implemented in current Axis2 using a platform
 independent thread type <code>axis2_thread</code> and an implementation
 independent thread pool <code>axis2_thread_pool.</code></p><p><a name="Parser_Abstraction"></a></p></div><div class="subsection"><a name="Parser_Abstraction"></a><h3>Parser Abstraction</h3><p>Axis2 architecture depends on the XML pull model. But in C there is no
-such API (such as StAX API). Therefore XML pull API, which is specific to
+such API (such as StAX API). Therefore, an XML pull API, which is specific to
 Axis2 is defined in as <code>axis2_xml_reader</code> and
 <code>axis2_xml_writer.</code> Any implementation of this API can be plugged
 into the Axis2 core as long as they follow the API strictly. If an external

Modified: webservices/axis2/site/c/docs/developerguide.html
URL: http://svn.apache.org/viewvc/webservices/axis2/site/c/docs/developerguide.html?rev=438918&r1=438917&r2=438918&view=diff
==============================================================================
--- webservices/axis2/site/c/docs/developerguide.html (original)
+++ webservices/axis2/site/c/docs/developerguide.html Thu Aug 31 06:46:38 2006
@@ -2,8 +2,8 @@
           @import url("../style/maven-base.css");
           
 			    @import url("../style/maven-classic.css");</style><link rel="stylesheet" href="../style/print.css" type="text/css" media="print"></link><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"></meta></head><body class="composite"><div id="banner"><a href="http://www.apache.org/" id="organizationLogo"><img alt="Apache Software Foundation" src="http://www.apache.org/images/asf-logo.gif"></img></a><a href="http://ws.apache.org/axis2/c" id="projectLogo"><img alt="Apache Axis2 C" src="http://ws.apache.org/axis2/images/axis.jpg"></img></a><div class="clear"><hr></hr></div></div><div id="breadcrumbs"><div class="xleft">
-                	Last published: 30 August 2006
-                  | Doc for 0.93</div><div class="xright"></div><div class="clear"><hr></hr></div></div><div id="leftColumn"><div id="navcolumn"><div id="menuAxis2_C"><h5>Axis2/C</h5><ul><li class="none"><a href="../index.html">Home</a></li><li class="expanded"><a href="../download.cgi">Download Axis2/C</a><ul><li class="none"><a href="../download.cgi">Releases</a></li><li class="none"><a href="http://svn.apache.org/viewcvs.cgi/webservices/axis2/trunk/c/" class="externalLink" title="External Link">View Source Code Online</a></li><li class="none"><a href="../svn.html">Checkout the Source Code</a></li></ul></li><li class="none"><a href="../docs/index.html">Documentation</a></li><li class="expanded"><a href="../mail-lists.html">Get Involved</a><ul><li class="none"><a href="../mail-lists.html">Mailing Lists</a></li></ul></li><li class="expanded"><a href="../team-list.html">Project Information</a><ul><li class="none"><a href="../team-list.html">Project Team</a></li><li class="non
 e"><a href="../issue-tracking.html">Issue Tracking</a></li></ul></li></ul></div><a href="http://maven.apache.org/" title="Built by Maven" id="poweredBy"><img alt="Built by Maven" src="../images/logos/maven-button-1.png"></img></a></div></div><div id="bodyColumn"><div class="contentBox"><div class="section"><a name="Axis2_C_Developer_Guide"></a><h2>Axis2/C Developer Guide</h2><p>Please send your feedback to developer mailing list: <a href="mailto:axis-c-dev@ws.apache.org">axis-c-dev@ws.apache.org</a> (Please
+                	Last published: 31 August 2006
+                  | Doc for 0.93</div><div class="xright"></div><div class="clear"><hr></hr></div></div><div id="leftColumn"><div id="navcolumn"><div id="menuAxis2_C"><h5>Axis2/C</h5><ul><li class="none"><a href="../index.html">Home</a></li><li class="expanded"><a href="../download.cgi">Download Axis2/C</a><ul><li class="none"><a href="../download.cgi">Releases</a></li><li class="none"><a href="http://svn.apache.org/viewcvs.cgi/webservices/axis2/trunk/c/" class="externalLink" title="External Link">View Source Code Online</a></li><li class="none"><a href="../svn.html">Checkout Source Code</a></li></ul></li><li class="none"><a href="../docs/index.html">Documentation</a></li><li class="expanded"><a href="../mail-lists.html">Get Involved</a><ul><li class="none"><a href="../mail-lists.html">Mailing Lists</a></li></ul></li><li class="expanded"><a href="../team-list.html">Project Information</a><ul><li class="none"><a href="../team-list.html">Project Team</a></li><li class="none"><
 a href="../issue-tracking.html">Issue Tracking</a></li></ul></li></ul></div><a href="http://maven.apache.org/" title="Built by Maven" id="poweredBy"><img alt="Built by Maven" src="../images/logos/maven-button-1.png"></img></a></div></div><div id="bodyColumn"><div class="contentBox"><div class="section"><a name="Axis2_C_Developer_Guide"></a><h2>Axis2/C Developer Guide</h2><p>Please send your feedback to developer mailing list: <a href="mailto:axis-c-dev@ws.apache.org">axis-c-dev@ws.apache.org</a> (Please
 remember to prefix the subject with [Axis2]). To subscribe to developer
 mailing lists see <a href="../mail-lists.html">here</a></p><div class="subsection"><a name="Content"></a><h3>Content</h3><p>This guide walks you through the following topics that might help you get
 familiar with the Axis2/C project and its development norms in quick time.</p><ul>

Modified: webservices/axis2/site/c/docs/index.html
URL: http://svn.apache.org/viewvc/webservices/axis2/site/c/docs/index.html?rev=438918&r1=438917&r2=438918&view=diff
==============================================================================
--- webservices/axis2/site/c/docs/index.html (original)
+++ webservices/axis2/site/c/docs/index.html Thu Aug 31 06:46:38 2006
@@ -2,8 +2,8 @@
           @import url("../style/maven-base.css");
           
 			    @import url("../style/maven-classic.css");</style><link rel="stylesheet" href="../style/print.css" type="text/css" media="print"></link><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"></meta></head><body class="composite"><div id="banner"><a href="http://www.apache.org/" id="organizationLogo"><img alt="Apache Software Foundation" src="http://www.apache.org/images/asf-logo.gif"></img></a><a href="http://ws.apache.org/axis2/c" id="projectLogo"><img alt="Apache Axis2 C" src="http://ws.apache.org/axis2/images/axis.jpg"></img></a><div class="clear"><hr></hr></div></div><div id="breadcrumbs"><div class="xleft">
-                	Last published: 30 August 2006
-                  | Doc for 0.93</div><div class="xright"></div><div class="clear"><hr></hr></div></div><div id="leftColumn"><div id="navcolumn"><div id="menuAxis2_C"><h5>Axis2/C</h5><ul><li class="none"><a href="../index.html">Home</a></li><li class="expanded"><a href="../download.cgi">Download Axis2/C</a><ul><li class="none"><a href="../download.cgi">Releases</a></li><li class="none"><a href="http://svn.apache.org/viewcvs.cgi/webservices/axis2/trunk/c/" class="externalLink" title="External Link">View Source Code Online</a></li><li class="none"><a href="../svn.html">Checkout the Source Code</a></li></ul></li><li class="none"><a href="../docs/index.html">Documentation</a></li><li class="expanded"><a href="../mail-lists.html">Get Involved</a><ul><li class="none"><a href="../mail-lists.html">Mailing Lists</a></li></ul></li><li class="expanded"><a href="../team-list.html">Project Information</a><ul><li class="none"><a href="../team-list.html">Project Team</a></li><li class="non
 e"><a href="../issue-tracking.html">Issue Tracking</a></li></ul></li></ul></div><a href="http://maven.apache.org/" title="Built by Maven" id="poweredBy"><img alt="Built by Maven" src="../images/logos/maven-button-1.png"></img></a></div></div><div id="bodyColumn"><div class="contentBox"><div class="section"><a name="Axis2_C_Documentation"></a><h2>Axis2/C Documentation</h2><div class="subsection"><a name="Getting_Started"></a><h3>Getting Started</h3><ul>
+                	Last published: 31 August 2006
+                  | Doc for 0.93</div><div class="xright"></div><div class="clear"><hr></hr></div></div><div id="leftColumn"><div id="navcolumn"><div id="menuAxis2_C"><h5>Axis2/C</h5><ul><li class="none"><a href="../index.html">Home</a></li><li class="expanded"><a href="../download.cgi">Download Axis2/C</a><ul><li class="none"><a href="../download.cgi">Releases</a></li><li class="none"><a href="http://svn.apache.org/viewcvs.cgi/webservices/axis2/trunk/c/" class="externalLink" title="External Link">View Source Code Online</a></li><li class="none"><a href="../svn.html">Checkout Source Code</a></li></ul></li><li class="none"><a href="../docs/index.html">Documentation</a></li><li class="expanded"><a href="../mail-lists.html">Get Involved</a><ul><li class="none"><a href="../mail-lists.html">Mailing Lists</a></li></ul></li><li class="expanded"><a href="../team-list.html">Project Information</a><ul><li class="none"><a href="../team-list.html">Project Team</a></li><li class="none"><
 a href="../issue-tracking.html">Issue Tracking</a></li></ul></li></ul></div><a href="http://maven.apache.org/" title="Built by Maven" id="poweredBy"><img alt="Built by Maven" src="../images/logos/maven-button-1.png"></img></a></div></div><div id="bodyColumn"><div class="contentBox"><div class="section"><a name="Axis2_C_Documentation"></a><h2>Axis2/C Documentation</h2><div class="subsection"><a name="Getting_Started"></a><h3>Getting Started</h3><ul>
   <li><a href="installationguide.html">Installation Guide</a></li>
   <li><a href="developerguide.html">Developer Guide</a></li>
   <li><a href="userguide.html">User Guide</a></li>

Modified: webservices/axis2/site/c/docs/installationguide.html
URL: http://svn.apache.org/viewvc/webservices/axis2/site/c/docs/installationguide.html?rev=438918&r1=438917&r2=438918&view=diff
==============================================================================
--- webservices/axis2/site/c/docs/installationguide.html (original)
+++ webservices/axis2/site/c/docs/installationguide.html Thu Aug 31 06:46:38 2006
@@ -2,8 +2,8 @@
           @import url("../style/maven-base.css");
           
 			    @import url("../style/maven-classic.css");</style><link rel="stylesheet" href="../style/print.css" type="text/css" media="print"></link><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"></meta></head><body class="composite"><div id="banner"><a href="http://www.apache.org/" id="organizationLogo"><img alt="Apache Software Foundation" src="http://www.apache.org/images/asf-logo.gif"></img></a><a href="http://ws.apache.org/axis2/c" id="projectLogo"><img alt="Apache Axis2 C" src="http://ws.apache.org/axis2/images/axis.jpg"></img></a><div class="clear"><hr></hr></div></div><div id="breadcrumbs"><div class="xleft">
-                	Last published: 30 August 2006
-                  | Doc for 0.93</div><div class="xright"></div><div class="clear"><hr></hr></div></div><div id="leftColumn"><div id="navcolumn"><div id="menuAxis2_C"><h5>Axis2/C</h5><ul><li class="none"><a href="../index.html">Home</a></li><li class="expanded"><a href="../download.cgi">Download Axis2/C</a><ul><li class="none"><a href="../download.cgi">Releases</a></li><li class="none"><a href="http://svn.apache.org/viewcvs.cgi/webservices/axis2/trunk/c/" class="externalLink" title="External Link">View Source Code Online</a></li><li class="none"><a href="../svn.html">Checkout the Source Code</a></li></ul></li><li class="none"><a href="../docs/index.html">Documentation</a></li><li class="expanded"><a href="../mail-lists.html">Get Involved</a><ul><li class="none"><a href="../mail-lists.html">Mailing Lists</a></li></ul></li><li class="expanded"><a href="../team-list.html">Project Information</a><ul><li class="none"><a href="../team-list.html">Project Team</a></li><li class="non
 e"><a href="../issue-tracking.html">Issue Tracking</a></li></ul></li></ul></div><a href="http://maven.apache.org/" title="Built by Maven" id="poweredBy"><img alt="Built by Maven" src="../images/logos/maven-button-1.png"></img></a></div></div><div id="bodyColumn"><div class="contentBox"><div class="section"><a name="Axis2_C_Installation_Guide"></a><h2>Axis2/C Installation Guide</h2><p>This document will guide you on how to install Axis2/C and run the server
+                	Last published: 31 August 2006
+                  | Doc for 0.93</div><div class="xright"></div><div class="clear"><hr></hr></div></div><div id="leftColumn"><div id="navcolumn"><div id="menuAxis2_C"><h5>Axis2/C</h5><ul><li class="none"><a href="../index.html">Home</a></li><li class="expanded"><a href="../download.cgi">Download Axis2/C</a><ul><li class="none"><a href="../download.cgi">Releases</a></li><li class="none"><a href="http://svn.apache.org/viewcvs.cgi/webservices/axis2/trunk/c/" class="externalLink" title="External Link">View Source Code Online</a></li><li class="none"><a href="../svn.html">Checkout Source Code</a></li></ul></li><li class="none"><a href="../docs/index.html">Documentation</a></li><li class="expanded"><a href="../mail-lists.html">Get Involved</a><ul><li class="none"><a href="../mail-lists.html">Mailing Lists</a></li></ul></li><li class="expanded"><a href="../team-list.html">Project Information</a><ul><li class="none"><a href="../team-list.html">Project Team</a></li><li class="none"><
 a href="../issue-tracking.html">Issue Tracking</a></li></ul></li></ul></div><a href="http://maven.apache.org/" title="Built by Maven" id="poweredBy"><img alt="Built by Maven" src="../images/logos/maven-button-1.png"></img></a></div></div><div id="bodyColumn"><div class="contentBox"><div class="section"><a name="Axis2_C_Installation_Guide"></a><h2>Axis2/C Installation Guide</h2><p>This document will guide you on how to install Axis2/C and run the server
 and client samples on Linux and Microsoft Windows operating systems.</p><p>This release comes in two forms, source and binary. Instructions are given
 below to install using any of those two forms.</p><p>Please send your feedback to the developer mailing list: <a href="mailto:axis-c-dev@ws.apache.org">axis-c-dev@ws.apache.org</a> (please
 remember to prefix the subject with [Axis2]). To subscribe to developer

Modified: webservices/axis2/site/c/docs/om_tutorial.html
URL: http://svn.apache.org/viewvc/webservices/axis2/site/c/docs/om_tutorial.html?rev=438918&r1=438917&r2=438918&view=diff
==============================================================================
--- webservices/axis2/site/c/docs/om_tutorial.html (original)
+++ webservices/axis2/site/c/docs/om_tutorial.html Thu Aug 31 06:46:38 2006
@@ -2,8 +2,8 @@
           @import url("../style/maven-base.css");
           
 			    @import url("../style/maven-classic.css");</style><link rel="stylesheet" href="../style/print.css" type="text/css" media="print"></link><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"></meta></head><body class="composite"><div id="banner"><a href="http://www.apache.org/" id="organizationLogo"><img alt="Apache Software Foundation" src="http://www.apache.org/images/asf-logo.gif"></img></a><a href="http://ws.apache.org/axis2/c" id="projectLogo"><img alt="Apache Axis2 C" src="http://ws.apache.org/axis2/images/axis.jpg"></img></a><div class="clear"><hr></hr></div></div><div id="breadcrumbs"><div class="xleft">
-                	Last published: 30 August 2006
-                  | Doc for 0.93</div><div class="xright"></div><div class="clear"><hr></hr></div></div><div id="leftColumn"><div id="navcolumn"><div id="menuAxis2_C"><h5>Axis2/C</h5><ul><li class="none"><a href="../index.html">Home</a></li><li class="expanded"><a href="../download.cgi">Download Axis2/C</a><ul><li class="none"><a href="../download.cgi">Releases</a></li><li class="none"><a href="http://svn.apache.org/viewcvs.cgi/webservices/axis2/trunk/c/" class="externalLink" title="External Link">View Source Code Online</a></li><li class="none"><a href="../svn.html">Checkout the Source Code</a></li></ul></li><li class="none"><a href="../docs/index.html">Documentation</a></li><li class="expanded"><a href="../mail-lists.html">Get Involved</a><ul><li class="none"><a href="../mail-lists.html">Mailing Lists</a></li></ul></li><li class="expanded"><a href="../team-list.html">Project Information</a><ul><li class="none"><a href="../team-list.html">Project Team</a></li><li class="non
 e"><a href="../issue-tracking.html">Issue Tracking</a></li></ul></li></ul></div><a href="http://maven.apache.org/" title="Built by Maven" id="poweredBy"><img alt="Built by Maven" src="../images/logos/maven-button-1.png"></img></a></div></div><div id="bodyColumn"><div class="contentBox"><div class="section"><a name="Axis2_C_OM_Tutorial"></a><h2>Axis2/C OM Tutorial</h2><div class="subsection"><a name="Content"></a><h3>Content</h3><ul>
+                	Last published: 31 August 2006
+                  | Doc for 0.93</div><div class="xright"></div><div class="clear"><hr></hr></div></div><div id="leftColumn"><div id="navcolumn"><div id="menuAxis2_C"><h5>Axis2/C</h5><ul><li class="none"><a href="../index.html">Home</a></li><li class="expanded"><a href="../download.cgi">Download Axis2/C</a><ul><li class="none"><a href="../download.cgi">Releases</a></li><li class="none"><a href="http://svn.apache.org/viewcvs.cgi/webservices/axis2/trunk/c/" class="externalLink" title="External Link">View Source Code Online</a></li><li class="none"><a href="../svn.html">Checkout Source Code</a></li></ul></li><li class="none"><a href="../docs/index.html">Documentation</a></li><li class="expanded"><a href="../mail-lists.html">Get Involved</a><ul><li class="none"><a href="../mail-lists.html">Mailing Lists</a></li></ul></li><li class="expanded"><a href="../team-list.html">Project Information</a><ul><li class="none"><a href="../team-list.html">Project Team</a></li><li class="none"><
 a href="../issue-tracking.html">Issue Tracking</a></li></ul></li></ul></div><a href="http://maven.apache.org/" title="Built by Maven" id="poweredBy"><img alt="Built by Maven" src="../images/logos/maven-button-1.png"></img></a></div></div><div id="bodyColumn"><div class="contentBox"><div class="section"><a name="Axis2_C_OM_Tutorial"></a><h2>Axis2/C OM Tutorial</h2><div class="subsection"><a name="Content"></a><h3>Content</h3><ul>
   <li><a href="#Introduction">Introduction</a>
     <ul>
       <li><a href="#What_is_OM">What is OM</a></li>
@@ -11,16 +11,21 @@
       Tutorial</a></li>
       <li><a href="#What_is_Pull_Parsing">What is Pull Parsing</a></li>
       <li><a href="#Features_of_OM">Features of OM</a></li>
-      <li><a href="#Where_Does_SOAP_Come_into_Play_">Where Does SOAP Come
-        into Play?</a></li>
+      <li><a href="#Where_Does_SOAP_Come_into_Play_">Where does SOAP come
+        into play?</a></li>
     </ul>
   </li>
   <li><a href="#Working_with_OM">Working with OM</a>
     <ul>
+      <li><a href="#Env">Axis2/C environment</a></li>
       <li><a href="#Creation">Creation</a></li>
-      <li><a href="#Addition_and_Detaching_of_Nodes">Addition and Detaching
-        of Nodes</a></li>
+      <li><a href="#Addition_and_Detaching_of_Nodes">Adding and Detaching
+        Nodes</a></li>
       <li><a href="#Traversing">Traversing</a></li>
+      <li><a href="#Serialization">Serialization</a></li>
+      <li><a href="#Reader_and_Writer">Using axis2_xml_reader and axis2_xml_writer</a></li>
+      <li><a href="#Mem_Leaks">How to avoid memory leaks and double frees when using OM</a></li>
+      <li><a href="#Complete_Sample">Complete Sample</a></li>
     </ul>
   </li>
 </ul><p><a id="Introduction"></a></p></div><div class="subsection"><a name="Introduction"></a><h3>Introduction</h3><p><a id="What_is_OM"></a></p></div><div class="subsection"><a name="What_is_OM_"></a><h3>What is OM?</h3><p>OM stands for Object Model (a.k.a AXIOM - AXis Object Model) and refers to
@@ -30,98 +35,114 @@
 specific manner. DOM and JDOM are two such XML models. OM is conceptually
 similar to such an XML model by its external behavior but deep down it is
 very much different.</p><p>The objective of this tutorial is to introduce the basics of OM C and
-explain best practices while using OM.</p><p>AXIOM C is a C implementation of AXIOM java. We have tried to get almost
+explain best practices while using OM.</p><p>AXIOM C is a C implementation of AXIOM Java. We have tried to get almost
 the same kind of API in C.</p><p><a id="For_Whom_is_This_Tutorial"></a></p></div><div class="subsection"><a name="For_whom_is_this_Tutorial_"></a><h3>For whom is this Tutorial?</h3><p>This tutorial can be used by anybody who is interested and wants to go
 deeper in to OM C. Knowledge in similar object models such as DOM will be
 quite helpful in understanding OM but such knowledge is not assumed. Several
 links are listed in the appendix/ links section that will help understand the
 basics of XML.</p><p><a id="What_is_Pull_Parsing"></a></p></div><div class="subsection"><a name="What_is_Pull_Parsing__"></a><h3>What is Pull Parsing ?</h3><p>
 Pull parsing is a new trend in XML processing. The previously popular XML
-processing frameworks such as DOM were "push-based" which means the control
-of the parsing was with the parser itself. This approach is fine and easy to
-use but it is not efficient in handling large XML documents since a complete
-memory model will be generated in the memory. Pull parsing inverts the
-control and hence the parser only proceeds at the users command. The user can
-decide to store or discard events generated from the parser. OM is based on
-pull parsing. To learn more about XML pull parsing see the <a href="http://www.bearcave.com/software/java/xml/xmlpull.html" class="externalLink" title="External Link">XML pull
-parsing introduction</a>. <a id="Features_of_OM"></a></p></div><div class="subsection"><a name="Features_of_OM"></a><h3>Features of OM</h3><p>OM is a lightweight, differed built XML info set representation based on
+processing frameworks such as DOM were "push-based", which means that the
+control of parsing was with the parser itself. This approach is fine and easy
+to use but it is not efficient in handling large XML documents since a
+complete memory model will be generated in the memory. Pull parsing inverts
+the control and hence the parser only proceeds at the users command. The user
+can decide to store or discard events generated from the parser. OM is based
+on pull parsing. To learn more about XML pull parsing see the <a href="http://www.bearcave.com/software/java/xml/xmlpull.html" class="externalLink" title="External Link">XML pull
+parsing introduction</a>.
+
+<a id="Features_of_OM"></a></p></div><div class="subsection"><a name="Features_of_OM"></a><h3>Features of OM</h3><p>OM is a lightweight, differed built XML infoset representation based on
 StAX API derived form (<a href="http://www.jcp.org/aboutJava/communityprocess/first/jsr173/" class="externalLink" title="External Link">JSR
 173</a>), which is the standard streaming pull parser API. OM can be
-manipulated as flexibly as any other object model (Such as <a href="http://www.jdom.org/" class="externalLink" title="External Link">JDOM</a>), but underneath the objects will be
+manipulated as flexibly as any other object model (such as <a href="http://www.jdom.org/" class="externalLink" title="External Link">JDOM</a>), but underneath the objects will be
 created only when they are absolutely required. This leads to much less
-memory intensive programming. Following is a short feature overview of OM.</p><ul>
+memory intensive programming.</p><p>Following is a short feature overview of OM.</p><ul>
   <li>Lightweight: OM is specifically targeted to be lightweight. This is
-    achieved by reducing the depth of the hierarchy, number of methods and
-    the attributes enclosed in the objects. This makes the objects less
+    achieved by reducing the depth of the hierarchy, the number of methods
+    and the attributes enclosed in the objects. This makes the objects less
     memory intensive.</li>
   <li>Differed building: By far this is the most important feature of OM. The
     objects are not made unless a need arises for them. This passes the
-    control of building over to the object model itself rather than an
-    external builder.</li>
+    control of building to the object model itself rather than an external
+    builder.</li>
   <li>Pull based: For a differed building mechanism a pull based parser is
     required. OM is based on StAX, the standard pull parser API.
-    <p>Since different XML parsers offer different kinds of pull parser APIs
+    <p>Since different XML parsers offer different kinds of pull parser APIs,
     we define an API derived from StAX. That API is defined in
-    axis2_xml_reader.h , similarly we define an xml writer api in
-    axis2_xml_writer.h. These two APIs work as an abstarction layer between
-    any XML parser and OM. So any parser that is going to be used for OM
-    should implement the axis2_xml_reader API and axis2_xml_writer API using
-    a wrapper layer.</p>
-    <p>Currenly we use Libxml2 as our default XML parser.</p>
+    <code>axis2_xml_reader.h</code>. Similarly we define an xml writer API in
+    <code>axis2_xml_writer.h</code>. These two APIs work as an abstarction
+    layer between any XML parser and OM. So any parser that is going to be
+    used for OM should implement the <code>axis2_xml_reader</code> API and
+    <code>axis2_xml_writer</code> API using a wrapper layer.</p>
+    <p></p>
+    <p>Currenly we use <code>libxml2</code> as our default XML parser.</p>
+    <p></p>
   </li>
 </ul><p>
 
 
 </p><p class="img"><img alt="" src="images/archi006.jpg" class="img" width="490" height="282"></img></p><p>
 
-</p><p>OM Builder wraps the raw xml character stream through the axis2_xml_reader
-API. Hence the complexities of the pull event stream is covered</p><p><a id="Where_Does_SOAP_Come_into_Play?"></a></p></div><div class="subsection"><a name="Where_Does_SOAP_Come_into_Play_"></a><h3>Where Does SOAP Come into Play?</h3><p>In a nutshell SOAP is a information exchange protocol based on XML. SOAP
+</p><p>OM Builder wraps the raw xml character stream through the
+<code>axis2_xml_reader</code> API. Hence the complexities of the pull event
+stream are covered.</p><p><a id="Where_Does_SOAP_Come_into_Play?"></a></p></div><div class="subsection"><a name="Where_does_SOAP_come_into_play_"></a><h3>Where does SOAP come into play?</h3><p>In a nutshell SOAP is an information exchange protocol based on XML. SOAP
 has a defined set of XML elements that should be used in messages. Since Axis
-is a "SOAP Engine" and OM is built for Axis, A SOAP specific API was
+is a "SOAP Engine" and OM is built for Axis, a SOAP specific API was
 implemented on top of OM.We have defined a number of structs to represent
-SOAP constructs like Envelope etc.. These structs wraps general OM
-structures. See <a href="http://www.w3schools.com/SOAP/soap_intro.asp" class="externalLink" title="External Link">here</a> to learn more
+SOAP constructs like Envelope etc., which wraps general OM structures. See <a href="http://www.w3schools.com/SOAP/soap_intro.asp" class="externalLink" title="External Link">here</a> to learn more
 about SOAP.</p><p>
-<a id="Working_with_OM"></a></p></div><div class="subsection"><a name="Working_with_OM"></a><h3>Working with OM</h3><p><a id="Creation">Axis2c environment</a></p><p>Before starting the discussion on om, it is necessary to get a good
-understanding of the basics of axis2c. Axis2c is designed to be plugble to
-any system written in C or C++ and therefore axis2 has abstracted the
+<a id="Working_with_OM"></a></p></div><div class="subsection"><a name="Working_with_OM"></a><h3>Working with OM</h3><p></p><p><a id="Env"></a></p></div><div class="subsection"><a name="Axis2_C_environment"></a><h3>Axis2/C environment</h3><p>Before starting the discussion on OM, it is necessary to get a good
+understanding of the basics of Axis2/C. Axis2/C is designed to be plugble to
+any system written in C or C++ and therefore Axis2 has abstracted the
 functionalities that differ from system to system in to a structure
-"axis2_env_t" which we refer to as axis2 environment . The environment holds
-axis2_allocater_t [ used for memory allocation/deallocation ] , axis2_error_t
-[ error reporting mechanism ] axis2_log_t [ logging mechanism ] and
-axis2_thread_t [threading mechnism ]. axis2_allocator_t has function pointers
-to malloc, realloc and free functions and all memory allocation and
-deallocation is done using the allocator. So by pluging in a different
-allocator, a user can make the entire Axis2 system to use different memory
-management functions.</p><p>How to create the axis2 environment</p><p><b>creating the allocator</b></p><p>axis2_allocator_t *allocator = NULL;</p><p>allocator = axis2_allocator_init(NULL);</p><p></p><p>We parse NULL to the above function to use the default allocator. Then the
-allocators function pointers point to malloc, realloc and free functons. If
-you have your own allocator structure, you may pass it instead.</p><p>Convinent macros are defined to use allocator functions as follows (refer
-to axis2_allocator.h for more information).</p><p>AXIS2_MALLOC , AXIS2_REALLOC and AXIS2_FREE .</p><p>In a similar fashion, you can create the error and log structures.</p><p>axis2_log_t *log = NULL;</p><p>axis2_error_t *error = NULL;</p><p>log = axis2_log_create(allocator, NULL, NULL);</p><p>log = axis2_log_create(allocator, NULL, "mylog.log");</p><p>Now we can create the environment by parsing the allocator, error and log
-to axis2_env_create_with_error_log() function.</p><p>axis2_env_t *env = NULL;</p><p>env = axis2_env_create_with_error_log(allocator, error, log);</p><p></p><p>Apart from the above abstraction , all other library functions used are
+<code>axis2_env_t</code>, which we refer to as axis2 environment . The
+environment holds <code>axis2_allocater_t</code> [ used for memory
+allocation/deallocation ] , <code>axis2_error_t</code> [ error reporting
+mechanism ], <code>axis2_log_t</code> [ logging mechanism ] and
+<code>axis2_thread_t</code> [threading mechnism ].
+<code>axis2_allocator_t</code> has function pointers to <code>malloc</code>,
+<code>realloc</code> and <code>free</code> functions and all memory
+allocation and deallocation is done using the allocator. Therefore, by
+pluging in a different allocator, a user can make the entire Axis2 system to
+use different memory management functions.</p><p></p><p>When creating the axis2 environment, the first thing is to create the
+allocator.</p><p><code>axis2_allocator_t *allocator = NULL;</code></p><p><code>allocator = axis2_allocator_init(NULL);</code></p><p></p><p>We parse <code>NULL</code> to the above function to use the default
+allocator. Then the allocators function pointers point to
+<code>malloc</code>, <code>realloc</code> and <code>free</code> functons. If
+you have your own allocator structure, you may pass it instead.</p><p></p><p>Convinent macros <code>AXIS2_MALLOC</code>, <code>AXIS2_REALLOC</code> and
+<code>AXIS2_FREE</code> are defined to use allocator functions (refer to
+<code>axis2_allocator.h</code> for more information).</p><p></p><p>In a similar fashion, you can create the error and log structures.</p><p><code>axis2_log_t *log = NULL;</code></p><p><code>axis2_error_t *error = NULL;</code></p><p><code>log = axis2_log_create(allocator, NULL, NULL);</code></p><p><code>log = axis2_log_create(allocator, NULL, "mylog.log");</code></p><p></p><p>Now we can create the environment by parsing the allocator, error and log
+to <code>axis2_env_create_with_error_log()</code> function.</p><p><code>axis2_env_t *env = NULL;</code></p><p><code>env = axis2_env_create_with_error_log(allocator, error,
+log);</code></p><p></p><p>Apart from the above abstraction , all other library functions used are
 ANSI C complient. Further, platform dependent funtions are also
-abstracted.</p><p>As a rule of thumb, all "create" functions take a pointer to the
-environment as its first argument and all other functions take pointer to
-'this' struct as the first argument and a pointer to the environment as
-the second argument. (Please refer to our coding convention page to learn
-more about this)</p><p>eg.</p><p>axiom_node_t *node = NULL;</p><p>axiom_node_t *child = NULL;</p><p>node = axiom_node_create(env);</p><p>child = AXIOM_NODE_GET_FIRST_CHILD(node, env);</p><p>Note that we are passing the node (pointer to axiom_node_t ) as the first
-argument and the pointer to the environment as the second.</p><p></p><p>All functions return a pointer to a struct or a status code [
-AXIS2_SUCCESS , AXIS2_FAILURE]. So if NULL is returned by a function</p><p>it is either because there is nothing to return or an error has
-occured.</p></div><div class="subsection"><a name="Creation"></a><h3>Creation</h3><p>Creation is the first and foremost action when using an Object
-representation. This part explains how OM can be built from either an
+abstracted.</p><p></p><p>As a rule of thumb, all "<code>create</code>" functions take a pointer to
+the environment as its first argument and all other functions take pointer to
+'this' struct as the first argument and a pointer to the environment as the
+second argument. (Please refer to our <a href="../coding_conventions.html">coding convention page</a> to learn more
+about this)</p><p>Eg.</p><p><code>axiom_node_t *node = NULL;</code></p><p><code>axiom_node_t *child = NULL;</code></p><p><code>node = axiom_node_create(env);</code></p><p><code>child = AXIOM_NODE_GET_FIRST_CHILD(node, env);</code></p><p>Note that we are passing the node (pointer to <code>axiom_node_t</code> )
+as the first argument and the pointer to the environment as the second.</p><p></p><p>All functions return a pointer to a struct or a status code [
+<code>AXIS2_SUCCESS</code> , <code>AXIS2_FAILURE</code>]. So if
+<code>NULL</code> is returned by a function it is either because there is
+nothing to return or an error has occured.</p><p></p><p><a id="Creation"></a></p></div><div class="subsection"><a name="Creation"></a><h3>Creation</h3><p>Creation is the first and foremost action when using an Object
+representation. This part explains how OM can be built either from an
 existing document or programmatically. OM provides a notion of a builder to
 create objects. Since OM is tightly bound to StAX, a StAX compliant reader
-should be created first with the desired input stream.</p><p>In our OM implementation we define a struct 'axiom_node_t' which acts
-as the container of the other structs and it maintains the links that form
-the Link List OM in C.</p><p>So to traverse the structure the functions defined in axiom_node.h must
-be used. To access xml information, the 'data element' struct stored in
-axiom_node_t must be obtained using the AXIOM_NODE_GET_DATA_ELEMENT
-macro. The type of the struct stored in the 'axiom_node_t' struct can be
-obtained by AXIOM_NODE_GET_NODE_TYPE macro. When we create
-axiom_element_t , axiom_text_t etc .., it is required to parse a double
-pointer to the node struct as the last parameter of the create function so
-that the correponding node struct can be referenced using that pointer.</p><p>Ex.</p><p>axiom_node_t *my_node = NULL;</p><p>axiom_element_t *my_ele = NULL;</p><p>my_ele = axiom_element_create(env, NULL, "MY_ELEMENT", NULL,
-&amp;my_node);</p><p>Now if we call AXIOM_NODE_GET_NODE_TYPE macro on 'my_node' pointer we
-will get the value as AXIOM_ELEMENT .</p><div>
+should be created first with the desired input stream.</p><p>In our OM implementation we define a struct '<code>axiom_node_t</code>'
+which acts as the container of the other structs and it maintains the links
+that form the Link List OM in C.</p><p>To traverse this structure, the functions defined in
+<code>axiom_node.h</code> must be used. To access xml information, the 'data
+element' struct stored in <code>axiom_node_t</code> must be obtained using
+the <code>AXIOM_NODE_GET_DATA_ELEMENT</code> macro. The type of the struct
+stored in the '<code>axiom_node_t'</code> struct can be obtained by
+<code>AXIOM_NODE_GET_NODE_TYPE</code> macro. When we create
+<code>axiom_element_t</code> , <code>axiom_text_t</code> etc .., it is
+required to parse a double pointer to the node struct as the last parameter
+of the <code>create</code> function so that the correponding node struct can
+be referenced using that pointer.</p><p>Eg.</p><p><code>axiom_node_t *my_node = NULL;</code></p><p><code>axiom_element_t *my_ele = NULL;</code></p><p><code>my_ele = axiom_element_create(env, NULL, "MY_ELEMENT", NULL,
+&amp;my_node);</code></p><p></p><p>Now if we call <code>AXIOM_NODE_GET_NODE_TYPE</code> macro on
+'<code>my_node</code>' pointer we will get the value as
+<code>AXIOM_ELEMENT</code> .</p><div>
+<p></p>
+
 <p><b>Code Listing 1</b></p>
 </div>
     <div class="source"><pre>axis2_xml_reader_t *xml_reader = NULL;
@@ -137,13 +158,16 @@
 
 soap_envelope = AXIOM_SOAP_BUILDER_GET_SOAP_ENVELOPE(soap_builder, env);
 </pre></div>
-  <br></br><p>As the example shows, creating an OM from xml_reader is pretty straight
-forward. However elements and nodes can be created programmatically to modify
-the structure as well. Currently OM has two builders, namely the
-axiom_stax_builder_t and the axiom_soap_builder_t. These builders provide
-the necessary information to the XML info set model to build itself.</p><div>
+  <br></br><p>As the example shows, creating an OM from <code>xml_reader</code> is
+pretty straight forward. However, elements and nodes can be created
+programmatically to modify the structure as well. Currently OM has two
+builders, namely the <code>axiom_stax_builder_t</code> and the
+<code>axiom_soap_builder_t</code>. These builders provide the necessary
+information to the XML infoset model to build itself.</p><div>
+<p></p>
+
 <p><b>Code Listing 2</b></p>
-</div><p class="img-title"><b></b></p>
+</div>
     <div class="source"><pre>axiom_namespace_t *ns1 = NULL;
 axiom_namespace_t *ns2 = NULL;
 
@@ -156,24 +180,23 @@
 ns1 = axiom_namespace_create(env, "bar", "x");
 ns2 = axiom_namespace_create(env, "bar1", "y");
 
-
 root_ele = axiom_element_create(env, NULL, "root", ns1, &amp;root_ele_node);
 ele1     = axiom_element_create(env, root_node, "foo1", ns2, &amp;ele1_node);
 
 </pre></div>
-  <p>Several differences exist between a programmatically created
-axiom_node_t and a conventionally built axiom_node_t. The most
-important difference is that the latter will have a pointer to its builder,
-where as the former does not have that information. As stated earlier in this
-tutorial, since the OM is built as and when required, each and every
-axiom_node_t struct should have a reference to its builder. If this
-information is not available, it is due to the struct being created without a
-builder.</p><p></p><p>The SOAP struct hierarchy is made in the most natural way for a
+  <p></p><p>Several differences exist between a programmatically created
+<code>axiom_node_t</code> and a conventionally built
+<code>axiom_node_t</code>. The most important difference is that the latter
+will have a pointer to its builder, where as the former does not have that
+information. As stated earlier in this tutorial, since the OM is built as and
+when required, each and every <code>axiom_node_t</code> struct should have a
+reference to its builder. If this information is not available, it is due to
+the struct being created without a builder.</p><p></p><p>The SOAP struct hierarchy is made in the most natural way for a
 programmer. It acts as a wrapper layer on top of OM implementation. The SOAP
-structs wraps the correspoding axiom_node_t structs to store information in
-xml.</p><p>
-<a id="Addition_and_Detaching_of_Nodes"></a></p></div><div class="subsection"><a name="Addition_and_Detaching_of_Nodes"></a><h3>Addition and Detaching of Nodes</h3><p>Addition and removal methods are defined in the axiom_node.h header.
-The following are the most important in adding nodes.</p><div>
+structs wraps the correspoding <code>axiom_node_t</code> structs to store
+information in xml.</p><p>
+<a id="Addition_and_Detaching_of_Nodes"></a></p></div><div class="subsection"><a name="Adding_and_Detaching_Nodes"></a><h3>Adding and Detaching Nodes</h3><p>Addition and removal methods are defined in the <code>axiom_node.h</code>
+header. The following are the most important in adding nodes.</p><div>
 <p><b>Code Listing 3</b></p>
 </div><p>Add child operation</p>
     <div class="source"><pre>axis2_status_t
@@ -202,30 +225,31 @@
 bar_ele = axiom_element_create(env, NULL, "BAR", NULL. &amp;bar_node); 
 
 </pre></div>
-  <p>Now if we want to make 'BAR' element, a child of 'FOO' element we can use
-add_child MACRO.</p>
+  <p></p><p>Now if we want to make 'BAR' element, a child of 'FOO' element we can use
+add child macro.</p>
     <div class="source"><pre> AXIOM_NODE_ADD_CHILD(foo_node, env, bar_node); 
 
 </pre></div>
-  <p>Or we can parse the foo_node as the parent node at the time of creating to
-bar_ele as follows.</p>
+  <p></p><p>Or we can parse the <code>foo_node</code> as the parent node at the time
+of creating to <code>bar_ele</code> as follows.</p>
     <div class="source"><pre> bar_ele = axiom_element_create(env, foo_node, "BAR", NULL, &amp;bar_node);
 </pre></div>
   <ul>
-  <li>add_child function will always add the child as the first child of the
-    parent.</li>
-  <li><p>A given node can be removed from the tree by calling the detach()
-    method. A node can also be removed from the tree by calling the remove
-    method of the returned iterator which will also call the detach method of
-    the particular node internally.</p>
+  <li><code>add_child</code> function will always add the child as the first
+    child of the parent.</li>
+  <li><p>A given node can be removed from the tree by calling the
+    <code>detach()</code> method. A node can also be removed from the tree by
+    calling the <code>remove</code> method of the returned iterator which
+    will also call the <code>detach</code> method of the particular node
+    internally.</p>
   </li>
   <li>Namespaces are a tricky part of any XML object model and is the same in
     OM. However the interface to the namespace have been made very simple.
-    axiom_namespace_t * is the struct that represents a namespace and we
-    do not have setter functions. This makes the axiom_namespace
-  immutable.</li>
-</ul><p>Following are the important methods available in axiom_element to
-handle namespaces.</p><div>
+    <code>axiom_namespace_t</code> is the struct that represents a namespace
+    and we do not have setter functions. This makes the axiom namespace
+    immutable.</li>
+</ul><p></p><p>Following are the important methods available in
+<code>axiom_element</code> to handle namespaces.</p><div>
 <p><b>Code Listing 5</b></p>
 </div>
     <div class="source"><pre>axiom_namespace_t* 
@@ -254,19 +278,20 @@
                                axiom_node_t *element_node);
 
 </pre></div>
-  <p>An om_element has a namespace list [declared namespaces] and a pointer to
-its own namespace if one exists.</p><p>The declare_namespace function is straight forward. It adds a namespace to
-namespace declarations section. Note that a namespace declaration that is
-already added will not be added twice.</p><p>find_namespace is a very handy method to locate a namespace higher up the
-tree. It searches for a matching namespace in its own declarations section
-and jumps to the parent if it's not found. The search progresses up the tree
-until a matching namespace is found or the root has been reached.</p><p>find_declared_namespace can be used to search for a namespace in the
-current element's namespace declarations section.</p><p>set_namespace an om_elements own namespace , [ Note that an element's own
-namespace should be declared in its own namespace declarations section or its
-one of its parent element. ] This method first searches for a matching
-namespace using find_namespace and if a matching namespace is not found
-anamespace is declared to this om_element's namespace declarations section
-before seting the own namespace reference.</p><p>The following simple code segment shows how the namespaces are dealt with
+  <p></p><p>An om_element has a namespace list [declared namespaces] and a pointer to
+its own namespace if one exists.</p><p>The <code>declare_namespace</code> function is straight forward. It adds a
+namespace to namespace declarations section. Note that a namespace
+declaration that is already added will not be added twice.</p><p><code>find_namespace</code> is a very handy method to locate a namespace
+higher up the tree. It searches for a matching namespace in its own
+declarations section and jumps to the parent if it's not found. The search
+progresses up the tree until a matching namespace is found or the root has
+been reached.</p><p><code>find_declared_namespace</code> can be used to search for a namespace
+in the current element's namespace declarations section.</p><p><code>set_namespace</code> sets an om_elements own namespace. [ Note that
+an element's own namespace should be declared in its own namespace
+declarations section or in one of its parent elements. ] This method first
+searches for a matching namespace using <code>find_namespace</code> and if a
+matching namespace is not found anamespace is declared to this om_element's
+namespace declarations section before seting the own namespace reference.</p><p>The following sample code segment shows how the namespaces are dealt with
 in OM</p><div>
 <p><b>Code Listing 6</b></p>
 </div>
@@ -291,14 +316,15 @@
 om_text  = axiom_text_create(env, ele1_node, "blah", &amp;text_node);
 
 </pre></div>
-  <p>Serilization of the root element produces the following XML</p>
+  <p></p><p>Serilization of the root element produces the following XML</p>
     <div class="source"><pre>&lt;x:root xmlns:x="bar"&gt;
   &lt;y:foo xmlns:y="bar1"&gt;
         blah
   &lt;/y:foo&gt;
 &lt;/x:root&gt;
+
 </pre></div>
-  <p><a id="Traversing"></a></p><p>if we want to produce</p>
+  <p>If we want to produce</p>
     <div class="source"><pre>&lt;x:foo xmlns:x="bar" xmlns:y="bar1"&gt;Test&lt;/x:foo&gt;
 
 </pre></div>
@@ -321,17 +347,17 @@
 AXIOM_ELEMENT_SET_TEXT(foo_ele, env, "Test", &amp;foo_node);
 
 </pre></div>
-  </div><div class="subsection"><a name="Traversing"></a><h3>Traversing</h3><p>Traversing the OM structure can be done by obtaining an iterator struct.
-You can either call the appropriate function on OM element or create the
+  <p></p><p><a id="Traversing"></a></p></div><div class="subsection"><a name="Traversing"></a><h3>Traversing</h3><p>Traversing the OM structure can be done by obtaining an iterator struct.
+You can either call the appropriate function on an OM element or create the
 iterator manually. OM C offers three iterators to traverse the OM structure.
 They are</p><ul>
   <li>axiom_children_iterator_t</li>
   <li>axiom_child_element_iterator_t</li>
   <li>axiom_children_qname_iterator_t</li>
-</ul><p>The Iterator supports the 'OM way' of accessing elements and is more
+</ul><p></p><p>The iterator supports the 'OM way' of accessing elements and is more
 convenient than a list for sequential access. The following code sample shows
-how the children can be accessed. The children can be of type AXIOM_TEXT
-or AXIOM_ELEMENT.</p><div>
+how the children can be accessed. The children can be of type
+<code>AXIOM_TEXT</code> or <code>AXIOM_ELEMENT</code>.</p><div>
 <p><b>Code Listing 7</b></p>
 </div>
     <div class="source"><pre>axiom_children_iterator_t *children_iter = NULL;
@@ -354,26 +380,29 @@
 }
 
 </pre></div>
-  <p>Apart from this, every axiom_node_t struct has links to its siblings.
-If a thorough navigation is needed the AXIOM_NODE_GET_NEXT_SIBLING() and
-AXIOM_NODE_GET_PREVIOUS_SIBLING() macros can be used. A restrictive set
-can be chosen by using AXIOM_ELEMENT_XXX_WITH_QNAME() methods. The
-AXIOM_ELEMENT_GET_FIRST_CHILD_WITH_QNAME() method returns the first child
-that matches the given axis2_qname_t and
-AXIOM_ELEMENT_GET_CHILDREN_WITH_QNAME() returns
-axiom_children_qname_iterator_t which can be used to travese all the
-matching children. The advantage of these iterators are that they won't build
-the whole object structure at once; it builds only what is required.</p><p>
+  <p></p><p>Apart from this, every <code>axiom_node_t</code> struct has links to its
+siblings. If a thorough navigation is needed the
+<code>AXIOM_NODE_GET_NEXT_SIBLING()</code> and
+<code>AXIOM_NODE_GET_PREVIOUS_SIBLING()</code> macros can be used. A
+restrictive set can be chosen by using
+<code>AXIOM_ELEMENT_XXX_WITH_QNAME()</code> methods. The
+<code>AXIOM_ELEMENT_GET_FIRST_CHILD_WITH_QNAME()</code> method returns the
+first child that matches the given <code>axis2_qname_t</code> and
+<code>AXIOM_ELEMENT_GET_CHILDREN_WITH_QNAME()</code> returns
+<code>axiom_children_qname_iterator_t</code> which can be used to travese all
+the matching children. The advantage of these iterators are that they won't
+build the whole object structure at once; it builds only what is required.</p><p></p><p>
 
 <table class="bodyTable"><tbody>
     <tr class="b"><td><img src="images/OM005.gif" alt="" width="35" height="57"></img></td><td class="special-td">All iterator implementations internally stay one
         step ahead of their apparent location to provide the correct value
-        for the HAS_NEXT() function . This hidden advancement can build
-        elements that are not intended to be built at all.</td><td></td></tr>
+        for the <code>HAS_NEXT()</code> function . This hidden advancement
+        can build elements that are not intended to be built at all.</td><td></td></tr>
   </tbody></table>
 
-</p><p><b>Serialization</b></p><p>OM can be serialized using AXIOM_NODE_SERIALIZE macro .The
-serialization uses axis2_xml_writer.h and axiom_output.h APIs.</p><p>Here is an example that shows how to write the output to the console, (We
+</p><p></p><p><a id="Serialization"></a></p></div><div class="subsection"><a name="Serialization"></a><h3>Serialization</h3><p>OM can be serialized using <code>AXIOM_NODE_SERIALIZE</code> macro .The
+serialization uses <code>axis2_xml_writer.h</code> and
+<code>axiom_output.h</code> APIs.</p><p></p><p>Here is an example that shows how to write the output to the console, (We
 serialize the SOAP envelope created in code listing 1).</p><div>
 <p><b>Code Listing 8</b></p>
 </div>
@@ -391,7 +420,8 @@
 printf("%s ", buffer);
 
 </pre></div>
-  <p>An easy way to serialize is to use the to_string function in om_element</p><p><b>Code Listing 9</b></p>
+  <p></p><p>An easy way to serialize is to use the <code>to_string</code> function in
+om_element</p><p></p><p><b>Code Listing 9</b></p>
     <div class="source"><pre>axis2_char_t *xml_output = NULL; 
 axiom_node_t *foo_node = NULL;
 axiom_element_t *foo_ele = NULL;
@@ -409,31 +439,42 @@
 AXIS2_FREE(env-&gt;allocator, xml_output);
 
 </pre></div>
-  <p>Note that freing the returned buffer is users responsibility</p><p></p><p><b>Using axis2_xml_reader and axis2_xml_writer</b></p><p>axis2_xml_reader provides three create functions that and can be used for
-different xml input sources.</p><p>axis2_xml_reader_create_for_file() functon can be used to read from a
-file.</p><p>axis2_xml_reader_create_for_io uses a user defined callback function to
-pull xml.</p><p>axis2_xml_reader_create_for_memory can be used to read from an xml string
-that is in a character buffer.</p><p>Similarly xml_writer provides two create functions,</p><p>axis2_xml_writer_create_for_file can be used to write to a file.</p><p>axis2_xml_writer_create_for_memory can be used to write to an internal
-memory buffer and obtain the xml string to a charcater buffer as</p><p>the output. Please refer to axis2_xml_reader.h and axis2_xml_writer.h for
-more information.</p><p><b>How to avoid memory leaks and double frees when using om</b></p><p>You have to be extremly carefull when using om in order to avoid memory
-leaks and double free errors. Following guide lines will be very useful.</p><p>1. om_element_t struct keeps a list of attributes and a list of
-namespaces, when a namespace pointer is added to this list , it will be freed
-when this om_element is freed, Therefore same pointer to a namespace or an
-attribute should not be passed twice to a create , add or set function.</p><p>To avoid the inconvenience, clone functions have been implemented for both
-axiom_namespace and axiom_attribute structures.</p><p>2. OM returns shallow references to its string values , Therefore when
-using the returned values , AXIS2_STRDUP () function should be used</p><p>if the returned value is going to be set to another struct to avoid double
-free errors.</p><p>Example:</p><p>axiom_namespace_t *ns = NULL;</p><p>axis2_char_t *uri = NULL;</p><p>ns = axiom_namespace_create(env, "http://ws.apache.org", "om");</p><p>uri = AXIOM_NAMESPACE_GET_URI(ns, env);</p><p>/** now uri points to the same place where namespace structs uri pointer
-is pointing */</p><p>Therefore following will cause a double free */</p><p>AXIS2_FREE(env-&gt;allocator, uri);</p><p>AXIOM_NAMESPACE_FREE(ns, env);</p><p>3. when creating om programatically , if you are declaring a namespace to
-an om elment it is advisible to find whether the namespace is already
-availble in the elements scope, using find_namespace function; if available,
+  <p></p><p>Note that freeing the returned buffer is user's responsibility.</p><p></p><p><a id="Reader_and_Writer"></a></p></div><div class="subsection"><a name="Using_axis2_xml_reader_and_axis2_xml_writer"></a><h3>Using axis2_xml_reader and axis2_xml_writer</h3><p><code>axis2_xml_reader</code> provides three create functions that and can
+be used for different xml input sources.</p><ul>
+  <li><code>axis2_xml_reader_create_for_file</code> functon can be used to
+    read from a file.</li>
+  <li><code>axis2_xml_reader_create_for_io</code> uses a user defined
+    callback function to pull xml.</li>
+  <li><code>axis2_xml_reader_create_for_memory</code> can be used to read
+    from an xml string that is in a character buffer.</li>
+</ul><p></p><p>Similarly <code>axis2_xml_writer</code> provides two create functions.</p><ul>
+  <li><code>axis2_xml_writer_create_for_file</code> can be used to write to a
+    file.</li>
+  <li><code>axis2_xml_writer_create_for_memory</code> can be used to write to
+    an internal memory buffer and obtain the xml string to a charcater buffer
+    as the output.</li>
+</ul><p></p><p>Please refer to <code>axis2_xml_reader.h</code> and
+<code>axis2_xml_writer.h</code> for more information.</p><p></p><p><a id="Mem_Leaks"></a></p></div><div class="subsection"><a name="How_to_avoid_memory_leaks_and_double_frees_when_using_OM"></a><h3>How to avoid memory leaks and double frees when using OM</h3><p>You have to be extremely carefull when using om in order to avoid memory
+leaks and double free errors. Following guidelines will be very useful.</p><p>1. <code>om_element_t</code> struct keeps a list of attributes and a list
+of namespaces, when a namespace pointer is added to this list , it will be
+freed when this om_element is freed, Therefore same pointer to a namespace or
+an attribute should not be passed twice to a <code>create</code> , add or
+<code>set</code> function.</p><p>To avoid the inconvenience, clone functions have been implemented for both
+axiom_namespace and axiom_attribute structures.</p><p></p><p>2. OM returns shallow references to its string values. Therefore when
+using the returned values, AXIS2_STRDUP () function should be used to avoid
+double free errors, if the returned value is going to be set to another
+struct.</p><p>Eg.:</p><p><code>axiom_namespace_t *ns = NULL;</code></p><p><code>axis2_char_t *uri = NULL;</code></p><p><code>ns = axiom_namespace_create(env, "http://ws.apache.org",
+"om");</code></p><p><code>uri = AXIOM_NAMESPACE_GET_URI(ns, env);</code></p><p><code>/** now uri points to the same place where namespace structs uri
+pointer is pointing */</code></p><p><code>Therefore following will cause a double free */</code></p><p><code>AXIS2_FREE(env-&gt;allocator, uri);</code></p><p><code>AXIOM_NAMESPACE_FREE(ns, env);</code></p><p></p><p>3. when creating om programatically , if you are declaring a namespace to
+an om elment, it is advisible to find whether the namespace is already
+availble in the elements scope using find_namespace function. If available,
 that pointer can be used instead of creating another namespace struct
-instance to prevent memory leaks.</p><p><b>Complete code for the OM based document building and
-serialization</b></p><p>The following code segment shows how to use the OM for completely building
+instance to prevent memory leaks.</p><p></p><p><a id="Complete_Sample"></a></p></div><div class="subsection"><a name="Complete_code_for_the_OM_based_document_building_and_serialization"></a><h3>Complete code for the OM based document building and serialization</h3><p>The following code segment shows how to use the OM for completely building
 a document and then serializing it into text pushing the output to the
 console.</p><div>
-<p><b>Code Listing 10</b></p>
-
 <p></p>
+
+<p><b>Code Listing 10</b></p>
 </div>
     <div class="source"><pre>#include &lt;axiom_node.h&gt;
 #include &lt;axis2.h&gt;



---------------------------------------------------------------------
To unsubscribe, e-mail: axis-cvs-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-cvs-help@ws.apache.org


Mime
View raw message