You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ws.apache.org by ve...@apache.org on 2016/02/20 19:30:05 UTC

svn commit: r1731437 [50/50] - in /webservices/website/axiom-staging: ./ apidocs/ apidocs/org/apache/axiom/mime/ apidocs/org/apache/axiom/om/ apidocs/org/apache/axiom/om/impl/builder/ apidocs/org/apache/axiom/om/impl/builder/class-use/ axiom-compat/ ax...

Modified: webservices/website/axiom-staging/userguide/ch04.html
URL: http://svn.apache.org/viewvc/webservices/website/axiom-staging/userguide/ch04.html?rev=1731437&r1=1731436&r2=1731437&view=diff
==============================================================================
--- webservices/website/axiom-staging/userguide/ch04.html (original)
+++ webservices/website/axiom-staging/userguide/ch04.html Sat Feb 20 18:30:02 2016
@@ -4,19 +4,20 @@
               window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new Date;
               ga('create', 'UA-56790914-3', {'cookieDomain': 'ws.apache.org', 'cookiePath': '/axiom' });
               ga('send', 'pageview');
-            </script></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter&nbsp;4.&nbsp;Integrating Axiom into your project</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch03.html">Prev</a>&nbsp;</td><th width="60%" align="center">&nbsp;</th><td width="20%" align="right">&nbsp;<a accesskey="n" href="ch05.html">Next</a></td></tr></table><hr></div><div class="chapter" title="Chapter&nbsp;4.&nbsp;Integrating Axiom into your project"><div class="titlepage"><div><div><h2 class="title"><a name="d0e700"></a>Chapter&nbsp;4.&nbsp;Integrating Axiom into your project</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="section"><a href="ch04.html#using-maven2">Using Axiom in a Maven 2 project</a></span></dt><dd><dl><dt><span class="section"><a href="ch04.html#d0e706">Adding Axiom as a depend
 ency</a></span></dt><dt><span class="section"><a href="ch04.html#d0e732">Managing the JAF and JavaMail dependencies</a></span></dt></dl></dd><dt><span class="section"><a href="ch04.html#d0e766">Applying application wide configuration</a></span></dt><dd><dl><dt><span class="section"><a href="ch04.html#factory.properties">Changing the default StAX factory settings</a></span></dt></dl></dd><dt><span class="section"><a href="ch04.html#d0e900">Migrating from older Axiom versions</a></span></dt><dd><dl><dt><span class="section"><a href="ch04.html#d0e905">Changes in Axiom 1.2.9</a></span></dt><dt><span class="section"><a href="ch04.html#changes-1.2.11">Changes in Axiom 1.2.11</a></span></dt><dt><span class="section"><a href="ch04.html#changes-1.2.13">Changes in Axiom 1.2.13</a></span></dt><dt><span class="section"><a href="ch04.html#changes-1.2.14">Changes in Axiom 1.2.14</a></span></dt><dt><span class="section"><a href="ch04.html#changes-1.2.15">Changes in Axiom 1.2.15</a></span></dt></dl
 ></dd></dl></div><div class="section" title="Using Axiom in a Maven 2 project"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="using-maven2"></a>Using Axiom in a Maven 2 project</h2></div></div></div><div class="section" title="Adding Axiom as a dependency"><div class="titlepage"><div><div><h3 class="title"><a name="d0e706"></a>Adding Axiom as a dependency</h3></div></div></div><p>
+            </script></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter&nbsp;4.&nbsp;Integrating Axiom into your project</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch03.html">Prev</a>&nbsp;</td><th width="60%" align="center">&nbsp;</th><td width="20%" align="right">&nbsp;<a accesskey="n" href="ch05.html">Next</a></td></tr></table><hr></div><div class="chapter" title="Chapter&nbsp;4.&nbsp;Integrating Axiom into your project"><div class="titlepage"><div><div><h2 class="title"><a name="d0e700"></a>Chapter&nbsp;4.&nbsp;Integrating Axiom into your project</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="section"><a href="ch04.html#using-maven2">Using Axiom in a Maven 2 project</a></span></dt><dd><dl><dt><span class="section"><a href="ch04.html#d0e706">Adding Axiom as a depend
 ency</a></span></dt><dt><span class="section"><a href="ch04.html#d0e732">Managing the JAF dependency</a></span></dt></dl></dd><dt><span class="section"><a href="ch04.html#d0e755">Applying application wide configuration</a></span></dt><dd><dl><dt><span class="section"><a href="ch04.html#factory.properties">Changing the default StAX factory settings</a></span></dt></dl></dd><dt><span class="section"><a href="ch04.html#d0e889">Migrating from older Axiom versions</a></span></dt></dl></div><div class="section" title="Using Axiom in a Maven 2 project"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="using-maven2"></a>Using Axiom in a Maven 2 project</h2></div></div></div><div class="section" title="Adding Axiom as a dependency"><div class="titlepage"><div><div><h3 class="title"><a name="d0e706"></a>Adding Axiom as a dependency</h3></div></div></div><p>
                     If your project uses Maven 2, it is fairly easy to add Axiom to your project.
                     Simply add the following entries to the <code class="sgmltag-element">dependencies</code>
                     section of <code class="filename">pom.xml</code>:
                 </p><pre class="programlisting">&lt;dependency&gt;
     &lt;groupId&gt;org.apache.ws.commons.axiom&lt;/groupId&gt;
     &lt;artifactId&gt;axiom-api&lt;/artifactId&gt;
-    &lt;version&gt;1.2.17&lt;/version&gt;
+    &lt;version&gt;1.2.18&lt;/version&gt;
 &lt;/dependency&gt;
 &lt;dependency&gt;
     &lt;groupId&gt;org.apache.ws.commons.axiom&lt;/groupId&gt;
     &lt;artifactId&gt;axiom-impl&lt;/artifactId&gt;
-    &lt;version&gt;1.2.17&lt;/version&gt;
+    &lt;version&gt;1.2.18&lt;/version&gt;
+    &lt;scope&gt;runtime&lt;/scope&gt;
 &lt;/dependency&gt;</pre><p>
                     All Axiom releases are deployed to the Maven central repository and there is no need
                     to add an entry to the <code class="sgmltag-element">repositories</code> section.
@@ -33,13 +34,12 @@
                         If you are working on another Apache project, you don't need to add the snapshot repository
                         in the POM file since it is already declared in the <code class="literal">org.apache:apache</code>
                         parent POM.
-                    </p></td></tr></table></div></div><div class="section" title="Managing the JAF and JavaMail dependencies"><div class="titlepage"><div><div><h3 class="title"><a name="d0e732"></a>Managing the JAF and JavaMail dependencies</h3></div></div></div><p>
-                    Axiom requires the Java Activation Framework (JAF) and the JavaMail API to work. There are two
-                    commonly used incarnations of these libraries: one is Sun's reference implementation, the other
+                    </p></td></tr></table></div></div><div class="section" title="Managing the JAF dependency"><div class="titlepage"><div><div><h3 class="title"><a name="d0e732"></a>Managing the JAF dependency</h3></div></div></div><p>
+                    Axiom requires the Java Activation Framework (JAF) to work. There are two
+                    commonly used incarnations of this library: one is Sun's reference implementation, the other
                     is part of the <a class="link" href="http://geronimo.apache.org/" target="_top">Geronimo</a> project. Axiom declares
-                    dependencies on the Geronimo versions (though that might
-                    <a class="link" href="https://issues.apache.org/jira/browse/AXIOM-319" target="_top">change</a> in the future).
-                    If your project uses another library that depends on JAF and/or JavaMail, but that refers
+                    a dependency on the Geronimo version.
+                    If your project uses another library that depends on JAF, but that refers
                     to Sun's implementation, your project will end up with dependencies on two different
                     artifacts implementing the same API.
                 </p><p>
@@ -49,31 +49,21 @@
 &lt;dependency&gt;
     &lt;groupId&gt;org.apache.ws.commons.axiom&lt;/groupId&gt;
     &lt;artifactId&gt;axiom-<em class="replaceable"><code>xxx</code></em>&lt;/artifactId&gt;
-    &lt;version&gt;1.2.17&lt;/version&gt;
+    &lt;version&gt;1.2.18&lt;/version&gt;
     &lt;exclusions&gt;
         &lt;exclusion&gt;
             &lt;groupId&gt;org.apache.geronimo.specs&lt;/groupId&gt;
             &lt;artifactId&gt;geronimo-activation_1.1_spec&lt;/artifactId&gt;
         &lt;/exclusion&gt;
-        &lt;exclusion&gt;
-            &lt;groupId&gt;org.apache.geronimo.specs&lt;/groupId&gt;
-            &lt;artifactId&gt;geronimo-javamail_1.4_spec&lt;/artifactId&gt;
-        &lt;/exclusion&gt;
     &lt;/exclusions&gt;
 &lt;/dependency&gt;
 </pre><p>
                     If you prefer Geronimo's implementation, then you need to identify the libraries
-                    depending on Sun's artifacts (<code class="literal">javax.activation:activation</code> and
-                    <code class="literal">javax.mail:mail</code>) and add the relevant exclusions. You can use
+                    depending on Sun's artifact (<code class="literal">javax.activation:activation</code>)
+                    and add the relevant exclusions. You can use
                     <strong class="userinput"><code>mvn dependency:tree</code></strong> to easily identify where a transitive dependency
                     comes from.
-                </p><p>
-                    The choice between Sun's and Geronimo's implementation is to a large extend
-                    a question of belief. Note however that the <code class="literal">geronimo-javamail_1.4_spec</code>
-                    artifact used by Axiom only contains the JavaMail API, while Sun's library
-                    bundles the API together with the providers for IMAP and POP3. Depending on your
-                    use case that might be an advantage or disadvantage.
-                </p></div></div><div class="section" title="Applying application wide configuration"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="d0e766"></a>Applying application wide configuration</h2></div></div></div><p>
+                </p></div></div><div class="section" title="Applying application wide configuration"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="d0e755"></a>Applying application wide configuration</h2></div></div></div><p>
                 Sometimes it is necessary to customize some particular aspects of Axiom for an entire
                 application. There are several things that can be configured through system properties
                 and/or property files. This is also important when using third party applications or
@@ -101,7 +91,7 @@
                     This feature can be used to set factory properties of type <code class="classname">Boolean</code>,
                     <code class="classname">Integer</code> and <code class="classname">String</code>. The following
                     sections present some sample use cases.
-                </p><div class="section" title="Changing the serialization of the CR-LF character sequence"><div class="titlepage"><div><div><h4 class="title"><a name="d0e825"></a>Changing the serialization of the CR-LF character sequence</h4></div></div></div><p>
+                </p><div class="section" title="Changing the serialization of the CR-LF character sequence"><div class="titlepage"><div><div><h4 class="title"><a name="d0e814"></a>Changing the serialization of the CR-LF character sequence</h4></div></div></div><p>
                         Section 2.11 of [<a href="bi01.html#bib.xml" class="biblioref" title="[XML]"><abbr class="abbrev">XML</abbr></a>] specifies that an <span class="quote">&#8220;<span class="quote">XML processor
                         must behave as if it normalized all line breaks in external parsed entities (including
                         the document entity) on input, before parsing, by translating both the two-character
@@ -131,7 +121,7 @@ with CRLF&lt;/root&gt;</pre><div class="
                             to construct the object model in such a way as to force serialization of
                             the CR as character entity.
                         </p></td></tr></table></div><p>
-                        In some cases this behavior may be undesirable<sup>[<a name="d0e854" href="#ftn.d0e854" class="footnote">1</a>]</sup>. Fortunately Woodstox allows to modify this behavior
+                        In some cases this behavior may be undesirable<sup>[<a name="d0e843" href="#ftn.d0e843" class="footnote">1</a>]</sup>. Fortunately Woodstox allows to modify this behavior
                         by changing the value of the <code class="varname">com.ctc.wstx.outputEscapeCr</code> property
                         on the <code class="classname">XMLOutputFactory</code>. If Axiom is used (and in particular
                         <code class="classname">StAXUtils</code>) than this can be achieved by adding
@@ -140,7 +130,7 @@ with CRLF&lt;/root&gt;</pre><div class="
                     </p><pre class="programlisting">com.ctc.wstx.outputEscapeCr=false</pre><p>
                         Now the output of the Java snippet shown above will be:
                     </p><pre class="screen">&lt;root&gt;Test
-with CRLF&lt;/root&gt;</pre></div><div class="section" title="Preserving CDATA sections during parsing"><div class="titlepage"><div><div><h4 class="title"><a name="d0e879"></a>Preserving CDATA sections during parsing</h4></div></div></div><p>
+with CRLF&lt;/root&gt;</pre></div><div class="section" title="Preserving CDATA sections during parsing"><div class="titlepage"><div><div><h4 class="title"><a name="d0e868"></a>Preserving CDATA sections during parsing</h4></div></div></div><p>
                         By default, <code class="classname">StAXUtils</code> creates StAX parsers in coaelescing mode.
                         In this mode, the parser will never return two character data events in sequence, while
                         in non coaelescing mode, the parser is allowed to break up character data into smaller
@@ -158,295 +148,14 @@ with CRLF&lt;/root&gt;</pre></div><div c
                         correct reporting of CDATA sections should therefore disable coalescing. This can be
                         achieved by creating a <code class="filename">XMLInputFactory.properties</code> file with the
                         following content:
-                    </p><pre class="programlisting">javax.xml.stream.isCoalescing=false</pre></div></div></div><div class="section" title="Migrating from older Axiom versions"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="d0e900"></a>Migrating from older Axiom versions</h2></div></div></div><p>
-                This section provides information about changes in Axiom that might impact existing
-                code when migrating from an older version of Axiom. Note that this section is not
+                    </p><pre class="programlisting">javax.xml.stream.isCoalescing=false</pre></div></div></div><div class="section" title="Migrating from older Axiom versions"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="d0e889"></a>Migrating from older Axiom versions</h2></div></div></div><p>
+                The release notes provide information about changes in Axiom that might impact existing
+                code when migrating from an older version of Axiom. Note that they are not
                 meant as a change log that lists all changes or new features. Also, before upgrading
                 to a newer Axiom version, you should always check if your code uses methods or classes
                 that have been deprecated. You should fix all deprecation warnings before changing the
                 Axiom version. In general the Javadoc of the deprecated class or method gives you
                 a hint on how to change your code.
-            </p><div class="section" title="Changes in Axiom 1.2.9"><div class="titlepage"><div><div><h3 class="title"><a name="d0e905"></a>Changes in Axiom 1.2.9</h3></div></div></div><div class="section" title="System properties used by OMAbstractFactory"><div class="titlepage"><div><div><h4 class="title"><a name="d0e908"></a>System properties used by <code class="classname">OMAbstractFactory</code></h4></div></div></div><p>
-                        Prior to Axiom 1.2.9, <code class="classname">OMAbstractFactory</code> used system properties
-                        as defined in the following table to determine the factory implementations to use:
-                    </p><div class="segmentedlist"><table border="0"><thead><tr class="segtitle"><th>Object model</th><th>Method</th><th>System property</th><th>Default</th></tr></thead><tbody><tr class="seglistitem"><td class="seg">Plain XML</td><td class="seg"><code class="methodname">getOMFactory()</code></td><td class="seg"><code class="varname">om.factory</code></td><td class="seg"><code class="literal">org.apache.axiom.om.impl.llom.factory.OMLinkedListImplFactory</code></td></tr><tr class="seglistitem"><td class="seg">SOAP 1.1</td><td class="seg"><code class="methodname">getSOAP11Factory()</code></td><td class="seg"><code class="varname">soap11.factory</code></td><td class="seg"><code class="literal">org.apache.axiom.soap.impl.llom.soap11.SOAP11Factory</code></td></tr><tr class="seglistitem"><td class="seg">SOAP 1.2</td><td class="seg"><code class="methodname">getSOAP12Factory()</code></td><td class="seg"><code class="varname">soap12.factory</code></td><td class="seg"><code cl
 ass="literal">org.apache.axiom.soap.impl.llom.soap12.SOAP12Factory</code></td></tr></tbody></table></div><p>
-                        This in principle allowed to mix default factory implementations from different implementations
-                        of the Axiom API (e.g. an OMFactory from the LLOM implementation and SOAP factories from DOOM).
-                        This however doesn't make sense. The system properties as described above are no longer
-                        supported in 1.2.9 and the default Axiom implementation is chosen using the new
-                        <code class="varname">org.apache.axiom.om.OMMetaFactory</code> system property. For LLOM, you should set:
-                    </p><pre class="programlisting">org.apache.axiom.om.OMMetaFactory=org.apache.axiom.om.impl.llom.factory.OMLinkedListMetaFactory</pre><p>
-                        This is the default and is equivalent to the defaults in 1.2.8. For DOOM, you should set:
-                    </p><pre class="programlisting">org.apache.axiom.om.OMMetaFactory=org.apache.axiom.om.impl.dom.factory.OMDOMMetaFactory</pre></div><div class="section" title="Factories returned by StAXUtils"><div class="titlepage"><div><div><h4 class="title"><a name="d0e977"></a>Factories returned by <code class="classname">StAXUtils</code></h4></div></div></div><p>
-                        In versions prior to 1.2.9, the <code class="classname">XMLInputFactory</code> and
-                        <code class="classname">XMLOutputFactory</code> instances returned by <code class="classname">StAXUtils</code>
-                        were mutable, i.e. it was possible to change the properties of these factories. This is obviously
-                        an issue since the factory instances are cached and can be shared among several thread.
-                        To avoid programming errors, starting from 1.2.9, the factories are immutable and any attempt to
-                        change their state will result in an <code class="classname">IllegalStateException</code>.
-                    </p><p>
-                        Note that the possibility to change the properties of these factories could be used to apply
-                        application wide settings. Starting with 1.2.9, Axiom has a proper mechanism to allow this.
-                        This feature is described in <a class="xref" href="ch04.html#factory.properties" title="Changing the default StAX factory settings">the section called &#8220;Changing the default StAX factory settings&#8221;</a>.
-                    </p></div><div class="section" title="Changes in XOP/MTOM handling"><div class="titlepage"><div><div><h4 class="title"><a name="d0e1000"></a>Changes in XOP/MTOM handling</h4></div></div></div><p>
-                        In Axiom 1.2.8, <code class="classname">XMLStreamReader</code> instances provided by Axiom could
-                        belong to one of three different categories:
-                    </p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p>
-                                <code class="classname">XMLStreamReader</code> instances delivering plain XML.
-                            </p></li><li class="listitem"><p>
-                                <code class="classname">XMLStreamReader</code> instances delivering plain XML and
-                                implementing a custom extension to retrieve optimized binary data.
-                            </p></li><li class="listitem"><p>
-                                <code class="classname">XMLStreamReader</code> instances representing XOP
-                                encoded data.
-                            </p></li></ol></div><p>
-                        As explained in <a class="link" href="https://issues.apache.org/jira/browse/AXIOM-255" target="_top">AXIOM-255</a>
-                        and <a class="link" href="https://issues.apache.org/jira/browse/AXIOM-122" target="_top">AXIOM-122</a>,
-                        in Axiom 1.2.8, the type of stream reader provided by the API was not always well defined.
-                        Sometimes the type of the stream reader even depended on the state of the Axiom tree
-                        (i.e. whether some part of it has been accessed or not).
-                    </p><p>
-                        In release 1.2.9 the behavior of Axiom was changed such that it never delivers XOP
-                        encoded data unless explicitly requested to do so. By default, any <code class="classname">XMLStreamReader</code>
-                        provided by Axiom now represents plain XML data and optionally implements the
-                        <code class="classname">DataHandlerReader</code> extension to retrieve optimized
-                        binary data. An XOP encoded stream can be requested from the <code class="methodname">getXOPEncodedStream</code>
-                        method in <code class="classname">XOPUtils</code>.
-                    </p></div></div><div class="section" title="Changes in Axiom 1.2.11"><div class="titlepage"><div><div><h3 class="title"><a name="changes-1.2.11"></a>Changes in Axiom 1.2.11</h3></div></div></div><div class="section" title="Resurrection of the OMXMLBuilderFactory API"><div class="titlepage"><div><div><h4 class="title"><a name="OMXMLBuilderFactory"></a>Resurrection of the <code class="classname">OMXMLBuilderFactory</code> API</h4></div></div></div><p>
-                        Historically, <code class="classname">org.apache.axiom.om.impl.llom.factory.OMXMLBuilderFactory</code> was used to
-                        create Axiom trees from XML documents. Unfortunately, this class is located in the wrong package and JAR
-                        (it is implementation independent but belongs to LLOM). In Axiom 1.2.10, the standard way to create an Axiom tree
-                        was therefore to instantiate <code class="classname">StAXOMBuilder</code> or one of its subclasses directly. However, this
-                        is not optimal for two reasons:
-                    </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
-                                It relies on the assumption that every implementation of the Axiom API necessarily uses
-                                <code class="classname">StAXOMBuilder</code>. This means that an implementation doesn't have the freedom to
-                                provide its own builder implementation (e.g. in order to implement some special optimizations).
-                            </p></li><li class="listitem"><p>
-                                <code class="classname">StAXOMBuilder</code> and its subclasses belong to packages which have
-                                <code class="literal">impl</code> in their names. This tends to blur the distinction between the public
-                                API and internal implementation classes.
-                            </p></li></ul></div><p>
-                        Therefore, in Axiom 1.2.11, a new abstract API for creating builder instances was introduced.
-                        It is again called <code class="classname">OMXMLBuilderFactory</code>, but located in the
-                        <span class="package">org.apache.axiom.om</span> package. The methods defined by this new API are similar
-                        to the ones in the original (now deprecated) <code class="classname">OMXMLBuilderFactory</code>, so that
-                        migration should be easy.
-                    </p></div><div class="section" title="Changes in the behavior of certain iterators"><div class="titlepage"><div><div><h4 class="title"><a name="iterator-changes"></a>Changes in the behavior of certain iterators</h4></div></div></div><p>
-                        In Axiom 1.2.10 and previous versions, iterators returned by methods such as <code class="methodname">OMIterator#getChildren()</code>
-                        internally stayed one step ahead of the node returned by the <code class="methodname">next()</code> method.
-                        This meant that sometimes, using such an iterator had the side effect of building elements that
-                        were not intended to be built.
-                        In Axiom 1.2.11 this behavior was changed such that <code class="methodname">next()</code> no longer builds the nodes
-                        it returns. In a few cases, this change may cause issues in existing code. One known instance
-                        is the following construct (which was used internally by Axiom itself):
-                    </p><pre class="programlisting">while (children.hasNext()) { 
-    OMNodeEx omNode = (OMNodeEx) children.next(); 
-    omNode.internalSerializeAndConsume(writer); 
-}</pre><p>
-                        One would expect that the effect of this code is to consume the child nodes. However, in Axiom 1.2.10 this
-                        is not the case because <code class="methodname">next()</code> actually builds the node.
-                        Note that the code actually doesn't make sense because once a child node has been consumed, it is
-                        no longer possible to retrieve the next sibling. Since in Axiom 1.2.11 the call to <code class="methodname">next()</code>
-                        no longer builds the child node, this code will indeed trigger an exception.
-                    </p><p>
-                        Another example is the following piece of code which removes all child elements with a given name:
-                    </p><pre class="programlisting">Iterator iterator = element.getChildrenWithName(qname);
-while (iterator.hasNext()) {
-    OMElement child = (OMElement)iterator.next();
-    child.detach();
-}</pre><p>
-                        In Axiom 1.2.10 this works as expected. Indeed, since the iterator stays one node ahead, the current
-                        node can be safely removed using the <code class="methodname">detach()</code> method.
-                        In Axiom 1.2.11, this is no longer the case and the following code (which also works
-                        with previous versions) should be used instead:
-                    </p><pre class="programlisting">Iterator iterator = element.getChildrenWithName(qname);
-while (iterator.hasNext()) {
-    iterator.next();
-    iterator.remove();
-}</pre><p>
-                        Note that this is actually compatible with the behavior of the Java 2 collection framework, where
-                        a <code class="classname">ConcurrentModificationException</code> may be thrown if a thread modifies a
-                        collection directly while it is iterating over the collection with an iterator.
-                    </p><p>
-                        In Axiom 1.2.12, the iterator implementations have been further improved to detect this situation
-                        and to throw a <code class="classname">ConcurrentModificationException</code>. This enables early detection
-                        of problematic usages of iterators.
-                    </p></div></div><div class="section" title="Changes in Axiom 1.2.13"><div class="titlepage"><div><div><h3 class="title"><a name="changes-1.2.13"></a>Changes in Axiom 1.2.13</h3></div></div></div><div class="section" title="Handling of illegal namespace declarations"><div class="titlepage"><div><div><h4 class="title"><a name="d0e1141"></a>Handling of illegal namespace declarations</h4></div></div></div><p>
-                        Both XML 1.0 and XML 1.1 forbid binding a namespace prefix to the empty namespace name.
-                        Only the default namespace can have an empty namespace name.
-                        In XML 1.0, prefixed namespace bindings may not be empty, as explained in section 5 of
-                        <a class="xref" href="bi01.html#bib.xmlns" title="Namespaces in XML 1.0 (Third Edition)">[<abbr class="abbrev">XMLNS</abbr>]</a>:
-                    </p><div class="blockquote"><blockquote class="blockquote"><p>
-                            In a namespace declaration for a prefix (i.e., where the NSAttName is a PrefixedAttName), the
-                            attribute value MUST NOT be empty.
-                        </p></blockquote></div><p>
-                        In Axiom 1.2.12, the <code class="methodname">declareNamespace</code> methods in <code class="classname">OMElement</code>
-                        didn't enforce this constraint and namespace declarations violating this requirement were silently
-                        dropped during serialization. This behavior is problematic because it may result in subtle issues
-                        such as unbound namespace prefixes. In Axiom 1.2.13 these methods have been changed so that they
-                        throw an exception if an attempt is made to bind the empty namespace name to a prefix.
-                    </p><p>
-                        In XML 1.1, prefixed namespace bindings may be empty, but rather than binding the empty namespace name
-                        to a prefix, such a namespace declaration "undeclares" the prefix, as explained in section 5
-                        of <a class="xref" href="bi01.html#bib.xmlns11" title="Namespaces in XML 1.1 (Second Edition)">[<abbr class="abbrev">XMLNS11</abbr>]</a>:
-                    </p><div class="blockquote"><blockquote class="blockquote"><p>
-                            The namespace prefix, unless it is <code class="literal">xml</code> or <code class="literal">xmlns</code>, must
-                            have been declared in a namespace declaration attribute in either the start-tag of the
-                            element where the prefix is used or in an ancestor element
-                            (i.e. an element in whose content the prefixed markup occurs). Furthermore, the attribute
-                            value in the innermost such declaration must not be an empty string.
-                        </p></blockquote></div><p>
-                        Although the same syntax is used in both cases, adding a namespace declaration to bind a prefix
-                        to a (non empty) namespace URI and adding a namespace declaration to undeclare a prefix are two
-                        fundamentally different operations from the point of view of the application. Therefore, to
-                        support prefix undeclaring for XML 1.1 infosets, a new method <code class="methodname">undeclarePrefix</code>
-                        has been added to <code class="classname">OMElement</code> in Axiom 1.2.13.
-                    </p><p>
-                        As a corollary of the above, neither XML 1.0 nor XML 1.1 allows creating prefixed elements or
-                        attributes with an empty namespace name. In Axiom 1.2.12, when attempting to create such invalid
-                        information items, the behavior was inconsistent: in some cases,
-                        the prefix was silently dropped, in other cases the invalid information item was actually created,
-                        resulting in problems during serialization. Axiom 1.2.13 consistently throws an exception when
-                        an attempt is made to create such an invalid information item.
-                    </p></div><div class="section" title="OMNamespace normalization"><div class="titlepage"><div><div><h4 class="title"><a name="d0e1182"></a><code class="classname">OMNamespace</code> normalization</h4></div></div></div><p>
-                        Methods that return an <code class="classname">OMNamespace</code> object may in principle use two different
-                        ways to represent the absence of a namespace: as a <code class="literal">null</code> value or as an
-                        <code class="classname">OMNamespace</code> instance that has both prefix and namespaceURI properties set to
-                        the empty string. This applies in particular to <code class="methodname">OMElement#getNamespace()</code>,
-                        <code class="methodname">OMElement#getDefaultNamespace()</code> and <code class="methodname">OMAttriute#getNamespace()</code>.
-                        The API of Axiom 1.2.12 didn't clearly specify which representation was used,
-                        although in most cases a <code class="literal">null</code> value was used. As a consequence application code
-                        had to take into account the possibility that such methods returned <code class="classname">OMNamespace</code>
-                        instances with an empty prefix and namespace URI.
-                    </p><p>
-                        In Axiom 1.2.13 the situation has been clarified and the aforementioned APIs now always return
-                        <code class="literal">null</code> to indicate the absence of a namespace. Note that this
-                        may have an impact on flawed application code that doesn't handle <code class="literal">null</code> in the same
-                        way as an <code class="classname">OMNamespace</code> instance with an empty prefix and namespace URI.
-                        Such application code needs to be fixed to work correctly with Axiom 1.2.13.
-                    </p></div><div class="section" title="New abstract APIs"><div class="titlepage"><div><div><h4 class="title"><a name="d0e1224"></a>New abstract APIs</h4></div></div></div><p>
-                        Axiom 1.2.13 introduces a couple of new abstract APIs which give implementations of the Axiom API
-                        the freedom to do additional optimizations. Application code should be migrated to take
-                        advantage of these new APIs:
-                    </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
-                                Instead of instantiating a <code class="classname">OMSource</code> object directly,
-                                <code class="methodname">OMContainer#getSAXSource(boolean)</code> should be used.
-                            </p></li><li class="listitem"><p>
-                                <code class="classname">org.apache.axiom.om.impl.dom.DOOMAbstractFactory</code> has been deprecated
-                                because it ties application code that requires an object model factory supporting DOM to
-                                a particular Axiom implementation (DOOM). Instead use <code class="methodname">OMAbstractFactory.getMetaFactory(String)</code>
-                                with <code class="literal">OMAbstractFactory.FEATURE_DOM</code> as parameter value to get a meta factory
-                                for an Axiom implementation that supports DOM.
-                            </p></li><li class="listitem"><p>
-                                The <code class="classname">DocumentBuilderFactory</code> implementation provided by DOOM should no
-                                longer be instantiated directly. Instead, application code should request a meta factory for
-                                DOM (see previous item), cast it to <code class="classname">DOMMetaFactory</code> and invoke
-                                <code class="methodname">newDocumentBuilderFactory</code> via that interface.
-                            </p></li></ul></div><div class="tip" title="Tip" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Tip"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Tip]" src="images/tip.png"></td><th align="left"></th></tr><tr><td align="left" valign="top"><p>
-                            The last two changes imply that <code class="literal">axiom-dom</code> should no longer be used as a
-                            compile time dependency, but only as a runtime dependency.
-                        </p></td></tr></table></div><p>
-                        Note that some of the superseded APIs may disappear in Axiom 1.3.
-                    </p></div><div class="section" title="Usage of Apache James Mime4J as MIME parser"><div class="titlepage"><div><div><h4 class="title"><a name="d0e1271"></a>Usage of Apache James Mime4J as MIME parser</h4></div></div></div><p>
-                        Starting with version 1.2.13, Axiom uses <a class="link" href="http://james.apache.org/mime4j/" target="_top">Apache
-                        James Mime4J</a> as MIME parser implementation instead of its own custom parser
-                        implementation. The public API as defined by the <code class="classname">Attachments</code> class
-                        remains unchanged, with the following exceptions:
-                    </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
-                                The <code class="methodname">getIncomingAttachmentsAsSingleStream</code> method is no longer
-                                supported.
-                            </p></li><li class="listitem"><p>
-                                The <code class="literal">fileThreshold</code> specified during the construction of the
-                                <code class="classname">Attachments</code> object is now interpreted relative to the size of the decoded
-                                content of the attachment instead of the size of the encoded content. Note that
-                                this only makes a difference if the attachment has a content transfer encoding other
-                                than <code class="literal">binary</code>.
-                            </p></li></ul></div><p>
-                        Several internal classes related to the old MIME parsing code have been removed, are
-                        no longer public or have been changed in an incompatible way:
-                    </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
-                                <code class="classname">MIMEBodyPartInputStream</code>
-                            </p></li><li class="listitem"><p>
-                                <code class="classname">BoundaryDelimitedStream</code>
-                            </p></li><li class="listitem"><p>
-                                <code class="classname">BoundaryPushbackInputStream</code>
-                            </p></li><li class="listitem"><p>
-                                <code class="classname">MultipartAttachmentStreams</code>
-                            </p></li><li class="listitem"><p>
-                                <code class="classname">PartFactory</code> and related classes
-                            </p></li></ul></div><p>
-                        Although these classes were public, they are not considered part of the public API.
-                        Application code that depends on these classes needs to be rewritten before upgrading
-                        to Axiom 1.2.13.
-                    </p><p>
-                        When upgrading to 1.2.13, projects that use Axiom's XOP/MTOM features must make sure
-                        that Apache James Mime4J is added to the dependencies. For projects that use Maven
-                        (or tools that support Maven repositories and metadata) this happens automatically.
-                        Projects that use other build tools must explicity add the <code class="filename">apache-mime4j-core</code>
-                        library to the list of dependencies.
-                    </p><p>
-                        Axiom uses Mime4J in strict mode. This means that some non conforming MIME messages
-                        that would have been processed successfully by previous Axiom versions may be rejected by
-                        Axiom 1.2.13. Please note that Axiom doesn't make any guarantees about its ability to process
-                        invalid messages.
-                    </p></div><div class="section" title="Support for MIME part streaming"><div class="titlepage"><div><div><h4 class="title"><a name="d0e1343"></a>Support for MIME part streaming</h4></div></div></div><p>
-                        Axiom 1.2.13 has support for MIME part streaming. Pre-existing APIs continue to work
-                        as documented, but there are some minor changes in behavior that may be visible to
-                        code that makes assumptions that are not covered by the API contract:
-                    </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
-                                The <code class="classname">DataHandler</code> instances returned by <code class="classname">Attachments</code>
-                                for MIME parts read from a stream now always implement <code class="classname">DataHandlerExt</code>, while
-                                in 1.2.12 this was only the case for parts buffered using temporary files. For memory buffered
-                                MIME parts, a call to <code class="methodname">purgeDataSource</code> has the effect of releasing the
-                                allocated memory.
-                            </p></li></ul></div></div></div><div class="section" title="Changes in Axiom 1.2.14"><div class="titlepage"><div><div><h3 class="title"><a name="changes-1.2.14"></a>Changes in Axiom 1.2.14</h3></div></div></div><div class="section" title="Upgrade of Woodstox"><div class="titlepage"><div><div><h4 class="title"><a name="d0e1367"></a>Upgrade of Woodstox</h4></div></div></div><p>
-                        Woodstox 3.2.x is no longer maintained. Starting with version 1.2.14, Axiom depends on Woodstox 4.1.x,
-                        although using 3.2.x (and 4.0.x) is still supported. This may have an impact on projects that use
-                        Maven, because the artifact ID used by Woodstox changed from <code class="literal">wstx-asl</code> to
-                        <code class="literal">woodstox-core-asl</code>. These projects may need to update their dependencies
-                        to avoid depending on two different versions of Woodstox.
-                    </p></div><div class="section" title="DOOM factories are now stateless"><div class="titlepage"><div><div><h4 class="title"><a name="d0e1378"></a>DOOM factories are now stateless</h4></div></div></div><p>
-                        In contrast to previous versions, the <code class="classname">OMFactory</code> implementations for DOOM are
-                        stateless in Axiom 1.2.14. This makes it easier to write application code that is portable between
-                        LLOM and DOOM (in the sense that code that is known to work with LLOM will usually work with DOOM without
-                        changes). However, this slightly changes the behavior of DOOM with respect to owner documents, which means that
-                        in some cases existing code written for DOOM may trigger <code class="literal">WRONG_DOCUMENT_ERR</code> exceptions
-                        if it uses the DOM API on a tree created or manipulated using the Axiom API.
-                    </p><p>
-                        For more information about the new semantics, refer to the Javadoc of <code class="classname">DOMMetaFactory</code>
-                        and to <a class="link" href="https://issues.apache.org/jira/browse/AXIOM-412" target="_top">AXIOM-412</a>.
-                    </p></div><div class="section" title="Removal of deprecated classes from core artifacts"><div class="titlepage"><div><div><h4 class="title"><a name="d0e1397"></a>Removal of deprecated classes from core artifacts</h4></div></div></div><p>
-                        Several deprecated classes have been moved to a new JAR file named <code class="filename">axiom-compat</code> and are
-                        no longer included in the core artifacts (<code class="filename">axiom-api</code>, <code class="filename">axiom-impl</code>
-                        and <code class="filename">axiom-dom</code>). If you rely on these deprecated classes or get <code class="classname">NoClassDefFoundError</code>s
-                        after upgrading to Axiom 1.2.14, then you need to add this new JAR to your project's dependencies.
-                    </p></div></div><div class="section" title="Changes in Axiom 1.2.15"><div class="titlepage"><div><div><h3 class="title"><a name="changes-1.2.15"></a>Changes in Axiom 1.2.15</h3></div></div></div><div class="section" title="Removal of the JavaMail dependency"><div class="titlepage"><div><div><h4 class="title"><a name="d0e1420"></a>Removal of the JavaMail dependency</h4></div></div></div><p>
-                        Axiom 1.2.15 no longer uses JavaMail and the corresponding dependency has
-                        been removed. If your project relies on Axiom to introduce JavaMail as a
-                        transitive dependency, you need to update your build.
-                    </p></div><div class="section" title="Serialization changes"><div class="titlepage"><div><div><h4 class="title"><a name="d0e1425"></a>Serialization changes</h4></div></div></div><p>
-                        In previous Axiom versions, the <code class="methodname">serialize</code> and <code class="methodname">serializeAndConsume</code>
-                        methods skipped empty SOAP <code class="sgmltag-element">Header</code> elements. On the other hand, such elements would still
-                        appear in the representations produced by <code class="methodname">getXMLStreamReader</code> and
-                        <code class="methodname">getSAXSource</code>.
-                        For consistency, starting with Axiom 1.2.15, SOAP <code class="sgmltag-element">Header</code> elements are always serialized.
-                        This may change the output of existing code, especially code that uses the <code class="methodname">getDefaultEnvelope()</code>
-                        defined by <code class="classname">SOAPFactory</code>.
-                        However, it is expected that this will not break anything because empty SOAP <code class="sgmltag-element">Header</code> elements
-                        should be ignored by the receiver.
-                    </p><p>
-                        To avoid producing empty <code class="sgmltag-element">Header</code> elements, projects should switch from using
-                        <code class="methodname">getDefaultEnvelope()</code> (in <code class="classname">SOAPFactory</code>)
-                        and <code class="methodname">getHeader()</code> (in <code class="classname">SOAPEnvelope</code>)
-                        to using <code class="methodname">createDefaultSOAPMessage()</code> and <code class="methodname">getOrCreateHeader()</code>.
-                    </p><p>
-                        For more information, see <a class="link" href="https://issues.apache.org/jira/browse/AXIOM-430" target="_top">AXIOM-430</a>.
-                    </p></div><div class="section" title="Introduction of AspectJ"><div class="titlepage"><div><div><h4 class="title"><a name="d0e1485"></a>Introduction of AspectJ</h4></div></div></div><p>
-                        The implementation JARs (<code class="filename">axiom-impl</code> and <code class="filename">axiom-dom</code>) are now built with
-                        <a class="link" href="https://eclipse.org/aspectj/" target="_top">AspectJ</a> (to reduce source code duplication) and contain a
-                        small subset of classes from the AspectJ runtime library. There is a small risk that this may cause conflicts with
-                        other code that uses AspectJ.
-                    </p></div></div></div><div class="footnotes"><br><hr width="100" align="left"><div class="footnote"><p><sup>[<a id="ftn.d0e854" href="#d0e854" class="para">1</a>] </sup>See
+            </p></div><div class="footnotes"><br><hr width="100" align="left"><div class="footnote"><p><sup>[<a id="ftn.d0e843" href="#d0e843" class="para">1</a>] </sup>See
                         <a class="link" href="http://jira.codehaus.org/browse/WSTX-94" target="_top">WSTX-94</a> for a discussion
                         about this.</p></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch03.html">Prev</a>&nbsp;</td><td width="20%" align="center">&nbsp;</td><td width="40%" align="right">&nbsp;<a accesskey="n" href="ch05.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter&nbsp;3.&nbsp;Advanced Operations with Axiom&nbsp;</td><td width="20%" align="center"><a accesskey="h" href="userguide.html">Home</a></td><td width="40%" align="right" valign="top">&nbsp;Chapter&nbsp;5.&nbsp;Common mistakes, problems and anti-patterns</td></tr></table></div></body></html>
\ No newline at end of file

Modified: webservices/website/axiom-staging/userguide/ch05.html
URL: http://svn.apache.org/viewvc/webservices/website/axiom-staging/userguide/ch05.html?rev=1731437&r1=1731436&r2=1731437&view=diff
==============================================================================
--- webservices/website/axiom-staging/userguide/ch05.html (original)
+++ webservices/website/axiom-staging/userguide/ch05.html Sat Feb 20 18:30:02 2016
@@ -4,10 +4,10 @@
               window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new Date;
               ga('create', 'UA-56790914-3', {'cookieDomain': 'ws.apache.org', 'cookiePath': '/axiom' });
               ga('send', 'pageview');
-            </script></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter&nbsp;5.&nbsp;Common mistakes, problems and anti-patterns</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch04.html">Prev</a>&nbsp;</td><th width="60%" align="center">&nbsp;</th><td width="20%" align="right">&nbsp;<a accesskey="n" href="ch06.html">Next</a></td></tr></table><hr></div><div class="chapter" title="Chapter&nbsp;5.&nbsp;Common mistakes, problems and anti-patterns"><div class="titlepage"><div><div><h2 class="title"><a name="d0e1499"></a>Chapter&nbsp;5.&nbsp;Common mistakes, problems and anti-patterns</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="section"><a href="ch05.html#d0e1504">Violating the <code class="classname">javax.activation.DataSource</code> contract</a></span></dt><dt><span class=
 "section"><a href="ch05.html#d0e1574">Issues that <span class="quote">&#8220;<span class="quote">magically</span>&#8221;</span> disappear</a></span></dt><dt><span class="section"><a href="ch05.html#d0e1616">The OM-inside-OMDataSource anti-pattern</a></span></dt><dd><dl><dt><span class="section"><a href="ch05.html#d0e1619">Weak version</a></span></dt><dt><span class="section"><a href="ch05.html#d0e1758">Strong version</a></span></dt></dl></dd></dl></div><p>
+            </script></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter&nbsp;5.&nbsp;Common mistakes, problems and anti-patterns</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch04.html">Prev</a>&nbsp;</td><th width="60%" align="center">&nbsp;</th><td width="20%" align="right">&nbsp;<a accesskey="n" href="ch06.html">Next</a></td></tr></table><hr></div><div class="chapter" title="Chapter&nbsp;5.&nbsp;Common mistakes, problems and anti-patterns"><div class="titlepage"><div><div><h2 class="title"><a name="d0e894"></a>Chapter&nbsp;5.&nbsp;Common mistakes, problems and anti-patterns</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="section"><a href="ch05.html#d0e899">Violating the <code class="classname">javax.activation.DataSource</code> contract</a></span></dt><dt><span class="s
 ection"><a href="ch05.html#d0e969">Issues that <span class="quote">&#8220;<span class="quote">magically</span>&#8221;</span> disappear</a></span></dt><dt><span class="section"><a href="ch05.html#d0e1011">The OM-inside-OMDataSource anti-pattern</a></span></dt><dd><dl><dt><span class="section"><a href="ch05.html#d0e1014">Weak version</a></span></dt><dt><span class="section"><a href="ch05.html#d0e1153">Strong version</a></span></dt></dl></dd></dl></div><p>
             This chapter presents some of the common mistakes and problems people face when writing code
             using Axiom, as well as anti-patterns that should be avoided.
-        </p><div class="section" title="Violating the javax.activation.DataSource contract"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="d0e1504"></a>Violating the <code class="classname">javax.activation.DataSource</code> contract</h2></div></div></div><p>
+        </p><div class="section" title="Violating the javax.activation.DataSource contract"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="d0e899"></a>Violating the <code class="classname">javax.activation.DataSource</code> contract</h2></div></div></div><p>
                 When working with binary (base64) content, it is sometimes necessary to write a
                 custom <code class="classname">DataSource</code> implementation to wrap binary data that is
                 available in a different form (and for which Axiom or the Java Activation Framework
@@ -29,7 +29,7 @@
 public InputStream getInputStream() throws IOException;</pre><p>
                 A common mistake is to implement the data source in a way that makes
                 <code class="methodname">getInputStream</code> <span class="quote">&#8220;<span class="quote">destructive</span>&#8221;</span>. Consider
-                the implementation shown in <a class="xref" href="ch05.html#InputStreamDataSource" title="Example&nbsp;5.1.&nbsp;DataSource implementation that violates the interface contract">Example&nbsp;5.1, &#8220;<code class="classname">DataSource</code> implementation that violates the interface contract&#8221;</a><sup>[<a name="d0e1540" href="#ftn.d0e1540" class="footnote">2</a>]</sup>.
+                the implementation shown in <a class="xref" href="ch05.html#InputStreamDataSource" title="Example&nbsp;5.1.&nbsp;DataSource implementation that violates the interface contract">Example&nbsp;5.1, &#8220;<code class="classname">DataSource</code> implementation that violates the interface contract&#8221;</a><sup>[<a name="d0e935" href="#ftn.d0e935" class="footnote">2</a>]</sup>.
                 It is clear that this data source can only be read once and that any subsequent call to
                 <code class="methodname">getInputStream</code> will return an already closed input stream.
             </p><div class="example"><a name="InputStreamDataSource"></a><p class="title"><b>Example&nbsp;5.1.&nbsp;<code class="classname">DataSource</code> implementation that violates the interface contract</b></p><div class="example-contents"><pre class="programlisting">public class InputStreamDataSource implements DataSource {
@@ -62,7 +62,7 @@ public InputStream getInputStream() thro
                 <code class="classname">DataSource</code> implementation will cause problems that may
                 be extremely hard to debug.
             </p><p>
-                Imagine for example<sup>[<a name="d0e1564" href="#ftn.d0e1564" class="footnote">3</a>]</sup>
+                Imagine for example<sup>[<a name="d0e959" href="#ftn.d0e959" class="footnote">3</a>]</sup>
                 that the implementation shown above is used to produce an
                 MTOM message. At first this will work without any problems because the data
                 source is read only once when serializing the message. If later on the MTOM
@@ -71,9 +71,9 @@ public InputStream getInputStream() thro
                 I/O error because Axiom attempts to read from an already closed stream.
                 The reason for this is that when an MTOM threshold is set, Axiom reads the data
                 source twice: once to determine if its size exceeds the
-                threshold<sup>[<a name="d0e1570" href="#ftn.d0e1570" class="footnote">4</a>]</sup> and once during
+                threshold<sup>[<a name="d0e965" href="#ftn.d0e965" class="footnote">4</a>]</sup> and once during
                 serialization of the message.
-            </p></div><div class="section" title="Issues that &#8220;magically&#8221; disappear"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="d0e1574"></a>Issues that <span class="quote">&#8220;<span class="quote">magically</span>&#8221;</span> disappear</h2></div></div></div><p>
+            </p></div><div class="section" title="Issues that &#8220;magically&#8221; disappear"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="d0e969"></a>Issues that <span class="quote">&#8220;<span class="quote">magically</span>&#8221;</span> disappear</h2></div></div></div><p>
                 Quite frequently users post messages on the Axiom related mailing lists about
                 issues that seem to disappear by <span class="quote">&#8220;<span class="quote">magic</span>&#8221;</span> when they try to debug
                 them. The reason why this can happen is simple. As explained earlier, Axiom uses
@@ -100,7 +100,7 @@ public InputStream getInputStream() thro
                 method on that object. This means that by just clicking on something in the
                 <span class="quote">&#8220;<span class="quote">Variables</span>&#8221;</span> window of your debugger, you may completely change the
                 state of the process that is being debugged!
-            </p></div><div class="section" title="The OM-inside-OMDataSource anti-pattern"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="d0e1616"></a>The OM-inside-OMDataSource anti-pattern</h2></div></div></div><div class="section" title="Weak version"><div class="titlepage"><div><div><h3 class="title"><a name="d0e1619"></a>Weak version</h3></div></div></div><p>
+            </p></div><div class="section" title="The OM-inside-OMDataSource anti-pattern"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="d0e1011"></a>The OM-inside-OMDataSource anti-pattern</h2></div></div></div><div class="section" title="Weak version"><div class="titlepage"><div><div><h3 class="title"><a name="d0e1014"></a>Weak version</h3></div></div></div><p>
                     <code class="classname">OMDataSource</code> objects are used in conjunction with
                     <code class="classname">OMSourcedElement</code> to build Axiom object model instances
                     that contain information items that are represented using a framework or API
@@ -108,7 +108,7 @@ public InputStream getInputStream() thro
                     <code class="classname">OMDataSource</code> and adding it to the Axiom object model
                     using an <code class="classname">OMSourcedElement</code> in most cases avoids the
                     conversion of the data to the <span class="quote">&#8220;<span class="quote">native</span>&#8221;</span> Axiom object
-                    model<sup>[<a name="d0e1642" href="#ftn.d0e1642" class="footnote">5</a>]</sup>. 
+                    model<sup>[<a name="d0e1037" href="#ftn.d0e1037" class="footnote">5</a>]</sup>. 
                     The <code class="classname">OMDataSource</code> contract requires the implementation
                     to support two different ways of providing the data, both relying on StAX:
                 </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
@@ -133,7 +133,7 @@ public InputStream getInputStream() thro
                     implementations simply built an Axiom tree and returned the
                     <code class="classname">XMLStreamReader</code> provided by
                     <code class="methodname">OMElement#getXMLStreamReader()</code>. For example, older versions of ADB
-                    (Axis2 Data Binding) used the following code<sup>[<a name="d0e1696" href="#ftn.d0e1696" class="footnote">6</a>]</sup>:
+                    (Axis2 Data Binding) used the following code<sup>[<a name="d0e1091" href="#ftn.d0e1091" class="footnote">6</a>]</sup>:
                 </p><div class="example"><a name="adb-getReader"></a><p class="title"><b>Example&nbsp;5.2.&nbsp;<code class="methodname">OMDataSource#getReader()</code> implementation used in older ADB versions</b></p><div class="example-contents"><pre class="programlisting">public XMLStreamReader getReader() throws XMLStreamException {
     MTOMAwareOMBuilder mtomAwareOMBuilder = new MTOMAwareOMBuilder();
     serialize(mtomAwareOMBuilder);
@@ -159,7 +159,7 @@ public InputStream getInputStream() thro
                     that such an <code class="classname">OMSourcedElement</code> will be expanded instantly, and that deferred building of
                     the descendants is not applicable. Nevertheless, this approach is significantly more efficient
                     than using the OM-inside-OMDataSource anti-pattern.
-                </p></div><div class="section" title="Strong version"><div class="titlepage"><div><div><h3 class="title"><a name="d0e1758"></a>Strong version</h3></div></div></div><p>
+                </p></div><div class="section" title="Strong version"><div class="titlepage"><div><div><h3 class="title"><a name="d0e1153"></a>Strong version</h3></div></div></div><p>
                     There is also a stronger version of the anti-pattern which consists in
                     implementing the <code class="methodname">serialize</code> method by building an Axiom tree
                     and then serializing the tree to the <code class="classname">XMLStreamWriter</code>.
@@ -180,7 +180,7 @@ public InputStream getInputStream() thro
                             There is thus no need to build an intermediary object model in this case.
                         </p></li><li class="listitem"><p>
                             The <code class="methodname">getReader</code> method also uses an intermediary
-                            Axiom tree<sup>[<a name="d0e1803" href="#ftn.d0e1803" class="footnote">7</a>]</sup>.
+                            Axiom tree<sup>[<a name="d0e1198" href="#ftn.d0e1198" class="footnote">7</a>]</sup>.
                             In that case it doesn't make sense to use an <code class="classname">OMSourcedElement</code>
                             in the first place! At least it doesn't make sense if one assumes that
                             in general the <code class="classname">OMSourcedElement</code> will either be
@@ -197,13 +197,13 @@ public InputStream getInputStream() thro
                             <code class="classname">XMLStreamWriter</code>.
                         </p></li></ol></div><p>
                     QED
-                </p></div></div><div class="footnotes"><br><hr width="100" align="left"><div class="footnote"><p><sup>[<a id="ftn.d0e1540" href="#d0e1540" class="para">2</a>] </sup>The example
+                </p></div></div><div class="footnotes"><br><hr width="100" align="left"><div class="footnote"><p><sup>[<a id="ftn.d0e935" href="#d0e935" class="para">2</a>] </sup>The example
                 shown is actually a simplified version of code that is 
-                <a class="link" href="http://svn.apache.org/repos/asf/axis/axis2/java/core/tags/v1.5/modules/kernel/src/org/apache/axis2/builder/unknowncontent/InputStreamDataSource.java" target="_top">part of Axis2 1.5</a>.</p></div><div class="footnote"><p><sup>[<a id="ftn.d0e1564" href="#d0e1564" class="para">3</a>] </sup>For another example, see
-                <a class="link" href="http://markmail.org/thread/omx7umk5fnpb6dnc" target="_top">http://markmail.org/thread/omx7umk5fnpb6dnc</a>.</p></div><div class="footnote"><p><sup>[<a id="ftn.d0e1570" href="#d0e1570" class="para">4</a>] </sup>To do this, Axiom doesn't read the entire data source,
-                but only reads up to the threshold.</p></div><div class="footnote"><p><sup>[<a id="ftn.d0e1642" href="#d0e1642" class="para">5</a>] </sup>An exception is when code tries to access the children
+                <a class="link" href="http://svn.apache.org/repos/asf/axis/axis2/java/core/tags/v1.5/modules/kernel/src/org/apache/axis2/builder/unknowncontent/InputStreamDataSource.java" target="_top">part of Axis2 1.5</a>.</p></div><div class="footnote"><p><sup>[<a id="ftn.d0e959" href="#d0e959" class="para">3</a>] </sup>For another example, see
+                <a class="link" href="http://markmail.org/thread/omx7umk5fnpb6dnc" target="_top">http://markmail.org/thread/omx7umk5fnpb6dnc</a>.</p></div><div class="footnote"><p><sup>[<a id="ftn.d0e965" href="#d0e965" class="para">4</a>] </sup>To do this, Axiom doesn't read the entire data source,
+                but only reads up to the threshold.</p></div><div class="footnote"><p><sup>[<a id="ftn.d0e1037" href="#d0e1037" class="para">5</a>] </sup>An exception is when code tries to access the children
                     of the <code class="classname">OMSourcedElement</code>. In this case, the
                     <code class="classname">OMSourcedElement</code> will be <em class="firstterm">expanded</em>,
-                    i.e. the data will be converted to the native Axiom object model.</p></div><div class="footnote"><p><sup>[<a id="ftn.d0e1696" href="#d0e1696" class="para">6</a>] </sup>For the complete
-                    code, see <a class="link" href="http://svn.apache.org/repos/asf/axis/axis2/java/core/tags/v1.5/modules/adb/src/org/apache/axis2/databinding/ADBDataSource.java" target="_top">http://svn.apache.org/repos/asf/axis/axis2/java/core/tags/v1.5/modules/adb/src/org/apache/axis2/databinding/ADBDataSource.java</a>.</p></div><div class="footnote"><p><sup>[<a id="ftn.d0e1803" href="#d0e1803" class="para">7</a>] </sup>See e.g.
+                    i.e. the data will be converted to the native Axiom object model.</p></div><div class="footnote"><p><sup>[<a id="ftn.d0e1091" href="#d0e1091" class="para">6</a>] </sup>For the complete
+                    code, see <a class="link" href="http://svn.apache.org/repos/asf/axis/axis2/java/core/tags/v1.5/modules/adb/src/org/apache/axis2/databinding/ADBDataSource.java" target="_top">http://svn.apache.org/repos/asf/axis/axis2/java/core/tags/v1.5/modules/adb/src/org/apache/axis2/databinding/ADBDataSource.java</a>.</p></div><div class="footnote"><p><sup>[<a id="ftn.d0e1198" href="#d0e1198" class="para">7</a>] </sup>See e.g.
                             <a class="link" href="http://svn.apache.org/repos/asf/axis/axis2/java/core/tags/v1.5/modules/kernel/src/org/apache/axis2/builder/unknowncontent/UnknownContentOMDataSource.java" target="_top">http://svn.apache.org/repos/asf/axis/axis2/java/core/tags/v1.5/modules/kernel/src/org/apache/axis2/builder/unknowncontent/UnknownContentOMDataSource.java</a>.</p></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch04.html">Prev</a>&nbsp;</td><td width="20%" align="center">&nbsp;</td><td width="40%" align="right">&nbsp;<a accesskey="n" href="ch06.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter&nbsp;4.&nbsp;Integrating Axiom into your project&nbsp;</td><td width="20%" align="center"><a accesskey="h" href="userguide.html">Home</a></td><td width="40%" align="right" valign="top">&nbsp;Chapter&nbsp;6.&nbsp;Appendix</td></tr></table></div></body></
 html>
\ No newline at end of file

Modified: webservices/website/axiom-staging/userguide/ch06.html
URL: http://svn.apache.org/viewvc/webservices/website/axiom-staging/userguide/ch06.html?rev=1731437&r1=1731436&r2=1731437&view=diff
==============================================================================
--- webservices/website/axiom-staging/userguide/ch06.html (original)
+++ webservices/website/axiom-staging/userguide/ch06.html Sat Feb 20 18:30:02 2016
@@ -4,7 +4,7 @@
               window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new Date;
               ga('create', 'UA-56790914-3', {'cookieDomain': 'ws.apache.org', 'cookiePath': '/axiom' });
               ga('send', 'pageview');
-            </script></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter&nbsp;6.&nbsp;Appendix</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch05.html">Prev</a>&nbsp;</td><th width="60%" align="center">&nbsp;</th><td width="20%" align="right">&nbsp;<a accesskey="n" href="bi01.html">Next</a></td></tr></table><hr></div><div class="chapter" title="Chapter&nbsp;6.&nbsp;Appendix"><div class="titlepage"><div><div><h2 class="title"><a name="appendix"></a>Chapter&nbsp;6.&nbsp;Appendix</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="section"><a href="ch06.html#d0e1837">Program Listing for Build and Serialize</a></span></dt><dt><span class="section"><a href="ch06.html#links">Links</a></span></dt></dl></div><div class="section" title="Program Listing for Build and Serialize"><div clas
 s="titlepage"><div><div><h2 class="title" style="clear: both"><a name="d0e1837"></a>Program Listing for Build and Serialize</h2></div></div></div><pre class="programlisting">import org.apache.axiom.om.OMElement;
+            </script></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter&nbsp;6.&nbsp;Appendix</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch05.html">Prev</a>&nbsp;</td><th width="60%" align="center">&nbsp;</th><td width="20%" align="right">&nbsp;<a accesskey="n" href="bi01.html">Next</a></td></tr></table><hr></div><div class="chapter" title="Chapter&nbsp;6.&nbsp;Appendix"><div class="titlepage"><div><div><h2 class="title"><a name="appendix"></a>Chapter&nbsp;6.&nbsp;Appendix</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="section"><a href="ch06.html#d0e1232">Program Listing for Build and Serialize</a></span></dt><dt><span class="section"><a href="ch06.html#links">Links</a></span></dt></dl></div><div class="section" title="Program Listing for Build and Serialize"><div clas
 s="titlepage"><div><div><h2 class="title" style="clear: both"><a name="d0e1232"></a>Program Listing for Build and Serialize</h2></div></div></div><pre class="programlisting">import org.apache.axiom.om.OMElement;
 import org.apache.axiom.om.OMXMLBuilderFactory;
 import org.apache.axiom.om.OMXMLParserWrapper;
 

Modified: webservices/website/axiom-staging/userguide/userguide.html
URL: http://svn.apache.org/viewvc/webservices/website/axiom-staging/userguide/userguide.html?rev=1731437&r1=1731436&r2=1731437&view=diff
==============================================================================
--- webservices/website/axiom-staging/userguide/userguide.html (original)
+++ webservices/website/axiom-staging/userguide/userguide.html Sat Feb 20 18:30:02 2016
@@ -4,7 +4,7 @@
               window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new Date;
               ga('create', 'UA-56790914-3', {'cookieDomain': 'ws.apache.org', 'cookiePath': '/axiom' });
               ga('send', 'pageview');
-            </script></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Axiom User Guide</th></tr><tr><td width="20%" align="left">&nbsp;</td><th width="60%" align="center">&nbsp;</th><td width="20%" align="right">&nbsp;<a accesskey="n" href="ch01.html">Next</a></td></tr></table><hr></div><div class="book" title="Axiom User Guide"><div class="titlepage"><div><div><h1 class="title"><a name="d0e2"></a>Axiom User Guide</h1></div><div><p class="releaseinfo">1.2.17
+            </script></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Axiom User Guide</th></tr><tr><td width="20%" align="left">&nbsp;</td><th width="60%" align="center">&nbsp;</th><td width="20%" align="right">&nbsp;<a accesskey="n" href="ch01.html">Next</a></td></tr></table><hr></div><div class="book" title="Axiom User Guide"><div class="titlepage"><div><div><h1 class="title"><a name="d0e2"></a>Axiom User Guide</h1></div><div><p class="releaseinfo">1.2.18
         </p></div><div><div class="legalnotice" title="Legal Notice"><a name="d0e8"></a><p>
                 Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See
                 the NOTICE file distributed with this work for additional information regarding copyright ownership. The
@@ -17,4 +17,4 @@
                 distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
                 implied. See the License for the specific language governing permissions and limitations under the
                 License.
-            </p></div></div></div><hr></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="chapter"><a href="ch01.html">1. Introduction</a></span></dt><dd><dl><dt><span class="section"><a href="ch01.html#d0e21">What is Axiom?</a></span></dt><dt><span class="section"><a href="ch01.html#d0e35">For whom is this Tutorial?</a></span></dt><dt><span class="section"><a href="ch01.html#d0e48">What is Pull Parsing?</a></span></dt><dt><span class="section"><a href="ch01.html#d0e62">A Bit of History</a></span></dt><dt><span class="section"><a href="ch01.html#d0e76">Features of Axiom</a></span></dt><dt><span class="section"><a href="ch01.html#d0e111">Relation with StAX</a></span></dt><dt><span class="section"><a href="ch01.html#d0e128">A Bit About Caching</a></span></dt><dt><span class="section"><a href="ch01.html#d0e135">Where Does SOAP Come into Play?</a></span></dt></dl></dd><dt><span class="chapter"><a href="ch02.html">2. Working with Axiom</a></span></dt><dd><dl><dt><s
 pan class="section"><a href="ch02.html#d0e146">Obtaining the Axiom Binary</a></span></dt><dt><span class="section"><a href="ch02.html#d0e183">Creating an object model programmatically</a></span></dt><dt><span class="section"><a href="ch02.html#d0e257">Creating an object model by parsing an XML document</a></span></dt><dt><span class="section"><a href="ch02.html#d0e325">Namespaces</a></span></dt><dt><span class="section"><a href="ch02.html#d0e367">Traversing</a></span></dt><dt><span class="section"><a href="ch02.html#serializer">Serializer</a></span></dt><dt><span class="section"><a href="ch02.html#d0e477">Complete Code for the Axiom based Document Building and Serialization</a></span></dt><dt><span class="section"><a href="ch02.html#StAXUtils">Creating stream readers and writers using <code class="classname">StAXUtils</code></a></span></dt><dt><span class="section"><a href="ch02.html#d0e580">Releasing the parser</a></span></dt><dt><span class="section"><a href="ch02.html#d0e608">Exc
 eption handling</a></span></dt></dl></dd><dt><span class="chapter"><a href="ch03.html">3. Advanced Operations with Axiom</a></span></dt><dd><dl><dt><span class="section"><a href="ch03.html#d0e672">Accessing the Pull Parser</a></span></dt></dl></dd><dt><span class="chapter"><a href="ch04.html">4. Integrating Axiom into your project</a></span></dt><dd><dl><dt><span class="section"><a href="ch04.html#using-maven2">Using Axiom in a Maven 2 project</a></span></dt><dd><dl><dt><span class="section"><a href="ch04.html#d0e706">Adding Axiom as a dependency</a></span></dt><dt><span class="section"><a href="ch04.html#d0e732">Managing the JAF and JavaMail dependencies</a></span></dt></dl></dd><dt><span class="section"><a href="ch04.html#d0e766">Applying application wide configuration</a></span></dt><dd><dl><dt><span class="section"><a href="ch04.html#factory.properties">Changing the default StAX factory settings</a></span></dt></dl></dd><dt><span class="section"><a href="ch04.html#d0e900">Migrat
 ing from older Axiom versions</a></span></dt><dd><dl><dt><span class="section"><a href="ch04.html#d0e905">Changes in Axiom 1.2.9</a></span></dt><dt><span class="section"><a href="ch04.html#changes-1.2.11">Changes in Axiom 1.2.11</a></span></dt><dt><span class="section"><a href="ch04.html#changes-1.2.13">Changes in Axiom 1.2.13</a></span></dt><dt><span class="section"><a href="ch04.html#changes-1.2.14">Changes in Axiom 1.2.14</a></span></dt><dt><span class="section"><a href="ch04.html#changes-1.2.15">Changes in Axiom 1.2.15</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="ch05.html">5. Common mistakes, problems and anti-patterns</a></span></dt><dd><dl><dt><span class="section"><a href="ch05.html#d0e1504">Violating the <code class="classname">javax.activation.DataSource</code> contract</a></span></dt><dt><span class="section"><a href="ch05.html#d0e1574">Issues that <span class="quote">&#8220;<span class="quote">magically</span>&#8221;</span> disappear</a></span></
 dt><dt><span class="section"><a href="ch05.html#d0e1616">The OM-inside-OMDataSource anti-pattern</a></span></dt><dd><dl><dt><span class="section"><a href="ch05.html#d0e1619">Weak version</a></span></dt><dt><span class="section"><a href="ch05.html#d0e1758">Strong version</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="ch06.html">6. Appendix</a></span></dt><dd><dl><dt><span class="section"><a href="ch06.html#d0e1837">Program Listing for Build and Serialize</a></span></dt><dt><span class="section"><a href="ch06.html#links">Links</a></span></dt></dl></dd><dt><span class="bibliography"><a href="bi01.html">References</a></span></dt></dl></div><div class="list-of-figures"><p><b>List of Figures</b></p><dl><dt>1.1. <a href="ch01.html#d0e105">Architecture overview</a></dt><dt>2.1. <a href="ch02.html#fig_api">The Axiom API with different implementations</a></dt></dl></div><div class="list-of-examples"><p><b>List of Examples</b></p><dl><dt>2.1. <a href="ch02.html#list2">Cr
 eating an object model programmatically</a></dt><dt>2.2. <a href="ch02.html#ex-addChild">Usage of <code class="methodname">addChild</code></a></dt><dt>2.3. <a href="ch02.html#list1">Creating an object model from an input stream</a></dt><dt>2.4. <a href="ch02.html#list6">Creating an OM document with namespaces</a></dt><dt>5.1. <a href="ch05.html#InputStreamDataSource"><code class="classname">DataSource</code> implementation that violates the interface contract</a></dt><dt>5.2. <a href="ch05.html#adb-getReader"><code class="methodname">OMDataSource#getReader()</code> implementation used in older ADB versions</a></dt></dl></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left">&nbsp;</td><td width="20%" align="center">&nbsp;</td><td width="40%" align="right">&nbsp;<a accesskey="n" href="ch01.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">&nbsp;</td><td width="20%" align="center">&nbsp;</td><td width=
 "40%" align="right" valign="top">&nbsp;Chapter&nbsp;1.&nbsp;Introduction</td></tr></table></div></body></html>
\ No newline at end of file
+            </p></div></div></div><hr></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="chapter"><a href="ch01.html">1. Introduction</a></span></dt><dd><dl><dt><span class="section"><a href="ch01.html#d0e21">What is Axiom?</a></span></dt><dt><span class="section"><a href="ch01.html#d0e35">For whom is this Tutorial?</a></span></dt><dt><span class="section"><a href="ch01.html#d0e48">What is Pull Parsing?</a></span></dt><dt><span class="section"><a href="ch01.html#d0e62">A Bit of History</a></span></dt><dt><span class="section"><a href="ch01.html#d0e76">Features of Axiom</a></span></dt><dt><span class="section"><a href="ch01.html#d0e111">Relation with StAX</a></span></dt><dt><span class="section"><a href="ch01.html#d0e128">A Bit About Caching</a></span></dt><dt><span class="section"><a href="ch01.html#d0e135">Where Does SOAP Come into Play?</a></span></dt></dl></dd><dt><span class="chapter"><a href="ch02.html">2. Working with Axiom</a></span></dt><dd><dl><dt><s
 pan class="section"><a href="ch02.html#d0e146">Obtaining the Axiom Binary</a></span></dt><dt><span class="section"><a href="ch02.html#d0e183">Creating an object model programmatically</a></span></dt><dt><span class="section"><a href="ch02.html#d0e257">Creating an object model by parsing an XML document</a></span></dt><dt><span class="section"><a href="ch02.html#d0e325">Namespaces</a></span></dt><dt><span class="section"><a href="ch02.html#d0e367">Traversing</a></span></dt><dt><span class="section"><a href="ch02.html#serializer">Serializer</a></span></dt><dt><span class="section"><a href="ch02.html#d0e477">Complete Code for the Axiom based Document Building and Serialization</a></span></dt><dt><span class="section"><a href="ch02.html#StAXUtils">Creating stream readers and writers using <code class="classname">StAXUtils</code></a></span></dt><dt><span class="section"><a href="ch02.html#d0e580">Releasing the parser</a></span></dt><dt><span class="section"><a href="ch02.html#d0e608">Exc
 eption handling</a></span></dt></dl></dd><dt><span class="chapter"><a href="ch03.html">3. Advanced Operations with Axiom</a></span></dt><dd><dl><dt><span class="section"><a href="ch03.html#d0e672">Accessing the Pull Parser</a></span></dt></dl></dd><dt><span class="chapter"><a href="ch04.html">4. Integrating Axiom into your project</a></span></dt><dd><dl><dt><span class="section"><a href="ch04.html#using-maven2">Using Axiom in a Maven 2 project</a></span></dt><dd><dl><dt><span class="section"><a href="ch04.html#d0e706">Adding Axiom as a dependency</a></span></dt><dt><span class="section"><a href="ch04.html#d0e732">Managing the JAF dependency</a></span></dt></dl></dd><dt><span class="section"><a href="ch04.html#d0e755">Applying application wide configuration</a></span></dt><dd><dl><dt><span class="section"><a href="ch04.html#factory.properties">Changing the default StAX factory settings</a></span></dt></dl></dd><dt><span class="section"><a href="ch04.html#d0e889">Migrating from older 
 Axiom versions</a></span></dt></dl></dd><dt><span class="chapter"><a href="ch05.html">5. Common mistakes, problems and anti-patterns</a></span></dt><dd><dl><dt><span class="section"><a href="ch05.html#d0e899">Violating the <code class="classname">javax.activation.DataSource</code> contract</a></span></dt><dt><span class="section"><a href="ch05.html#d0e969">Issues that <span class="quote">&#8220;<span class="quote">magically</span>&#8221;</span> disappear</a></span></dt><dt><span class="section"><a href="ch05.html#d0e1011">The OM-inside-OMDataSource anti-pattern</a></span></dt><dd><dl><dt><span class="section"><a href="ch05.html#d0e1014">Weak version</a></span></dt><dt><span class="section"><a href="ch05.html#d0e1153">Strong version</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="ch06.html">6. Appendix</a></span></dt><dd><dl><dt><span class="section"><a href="ch06.html#d0e1232">Program Listing for Build and Serialize</a></span></dt><dt><span class="section"><a h
 ref="ch06.html#links">Links</a></span></dt></dl></dd><dt><span class="bibliography"><a href="bi01.html">References</a></span></dt></dl></div><div class="list-of-figures"><p><b>List of Figures</b></p><dl><dt>1.1. <a href="ch01.html#d0e105">Architecture overview</a></dt><dt>2.1. <a href="ch02.html#fig_api">The Axiom API with different implementations</a></dt></dl></div><div class="list-of-examples"><p><b>List of Examples</b></p><dl><dt>2.1. <a href="ch02.html#list2">Creating an object model programmatically</a></dt><dt>2.2. <a href="ch02.html#ex-addChild">Usage of <code class="methodname">addChild</code></a></dt><dt>2.3. <a href="ch02.html#list1">Creating an object model from an input stream</a></dt><dt>2.4. <a href="ch02.html#list6">Creating an OM document with namespaces</a></dt><dt>5.1. <a href="ch05.html#InputStreamDataSource"><code class="classname">DataSource</code> implementation that violates the interface contract</a></dt><dt>5.2. <a href="ch05.html#adb-getReader"><code class
 ="methodname">OMDataSource#getReader()</code> implementation used in older ADB versions</a></dt></dl></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left">&nbsp;</td><td width="20%" align="center">&nbsp;</td><td width="40%" align="right">&nbsp;<a accesskey="n" href="ch01.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">&nbsp;</td><td width="20%" align="center">&nbsp;</td><td width="40%" align="right" valign="top">&nbsp;Chapter&nbsp;1.&nbsp;Introduction</td></tr></table></div></body></html>
\ No newline at end of file