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 2015/06/10 20:09:07 UTC

svn commit: r1684727 [14/14] - in /webservices/website/axiom-staging: ./ apidocs/ apidocs/org/apache/axiom/attachments/ apidocs/org/apache/axiom/attachments/class-use/ apidocs/org/apache/axiom/attachments/impl/ apidocs/org/apache/axiom/attachments/impl...

Modified: webservices/website/axiom-staging/userguide/ch05.html
URL: http://svn.apache.org/viewvc/webservices/website/axiom-staging/userguide/ch05.html?rev=1684727&r1=1684726&r2=1684727&view=diff
==============================================================================
--- webservices/website/axiom-staging/userguide/ch05.html (original)
+++ webservices/website/axiom-staging/userguide/ch05.html Wed Jun 10 18:09:00 2015
@@ -1,9 +1,9 @@
 <html><head>
       <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-   <title>Chapter&nbsp;5.&nbsp;Common mistakes, problems and anti-patterns</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.76.1"><link rel="home" href="userguide.html" title="Axiom User Guide"><link rel="up" href="userguide.html" title="Axiom User Guide"><link rel="prev" href="ch04.html" title="Chapter&nbsp;4.&nbsp;Integrating Axiom into your project"><link rel="next" href="ch06.html" title="Chapter&nbsp;6.&nbsp;Appendix"></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.&nbs
 p;Common mistakes, problems and anti-patterns"><div class="titlepage"><div><div><h2 class="title"><a name="d0e1496"></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#d0e1501">Violating the <code class="classname">javax.activation.DataSource</code> contract</a></span></dt><dt><span class="section"><a href="ch05.html#d0e1571">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#d0e1613">The OM-inside-OMDataSource anti-pattern</a></span></dt><dd><dl><dt><span class="section"><a href="ch05.html#d0e1616">Weak version</a></span></dt><dt><span class="section"><a href="ch05.html#d0e1755">Strong version</a></span></dt></dl></dd></dl></div><p>
+   <title>Chapter&nbsp;5.&nbsp;Common mistakes, problems and anti-patterns</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.76.1"><link rel="home" href="userguide.html" title="Axiom User Guide"><link rel="up" href="userguide.html" title="Axiom User Guide"><link rel="prev" href="ch04.html" title="Chapter&nbsp;4.&nbsp;Integrating Axiom into your project"><link rel="next" href="ch06.html" title="Chapter&nbsp;6.&nbsp;Appendix"></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.&nbs
 p;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>
             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="d0e1501"></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="d0e1504"></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
@@ -25,7 +25,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="d0e1537" href="#ftn.d0e1537" 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="d0e1540" href="#ftn.d0e1540" 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 {
@@ -58,7 +58,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="d0e1561" href="#ftn.d0e1561" class="footnote">3</a>]</sup>
+                Imagine for example<sup>[<a name="d0e1564" href="#ftn.d0e1564" 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
@@ -67,9 +67,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="d0e1567" href="#ftn.d0e1567" class="footnote">4</a>]</sup> and once during
+                threshold<sup>[<a name="d0e1570" href="#ftn.d0e1570" 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="d0e1571"></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="d0e1574"></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
@@ -96,7 +96,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="d0e1613"></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="d0e1616"></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="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>
                     <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
@@ -104,7 +104,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="d0e1639" href="#ftn.d0e1639" class="footnote">5</a>]</sup>. 
+                    model<sup>[<a name="d0e1642" href="#ftn.d0e1642" 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>
@@ -129,7 +129,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="d0e1693" href="#ftn.d0e1693" class="footnote">6</a>]</sup>:
+                    (Axis2 Data Binding) used the following code<sup>[<a name="d0e1696" href="#ftn.d0e1696" 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);
@@ -155,7 +155,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="d0e1755"></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="d0e1758"></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>.
@@ -176,7 +176,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="d0e1800" href="#ftn.d0e1800" class="footnote">7</a>]</sup>.
+                            Axiom tree<sup>[<a name="d0e1803" href="#ftn.d0e1803" 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
@@ -193,13 +193,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.d0e1537" href="#d0e1537" 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.d0e1540" href="#d0e1540" 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.d0e1561" href="#d0e1561" 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.d0e1567" href="#d0e1567" 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.d0e1639" href="#d0e1639" 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.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
                     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.d0e1693" href="#d0e1693" 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.d0e1800" href="#d0e1800" 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.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.
                             <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=1684727&r1=1684726&r2=1684727&view=diff
==============================================================================
--- webservices/website/axiom-staging/userguide/ch06.html (original)
+++ webservices/website/axiom-staging/userguide/ch06.html Wed Jun 10 18:09:00 2015
@@ -1,6 +1,6 @@
 <html><head>
       <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-   <title>Chapter&nbsp;6.&nbsp;Appendix</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.76.1"><link rel="home" href="userguide.html" title="Axiom User Guide"><link rel="up" href="userguide.html" title="Axiom User Guide"><link rel="prev" href="ch05.html" title="Chapter&nbsp;5.&nbsp;Common mistakes, problems and anti-patterns"><link rel="next" href="bi01.html" title="References"></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#d0e1834">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 class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="d0e1834"></a>Program Listing for Build and Serialize</h2></div></div></div><pre class="programlisting">import org.apache.axiom.om.OMElement;
+   <title>Chapter&nbsp;6.&nbsp;Appendix</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.76.1"><link rel="home" href="userguide.html" title="Axiom User Guide"><link rel="up" href="userguide.html" title="Axiom User Guide"><link rel="prev" href="ch05.html" title="Chapter&nbsp;5.&nbsp;Common mistakes, problems and anti-patterns"><link rel="next" href="bi01.html" title="References"></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 class="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;
 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=1684727&r1=1684726&r2=1684727&view=diff
==============================================================================
--- webservices/website/axiom-staging/userguide/userguide.html (original)
+++ webservices/website/axiom-staging/userguide/userguide.html Wed Jun 10 18:09:00 2015
@@ -13,4 +13,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#d0e1501">Violating the <code class="classname">javax.activation.DataSource</code> contract</a></span></dt><dt><span class="section"><a href="ch05.html#d0e1571">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#d0e1613">The OM-inside-OMDataSource anti-pattern</a></span></dt><dd><dl><dt><span class="section"><a href="ch05.html#d0e1616">Weak version</a></span></dt><dt><span class="section"><a href="ch05.html#d0e1755">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#d0e1834">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 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