You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by sa...@apache.org on 2006/03/08 22:21:54 UTC

svn commit: r384332 [1/3] - in /webservices/axis2/site/c: ./ M0_5/ M0_5/images/ images/ images/logos/ style/

Author: sahan
Date: Wed Mar  8 13:21:44 2006
New Revision: 384332

URL: http://svn.apache.org/viewcvs?rev=384332&view=rev
Log:
Creating the web site initially

Added:
    webservices/axis2/site/c/M0_5/
    webservices/axis2/site/c/M0_5/architecture_notes.html
    webservices/axis2/site/c/M0_5/developerguide.html
    webservices/axis2/site/c/M0_5/images/
    webservices/axis2/site/c/M0_5/images/OM005.gif   (with props)
    webservices/axis2/site/c/M0_5/images/archi006.jpg   (with props)
    webservices/axis2/site/c/M0_5/images/arrow_left.gif   (with props)
    webservices/axis2/site/c/M0_5/images/arrow_right.gif   (with props)
    webservices/axis2/site/c/M0_5/images/binary_folder_structure.jpg   (with props)
    webservices/axis2/site/c/M0_5/images/folder_structure.jpg   (with props)
    webservices/axis2/site/c/M0_5/images/folder_structure_libxml2.jpg   (with props)
    webservices/axis2/site/c/M0_5/index.html
    webservices/axis2/site/c/M0_5/installationguide.html
    webservices/axis2/site/c/M0_5/om_tutorial.html
    webservices/axis2/site/c/M0_5/userguide.html
    webservices/axis2/site/c/M0_5/userguide1.html
    webservices/axis2/site/c/M0_5/userguide2.html
    webservices/axis2/site/c/M0_5/userguide3.html
    webservices/axis2/site/c/coding_conventions.html
    webservices/axis2/site/c/cvs-usage.html
    webservices/axis2/site/c/dependencies.html
    webservices/axis2/site/c/downloads.html
    webservices/axis2/site/c/images/
    webservices/axis2/site/c/images/add.gif   (with props)
    webservices/axis2/site/c/images/collapsed.gif   (with props)
    webservices/axis2/site/c/images/expanded.gif   (with props)
    webservices/axis2/site/c/images/external-classic.png   (with props)
    webservices/axis2/site/c/images/external.png   (with props)
    webservices/axis2/site/c/images/file.gif   (with props)
    webservices/axis2/site/c/images/fix.gif   (with props)
    webservices/axis2/site/c/images/folder-closed.gif   (with props)
    webservices/axis2/site/c/images/folder-open.gif   (with props)
    webservices/axis2/site/c/images/help_logo.gif   (with props)
    webservices/axis2/site/c/images/icon_alert.gif   (with props)
    webservices/axis2/site/c/images/icon_alertsml.gif   (with props)
    webservices/axis2/site/c/images/icon_arrowfolder1_sml.gif   (with props)
    webservices/axis2/site/c/images/icon_arrowfolder2_sml.gif   (with props)
    webservices/axis2/site/c/images/icon_arrowfolderclosed1_sml.gif   (with props)
    webservices/axis2/site/c/images/icon_arrowfolderopen2_sml.gif   (with props)
    webservices/axis2/site/c/images/icon_arrowmembers1_sml.gif   (with props)
    webservices/axis2/site/c/images/icon_arrowmembers2_sml.gif   (with props)
    webservices/axis2/site/c/images/icon_arrowusergroups1_sml.gif   (with props)
    webservices/axis2/site/c/images/icon_arrowusergroups2_sml.gif   (with props)
    webservices/axis2/site/c/images/icon_arrowwaste1_sml.gif   (with props)
    webservices/axis2/site/c/images/icon_arrowwaste2_sml.gif   (with props)
    webservices/axis2/site/c/images/icon_confirmsml.gif   (with props)
    webservices/axis2/site/c/images/icon_doc_lrg.gif   (with props)
    webservices/axis2/site/c/images/icon_doc_sml.gif   (with props)
    webservices/axis2/site/c/images/icon_error_lrg.gif   (with props)
    webservices/axis2/site/c/images/icon_error_sml.gif   (with props)
    webservices/axis2/site/c/images/icon_folder_lrg.gif   (with props)
    webservices/axis2/site/c/images/icon_folder_sml.gif   (with props)
    webservices/axis2/site/c/images/icon_help_lrg.gif   (with props)
    webservices/axis2/site/c/images/icon_help_sml.gif   (with props)
    webservices/axis2/site/c/images/icon_info_lrg.gif   (with props)
    webservices/axis2/site/c/images/icon_info_sml.gif   (with props)
    webservices/axis2/site/c/images/icon_infosml.gif   (with props)
    webservices/axis2/site/c/images/icon_members_lrg.gif   (with props)
    webservices/axis2/site/c/images/icon_members_sml.gif   (with props)
    webservices/axis2/site/c/images/icon_sortdown.gif   (with props)
    webservices/axis2/site/c/images/icon_sortleft.gif   (with props)
    webservices/axis2/site/c/images/icon_sortright.gif   (with props)
    webservices/axis2/site/c/images/icon_sortup.gif   (with props)
    webservices/axis2/site/c/images/icon_success_lrg.gif   (with props)
    webservices/axis2/site/c/images/icon_success_sml.gif   (with props)
    webservices/axis2/site/c/images/icon_usergroups_lrg.gif   (with props)
    webservices/axis2/site/c/images/icon_usergroups_sml.gif   (with props)
    webservices/axis2/site/c/images/icon_warning_lrg.gif   (with props)
    webservices/axis2/site/c/images/icon_warning_sml.gif   (with props)
    webservices/axis2/site/c/images/icon_waste_lrg.gif   (with props)
    webservices/axis2/site/c/images/icon_waste_sml.gif   (with props)
    webservices/axis2/site/c/images/logos/
    webservices/axis2/site/c/images/logos/maven-bolt.png   (with props)
    webservices/axis2/site/c/images/logos/maven-brewed.png   (with props)
    webservices/axis2/site/c/images/logos/maven-build-successfull.png   (with props)
    webservices/axis2/site/c/images/logos/maven-built.png   (with props)
    webservices/axis2/site/c/images/logos/maven-bulldozer.png   (with props)
    webservices/axis2/site/c/images/logos/maven-button-1.png   (with props)
    webservices/axis2/site/c/images/logos/maven-button-2.png   (with props)
    webservices/axis2/site/c/images/logos/maven-button-3.png   (with props)
    webservices/axis2/site/c/images/logos/maven-button-4.png   (with props)
    webservices/axis2/site/c/images/logos/maven-button-5.png   (with props)
    webservices/axis2/site/c/images/logos/maven-button-black.png   (with props)
    webservices/axis2/site/c/images/logos/maven-button-blue.png   (with props)
    webservices/axis2/site/c/images/logos/maven-button-copper.png   (with props)
    webservices/axis2/site/c/images/logos/maven-button-green.png   (with props)
    webservices/axis2/site/c/images/logos/maven-button-pinky.png   (with props)
    webservices/axis2/site/c/images/logos/maven-button-purple.png   (with props)
    webservices/axis2/site/c/images/logos/maven-button-teal.png   (with props)
    webservices/axis2/site/c/images/logos/maven-feather.png   (with props)
    webservices/axis2/site/c/images/logos/maven-frankenstein.png   (with props)
    webservices/axis2/site/c/images/logos/maven-mavenfactured.png   (with props)
    webservices/axis2/site/c/images/logos/maven-petesucks.png   (with props)
    webservices/axis2/site/c/images/logos/maven-propaganda-2.png   (with props)
    webservices/axis2/site/c/images/logos/maven-propaganda.png   (with props)
    webservices/axis2/site/c/images/logos/maven-redgreen.png   (with props)
    webservices/axis2/site/c/images/newwindow-classic.png   (with props)
    webservices/axis2/site/c/images/newwindow.png   (with props)
    webservices/axis2/site/c/images/none.png   (with props)
    webservices/axis2/site/c/images/nw_maj.gif   (with props)
    webservices/axis2/site/c/images/nw_maj_hi.gif   (with props)
    webservices/axis2/site/c/images/nw_maj_rond.gif   (with props)
    webservices/axis2/site/c/images/nw_med.gif   (with props)
    webservices/axis2/site/c/images/nw_med_hi.gif   (with props)
    webservices/axis2/site/c/images/nw_med_rond.gif   (with props)
    webservices/axis2/site/c/images/nw_min.gif   (with props)
    webservices/axis2/site/c/images/nw_min_036.gif   (with props)
    webservices/axis2/site/c/images/nw_min_hi.gif   (with props)
    webservices/axis2/site/c/images/pdf.gif   (with props)
    webservices/axis2/site/c/images/poweredby_036.gif   (with props)
    webservices/axis2/site/c/images/product_logo.gif   (with props)
    webservices/axis2/site/c/images/remove.gif   (with props)
    webservices/axis2/site/c/images/se_maj_rond.gif   (with props)
    webservices/axis2/site/c/images/strich.gif   (with props)
    webservices/axis2/site/c/images/sw_maj_rond.gif   (with props)
    webservices/axis2/site/c/images/sw_med_rond.gif   (with props)
    webservices/axis2/site/c/images/sw_min.gif   (with props)
    webservices/axis2/site/c/images/update.gif   (with props)
    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/maven_build_guide.html
    webservices/axis2/site/c/project-info.html
    webservices/axis2/site/c/style/
    webservices/axis2/site/c/style/maven-base.css
    webservices/axis2/site/c/style/maven-classic.css
    webservices/axis2/site/c/style/maven-theme.css
    webservices/axis2/site/c/style/print.css
    webservices/axis2/site/c/team-list.html

Added: webservices/axis2/site/c/M0_5/architecture_notes.html
URL: http://svn.apache.org/viewcvs/webservices/axis2/site/c/M0_5/architecture_notes.html?rev=384332&view=auto
==============================================================================
--- webservices/axis2/site/c/M0_5/architecture_notes.html (added)
+++ webservices/axis2/site/c/M0_5/architecture_notes.html Wed Mar  8 13:21:44 2006
@@ -0,0 +1,156 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html><head><title>Axis 2.0 - Architecture_notes.html</title><style type="text/css" media="all">
+          @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: 09 March 2006
+                  | Doc for M0.5</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 Axis2 C</a><ul><li class="none"><a href="http://www.apache.org/dyn/closer.cgi/ws/axis2/c/M0.5/" class="externalLink" title="External Link">M0.5 Release</a></li><li class="none"><a href="http://svn.apache.org/viewcvs.cgi/webservices/axis2/trunk/c/" class="externalLink" title="External Link">Source Code</a></li></ul></li><li class="expanded"><a href="../">Documentation</a><ul><li class="none"><a href="../M0_5/index.html">Milestone M0.5</a></li></ul></li><li class="expanded"><a href="../">Get Involved</a><ul><li class="none"><a href="../mail-lists.html">Mailing Lists</a></li></ul></li><li class="expanded"><a href="../">Project Information</a><ul><li class="none"><a href="http://issues.apache.org/ji
 ra/browse/AXIS2C" class="externalLink" title="External Link">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>
+  <li><a href="#Axis2_Environment">Axis2
+Environment</a></li>
+  <li><a href="#Dynamic_Loading">Dynamic Loading</a></li>
+  <li><a href="#Transport_Abstraction">Transport Abstraction</a></li>
+  <li><a href="#Stream_Abstraction">Stream Abstraction</a></li>
+  <li><a href="#Threading_Model">Threading Model</a></li>
+  <li><a href="#Parser_Abstraction">Parser Abstraction</a></li>
+</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
+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 the
+particular
+scenarios (eg: the thread specific environment). The Axis2 Environment
+holds
+following entities in order to abstract the platform.</p></div><div class="subsection"><a name="Axis2_Allocator"></a><h3>Axis2 Allocator</h3><p>Allocator is the wrapper for memory management mechanisms. It
+defines the
+following primitives.</p><ol>
+  <li><code>malloc</code>
+- method to allocate a memory block of given size</li>
+  <li><code> realloc</code>
+- method to change the size of the memory block</li>
+  <li><code> free</code>
+- method to free a memory block</li>
+</ol></div><div class="subsection"><a name="Axis2_Error"></a><h3>Axis2 Error</h3><p>Axis2 Error defines error reporting mechanisms for Axis2 library.
+All of
+the Axis2 internal functions use the <code>axis2_error</code> in the
+environment to report errors.
+</p></div><div class="subsection"><a name="Axis2_Log"></a><h3>Axis2 Log</h3><p>Axis2 Log defines the common logging mechanisms required for the
+Axis2
+library. All of the internal Axis2/C code uses the functions defined in
+the
+<code>axis2_log</code> available in the environment.</p></div><div class="subsection"><a name="Axis2_Thread_Pool"></a><h3>Axis2 Thread Pool</h3><p>Axis2 Thread Pool defines the thread management functions. It hides
+the
+complex thread pooling functions as well as the platform specific
+implementations of threads. Axis2 internal library uses this
+interface
+to manipulate threads and they deal with a common thread type which is
+defined
+as
+<code>axis2_thread.</code></p><p>Axis2 Environment is the starting point for the platform abstraction
+of
+Axis2/C. It can be used to plug platform specific memory management,
+error
+reporting, logging and thread pooling mechanisms to Axis2 core
+functions.</p><p><a name="Dynamic_Loading"></a></p></div><div class="subsection"><a name="Dynamic_Loading"></a><h3>Dynamic Loading</h3><p>Axis2 is a modular program where the user can add functionality by
+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 axis2.xml. 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
+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
+<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
+stream
+abstraction is required in order to integrate Axis2 in other
+environments
+seamlessly. The core components of Axis2 deal with this abstracted
+stream
+and does not worry about the implementation specific details. The
+creating
+point of the stream (eg: the transport receiver) knows what type of
+stream
+should
+be created (eg: socket, file, etc) and creates the appropriate
+stream.
+Thereafter, rest of the components are independent from the
+implementation
+details of the stream.</p><p>Also the stream serves as a main point in internationalization
+support. It
+can convert the the internal byte representation to a different type of
+encodings specified by the user. This can be achieved by plugging an
+encoding
+engine to the stream.</p><p><a name="Threading_Model"></a></p></div><div class="subsection"><a name="Threading_Model"></a><h3>Threading Model</h3><p>Axis2 core functions, such as hot deployment / update, asynchronous
+invocation, concurrent request processing in simple axis2 server,
+etc 
+heavily depends on threads. At the same time these threads should be
+platform
+independent inside the Axis2 core components. Another important
+requirement
+in threading model is the ability to pool the threads. This thread
+pooling
+mechanism should be Axis2 independent and Axis2 core components
+should
+be able to deal with the thread pooling mechanisms via a uniform
+interface.</p><p>So the above two aspects lead to two main requirements in the
+threading
+model:</p><ol>
+  <li>Ability to define a platform independent threading mechanism.</li>
+  <li>Ability to define an implementation independent thread pool.</li>
+</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
+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 XML parser needs to be plugged into Axis2, a wrapper that maps
+the
+reading/writing functions to the Axis2 XML reader/writer API should be
+written.</p></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>
\ No newline at end of file

Added: webservices/axis2/site/c/M0_5/developerguide.html
URL: http://svn.apache.org/viewcvs/webservices/axis2/site/c/M0_5/developerguide.html?rev=384332&view=auto
==============================================================================
--- webservices/axis2/site/c/M0_5/developerguide.html (added)
+++ webservices/axis2/site/c/M0_5/developerguide.html Wed Mar  8 13:21:44 2006
@@ -0,0 +1,282 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html><head><title>Axis 2.0 - Axis2/C Developer Guide</title><style type="text/css" media="all">
+          @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: 09 March 2006
+                  | Doc for M0.5</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 Axis2 C</a><ul><li class="none"><a href="http://www.apache.org/dyn/closer.cgi/ws/axis2/c/M0.5/" class="externalLink" title="External Link">M0.5 Release</a></li><li class="none"><a href="http://svn.apache.org/viewcvs.cgi/webservices/axis2/trunk/c/" class="externalLink" title="External Link">Source Code</a></li></ul></li><li class="expanded"><a href="../">Documentation</a><ul><li class="none"><a href="../M0_5/index.html">Milestone M0.5</a></li></ul></li><li class="expanded"><a href="../">Get Involved</a><ul><li class="none"><a href="../mail-lists.html">Mailing Lists</a></li></ul></li><li class="expanded"><a href="../">Project Information</a><ul><li class="none"><a href="http://issues.apache.org/ji
 ra/browse/AXIS2C" class="externalLink" title="External Link">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><div class="subsection"><a name="-Milestone_0_5_Release"></a><h3>-Milestone 0.5 Release</h3><p>Send your feedback to mailing list: <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 mailing lists
+see <a href="../mail-lists.html">here</a></p></div><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 quickly.</p><ul>
+  <li><a href="#Programming_Model">Programming model</a></li>
+  <li><a href="#Memory_Management">Memory management</a></li>
+  <li><a href="#Coding_Conventions">Coding conventions</a></li>
+  <li><a href="#Unit_and_System_Tests">Unit and System tests</a></li>
+</ul><p><a name="Programming_Model"></a></p></div><div class="subsection"><a name="Programming_Model"></a><h3>Programming Model</h3><p>Axis2 programming model follows a clean approach to hide data and
+group functions together. The following example illustrates how Axis2/C
+achieves this.<br></br>
+Operations are bundled into an operation struct and macros are provided
+to access the functions in this struct. Actual function pointers are
+assigned in the implementation file. </p><p>Here's a sample header file.</p><br></br><strong>/* axis2_ foo.h */</strong>
+    <div class="source"><pre> 
+typedef struct axis2_foo_ops axis2_foo_ops_t;
+typedef struct axis2_foo axis2_foo_t;
+
+struct axis2_foo_ops
+{
+    void (AXIS2_CALL *bar)(void *data);
+    axis2_status_t (AXIS2_CALL *free)(axis2_env_t **env, axis2_foo_t *foo);
+};
+
+struct axis2_foo
+{
+    axis2_foo_ops_t *ops;
+}
+
+/* Macros are provided to access functions defined in the ops (operations structure)*/
+
+#define AXIS2_FOO_BAR(foo, data)\ 
+            ((foo)-&gt;ops-&gt;bar(data))
+#define AXIS2_FOO_FREE(foo, env)\
+            ((for)-&gt;ops-&gt;free(env, foo))
+
+</pre></div>
+  <p>The implementation file for the above header is shown below.<br></br>
+</p>
+    <div class="source"><pre>
+#include &lt;axis2_foo.h&gt;
+
+typedef struct axis2_foo_impl axis2_foo_impl_t;
+
+struct axis2_foo_impl
+{
+    axis2_foo_t foo;
+    my_type my_data; /*private data*/
+};
+
+/* Function Headers */
+
+void AXIS2_CALL axis2_foo_bar(void *data);
+axis2_status_t AXIS2_CALL axis2_foo_free(axis2_env_t **env, axis2_foo_t *foo);
+
+/* Function Implementation */
+axis2_foo_t * AXIS2_CALL axis2_foo_create(axis2_env_t **env)
+{
+    axis2_foo_impl_t * foo_impl = NULL;
+    /* create axis2_foo_t and initialize private data */
+
+    /* create ops structure of foo */
+
+    /* bind ops to functions */
+    foo_impl-&gt;foo.ops-&gt;bar = axis2_foo_bar;
+    foo_impl-&gt;foo.ops-&gt;free = axis2_foo_free;
+    return &amp;(foo_impl-&gt;foo);
+}
+
+void AXIS2_CALL axis2_foo_bar(void *data)
+{
+}
+
+axis2_status_t AXIS2_CALL axis2_foo_free(axis2_env_t **env, axis2_foo_t *foo)
+{
+    /* do the dirty work of cleaning the allocated memory */
+}
+
+</pre></div>
+  <p><a name="Memory_Management"></a></p></div><div class="subsection"><a name="Memory_Management"></a><h3>Memory Management</h3><p>We need to look into two senarios of memory management: services and
+clients development. You need to be aware of the parts of the memory
+you have allocated to deallocate in order to avoid memory leaks and
+segmentation faults.</p></div><div class="subsection"><a name="Memory_management_guidelines_for_developing_services"></a><h3>Memory management guidelines for developing services</h3><p>To understand, how the allocated memory is reclaimed, it is worth
+looking at the service skeleton interface which is defined in <strong>
+axis2_svc_skeleton.h</strong></p>
+    <div class="source"><pre>
+AXIS2_DECLARE_DATA struct axis2_svc_skeleton_ops
+{
+
+    int (AXIS2_CALL * free)(axis2_svc_skeleton_t *svc_skeli, axis2_env_t **env);
+
+    ...
+};
+
+AXIS2_DECLARE_DATA struct axis2_svc_skeleton
+{
+    axis2_svc_skeleton_ops_t *ops;
+    axis2_array_list_t *func_array;
+};
+
+
+</pre></div>
+  <p>The service skeleton implementation should implement the free
+function and attach that to the operations struct of
+axis2_svc_skeleton_t struct. This free function is called each time
+after serving a web services request. <br></br>
+</p><p>
+Let's try to understand this through an example.<br></br>
+<br></br>
+Example: <b> Service skeleton implementation for math service. </b> <br></br>
+The following code shows the implementation of math_free function which
+is to be attached to the ops of axis2_svc_skeleton_t struct. Usually
+the memory allocated for operations struct, function array and service
+skeleton struct are cleaned in this. You may clean additional memory
+here if you have allocated any specific memory block in math_create
+function.<br></br>
+</p>
+    <div class="source"><pre>
+int AXIS2_CALL math_free(axis2_svc_skeleton_t *svc_skeleton, axis2_env_t **env)
+{
+    if(svc_skeleton-&gt;ops)
+    {
+        AXIS2_FREE((*env)-&gt;allocator, svc_skeleton-&gt;ops);
+        svc_skeleton-&gt;ops = NULL;
+    }
+    if(svc_skeleton-&gt;func_array)
+    {
+        AXIS2_ARRAY_LIST_FREE(svc_skeleton-&gt;func_array, env);
+        svc_skeleton-&gt;func_array = NULL;
+    }
+
+    if(svc_skeleton)
+    {
+        AXIS2_FREE((*env)-&gt;allocator, svc_skeleton);
+        svc_skeleton = NULL;
+    }
+    return AXIS2_SUCCESS;
+}
+
+</pre></div>
+  <br></br><p>In the axis2_math_create function you assign the function pointer of
+math_free function to the free function of the operations struct. As
+you can see, now the SOAP engine has a function reference to perform
+garbage collection after each service request.</p>
+    <div class="source"><pre>
+AXIS2_DECLARE(axis2_svc_skeleton_t *) axis2_math_create(axis2_env_t **env)
+{
+    axis2_svc_skeleton_t *svc_skeleton = NULL;
+    svc_skeleton = AXIS2_MALLOC((*env)-&gt;allocator, sizeof(axis2_svc_skeleton_t));
+
+    svc_skeleton-&gt;ops = AXIS2_MALLOC((*env)-&gt;allocator, sizeof(axis2_svc_skeleton_ops_t));
+
+
+    svc_skeleton-&gt;ops-&gt;free = math_free;
+    ...
+    return svc_skeleton;
+}
+
+</pre></div>
+  <p>SOAP engine reclaims the memory allocated for the axis2_om_node_t
+structure to create the response SOAP message.
+However, it is the responsibility of the service developer to clean any
+additional memory allocated.</p></div><div class="subsection"><a name="Memory_management_guidelines_for_developing_clients"></a><h3>Memory management guidelines for developing clients</h3><p>
+Most of the memory allocated in the client side (including SOAP request
+and reply messges), should be cleaned in the client side itself. Memory
+allocated for properties are taken care of by the SOAP engine. SOAP
+engine reclaims the memory allocated for properties based on the scope
+(Request, Session or Application) you set for each property.
+<a name="Coding_Conventions"></a></p></div><div class="subsection"><a name="Coding_Conventions"></a><h3>Coding Conventions</h3><p>Coding conventions used with the Axis2 project is listed in <a href="../coding_conventions.html">this</a> document.</p><p><a name="Unit_and_System_Tests"></a></p></div><div class="subsection"><a name="Unit_and_System_Tests"></a><h3>Unit and System Tests</h3></div><div class="subsection"><a name="Unit_Tests"></a><h3>Unit Tests</h3><p>You need to follow two steps to write a unit test for a module.</p><p>
+1. Add the unit test to the module's test suite.</p><br></br><p>
+2. Add the modules test suite to the main unit test suite.</p><br></br><p>CuTest (opensource) library is used to write unit test. The
+following
+section illustrates the two steps.</p></div><div class="subsection"><a name="Step1:_Adding_a_unit_test_to_a_module_s_unit_test_suite"></a><h3>Step1: Adding a unit test to a module's unit test suite</h3><p>This section illustrates how to add a test case to the util module.
+Let's
+take for example the unit tests for axis2 stream. There are two files
+named
+util_stream_test.c/.h placed into modules/util/test folder. Here's a
+sample
+code written to test the operation axis2_stream_ops_read.</p>
+    <div class="source"><pre>
+#include "util_stream_test.h"
+
+void Testaxis2_stream_ops_read(CuTest *tc)
+{
+    char actual[10];
+    axis2_allocator_t *allocator = axis2_allocator_init(NULL);
+    axis2_env_t *env = axis2_environment_create(allocator,NULL, NULL, NULL, NULL);
+    axis2_stream_read(env-&gt;stream, actual, 10);
+    char *expected = strdup("aaaaaaaaa");
+    CuAssertStrEquals(tc, expected, actual);
+}
+
+
+</pre></div>
+  <p>The prototype of the funciton should be added to the header file.
+The test suite is defined in util_test.c. You need to add the above
+defined test case to the test suite as shown below.</p>
+    <div class="source"><pre>
+#include "util_test.h"
+#include &lt;axis2_allocator.h&gt;
+#include &lt;axis2_environment.h&gt;
+
+CuSuite* axis2_utilGetSuite()
+{
+    CuSuite* suite = CuSuiteNew();
+
+    SUITE_ADD_TEST(suite, Testaxis2_stream_ops_write);
+    SUITE_ADD_TEST(suite, Testaxis2_log_ops_write);
+    SUITE_ADD_TEST(suite, Testaxis2_hash_ops_get);
+    return suite;
+}
+
+</pre></div>
+  </div><div class="subsection"><a name="Step2:_Adding_the_Module_test_suite_to_the_Main_Unit_Test_Suite"></a><h3>Step2: Adding the Module test suite to the Main Unit Test Suite</h3><p>Now you need to add the Util module test suite to the main test
+suite.</p>
+    <div class="source"><pre>
+#include &lt;CuTest.h&gt;
+#include "../../util/test/util_test.h"
+#include "../../common/test/common_test.h"
+
+void RunAllTests(void)
+{
+    CuString *output = CuStringNew();
+    CuSuite* suite = CuSuiteNew();
+
+    CuSuiteAddSuite(suite, axis2_utilGetSuite());
+    CuSuiteAddSuite(suite, axis2_commonGetSuite());
+    CuSuiteRun(suite);
+    CuSuiteSummary(suite, output);
+    CuSuiteDetails(suite, output);
+    printf("%s\n", output-&gt;buffer);
+}
+
+int main(void)
+{   
+    RunAllTests();
+    return 0;
+}
+
+
+</pre></div>
+  <p>You can either run only the unit tests written for the util module
+or run all the tests.</p></div><div class="subsection"><a name="System_Tests"></a><h3>System Tests</h3><p>For each module, system tests should be provided in
+modules/test/&lt;module folder&gt;. For each system test you need to
+add a
+new function and call it from the main method.</p><p>Example:</p><p>To test the OM module, you need to create a file named test_om.c
+under the
+directory modules/test/om. A sample test_om.c might look like as
+follows.</p>
+    <div class="source"><pre>
+#include &lt;axis2_stax_ombuilder.h&gt;
+#include &lt;axis2_om_document.h&gt;
+#include &lt;axis2_om_node.h&gt;
+#include &lt;axis2_om_element.h&gt;
+#include &lt;axis2_om_text.h&gt;
+#include &lt;apr.h&gt;
+
+int test_om_build()
+{
+    READER *red = NULL;
+    XML_PullParser *parser = NULL;
+    axis2_om_element_t *ele1=NULL,*ele2=NULL,*ele3 = NULL,*ele4 = NULL;
+    axis2_stax_om_builder_t *builder = NULL;axis2_om_document_t *document = NULL;
+    axis2_om_node_t *node1 = NULL ,*node2 = NULL ,*node3 = NULL;
+    ...
+}
+
+int main(void)
+{
+    test_om_build();
+    test_om_serialize();
+}
+
+
+
+</pre></div>
+  </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>
\ No newline at end of file

Added: webservices/axis2/site/c/M0_5/images/OM005.gif
URL: http://svn.apache.org/viewcvs/webservices/axis2/site/c/M0_5/images/OM005.gif?rev=384332&view=auto
==============================================================================
Binary file - no diff available.

Propchange: webservices/axis2/site/c/M0_5/images/OM005.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: webservices/axis2/site/c/M0_5/images/archi006.jpg
URL: http://svn.apache.org/viewcvs/webservices/axis2/site/c/M0_5/images/archi006.jpg?rev=384332&view=auto
==============================================================================
Binary file - no diff available.

Propchange: webservices/axis2/site/c/M0_5/images/archi006.jpg
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: webservices/axis2/site/c/M0_5/images/arrow_left.gif
URL: http://svn.apache.org/viewcvs/webservices/axis2/site/c/M0_5/images/arrow_left.gif?rev=384332&view=auto
==============================================================================
Binary file - no diff available.

Propchange: webservices/axis2/site/c/M0_5/images/arrow_left.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: webservices/axis2/site/c/M0_5/images/arrow_right.gif
URL: http://svn.apache.org/viewcvs/webservices/axis2/site/c/M0_5/images/arrow_right.gif?rev=384332&view=auto
==============================================================================
Binary file - no diff available.

Propchange: webservices/axis2/site/c/M0_5/images/arrow_right.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: webservices/axis2/site/c/M0_5/images/binary_folder_structure.jpg
URL: http://svn.apache.org/viewcvs/webservices/axis2/site/c/M0_5/images/binary_folder_structure.jpg?rev=384332&view=auto
==============================================================================
Binary file - no diff available.

Propchange: webservices/axis2/site/c/M0_5/images/binary_folder_structure.jpg
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: webservices/axis2/site/c/M0_5/images/folder_structure.jpg
URL: http://svn.apache.org/viewcvs/webservices/axis2/site/c/M0_5/images/folder_structure.jpg?rev=384332&view=auto
==============================================================================
Binary file - no diff available.

Propchange: webservices/axis2/site/c/M0_5/images/folder_structure.jpg
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: webservices/axis2/site/c/M0_5/images/folder_structure_libxml2.jpg
URL: http://svn.apache.org/viewcvs/webservices/axis2/site/c/M0_5/images/folder_structure_libxml2.jpg?rev=384332&view=auto
==============================================================================
Binary file - no diff available.

Propchange: webservices/axis2/site/c/M0_5/images/folder_structure_libxml2.jpg
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: webservices/axis2/site/c/M0_5/index.html
URL: http://svn.apache.org/viewcvs/webservices/axis2/site/c/M0_5/index.html?rev=384332&view=auto
==============================================================================
--- webservices/axis2/site/c/M0_5/index.html (added)
+++ webservices/axis2/site/c/M0_5/index.html Wed Mar  8 13:21:44 2006
@@ -0,0 +1,19 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html><head><title>Axis 2.0 - Axis2/C M0.5 Documentation</title><style type="text/css" media="all">
+          @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: 09 March 2006
+                  | Doc for M0.5</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 Axis2 C</a><ul><li class="none"><a href="http://www.apache.org/dyn/closer.cgi/ws/axis2/c/M0.5/" class="externalLink" title="External Link">M0.5 Release</a></li><li class="none"><a href="http://svn.apache.org/viewcvs.cgi/webservices/axis2/trunk/c/" class="externalLink" title="External Link">Source Code</a></li></ul></li><li class="expanded"><a href="../">Documentation</a><ul><li class="none"><a href="../M0_5/index.html">Milestone M0.5</a></li></ul></li><li class="expanded"><a href="../">Get Involved</a><ul><li class="none"><a href="../mail-lists.html">Mailing Lists</a></li></ul></li><li class="expanded"><a href="../">Project Information</a><ul><li class="none"><a href="http://issues.apache.org/ji
 ra/browse/AXIS2C" class="externalLink" title="External Link">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_Milestone_0_5_Release_Documentation"></a><h2>Axis2/C Milestone 0.5 Release 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>
+</ul><p>
+
+</p></div><div class="subsection"><a name="Additional_References"></a><h3>Additional References</h3><ul>
+  <li><a href="http://ws.apache.org/axis2/0_93/Axis2ArchitectureGuide.html" class="externalLink" title="External Link">
+Architecture Guide</a></li>
+  <li><a href="architecture_notes.html">C Specific Architecture Notes</a></li>
+  <li><a href="om_tutorial.html">OM Tutorial</a></li>
+  <li><a href="../coding_conventions.html">Coding Conventions in Axis2/C</a></li>
+</ul><p>
+</p></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>
\ No newline at end of file

Added: webservices/axis2/site/c/M0_5/installationguide.html
URL: http://svn.apache.org/viewcvs/webservices/axis2/site/c/M0_5/installationguide.html?rev=384332&view=auto
==============================================================================
--- webservices/axis2/site/c/M0_5/installationguide.html (added)
+++ webservices/axis2/site/c/M0_5/installationguide.html Wed Mar  8 13:21:44 2006
@@ -0,0 +1,287 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html><head><title>Axis 2.0 - Axis2-C Installation Guide</title><style type="text/css" media="all">
+          @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: 09 March 2006
+                  | Doc for M0.5</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 Axis2 C</a><ul><li class="none"><a href="http://www.apache.org/dyn/closer.cgi/ws/axis2/c/M0.5/" class="externalLink" title="External Link">M0.5 Release</a></li><li class="none"><a href="http://svn.apache.org/viewcvs.cgi/webservices/axis2/trunk/c/" class="externalLink" title="External Link">Source Code</a></li></ul></li><li class="expanded"><a href="../">Documentation</a><ul><li class="none"><a href="../M0_5/index.html">Milestone M0.5</a></li></ul></li><li class="expanded"><a href="../">Get Involved</a><ul><li class="none"><a href="../mail-lists.html">Mailing Lists</a></li></ul></li><li class="expanded"><a href="../">Project Information</a><ul><li class="none"><a href="http://issues.apache.org/ji
 ra/browse/AXIS2C" class="externalLink" title="External Link">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><div class="subsection"><a name="-Milestone_Release_0_5"></a><h3>-Milestone Release 0.5</h3><p>This document will give you in step by step instructions on how to install
+Axis2/C, run the server &amp; web service client samples on Linux &amp; MS
+Windows operating systems.</p><p>This release comes in two forms, source and binary. Instructions are given
+below to install in both methods.</p><p>Hope you would enjoy this first working version of Axis2/C SOAP engine.</p><p>Send your feedback to mailing list: <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 mailing lists
+see <a href="../mail-lists.html">here</a></p></div><div class="subsection"><a name="Contents"></a><h3>Contents</h3><ul>
+  <li><a href="#linux">Installing and running on Linux</a>
+    <ul>
+      <li><a href="#linux_binary">Using binary release</a></li>
+      <li><a href="#linux_source">Using source release</a></li>
+    </ul>
+  </li>
+  <li><a href="#win">Installing and running on MS Windows (win32)</a>
+    <ul>
+      <li><a href="#win_binary">Using the binary release</a>
+        <ul>
+          <li><a href="#bin_req">Requirements</a></li>
+          <li><a href="#bin_binaries">Binaries in the release</a></li>
+          <li><a href="#bin_run">Running the binaries</a></li>
+        </ul>
+      </li>
+      <li><a href="#win_source">Using the source release</a>
+        <ul>
+          <li><a href="#src_req">Requirements</a></li>
+          <li><a href="#edit">Editing Configure.in file</a></li>
+          <li><a href="#src_compile">Compiling the source</a></li>
+          <li><a href="#src_run">Running the binaries</a></li>
+        </ul>
+      </li>
+    </ul>
+  </li>
+</ul><p><a name="linux"></a></p></div><div class="subsection"><a name="Installing_and_running_on_Linux"></a><h3>Installing and running on Linux</h3><p>This can be done using binary or source distributions</p><p>To get both the binary and source distributions, you need libxml2 from <a href="http://xmlsoft.org/downloads.html" class="newWindow" title="New Window" target="_blank">here</a>.</p><p>(NOTE: most Linux systems has libxml2 by default.)</p><p><a name="linux_binary"></a></p></div><div class="subsection"><a name="1__Using_binary_release"></a><h3>1. Using binary release</h3><p>The following steps need to be taken to install and run Axis2/C using
+binary distribution on Linux</p></div><div class="subsection"><a name="1__Extract_the_binary_tar_package_to_a_folder_"></a><h3>1. Extract the binary tar package to a folder.</h3><ul>
+  <li>Set AXIS2C_HOME environment variable pointing to the location where you
+    have extracted Axis2C</li>
+  <li>AXIS2C_HOME='/your_path_to_axis2c'</li>
+  <li>export AXIS2C_HOME</li>
+</ul></div><div class="subsection"><a name="2__Run_the_simple_axis_server:"></a><h3>2. Run the simple axis server:</h3><ul>
+  <li>To start the simple axis server on port 9090, run the following command
+    lines.
+    <ul>
+      <li>cd /your_path_to_axis2c/bin</li>
+      <li>./axis2_http_server</li>
+    </ul>
+  </li>
+  <li>To see the possible command line options run ./axis2_http_server -h</li>
+  <li>NOTE: If you run into shared lib problems,
+    <ul>
+      <li>set the LD_LIBRARY_PATH</li>
+      <li>export
+      LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/your_path_to_axis2c/lib</li>
+    </ul>
+  </li>
+</ul></div><div class="subsection"><a name="3__Run_the_sample_clients_in_a_new_shell"></a><h3>3. Run the sample clients in a new shell</h3><ul>
+  <li>cd /your_path_to_axis2c/bin/samples</li>
+  <li>./echo will invoke the echo service.</li>
+  <li>./math will invoke the math service.</li>
+  <li>To see the possible command line options for sample clients run them
+    with '-h' option</li>
+  <li>NOTE: If you run into shared lib problems,
+    <ul>
+      <li>set the LD_LIBRARY_PATH</li>
+      <li>export
+      LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/your_path_to_axis2c/lib</li>
+    </ul>
+  </li>
+</ul><p><a name="linux_source"></a></p></div><div class="subsection"><a name="2__Using_source_release"></a><h3>2. Using source release</h3><p>The following steps need to be taken to install and run Axis2/C using
+source distribution on Linux</p><ol>
+  <li>Extract the source tar package to a folder.</li>
+  <li>Set AXIS2C_HOME environment variable pointing to the location where you
+    want to install Axis2C.
+    <ul>
+      <li>AXIS2C_HOME='/your_desired_path_to_axis2c_installation'</li>
+      <li>export AXIS2C_HOME</li>
+    </ul>
+  </li>
+  <li>Then go to the folder where you extracted the source
+    <ul>
+      <li>cd /your_path_to_axis2c_source</li>
+    </ul>
+  </li>
+  <li>Set parser location
+    <ul>
+      <li>You need to set the following two environment variables to point to
+        libxml2.
+        <ul>
+          <li>LIBXML2_INCLUDE</li>
+          <li>LIBXML2_LIB</li>
+        </ul>
+      </li>
+      <li>If you are using the default installation of libxml2, usually those
+        are,
+        <ul>
+          <li>LIBXML2_LIB=/usr/lib</li>
+          <li>LIBXML2_INCLUDE=/usr/include/libxml2</li>
+        </ul>
+      </li>
+    </ul>
+  </li>
+  <li>Build the source
+    <ul>
+      <li>This can be done using the following command sequence:
+        <ul>
+          <li>./configure</li>
+          <li>make</li>
+          <li>make install</li>
+        </ul>
+      </li>
+      <li>use './configure --help' for possible command line options.</li>
+      <li>NOTE: you may wish to use './configure --prefix=$AXIS2C_HOME' to
+        ensure AXIS2C_HOME and install folder are the same</li>
+      <li>If you need to get the samples working, you also need to give the
+        configure option --enable-samples=yes</li>
+    </ul>
+  </li>
+  <li>Go to AXIS2C_HOME by running cd $AXIS2C_HOME</li>
+  <li>Start simple axis server
+    <ul>
+      <li>To start the simple axis server on port 9090 run the following
+        command lines
+        <ul>
+          <li>cd $AXIS2C_HOME/bin</li>
+          <li>./axis2_http_server</li>
+        </ul>
+      </li>
+      <li>To see the possible command line options run ./axis2_http_server
+      -h</li>
+    </ul>
+  </li>
+  <li>Run the sample clients in a new shell using the following command lines
+    <ul>
+      <li>cd $AXIS2C_HOME/bin/samples</li>
+      <li>./echo will invoke the echo service.</li>
+      <li>./math will invoke the math service.</li>
+      <li>To see the possible command line options for sample clients run
+        them with '-h' option</li>
+    </ul>
+  </li>
+</ol><p><a name="win"></a></p></div><div class="subsection"><a name="Installing_and_running_on_MS_Windows__win32_"></a><h3>Installing and running on MS Windows (win32)</h3><p>This too can be done using binary or source distributions</p><p>To get both the binary and source distribution, you need libxml2 from <a href="http://xmlsoft.org/downloads.html" class="externalLink" title="External Link">here</a>.</p><p>(NOTE: most Linux systems has libxml2 by default. On Windows you need to
+download and install libxml2)</p><p><a name="win_binary"></a></p></div><div class="subsection"><a name="1__Using_binary_release"></a><h3>1. Using binary release</h3><p><a name="bin_req"></a></p></div><div class="subsection"><a name="Requirements"></a><h3>Requirements</h3><ul>
+  <li>The binaries shipped with this version is compiled with Microsoft
+    visual studio compiler (cl)</li>
+
+  <p>(Note: you can download microsoft VSExpress2005 edition from microsoft
+  web site and install it to run these binaries)</p>
+  <li>You also need the following dlls
+    <ul>
+      <li>libxml2.dll [http://www.xmlsoft.org - download the version &gt;=
+        libxml2-2.6.20.win32]</li>
+      <li>iconv.dll [http://www.xmlsoft.org - download the version &gt;=
+        iconv-1.9.1.win32]</li>
+      <li>zlib1.dll [http://www.xmlsoft.org - download the version &gt;=
+        zlib-1.2.3.win32]</li>
+    </ul>
+  </li>
+</ul><p><a name="bin_binaries"></a></p></div><div class="subsection"><a name="Binaries_in_the_release"></a><h3>Binaries in the release</h3><ul>
+  <li>Extract the binary distribution to a folder of your choice. (example:
+    C:\axis2c)</li>
+  <li>The C:\axis2c folder structure is as follows:</li>
+
+  <p><img alt="Figure: c:\axis2c Folder Structure" src="images/binary_folder_structure.jpg"></img></p>
+
+  <p><em>The above folders contain the following files:</em></p>
+  <ul>
+    <li>bin - server and other executables</li>
+    <li>samples - samples go here</li>
+    <li>lib - library modules</li>
+    <li>services - deployed services</li>
+    <li>modules - deployed modules</li>
+    <li>include - all include files of axis2</li>
+    <li>logs - system and client logs are written to this folder</li>
+  </ul>
+  <li>Copy libxml2.dll, iconv.dll and zlib1.dll downloaded to
+  C:\axis2c\lib</li>
+</ul><p><a name="bin_run"></a></p></div><div class="subsection"><a name="Running_the_binaries"></a><h3>Running the binaries</h3><ul>
+  <li>First you need to set couple of environment variables before you can
+    run the server and samples.
+    <ul>
+      <li>Set the varibale AXIS2C_HOME to the deploy folder (C:\axis2c)</li>
+      <li>Add the path to lib directory to PATH variable
+      (%AXIS2C_HOME%\lib)</li>
+    </ul>
+  </li>
+  <li>Now everything is set to run the server
+    C:\axis2c\bin&gt;axis2_http_server.exe</li>
+  <li>If the server is running successfully you should see the message
+    "Started Simple Axis2 HTTP Server..."</li>
+  <li>The log is by default created under %AXIS2C_HOME%\logs folder with the
+    name axis2.log.</li>
+  <li>(Note: you may provide command line options to change the default
+    behaviour. Type "axis2_http_server.exe -h" to learn about the usage)</li>
+  <li>Now you can run any sample client deployed under
+    %AXIS2C_HOME%\bin\samples\
+    <ul>
+      <li>Example: C:\axis2c\bin\samples&gt;echo.exe</li>
+    </ul>
+  </li>
+</ul><p><a name="win_source"></a></p></div><div class="subsection"><a name="2__Using_the_source_release_"></a><h3>2. Using the source release.</h3><p><a name="src_req"></a></p></div><div class="subsection"><a name="Requirements"></a><h3>Requirements</h3><ul>
+  <li>The makefile shipped with this version needs Microsoft visual studio
+    compiler (cl) and nmake build tool</li>
+
+  <p>(Note: you can download microsoft VSExpress2005 edition and Platform SDK
+  from microsoft web site. You will need to add the path to Platform SDK
+  Include and Lib folders to makefile)</p>
+  <li>You also need
+    <ul>
+      <li>libxml2 [http://www.xmlsoft.org - download the version &gt;=
+        libxml2-2.6.20.win32]</li>
+      <li>iconv [http://www.xmlsoft.org - download the version &gt;=
+        iconv-1.9.1.win32]</li>
+      <li>zlib [http://www.xmlsoft.org - download the version &gt;=
+        zlib-1.2.3.win32]</li>
+    </ul>
+  </li>
+</ul><p><a name="edit"></a></p></div><div class="subsection"><a name="Editing_configure_in_file"></a><h3>Editing configure.in file</h3><ul>
+  <li>The default places for libxml2 and iconv are speceficed in configure.in.
+    <ul>
+      <li>Example:Default location for libxml2 is C:\libxml2</li>
+    </ul>
+  </li>
+  <li>You can either extract libxml2 to this folder, in which case folder
+    structure for C:\libxml2 should look like the following.</li>
+
+  <p><img alt="Figure: C:\libxml2 Folder Structure" src="images/folder_structure_libxml2.jpg"></img></p>
+
+  <p>Or extract to whatever place of your choice and edit the configure.in
+  accordingly.</p>
+  <li>You need to have zlib1.dll in a library path. You may copy this dll to
+    libxml2/lib.</li>
+</ul><p><a name="src_compile"></a></p></div><div class="subsection"><a name="Compiling_the_source_"></a><h3>Compiling the source.</h3><p>The following steps and command lines will take you through the source
+compilation</p><ul>
+  <li>Extract the source distribution to a folder of your choice. (Example:
+    C:\axis2c)</li>
+  <li>Open a DOS shell</li>
+  <li>cd C:\axis2c\build\win32</li>
+  <li>C:\axis2c\build\win32&gt;vcvars32.bat to access .Net tools
+    <p>(Note: You may need to set the environment PATH variable to
+    vcvars32.bat if windows complaints that it cannot find this bat)</p>
+  </li>
+  <li>C:\axis2c\build\win32&gt;nmake install will build the system and create
+    a directory named deploy under build directory.</li>
+  <li>The deploy folder structure is as follows:</li>
+
+  <p><img alt="Figure: deploy Folder Structure" src="images/folder_structure.jpg"></img></p>
+
+  <p><em>The above folders contain the following files:</em></p>
+  <ul>
+    <li>bin - server and other executables</li>
+    <li>samples - samples</li>
+    <li>lib - library modules</li>
+    <li>services - deployed services</li>
+    <li>modules - deployed modules</li>
+    <li>include - all include files of axis2</li>
+    <li>logs - system and client logs are written to this folder</li>
+  </ul>
+</ul><p><a name="src_run"></a></p></div><div class="subsection"><a name="Running_the_binaries"></a><h3>Running the binaries</h3><ul>
+  <li>You need to set couple of environment variables before you can run the
+    server and samples.
+    <ul>
+      <li>Set the variable AXIS2C_HOME to the deploy folder
+        (C:\axis2c\build\deploy)</li>
+      <li>Add the path to lib directory to PATH variable
+      (%AXIS2C_HOME%\lib)</li>
+      <li>Copy libxml2.dll, iconv.dll and zlib1.dll to axis2c lib folder
+        (%AXIS2C_HOME%\lib)</li>
+    </ul>
+  </li>
+  <li>Now run the server -
+  C:\axis2c\build\deploy\bin&gt;axis2_http_server.exe</li>
+  <li>If server is running successfully you should see the message "Started
+    Simple Axis2 HTTP Server..."</li>
+  <li>The log is by default created under %AXIS2C_HOME%\logs folder with the
+    name axis2.log.</li>
+  <li>(Note: you may provide command line options to change the default
+    behaviour. Type "axis2_http_server.exe -h" to learn about the usage)</li>
+  <li>Now you can run any sample client deployed under
+    %AXIS2C_HOME%\bin\samples\
+    <ul>
+      <li>Example: C:\axis2c\build\deploy\bin\samples&gt;echo.exe</li>
+    </ul>
+  </li>
+</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>
\ No newline at end of file

Added: webservices/axis2/site/c/M0_5/om_tutorial.html
URL: http://svn.apache.org/viewcvs/webservices/axis2/site/c/M0_5/om_tutorial.html?rev=384332&view=auto
==============================================================================
--- webservices/axis2/site/c/M0_5/om_tutorial.html (added)
+++ webservices/axis2/site/c/M0_5/om_tutorial.html Wed Mar  8 13:21:44 2006
@@ -0,0 +1,442 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html><head><title>Axis 2.0 - Axis2/C OM Tutorial</title><style type="text/css" media="all">
+          @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: 09 March 2006
+                  | Doc for M0.5</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 Axis2 C</a><ul><li class="none"><a href="http://www.apache.org/dyn/closer.cgi/ws/axis2/c/M0.5/" class="externalLink" title="External Link">M0.5 Release</a></li><li class="none"><a href="http://svn.apache.org/viewcvs.cgi/webservices/axis2/trunk/c/" class="externalLink" title="External Link">Source Code</a></li></ul></li><li class="expanded"><a href="../">Documentation</a><ul><li class="none"><a href="../M0_5/index.html">Milestone M0.5</a></li></ul></li><li class="expanded"><a href="../">Get Involved</a><ul><li class="none"><a href="../mail-lists.html">Mailing Lists</a></li></ul></li><li class="expanded"><a href="../">Project Information</a><ul><li class="none"><a href="http://issues.apache.org/ji
 ra/browse/AXIS2C" class="externalLink" title="External Link">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></li>
+     <ul>
+     <li> <a href="#What_is_OM"> What is OM </a></li>   
+     <li> <a href="#For_Whom_is_This_Tutorial"> For Whom is This 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>
+     </ul>
+<li> <a href="#Working_with_OM"> Working with OM </a> </li>
+     <ul>
+     <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="#Traversing"> Traversing </a> </li>
+     </ul>
+ </ul><p><a name="Introduction"> </a></p></div><div class="subsection"><a name="Introduction"></a><h3>Introduction</h3><p><a name="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 the XML infoset model that is developed for Axis 2. XML infoset
+refers to the information included inside the XML. For programmatical
+manipulation it is convenient to have a representation of this XML infoset in
+a language 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
+the same kind of API in C.</p><p><a name="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 name="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 SAX and 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="newWindow" title="New Window" target="_blank">XML pull
+parsing introduction</a>.
+
+<a name="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
+StAX API derived form (<a href="http://www.jcp.org/aboutJava/communityprocess/first/jsr173/" class="newWindow" title="New Window" target="_blank">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="newWindow" title="New Window" target="_blank">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>
+  <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
+    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>
+  <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
+    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>
+  </li>
+</ul><p>
+
+
+</p><p align="center" 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 name="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
+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
+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="newWindow" title="New Window" target="_blank"> here </a> to learn
+more about SOAP.</p><p>
+
+<a name="Working_with_OM"> </a></p></div><div class="subsection"><a name="Working_with_OM"></a><h3>Working with OM</h3><p><a name="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 from either 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 'axis2_om_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 axis2_om_node.h must
+be used. To access xml information, the 'data element' struct stored in
+axis2_om_node_t must be obtained using the AXIS2_OM_NODE_GET_DATA_ELEMENT
+macro. The type of the struct stored in the 'axis2_om_node_t' struct can be
+obtained by AXIS2_OM_NODE_GET_NODE_TYPE macro. When we create
+axis2_om_element_t , axis2_om_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>axis2_om_node_t *my_node = NULL;</p><p>axis2_om_element_t *my_ele = NULL;</p><p>my_ele = axis2_om_element_create(env, NULL, "MY_ELEMENT", NULL,
+&amp;my_node);</p><p>Now if we call AXIS2_OM_NODE_GET_NODE_TYPE macro on 'my_node' pointer we
+will get the value as AXIS2_OM_ELEMENT .</p><div align="left">
+<p><b>Code Listing 1</b></p>
+</div>
+    <div class="source"><pre><pre>axis2_xml_reader_t *xml_reader = NULL;
+axis2_om_stax_builder_t *om_builder = NULL;
+axis2_soap_builder_t *soap_builder = NULL;
+axis2_soap_envelope_t *soap_envelope = NULL;
+
+
+/** create the parser */<br></br>
+axis2_xml_reader_t *xml_reader = axis2_xml_reader_create_for_file(env, "test_soap.xml",NULL);
+
+/** create the OM builder */
+
+om_builder = axis2_om_stax_builder_create(env, xml_reader);
+
+/** create SOAP builder */
+
+soap_builder = axis2_soap_builder_create(env, om_builder , AXIS2_SOAP_ENVELOPE_NAMESPACE_URI);
+
+/** get soap envelope */
+soap_envelope = AXIS2_SOAP_BUILDER_GET_SOAP_ENVELOPE(soap_builder, env);</pre>
+</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
+axis2_om_stax_builder_t and the axis2_soap_builder_t. These builders provide
+the necessary information to the XML info set model to build itself. </p><div align="left">
+<p><b>Code Listing 2</b></p>
+</div><p class="img-title"><b></b></p>
+    <div class="source"><pre>axis2_om_namespace_t *ns1 = NULL;
+axis2_om_namespace_t *ns2 = NULL;
+
+axis2_om_element_t* root_ele = NULL;
+axis2_om_node_t*    root_ele_node = NULL;
+
+axis2_om_element_t *ele1      = NULL;
+axis2_om_node_t *ele1_node = NULL;
+
+ns1 = axis2_om_namespace_create(env, "bar", "x");
+ns2 = axis2_om_namespace_create(env, "bar1", "y");
+
+
+root_ele = axis2_om_element_create(env, NULL, "root", ns1, &amp;root_ele_node);
+ele1_node     = axis2_om_element_create(env, root_node, "foo1", ns2, &amp;ele1_node);
+
+</pre></div>
+  <p>Several differences exist between a programmatically created
+axis2_om_node_t and a conventionally built axis2_om_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
+axis2_om_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
+programmer. It acts as a wrapper layer on top of OM implementation. The SOAP
+structs wraps the correspoding om_node_t structs to store information in xml.</p><p>
+
+<a name="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 axis2_om_node.h header.
+The following are the most important in adding nodes.</p><div align="left">
+<p><b>Code Listing 3</b></p>
+</div><p>Add child operation</p>
+    <div class="source"><pre>axis2_status_t
+axis2_om_node_add_child( axis2_om_node_t *om_node,
+axis2_env_t **env, axis2_om_node_t *child_node);
+
+
+</pre></div>
+  <p>Detach operation</p>
+    <div class="source"><pre>axis2_om_node_t*
+axis2_om_node_detach (axis2_om_node_t *om_node,
+axis2_env_t **env);
+
+</pre></div>
+  <p>The detach operation resets the links and remove a node from om
+structure.</p><p></p><p>This code segment shows how the addition takes place. Note that it is
+related to the code segment shown in the creation section.</p><div align="left">
+<p><b>Code Listing 4</b></p>
+</div>
+    <div class="source"><pre>axis2_om_node_t *foo_node = NULL;
+axis2_om_element_t *foo_ele = NULL;
+axis2_om_node_t *bar_node = NULL;
+axis2_om_element_t *bar_ele = NULL;
+
+foo_ele = axis2_om_element_create(env, NULL, "FOO", NULL, &amp;foo_node);
+bar_ele = axis2_om_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>
+    <div class="source"><pre> AXIS2_OM_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>
+    <div class="source"><pre> bar_ele = axis2_om_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>
+  <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.
+    axis2_om_namespace_t * is the struct that represents a namespace and we
+    do not have setter functions. This makes the axis2_om_namespace
+  immutable.</li>
+</ul><p>Following are the important methods available in axis2_om_element to
+handle namespaces.</p><div align="left">
+<p><b>Code Listing 5</b></p>
+</div>
+    <div class="source"><pre>axis2_om_namespace_t* axis2_om_element_declare_namespace(axis2_om_element_t *om_ele, 
+axis2_env_t **env, axis2_om_node_t *om_node, axis2_om_namespace_t *om_ns);
+
+axis2_om_namespace_t* axis2_om_element_find_namespace(axis2_om_element_t *om_ele,
+axis2_env_t **env, axis2_om_node_t *om_node, axis2_char_t *uri, axis2_char_t *prefix);
+
+</pre></div>
+  <p>The declare_namespace function is straight forward. It adds a namespace to
+namespace declarations section. Note that a namespace declaration that has
+already been added will not be added twice. 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>The following simple code segment shows how the namespaces are dealt with
+in OM</p><div align="left">
+<p><b>Code Listing 6</b></p>
+</div>
+    <div class="source"><pre>
+axis2_om_namespace_t *ns1 = NULL;
+axis2_om_namespace_t *ns2 = NULL;
+axis2_om_namespace_t *ns3 = NULL;
+
+axis2_om_node_t *root_node = NULL;
+axis2_om_element_t *root_ele = NULL;
+
+axis2_om_node_t *ele1_node = NULL;
+axis2_om_element_t *ele1   = NULL;
+
+axis2_om_node_t *text_node = NULL;
+axis2_om_text_t *om_text   = NULL;
+
+ns1 = axis2_om_namespace_create(env, "bar", "x");
+ns2 = axis2_om_namespace_create(env, "bar1", "y");
+
+root_ele = axis2_om_element_create(env, NULL , "root", ns1, &amp;root_node);
+ele1     = axis2_om_element_create(env, root_node, "foo", ns2, &amp;ele1_node);
+om_text  = axis2_om_text_create(env, ele1_node, "blah", &amp;text_node);
+
+
+</pre></div>
+  <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 name="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 OM element or create the iterator
+manually. OM C offers three iterators to traverse the OM structure. They
+are</p><ul>
+<li>axis2_om_children_iterator_t</li>
+<li>axis2_om_child_element_iterator_t</li>
+<li>axis2_om_children_qname_iterator_t</li>
+</ul><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 AXIS2_OM_TEXT
+or AXIS2_OM_ELEMENT.</p><div align="left">
+<p><b>Code Listing 7</b></p>
+
+</div>
+    <div class="source"><pre>axis2_om_children_iterator_t *children_iter = NULL;
+children_iter = AXIS2_OM_ELEMENT_GET_CHILDREN(om_ele, env, om_node);
+if(NULL != children_iter )
+{
+    while(AXIS2_OM_CHILDREN_ITERATOR_HAS_NEXT(children_iter, env))
+    {
+        axis2_om_node_t *node = NULL;
+        node = AXIS2_OM_CHILDREN_ITERATOR_NEXT(children_iter, env);
+        if(NULL != node)
+        {
+           if(AXIS2_OM_NODE_GET_NODE_TYPE(node, env) == AXIS2_OM_ELEMENT)
+           {
+               /** any processing */
+           }
+        } 
+
+    }
+}
+
+
+</pre></div>
+  <p>Apart from this, every axis2_om_node_t struct has links to its siblings.
+If more thorough navigation is needed the AXIS2_OM_NODE_GET_NEXT_SIBLING()
+and AXIS2_OM_NODE_GET_PREVIOUS_SIBLING() macros can be used. A more selective
+set can be chosen by using AXIS2_OM_ELEMENT_XXX_WITH_QNAME() methods. 
+The AXIS2_OM_ELEMENT_GET_FIRST_CHILD_WITH_QNAME() method returns the
+first child that matches the given axis2_qname_t and
+AXIS2_OM_ELEMENT_GET_CHILDREN_WITH_QNAME() returns
+axis2_om_children_qname_iterator_t which can be used to travese all the
+matching children. The advantage of these iterators is that they won't build
+the whole object structure at once, until its required.</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>
+  </tbody></table>
+
+</p><p>OM can be serialized using AXIS2_OM_NODE_SERIALIZE macro .The
+serialization uses a axis2_xml_writer.h API and it writes through
+axis2_om_output_t abstract output to write to the output.</p><p>Here is an example that shows how to write the output to the console, with
+reference to the earlier code sample (Code listing 1 ) that created a SOAP
+envelope.</p><div align="left">
+<p><b>Code Listing 8</b></p>
+</div>
+    <div class="source"><pre>axis2_xml_writer_t *xml_writer = NULL;
+axis2_om_output_t *om_output = NULL;
+axis2_char_t *buffer = NULL;
+
+..............
+
+xml_writer = axis2_xml_writer_create(env, NULL, 0, 0);
+om_output = axis2_om_output_create(env, xml_writer);
+
+AXIS2_SOAP_ENVELOPE_SERIALIZE(envelope, env, om_output);
+buffer = AXIS2_XML_WRITER_GET_XML(xml_writer, env);
+printf("%s ", buffer);
+
+
+</pre></div>
+  <b>Complete code for the OM based document building and serialization </b><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 align="left">
+<p><b>Code Listing 9</b></p>
+</div>
+    <div class="source"><pre>
+test_om.c
+FILE *f = NULL;
+int read_input_callback(char *buffer, int size, void* ctx)
+{
+    return fread(buffer, sizeof(char), size, f);
+}
+
+int close_input_callback()
+{
+    return fclose(f);
+}
+
+axis2_env_t * create_environment()
+{
+    axis2_allocator_t *allocator = NULL;
+    axis2_env_t *env = NULL;
+    axis2_log_t *log = NULL;
+    axis2_error_t *error = NULL;
+    allocator = axis2_allocator_init(NULL);
+    log = axis2_log_create(allocator);
+    error = axis2_error_create(allocator);
+    env = axis2_env_create_with_error_log(allocator, log, error);
+    return env;
+}
+
+build_and_serialize_om(axis2_env_t **env)
+{
+    axis2_om_node_t *root_node = NULL:
+    axis2_om_element_t *root_ele = NULL;
+    axis2_om_document_t *document = NULL;
+    axis2_om_stax_builder_t *om_builder = NULL;
+    axis2_xml_reader_t *xml_reader = NULL;
+    axis2_xml_writer_t *xml_writer = NULL;
+    axis2_om_output_t *om_output = NULL;
+    axis2_char_t *buffer = NULL;
+    f = fopen("test.xml");
+    xml_reader = axis2_xml_reader_create_for_memory(env, read_input_callback,
+    close_input_callback, NULL, NULL);
+    if(!xml_reader)
+        return -1;
+    om_builder = axis2_om_stax_builder_create(env, xml_reader);
+    if(!om_builder)
+    {
+        AXIS2_XML_READER_FREE(xml_reader, env);
+        return AXIS2_FAILURE;
+    }
+
+    document = axis2_om_document_create(env, om_builder);
+    if(!document)
+    {
+        AXIS2_OM_STAX_BUILDER_FREE(om_builder, env);
+        return AXIS2_FAILURE;
+    }
+
+    root_node = AXIS2_OM_DOCUMENT_GET_ROOT_ELEMENT(document, env);
+    if(root_node)
+    {
+        if(AXIS2_OM_NODE_GET_NODE_TYPE(root_node, env) == AXIS2_OM_ELEMENT)
+        {
+            root_ele = (axis2_om_element_t*)AXIS2_OM_NODE_GET_DATA_ELEMENT
+                                                            (root_node, env);
+
+            if(root_ele)
+            {
+                printf(" %s" , AXIS2_OM_ELEMENT_GET_DATA_ELEMENT(root_node, env));
+            }
+        }
+    }
+
+    AXIS2_OM_DOCUMENT_BUILD_ALL(document, env);
+
+    xml_writer = axis2_xml_writer_create_for_memory(env, NULL, AXIS2_TRUE, 0);
+    om_output = axis2_om_output_create(env, xml_writer);
+    AXIS2_OM_NODE_SERIALIZE(node1, env, om_output);
+    buffer = AXIS2_XML_WRITER_GET_XML(xml_writer, env);
+    printf(" %s ", buffer);
+
+    AXIS2_OM_OUTPUT_FREE(om_output, env);
+    AXIS2_OM_STAX_BUILDER_FREE(om_builder, env);
+    AXIS2_FREE((*env)-&gt;allocator, buffer);
+    return AXIS2_SUCCESS;
+}
+
+int main()
+{
+    int status = AXIS2_SUCCESS;
+    axis2_env_t *env = NULL;
+    axis2_allocator_t *allocator = NULL;
+    env = create_environment();
+    status = build_and_serialize_om(&amp;env);
+    if(status == AXIS2_FAILURE)
+    { 
+        printf(" build om failed");
+    }
+    axis2_env_free(env);
+    return 0;
+}
+
+
+
+</pre></div>
+  </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>
\ No newline at end of file

Added: webservices/axis2/site/c/M0_5/userguide.html
URL: http://svn.apache.org/viewcvs/webservices/axis2/site/c/M0_5/userguide.html?rev=384332&view=auto
==============================================================================
--- webservices/axis2/site/c/M0_5/userguide.html (added)
+++ webservices/axis2/site/c/M0_5/userguide.html Wed Mar  8 13:21:44 2006
@@ -0,0 +1,58 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html><head><title>Axis 2.0 - Axis2/C User's Guide</title><style type="text/css" media="all">
+          @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: 09 March 2006
+                  | Doc for M0.5</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 Axis2 C</a><ul><li class="none"><a href="http://www.apache.org/dyn/closer.cgi/ws/axis2/c/M0.5/" class="externalLink" title="External Link">M0.5 Release</a></li><li class="none"><a href="http://svn.apache.org/viewcvs.cgi/webservices/axis2/trunk/c/" class="externalLink" title="External Link">Source Code</a></li></ul></li><li class="expanded"><a href="../">Documentation</a><ul><li class="none"><a href="../M0_5/index.html">Milestone M0.5</a></li></ul></li><li class="expanded"><a href="../">Get Involved</a><ul><li class="none"><a href="../mail-lists.html">Mailing Lists</a></li></ul></li><li class="expanded"><a href="../">Project Information</a><ul><li class="none"><a href="http://issues.apache.org/ji
 ra/browse/AXIS2C" class="externalLink" title="External Link">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_User_s_Guide"></a><h2>Axis2/C User's Guide</h2><div class="subsection"><a name="-Milestone_Release_0_5"></a><h3>-Milestone Release 0.5</h3><p align="right">Pages: <b>Content</b>, <a href="userguide1.html">1</a>, <a href="userguide2.html">2</a>, <a href="userguide3.html">3</a></p></div><div class="subsection"><a name="Content"></a><h3>Content</h3><ul>
+  <li>
+    <p><a href="userguide1.html#Introduction">Introduction</a></p>
+    <ul>
+      <li><a href="userguide1.html#Attention">Attention</a></li>
+      <li><a href="userguide1.html#What_is_Axis2_">What is Axis2/C?</a></li>
+    </ul>
+  </li>
+  <li>
+    <p><a href="userguide2.html#Web_Service_Clients_Using_Axis2">Web
+Service Clients Using Axis2/C</a></p>
+    <ul>
+      <li><a href="userguide2.html#Writing_Web_Service_Clients_using_Axis2%27s_Primary_APIs">Writing
+Web Service Clients Using Axis2's Primary APIs</a></li>
+      <ul>
+        <li><a href="userguide2.html#EchoBlockingClient">EchoBlockingClient</a></li>
+        <li><a href="userguide2.html#Request_SOAP_Message">Request SOAP
+Message</a></li>
+        <li><a href="userguide2.html#Response_SOAP_Message">Response
+SOAP Message</a></li>
+      </ul>
+    </ul>
+  </li>
+  <li>
+    <p><a href="userguide3.html#Web_Services_Using_Axis2">Web Services
+Using Axis2/C</a></p>
+    <ul>
+      <li><a href="userguide3.html#Conventions">Conventions used in the
+document</a></li>
+      <li><a href="userguide3.html#Writing_Web_Services_Using%20Axis2_C">Writing
+Web Services Using Axis2/C</a>
+        <ul>
+          <li><a href="userguide3.html#Creating_Web_Service__MyService_">Creating
+Web Service (Echo service)</a></li>
+          <li><a href="userguide3.html#How_to_write_the_Web_Service_">How
+to write the Web Service?</a>
+            <ul>
+              <li><a href="userguide3.html#Step1">Step1 :Write the
+echo_skeleton.c file implementing the axis2_svc_skeleton.h</a></li>
+              <li><a href="userguide3.html#Step2">Step2 : Now we can
+write the echo service in a file echo.c</a></li>
+              <li><a href="userguide3.html#Step3">Step3 :Write the
+services.xml file</a></li>
+              <li><a href="userguide3.html#Step4">Step4 :Create the
+WebService Folder in services folder.</a></li>
+            </ul>
+          </li>
+        </ul>
+      </li>
+      <li><a href="userguide3.html#deploy">Deploy the Web Service</a></li>
+    </ul>
+  </li>
+</ul><p align="right"><a href="userguide1.html">Next Page <img src="images/arrow_right.gif" alt=""></img></a></p><p>Pages: <b>Content</b>, <a href="userguide1.html">1</a>, <a href="userguide2.html">2</a>, <a href="userguide3.html">3</a></p></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>
\ No newline at end of file