You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by bu...@apache.org on 2016/03/01 17:59:39 UTC

svn commit: r981495 - in /websites/staging/cayenne/trunk/content: ./ docs/4.0/tutorial-rop/

Author: buildbot
Date: Tue Mar  1 16:59:39 2016
New Revision: 981495

Log:
Staging update by buildbot for cayenne

Modified:
    websites/staging/cayenne/trunk/content/   (props changed)
    websites/staging/cayenne/trunk/content/docs/4.0/tutorial-rop/ch01.html
    websites/staging/cayenne/trunk/content/docs/4.0/tutorial-rop/ch02.html
    websites/staging/cayenne/trunk/content/docs/4.0/tutorial-rop/ch03.html
    websites/staging/cayenne/trunk/content/docs/4.0/tutorial-rop/ch04.html
    websites/staging/cayenne/trunk/content/docs/4.0/tutorial-rop/ch05.html
    websites/staging/cayenne/trunk/content/docs/4.0/tutorial-rop/getting-started-rop-part1.html
    websites/staging/cayenne/trunk/content/docs/4.0/tutorial-rop/getting-started-rop-part2.html
    websites/staging/cayenne/trunk/content/docs/4.0/tutorial-rop/index.html

Propchange: websites/staging/cayenne/trunk/content/
------------------------------------------------------------------------------
--- cms:source-revision (original)
+++ cms:source-revision Tue Mar  1 16:59:39 2016
@@ -1 +1 @@
-1732911
+1733104

Modified: websites/staging/cayenne/trunk/content/docs/4.0/tutorial-rop/ch01.html
==============================================================================
--- websites/staging/cayenne/trunk/content/docs/4.0/tutorial-rop/ch01.html (original)
+++ websites/staging/cayenne/trunk/content/docs/4.0/tutorial-rop/ch01.html Tue Mar  1 16:59:39 2016
@@ -9,7 +9,7 @@
     ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
     var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
   })();
-        </script></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div xmlns:d="http://docbook.org/ns/docbook" class="navheader"><table width="100%" summary="Navigation header"><tr><th class="versioninfo">v.4.0 (4.0.M3-SNAPSHOT)</th><th align="center">Chapter&nbsp;1.&nbsp;Prerequisites</th><th></th></tr><tr><td width="20%" align="left"><a accesskey="p" href="getting-started-rop-part1.html">Prev</a>&nbsp;</td><th width="60%" align="center"><a accesskey="u" href="getting-started-rop-part1.html">Part&nbsp;I.&nbsp;Prerequisites</a></th><td width="20%" align="right">&nbsp;<a accesskey="n" href="getting-started-rop-part2.html">Next</a></td></tr></table><hr></div><div class="chapter" title="Chapter&nbsp;1.&nbsp;Prerequisites"><div class="titlepage"><div><div><h2 class="title"><a name="d0e23"></a>Chapter&nbsp;1.&nbsp;Prerequisites</h2></div></div></div><p>This tutorial starts where "Getting Started with Cayenne" left
+        </script></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div xmlns:d="http://docbook.org/ns/docbook" class="navheader"><table width="100%" summary="Navigation header"><tr><th class="versioninfo">v.4.0 (4.0.M4-SNAPSHOT)</th><th align="center">Chapter&nbsp;1.&nbsp;Prerequisites</th><th></th></tr><tr><td width="20%" align="left"><a accesskey="p" href="getting-started-rop-part1.html">Prev</a>&nbsp;</td><th width="60%" align="center"><a accesskey="u" href="getting-started-rop-part1.html">Part&nbsp;I.&nbsp;Prerequisites</a></th><td width="20%" align="right">&nbsp;<a accesskey="n" href="getting-started-rop-part2.html">Next</a></td></tr></table><hr></div><div class="chapter" title="Chapter&nbsp;1.&nbsp;Prerequisites"><div class="titlepage"><div><div><h2 class="title"><a name="d0e23"></a>Chapter&nbsp;1.&nbsp;Prerequisites</h2></div></div></div><p>This tutorial starts where "Getting Started with Cayenne" left
         off. If you have gone through the previous tutorial, and have the "tutorial" project open in
         Eclipse, you can go directly to the 
         next step. If not, here are the compressed instructions to prepare you for work

Modified: websites/staging/cayenne/trunk/content/docs/4.0/tutorial-rop/ch02.html
==============================================================================
--- websites/staging/cayenne/trunk/content/docs/4.0/tutorial-rop/ch02.html (original)
+++ websites/staging/cayenne/trunk/content/docs/4.0/tutorial-rop/ch02.html Tue Mar  1 16:59:39 2016
@@ -9,7 +9,7 @@
     ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
     var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
   })();
-        </script></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div xmlns:d="http://docbook.org/ns/docbook" class="navheader"><table width="100%" summary="Navigation header"><tr><th class="versioninfo">v.4.0 (4.0.M3-SNAPSHOT)</th><th align="center">Chapter&nbsp;2.&nbsp;Starting Client Project</th><th></th></tr><tr><td width="20%" align="left"><a accesskey="p" href="getting-started-rop-part2.html">Prev</a>&nbsp;</td><th width="60%" align="center"><a accesskey="u" href="getting-started-rop-part2.html">Part&nbsp;II.&nbsp;Remote Object Persistence Quick Start</a></th><td width="20%" align="right">&nbsp;<a accesskey="n" href="ch03.html">Next</a></td></tr></table><hr></div><div class="chapter" title="Chapter&nbsp;2.&nbsp;Starting Client Project"><div class="titlepage"><div><div><h2 class="title"><a name="d0e51"></a>Chapter&nbsp;2.&nbsp;Starting Client Project</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span clas
 s="section"><a href="ch02.html#create-rop-client-project">Create an ROP Client Project in Eclipse</a></span></dt><dt><span class="section"><a href="ch02.html#create-client-java-classes">Create Client Java Classes</a></span></dt></dl></div><div class="section" title="Create an ROP Client Project in Eclipse"><div class="titlepage"><div><div><h2 class="title"><a name="create-rop-client-project"></a>Create an ROP Client Project in Eclipse</h2></div></div></div><p>Creation of a new Eclipse project has been discussed in some details in "Getting
+        </script></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div xmlns:d="http://docbook.org/ns/docbook" class="navheader"><table width="100%" summary="Navigation header"><tr><th class="versioninfo">v.4.0 (4.0.M4-SNAPSHOT)</th><th align="center">Chapter&nbsp;2.&nbsp;Starting Client Project</th><th></th></tr><tr><td width="20%" align="left"><a accesskey="p" href="getting-started-rop-part2.html">Prev</a>&nbsp;</td><th width="60%" align="center"><a accesskey="u" href="getting-started-rop-part2.html">Part&nbsp;II.&nbsp;Remote Object Persistence Quick Start</a></th><td width="20%" align="right">&nbsp;<a accesskey="n" href="ch03.html">Next</a></td></tr></table><hr></div><div class="chapter" title="Chapter&nbsp;2.&nbsp;Starting Client Project"><div class="titlepage"><div><div><h2 class="title"><a name="d0e51"></a>Chapter&nbsp;2.&nbsp;Starting Client Project</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span clas
 s="section"><a href="ch02.html#create-rop-client-project">Create an ROP Client Project in Eclipse</a></span></dt><dt><span class="section"><a href="ch02.html#create-client-java-classes">Create Client Java Classes</a></span></dt></dl></div><div class="section" title="Create an ROP Client Project in Eclipse"><div class="titlepage"><div><div><h2 class="title"><a name="create-rop-client-project"></a>Create an ROP Client Project in Eclipse</h2></div></div></div><p>Creation of a new Eclipse project has been discussed in some details in "Getting
             Started with Cayenne" guide, so we will omit the screenshots for the common
             parts.</p><p>In Eclipse select "File &gt; New &gt; Other..." and then "Maven &gt; Maven Project".
             Click "Next". On the following screen check "Create a simple project" checkbox and click
@@ -45,12 +45,12 @@
             &lt;groupId&gt;org.apache.cayenne&lt;/groupId&gt;
             &lt;artifactId&gt;cayenne-client&lt;/artifactId&gt;
             &lt;!-- Here specify the version of Cayenne you are actually using --&gt;
-            &lt;version&gt;3.1M3&lt;/version&gt;
+            &lt;version&gt;4.0.M3&lt;/version&gt;
         &lt;/dependency&gt;
         &lt;dependency&gt;
         &lt;groupId&gt;com.caucho&lt;/groupId&gt;
-            &lt;artifactId&gt;resin-hessian&lt;/artifactId&gt;
-            &lt;version&gt;3.1.6&lt;/version&gt;
+            &lt;artifactId&gt;hessian&lt;/artifactId&gt;
+            &lt;version&gt;4.0.38&lt;/version&gt;
         &lt;/dependency&gt;
     &lt;/dependencies&gt;
 

Modified: websites/staging/cayenne/trunk/content/docs/4.0/tutorial-rop/ch03.html
==============================================================================
--- websites/staging/cayenne/trunk/content/docs/4.0/tutorial-rop/ch03.html (original)
+++ websites/staging/cayenne/trunk/content/docs/4.0/tutorial-rop/ch03.html Tue Mar  1 16:59:39 2016
@@ -9,7 +9,7 @@
     ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
     var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
   })();
-        </script></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div xmlns:d="http://docbook.org/ns/docbook" class="navheader"><table width="100%" summary="Navigation header"><tr><th class="versioninfo">v.4.0 (4.0.M3-SNAPSHOT)</th><th align="center">Chapter&nbsp;3.&nbsp;Setting up Hessian Web Service</th><th></th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch02.html">Prev</a>&nbsp;</td><th width="60%" align="center"><a accesskey="u" href="getting-started-rop-part2.html">Part&nbsp;II.&nbsp;Remote Object Persistence Quick Start</a></th><td width="20%" align="right">&nbsp;<a accesskey="n" href="ch04.html">Next</a></td></tr></table><hr></div><div class="chapter" title="Chapter&nbsp;3.&nbsp;Setting up Hessian Web Service"><div class="titlepage"><div><div><h2 class="title"><a name="d0e110"></a>Chapter&nbsp;3.&nbsp;Setting up Hessian Web Service</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span cla
 ss="section"><a href="ch03.html#setting-up-dependencies">Setting up Dependencies</a></span></dt><dt><span class="section"><a href="ch03.html#client-classes-on-server">Client Classes on the Server</a></span></dt><dt><span class="section"><a href="ch03.html#configuring-web-xml">Configuring web.xml</a></span></dt><dt><span class="section"><a href="ch03.html#running-rop-server">Running ROP Server</a></span></dt></dl></div><div class="section" title="Setting up Dependencies"><div class="titlepage"><div><div><h2 class="title"><a name="setting-up-dependencies"></a>Setting up Dependencies</h2></div></div></div><p>Now lets get back to the "tutorial" project that contains a web application and set up
+        </script></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div xmlns:d="http://docbook.org/ns/docbook" class="navheader"><table width="100%" summary="Navigation header"><tr><th class="versioninfo">v.4.0 (4.0.M4-SNAPSHOT)</th><th align="center">Chapter&nbsp;3.&nbsp;Setting up Hessian Web Service</th><th></th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch02.html">Prev</a>&nbsp;</td><th width="60%" align="center"><a accesskey="u" href="getting-started-rop-part2.html">Part&nbsp;II.&nbsp;Remote Object Persistence Quick Start</a></th><td width="20%" align="right">&nbsp;<a accesskey="n" href="ch04.html">Next</a></td></tr></table><hr></div><div class="chapter" title="Chapter&nbsp;3.&nbsp;Setting up Hessian Web Service"><div class="titlepage"><div><div><h2 class="title"><a name="d0e110"></a>Chapter&nbsp;3.&nbsp;Setting up Hessian Web Service</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span cla
 ss="section"><a href="ch03.html#setting-up-dependencies">Setting up Dependencies</a></span></dt><dt><span class="section"><a href="ch03.html#client-classes-on-server">Client Classes on the Server</a></span></dt><dt><span class="section"><a href="ch03.html#configuring-web-xml">Configuring web.xml</a></span></dt><dt><span class="section"><a href="ch03.html#running-rop-server">Running ROP Server</a></span></dt></dl></div><div class="section" title="Setting up Dependencies"><div class="titlepage"><div><div><h2 class="title"><a name="setting-up-dependencies"></a>Setting up Dependencies</h2></div></div></div><p>Now lets get back to the "tutorial" project that contains a web application and set up
             dependencies. The only extra one that we don't have yet is resin-hessian.jar, just like
             the client, so let's add it (and the caucho repo declaration) to the pom.xml.</p><pre class="programlisting">&lt;project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"&gt;
@@ -18,8 +18,8 @@
         ...
         &lt;dependency&gt;
             &lt;groupId&gt;com.caucho&lt;/groupId&gt;
-            &lt;artifactId&gt;resin-hessian&lt;/artifactId&gt;
-            &lt;version&gt;3.1.6&lt;/version&gt;
+            &lt;artifactId&gt;hessian&lt;/artifactId&gt;
+            &lt;version&gt;4.0.38&lt;/version&gt;
         &lt;/dependency&gt;
     &lt;/dependencies&gt;
 
@@ -58,7 +58,7 @@
     &lt;display-name&gt;Cayenne Tutorial&lt;/display-name&gt;
     &lt;servlet&gt;
         &lt;servlet-name&gt;cayenne-project&lt;/servlet-name&gt;
-        &lt;servlet-class&gt;org.apache.cayenne.configuration.rop.server.ROPHessianServlet&lt;/servlet-class&gt;
+        &lt;servlet-class&gt;org.apache.cayenne.rop.ROPServlet&lt;/servlet-class&gt;
         &lt;load-on-startup&gt;0&lt;/load-on-startup&gt;
     &lt;/servlet&gt;
     &lt;servlet-mapping&gt;

Modified: websites/staging/cayenne/trunk/content/docs/4.0/tutorial-rop/ch04.html
==============================================================================
--- websites/staging/cayenne/trunk/content/docs/4.0/tutorial-rop/ch04.html (original)
+++ websites/staging/cayenne/trunk/content/docs/4.0/tutorial-rop/ch04.html Tue Mar  1 16:59:39 2016
@@ -9,7 +9,7 @@
     ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
     var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
   })();
-        </script></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div xmlns:d="http://docbook.org/ns/docbook" class="navheader"><table width="100%" summary="Navigation header"><tr><th class="versioninfo">v.4.0 (4.0.M3-SNAPSHOT)</th><th align="center">Chapter&nbsp;4.&nbsp;Porting Existing Code to Connect to a Web Service Instead of a Database</th><th></th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch03.html">Prev</a>&nbsp;</td><th width="60%" align="center"><a accesskey="u" href="getting-started-rop-part2.html">Part&nbsp;II.&nbsp;Remote Object Persistence Quick Start</a></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;Porting Existing Code to Connect to a Web Service Instead of a Database"><div class="titlepage"><div><div><h2 class="title"><a name="d0e157"></a>Chapter&nbsp;4.&nbsp;Porting Existing Code to Connect to 
 a Web Service Instead of a Database</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="section"><a href="ch04.html#starting-command-line-cliet">Starting Command Line Client</a></span></dt></dl></div><div class="section" title="Starting Command Line Client"><div class="titlepage"><div><div><h2 class="title"><a name="starting-command-line-cliet"></a>Starting Command Line Client</h2></div></div></div><p>One of the benefits of ROP is that the client code is no different from the server
+        </script></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div xmlns:d="http://docbook.org/ns/docbook" class="navheader"><table width="100%" summary="Navigation header"><tr><th class="versioninfo">v.4.0 (4.0.M4-SNAPSHOT)</th><th align="center">Chapter&nbsp;4.&nbsp;Porting Existing Code to Connect to a Web Service Instead of a Database</th><th></th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch03.html">Prev</a>&nbsp;</td><th width="60%" align="center"><a accesskey="u" href="getting-started-rop-part2.html">Part&nbsp;II.&nbsp;Remote Object Persistence Quick Start</a></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;Porting Existing Code to Connect to a Web Service Instead of a Database"><div class="titlepage"><div><div><h2 class="title"><a name="d0e157"></a>Chapter&nbsp;4.&nbsp;Porting Existing Code to Connect to 
 a Web Service Instead of a Database</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="section"><a href="ch04.html#starting-command-line-cliet">Starting Command Line Client</a></span></dt></dl></div><div class="section" title="Starting Command Line Client"><div class="titlepage"><div><div><h2 class="title"><a name="starting-command-line-cliet"></a>Starting Command Line Client</h2></div></div></div><p>One of the benefits of ROP is that the client code is no different from the server
             code - it uses the same ObjectContext interface for access, same query and commit API.
             So the code below will be similar to the code presented in the first Cayenne
                 Getting Started Guide, although with a few ROP-specific parts required to bootstrap the
@@ -22,9 +22,13 @@
 
     }
 }</pre><p>Now the part that is actually different from regular Cayenne - establishing the server
-            connection and obtaining the ObjectContext:</p><pre class="programlisting">ClientConnection connection = <span xmlns="http://www.w3.org/1999/xhtml" class="hl-keyword">new</span> HessianConnection(<span xmlns="http://www.w3.org/1999/xhtml" class="hl-string">"http://localhost:8080/tutorial/cayenne-service"</span>);
-DataChannel channel = <span xmlns="http://www.w3.org/1999/xhtml" class="hl-keyword">new</span> ClientChannel(connection, false, <span xmlns="http://www.w3.org/1999/xhtml" class="hl-keyword">new</span> DefaultEventManager(), false);
-ObjectContext context = <span xmlns="http://www.w3.org/1999/xhtml" class="hl-keyword">new</span> CayenneContext(channel);</pre><p>Note that the "channel" can be used to create as many peer ObjectContexts as needed
+            connection and obtaining the ObjectContext:</p><pre class="programlisting">Map&lt;String, String&gt; properties = <span xmlns="http://www.w3.org/1999/xhtml" class="hl-keyword">new</span> HashMap&lt;&gt;();
+properties.put(Constants.ROP_SERVICE_URL_PROPERTY, <span xmlns="http://www.w3.org/1999/xhtml" class="hl-string">"http://localhost:8080/tutorial-rop-server/cayenne-service"</span>);
+properties.put(Constants.ROP_SERVICE_USERNAME_PROPERTY, <span xmlns="http://www.w3.org/1999/xhtml" class="hl-string">"cayenne-user"</span>);
+properties.put(Constants.ROP_SERVICE_PASSWORD_PROPERTY, <span xmlns="http://www.w3.org/1999/xhtml" class="hl-string">"secret"</span>);
+
+ClientRuntime runtime = <span xmlns="http://www.w3.org/1999/xhtml" class="hl-keyword">new</span> ClientRuntime(properties);
+ObjectContext context = runtime.newContext(); </pre><p>Note that the "runtime" can be used to create as many peer ObjectContexts as needed
             over the same connection, while ObjectContext is a kind of isolated "persistence
             session", similar to the server-side context. A few more notes. Since we are using
             HTTP(S) to communicate with ROP server, there's no need to explicitly close the
@@ -51,18 +55,12 @@ girl.setGallery(metropolitan);
 stein.setGallery(metropolitan);
 
 <span xmlns="http://www.w3.org/1999/xhtml" class="hl-comment">// saving all the changes above</span>
-context.commitChanges();</pre><p>Now let's select them back:</p><pre class="programlisting"><span xmlns="http://www.w3.org/1999/xhtml" class="hl-comment">// SelectQuery examples</span>
-SelectQuery select1 = <span xmlns="http://www.w3.org/1999/xhtml" class="hl-keyword">new</span> SelectQuery(Painting.<span xmlns="http://www.w3.org/1999/xhtml" class="hl-keyword">class</span>);
-List&lt;Painting&gt; paintings1 = context.performQuery(select1);
-
-Expression qualifier2 = ExpressionFactory.likeIgnoreCaseExp(
-        Painting.NAME_PROPERTY, <span xmlns="http://www.w3.org/1999/xhtml" class="hl-string">"gi%"</span>);
-SelectQuery select2 = <span xmlns="http://www.w3.org/1999/xhtml" class="hl-keyword">new</span> SelectQuery(Painting.<span xmlns="http://www.w3.org/1999/xhtml" class="hl-keyword">class</span>, qualifier2);
-List&lt;Painting&gt; paintings2 = context.performQuery(select2);</pre><p>Now, delete:</p><pre class="programlisting">Expression qualifier = ExpressionFactory.matchExp(Artist.NAME_PROPERTY,
-                <span xmlns="http://www.w3.org/1999/xhtml" class="hl-string">"Pablo Picasso"</span>);
-SelectQuery selectToDelete = <span xmlns="http://www.w3.org/1999/xhtml" class="hl-keyword">new</span> SelectQuery(Artist.<span xmlns="http://www.w3.org/1999/xhtml" class="hl-keyword">class</span>, qualifier);
-Artist picasso = (Artist) DataObjectUtils.objectForQuery(context,
-        selectToDelete);
+context.commitChanges();</pre><p>Now let's select them back:</p><pre class="programlisting"><span xmlns="http://www.w3.org/1999/xhtml" class="hl-comment">// ObjectSelect examples</span>
+List&lt;Painting&gt; paintings1 = ObjectSelect.query(Painting.<span xmlns="http://www.w3.org/1999/xhtml" class="hl-keyword">class</span>).select(context);
+
+List&lt;Painting&gt; paintings2 = ObjectSelect.query(Painting.<span xmlns="http://www.w3.org/1999/xhtml" class="hl-keyword">class</span>)
+        .where(Painting.NAME.likeIgnoreCase(<span xmlns="http://www.w3.org/1999/xhtml" class="hl-string">"gi%"</span>)).select(context); </pre><p>Now, delete:</p><pre class="programlisting"><span xmlns="http://www.w3.org/1999/xhtml" class="hl-comment">// Delete object example</span>
+Artist picasso = ObjectSelect.query(Artist.<span xmlns="http://www.w3.org/1999/xhtml" class="hl-keyword">class</span>).where(Artist.NAME.eq(<span xmlns="http://www.w3.org/1999/xhtml" class="hl-string">"Pablo Picasso"</span>)).selectOne(context); 
 
 <span xmlns="http://www.w3.org/1999/xhtml" class="hl-keyword">if</span> (picasso != null) {
     context.deleteObject(picasso);

Modified: websites/staging/cayenne/trunk/content/docs/4.0/tutorial-rop/ch05.html
==============================================================================
--- websites/staging/cayenne/trunk/content/docs/4.0/tutorial-rop/ch05.html (original)
+++ websites/staging/cayenne/trunk/content/docs/4.0/tutorial-rop/ch05.html Tue Mar  1 16:59:39 2016
@@ -9,7 +9,7 @@
     ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
     var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
   })();
-        </script></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div xmlns:d="http://docbook.org/ns/docbook" class="navheader"><table width="100%" summary="Navigation header"><tr><th class="versioninfo">v.4.0 (4.0.M3-SNAPSHOT)</th><th align="center">Chapter&nbsp;5.&nbsp;Adding BASIC Authentication</th><th></th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch04.html">Prev</a>&nbsp;</td><th width="60%" align="center"><a accesskey="u" href="getting-started-rop-part2.html">Part&nbsp;II.&nbsp;Remote Object Persistence Quick Start</a></th><td width="20%" align="right">&nbsp;</td></tr></table><hr></div><div class="chapter" title="Chapter&nbsp;5.&nbsp;Adding BASIC Authentication"><div class="titlepage"><div><div><h2 class="title"><a name="d0e198"></a>Chapter&nbsp;5.&nbsp;Adding BASIC Authentication</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="section"><a href="ch05.html#securing-rop-server
 -app">Securing ROP Server Application</a></span></dt><dt><span class="section"><a href="ch05.html#configuring-jetty">Configuring Jetty for BASIC Authentication</a></span></dt><dt><span class="section"><a href="ch05.html#running-client">Running Client with Basic Authentication</a></span></dt></dl></div><p>You probably don't want everybody in the world to connect to your service and access (and
+        </script></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div xmlns:d="http://docbook.org/ns/docbook" class="navheader"><table width="100%" summary="Navigation header"><tr><th class="versioninfo">v.4.0 (4.0.M4-SNAPSHOT)</th><th align="center">Chapter&nbsp;5.&nbsp;Adding BASIC Authentication</th><th></th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch04.html">Prev</a>&nbsp;</td><th width="60%" align="center"><a accesskey="u" href="getting-started-rop-part2.html">Part&nbsp;II.&nbsp;Remote Object Persistence Quick Start</a></th><td width="20%" align="right">&nbsp;</td></tr></table><hr></div><div class="chapter" title="Chapter&nbsp;5.&nbsp;Adding BASIC Authentication"><div class="titlepage"><div><div><h2 class="title"><a name="d0e198"></a>Chapter&nbsp;5.&nbsp;Adding BASIC Authentication</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="section"><a href="ch05.html#securing-rop-server
 -app">Securing ROP Server Application</a></span></dt><dt><span class="section"><a href="ch05.html#configuring-jetty">Configuring Jetty for BASIC Authentication</a></span></dt><dt><span class="section"><a href="ch05.html#running-client">Running Client with Basic Authentication</a></span></dt></dl></div><p>You probably don't want everybody in the world to connect to your service and access (and
         update!) arbitrary data in the database. The first step in securing Cayenne service is
         implementing client authentication. The easiest way to do it is to delegate the
         authentication task to the web container that is running the service. HessianConnection used
@@ -57,38 +57,35 @@
             if you go to <span class="italic">http://localhost:8080/tutorial/cayenne-service</span>, your browser should pop
             up authentication dialog. Enter "<span class="italic">cayenne-user/secret</span>"
             for user name / password, and you should see "<span class="italic">Hessian Requires
-                POST</span>" message. So the server is now secured.</p></div><div class="section" title="Running Client with Basic Authentication"><div class="titlepage"><div><div><h2 class="title"><a name="running-client"></a>Running Client with Basic Authentication</h2></div></div></div><p>If you run the client without any changes, you'll get the following error:</p><pre class="programlisting">org.apache.cayenne.remote.hessian.HessianConnection connect
-INFO: Connecting to [http:<span xmlns="http://www.w3.org/1999/xhtml" class="hl-comment">//localhost:8080/tutorial/cayenne-service] - dedicated session.</span>
-org.apache.cayenne.remote.hessian.HessianConnection connect
-INFO: Error establishing remote session. URL - http:<span xmlns="http://www.w3.org/1999/xhtml" class="hl-comment">//localhost:8080/tutorial/cayenne-service; </span>
-      CAUSE - cannot retry due to server authentication, in streaming mode
-java.net.HttpRetryException: cannot retry due to server authentication, in streaming mode
-    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:<span xmlns="http://www.w3.org/1999/xhtml" class="hl-number">1257</span>)
-    at java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:<span xmlns="http://www.w3.org/1999/xhtml" class="hl-number">379</span>)
-    at com.caucho.hessian.client.HessianProxy.invoke(HessianProxy.java:<span xmlns="http://www.w3.org/1999/xhtml" class="hl-number">168</span>)
-    at $Proxy0.establishSession(Unknown Source)
-    at org.apache.cayenne.remote.hessian.HessianConnection.connect(HessianConnection.java:<span xmlns="http://www.w3.org/1999/xhtml" class="hl-number">210</span>)
-    at org.apache.cayenne.remote.hessian.HessianConnection.getServerEventBridge(HessianConnection.java:<span xmlns="http://www.w3.org/1999/xhtml" class="hl-number">114</span>)
-    at org.apache.cayenne.remote.ClientChannel.setupRemoteChannelListener(ClientChannel.java:<span xmlns="http://www.w3.org/1999/xhtml" class="hl-number">337</span>)
-    at org.apache.cayenne.remote.ClientChannel.&lt;init&gt;(ClientChannel.java:<span xmlns="http://www.w3.org/1999/xhtml" class="hl-number">108</span>)
-    at org.example.cayenne.Main.main(Main.java:<span xmlns="http://www.w3.org/1999/xhtml" class="hl-number">25</span>)
-Exception in thread <span xmlns="http://www.w3.org/1999/xhtml" class="hl-string">"main"</span> org.apache.cayenne.CayenneRuntimeException: [v.3.1M3 Sep <span xmlns="http://www.w3.org/1999/xhtml" class="hl-number">19</span> <span xmlns="http://www.w3.org/1999/xhtml" class="hl-number">2011</span> <span xmlns="http://www.w3.org/1999/xhtml" class="hl-number">07</span>:<span xmlns="http://www.w3.org/1999/xhtml" class="hl-number">12</span>:<span xmlns="http://www.w3.org/1999/xhtml" class="hl-number">41</span>] 
-Error establishing remote session. URL - http:<span xmlns="http://www.w3.org/1999/xhtml" class="hl-comment">//localhost:8080/tutorial/cayenne-service; </span>
-CAUSE - cannot retry due to server authentication, in streaming mode
-    at org.apache.cayenne.remote.hessian.HessianConnection.connect(HessianConnection.java:<span xmlns="http://www.w3.org/1999/xhtml" class="hl-number">229</span>)
-    at org.apache.cayenne.remote.hessian.HessianConnection.getServerEventBridge(HessianConnection.java:<span xmlns="http://www.w3.org/1999/xhtml" class="hl-number">114</span>)
-    at org.apache.cayenne.remote.ClientChannel.setupRemoteChannelListener(ClientChannel.java:<span xmlns="http://www.w3.org/1999/xhtml" class="hl-number">337</span>)
-    at org.apache.cayenne.remote.ClientChannel.&lt;init&gt;(ClientChannel.java:<span xmlns="http://www.w3.org/1999/xhtml" class="hl-number">108</span>)
-    at org.example.cayenne.Main.main(Main.java:<span xmlns="http://www.w3.org/1999/xhtml" class="hl-number">25</span>)
-Caused by: java.net.HttpRetryException: cannot retry due to server authentication, in streaming mode
-    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:<span xmlns="http://www.w3.org/1999/xhtml" class="hl-number">1257</span>)
-    at java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:<span xmlns="http://www.w3.org/1999/xhtml" class="hl-number">379</span>)
-    at com.caucho.hessian.client.HessianProxy.invoke(HessianProxy.java:<span xmlns="http://www.w3.org/1999/xhtml" class="hl-number">168</span>)
-    at $Proxy0.establishSession(Unknown Source)
-    at org.apache.cayenne.remote.hessian.HessianConnection.connect(HessianConnection.java:<span xmlns="http://www.w3.org/1999/xhtml" class="hl-number">210</span>)
-    ... <span xmlns="http://www.w3.org/1999/xhtml" class="hl-number">4</span> more</pre><p>Which is exactly what you'd expect, as the client is not authenticating itself. So
-            change the line in Main.java where we obtained an ROP connection to this:</p><pre class="programlisting">ClientConnection connection = <span xmlns="http://www.w3.org/1999/xhtml" class="hl-keyword">new</span> HessianConnection(
-        <span xmlns="http://www.w3.org/1999/xhtml" class="hl-string">"http://localhost:8080/tutorial/cayenne-service"</span>,
-        <span xmlns="http://www.w3.org/1999/xhtml" class="hl-string">"cayenne-user"</span>, <span xmlns="http://www.w3.org/1999/xhtml" class="hl-string">"secret"</span>, null);</pre><p>Try running again, and everything should work as before. Obviously in production
+                POST</span>" message. So the server is now secured.</p></div><div class="section" title="Running Client with Basic Authentication"><div class="titlepage"><div><div><h2 class="title"><a name="running-client"></a>Running Client with Basic Authentication</h2></div></div></div><p>If you run the client without any changes, you'll get the following error:</p><pre class="programlisting">Mar <span xmlns="http://www.w3.org/1999/xhtml" class="hl-number">01</span>, <span xmlns="http://www.w3.org/1999/xhtml" class="hl-number">2016</span> <span xmlns="http://www.w3.org/1999/xhtml" class="hl-number">7</span>:<span xmlns="http://www.w3.org/1999/xhtml" class="hl-number">25</span>:<span xmlns="http://www.w3.org/1999/xhtml" class="hl-number">50</span> PM org.apache.cayenne.rop.http.HttpROPConnector logConnect
+INFO: Connecting to [cayenne-user<span xmlns="http://www.w3.org/1999/xhtml" class="hl-annotation">@http://localhost:8080/tutorial-rop-server/cayenne-service]</span> - dedicated session.
+Mar <span xmlns="http://www.w3.org/1999/xhtml" class="hl-number">01</span>, <span xmlns="http://www.w3.org/1999/xhtml" class="hl-number">2016</span> <span xmlns="http://www.w3.org/1999/xhtml" class="hl-number">7</span>:<span xmlns="http://www.w3.org/1999/xhtml" class="hl-number">25</span>:<span xmlns="http://www.w3.org/1999/xhtml" class="hl-number">50</span> PM org.apache.cayenne.rop.HttpClientConnection connect
+INFO: Server returned HTTP response code: <span xmlns="http://www.w3.org/1999/xhtml" class="hl-number">401</span> <span xmlns="http://www.w3.org/1999/xhtml" class="hl-keyword">for</span> URL: http:<span xmlns="http://www.w3.org/1999/xhtml" class="hl-comment">//localhost:8080/tutorial-rop-server/cayenne-service</span>
+java.rmi.RemoteException: Server returned HTTP response code: <span xmlns="http://www.w3.org/1999/xhtml" class="hl-number">401</span> <span xmlns="http://www.w3.org/1999/xhtml" class="hl-keyword">for</span> URL: http:<span xmlns="http://www.w3.org/1999/xhtml" class="hl-comment">//localhost:8080/tutorial-rop-server/cayenne-service</span>
+	at org.apache.cayenne.rop.ProxyRemoteService.establishSession(ProxyRemoteService.java:<span xmlns="http://www.w3.org/1999/xhtml" class="hl-number">45</span>)
+	at org.apache.cayenne.rop.HttpClientConnection.connect(HttpClientConnection.java:<span xmlns="http://www.w3.org/1999/xhtml" class="hl-number">85</span>)
+	at org.apache.cayenne.rop.HttpClientConnection.getServerEventBridge(HttpClientConnection.java:<span xmlns="http://www.w3.org/1999/xhtml" class="hl-number">68</span>)
+	at org.apache.cayenne.remote.ClientChannel.setupRemoteChannelListener(ClientChannel.java:<span xmlns="http://www.w3.org/1999/xhtml" class="hl-number">279</span>)
+	at org.apache.cayenne.remote.ClientChannel.&lt;init&gt;(ClientChannel.java:<span xmlns="http://www.w3.org/1999/xhtml" class="hl-number">71</span>)
+	at org.apache.cayenne.configuration.rop.client.ClientChannelProvider.get(ClientChannelProvider.java:<span xmlns="http://www.w3.org/1999/xhtml" class="hl-number">48</span>)
+	at org.apache.cayenne.configuration.rop.client.ClientChannelProvider.get(ClientChannelProvider.java:<span xmlns="http://www.w3.org/1999/xhtml" class="hl-number">31</span>)
+	at org.apache.cayenne.di.spi.CustomProvidersProvider.get(CustomProvidersProvider.java:<span xmlns="http://www.w3.org/1999/xhtml" class="hl-number">39</span>)
+	at org.apache.cayenne.di.spi.FieldInjectingProvider.get(FieldInjectingProvider.java:<span xmlns="http://www.w3.org/1999/xhtml" class="hl-number">43</span>)
+	at org.apache.cayenne.di.spi.DefaultScopeProvider.get(DefaultScopeProvider.java:<span xmlns="http://www.w3.org/1999/xhtml" class="hl-number">50</span>)
+	at org.apache.cayenne.di.spi.DefaultInjector.getInstance(DefaultInjector.java:<span xmlns="http://www.w3.org/1999/xhtml" class="hl-number">139</span>)
+	at org.apache.cayenne.di.spi.FieldInjectingProvider.value(FieldInjectingProvider.java:<span xmlns="http://www.w3.org/1999/xhtml" class="hl-number">105</span>)
+	at org.apache.cayenne.di.spi.FieldInjectingProvider.injectMember(FieldInjectingProvider.java:<span xmlns="http://www.w3.org/1999/xhtml" class="hl-number">68</span>)
+	at org.apache.cayenne.di.spi.FieldInjectingProvider.injectMembers(FieldInjectingProvider.java:<span xmlns="http://www.w3.org/1999/xhtml" class="hl-number">59</span>)
+	at org.apache.cayenne.di.spi.FieldInjectingProvider.get(FieldInjectingProvider.java:<span xmlns="http://www.w3.org/1999/xhtml" class="hl-number">44</span>)
+	at org.apache.cayenne.di.spi.DefaultScopeProvider.get(DefaultScopeProvider.java:<span xmlns="http://www.w3.org/1999/xhtml" class="hl-number">50</span>)
+	at org.apache.cayenne.di.spi.DefaultInjector.getInstance(DefaultInjector.java:<span xmlns="http://www.w3.org/1999/xhtml" class="hl-number">134</span>)
+	at org.apache.cayenne.configuration.CayenneRuntime.newContext(CayenneRuntime.java:<span xmlns="http://www.w3.org/1999/xhtml" class="hl-number">134</span>)
+	at org.apache.cayenne.tutorial.persistent.client.Main.main(Main.java:<span xmlns="http://www.w3.org/1999/xhtml" class="hl-number">44</span>)</pre><p>Which is exactly what you'd expect, as the client is not authenticating itself. So
+            change the line in Main.java where we obtained an ROP connection to this:</p><pre class="programlisting">Map&lt;String,String&gt; properties = <span xmlns="http://www.w3.org/1999/xhtml" class="hl-keyword">new</span> HashMap&lt;&gt;();
+properties.put(Constants.ROP_SERVICE_URL_PROPERTY, <span xmlns="http://www.w3.org/1999/xhtml" class="hl-string">"http://localhost:8080/tutorial-rop-server/cayenne-service"</span>);
+properties.put(Constants.ROP_SERVICE_USERNAME_PROPERTY, <span xmlns="http://www.w3.org/1999/xhtml" class="hl-string">"cayenne-user"</span>);
+properties.put(Constants.ROP_SERVICE_PASSWORD_PROPERTY, <span xmlns="http://www.w3.org/1999/xhtml" class="hl-string">"secret"</span>);
+
+ClientRuntime runtime = <span xmlns="http://www.w3.org/1999/xhtml" class="hl-keyword">new</span> ClientRuntime(properties);</pre><p>Try running again, and everything should work as before. Obviously in production
             environment, in addition to authentication you'll need to use HTTPS to access the server
             to prevent third-party evesdropping on your password and data.</p><p>Congratulations, you are done with the ROP tutorial!</p></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"><a accesskey="u" href="getting-started-rop-part2.html">Up</a></td><td width="40%" align="right">&nbsp;</td></tr><tr><td width="40%" align="left" valign="top">Chapter&nbsp;4.&nbsp;Porting Existing Code to Connect to a Web Service Instead of a Database&nbsp;</td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top">&nbsp;</td></tr></table></div></body></html>
\ No newline at end of file

Modified: websites/staging/cayenne/trunk/content/docs/4.0/tutorial-rop/getting-started-rop-part1.html
==============================================================================
--- websites/staging/cayenne/trunk/content/docs/4.0/tutorial-rop/getting-started-rop-part1.html (original)
+++ websites/staging/cayenne/trunk/content/docs/4.0/tutorial-rop/getting-started-rop-part1.html Tue Mar  1 16:59:39 2016
@@ -9,4 +9,4 @@
     ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
     var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
   })();
-        </script></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div xmlns:d="http://docbook.org/ns/docbook" class="navheader"><table width="100%" summary="Navigation header"><tr><th class="versioninfo">v.4.0 (4.0.M3-SNAPSHOT)</th><th align="center">Part&nbsp;I.&nbsp;Prerequisites</th><th></th></tr><tr><td width="20%" align="left"><a accesskey="p" href="index.html">Prev</a>&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="part" title="Part&nbsp;I.&nbsp;Prerequisites"><div class="titlepage"><div><div><h1 class="title"><a name="getting-started-rop-part1"></a>Part&nbsp;I.&nbsp;Prerequisites</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="chapter"><a href="ch01.html">1. Prerequisites</a></span></dt></dl></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation foo
 ter"><tr><td width="40%" align="left"><a accesskey="p" href="index.html">Prev</a>&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">Getting Started with Cayenne ROP (Remote Object Persistence)&nbsp;</td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top">&nbsp;Chapter&nbsp;1.&nbsp;Prerequisites</td></tr></table></div></body></html>
\ No newline at end of file
+        </script></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div xmlns:d="http://docbook.org/ns/docbook" class="navheader"><table width="100%" summary="Navigation header"><tr><th class="versioninfo">v.4.0 (4.0.M4-SNAPSHOT)</th><th align="center">Part&nbsp;I.&nbsp;Prerequisites</th><th></th></tr><tr><td width="20%" align="left"><a accesskey="p" href="index.html">Prev</a>&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="part" title="Part&nbsp;I.&nbsp;Prerequisites"><div class="titlepage"><div><div><h1 class="title"><a name="getting-started-rop-part1"></a>Part&nbsp;I.&nbsp;Prerequisites</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="chapter"><a href="ch01.html">1. Prerequisites</a></span></dt></dl></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation foo
 ter"><tr><td width="40%" align="left"><a accesskey="p" href="index.html">Prev</a>&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">Getting Started with Cayenne ROP (Remote Object Persistence)&nbsp;</td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top">&nbsp;Chapter&nbsp;1.&nbsp;Prerequisites</td></tr></table></div></body></html>
\ No newline at end of file

Modified: websites/staging/cayenne/trunk/content/docs/4.0/tutorial-rop/getting-started-rop-part2.html
==============================================================================
--- websites/staging/cayenne/trunk/content/docs/4.0/tutorial-rop/getting-started-rop-part2.html (original)
+++ websites/staging/cayenne/trunk/content/docs/4.0/tutorial-rop/getting-started-rop-part2.html Tue Mar  1 16:59:39 2016
@@ -9,4 +9,4 @@
     ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
     var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
   })();
-        </script></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div xmlns:d="http://docbook.org/ns/docbook" class="navheader"><table width="100%" summary="Navigation header"><tr><th class="versioninfo">v.4.0 (4.0.M3-SNAPSHOT)</th><th align="center">Part&nbsp;II.&nbsp;Remote Object Persistence Quick Start</th><th></th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch01.html">Prev</a>&nbsp;</td><th width="60%" align="center">&nbsp;</th><td width="20%" align="right">&nbsp;<a accesskey="n" href="ch02.html">Next</a></td></tr></table><hr></div><div class="part" title="Part&nbsp;II.&nbsp;Remote Object Persistence Quick Start"><div class="titlepage"><div><div><h1 class="title"><a name="getting-started-rop-part2"></a>Part&nbsp;II.&nbsp;Remote Object Persistence Quick Start</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="chapter"><a href="ch02.html">2. Starting Client Project</a></span></dt><dd
 ><dl><dt><span class="section"><a href="ch02.html#create-rop-client-project">Create an ROP Client Project in Eclipse</a></span></dt><dt><span class="section"><a href="ch02.html#create-client-java-classes">Create Client Java Classes</a></span></dt></dl></dd><dt><span class="chapter"><a href="ch03.html">3. Setting up Hessian Web Service</a></span></dt><dd><dl><dt><span class="section"><a href="ch03.html#setting-up-dependencies">Setting up Dependencies</a></span></dt><dt><span class="section"><a href="ch03.html#client-classes-on-server">Client Classes on the Server</a></span></dt><dt><span class="section"><a href="ch03.html#configuring-web-xml">Configuring web.xml</a></span></dt><dt><span class="section"><a href="ch03.html#running-rop-server">Running ROP Server</a></span></dt></dl></dd><dt><span class="chapter"><a href="ch04.html">4. Porting Existing Code to Connect to a Web Service Instead of a Database</a></span></dt><dd><dl><dt><span class="section"><a href="ch04.html#starting-comma
 nd-line-cliet">Starting Command Line Client</a></span></dt></dl></dd><dt><span class="chapter"><a href="ch05.html">5. Adding BASIC Authentication</a></span></dt><dd><dl><dt><span class="section"><a href="ch05.html#securing-rop-server-app">Securing ROP Server Application</a></span></dt><dt><span class="section"><a href="ch05.html#configuring-jetty">Configuring Jetty for BASIC Authentication</a></span></dt><dt><span class="section"><a href="ch05.html#running-client">Running Client with Basic Authentication</a></span></dt></dl></dd></dl></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch01.html">Prev</a>&nbsp;</td><td width="20%" align="center">&nbsp;</td><td width="40%" align="right">&nbsp;<a accesskey="n" href="ch02.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter&nbsp;1.&nbsp;Prerequisites&nbsp;</td><td width="20%" align="center"><a accesskey="h" href="index.htm
 l">Home</a></td><td width="40%" align="right" valign="top">&nbsp;Chapter&nbsp;2.&nbsp;Starting Client Project</td></tr></table></div></body></html>
\ No newline at end of file
+        </script></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div xmlns:d="http://docbook.org/ns/docbook" class="navheader"><table width="100%" summary="Navigation header"><tr><th class="versioninfo">v.4.0 (4.0.M4-SNAPSHOT)</th><th align="center">Part&nbsp;II.&nbsp;Remote Object Persistence Quick Start</th><th></th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch01.html">Prev</a>&nbsp;</td><th width="60%" align="center">&nbsp;</th><td width="20%" align="right">&nbsp;<a accesskey="n" href="ch02.html">Next</a></td></tr></table><hr></div><div class="part" title="Part&nbsp;II.&nbsp;Remote Object Persistence Quick Start"><div class="titlepage"><div><div><h1 class="title"><a name="getting-started-rop-part2"></a>Part&nbsp;II.&nbsp;Remote Object Persistence Quick Start</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="chapter"><a href="ch02.html">2. Starting Client Project</a></span></dt><dd
 ><dl><dt><span class="section"><a href="ch02.html#create-rop-client-project">Create an ROP Client Project in Eclipse</a></span></dt><dt><span class="section"><a href="ch02.html#create-client-java-classes">Create Client Java Classes</a></span></dt></dl></dd><dt><span class="chapter"><a href="ch03.html">3. Setting up Hessian Web Service</a></span></dt><dd><dl><dt><span class="section"><a href="ch03.html#setting-up-dependencies">Setting up Dependencies</a></span></dt><dt><span class="section"><a href="ch03.html#client-classes-on-server">Client Classes on the Server</a></span></dt><dt><span class="section"><a href="ch03.html#configuring-web-xml">Configuring web.xml</a></span></dt><dt><span class="section"><a href="ch03.html#running-rop-server">Running ROP Server</a></span></dt></dl></dd><dt><span class="chapter"><a href="ch04.html">4. Porting Existing Code to Connect to a Web Service Instead of a Database</a></span></dt><dd><dl><dt><span class="section"><a href="ch04.html#starting-comma
 nd-line-cliet">Starting Command Line Client</a></span></dt></dl></dd><dt><span class="chapter"><a href="ch05.html">5. Adding BASIC Authentication</a></span></dt><dd><dl><dt><span class="section"><a href="ch05.html#securing-rop-server-app">Securing ROP Server Application</a></span></dt><dt><span class="section"><a href="ch05.html#configuring-jetty">Configuring Jetty for BASIC Authentication</a></span></dt><dt><span class="section"><a href="ch05.html#running-client">Running Client with Basic Authentication</a></span></dt></dl></dd></dl></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch01.html">Prev</a>&nbsp;</td><td width="20%" align="center">&nbsp;</td><td width="40%" align="right">&nbsp;<a accesskey="n" href="ch02.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter&nbsp;1.&nbsp;Prerequisites&nbsp;</td><td width="20%" align="center"><a accesskey="h" href="index.htm
 l">Home</a></td><td width="40%" align="right" valign="top">&nbsp;Chapter&nbsp;2.&nbsp;Starting Client Project</td></tr></table></div></body></html>
\ No newline at end of file

Modified: websites/staging/cayenne/trunk/content/docs/4.0/tutorial-rop/index.html
==============================================================================
--- websites/staging/cayenne/trunk/content/docs/4.0/tutorial-rop/index.html (original)
+++ websites/staging/cayenne/trunk/content/docs/4.0/tutorial-rop/index.html Tue Mar  1 16:59:39 2016
@@ -9,7 +9,7 @@
     ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
     var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
   })();
-        </script></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div xmlns:d="http://docbook.org/ns/docbook" class="navheader"><table width="100%" summary="Navigation header"><tr><th class="versioninfo">v.4.0 (4.0.M3-SNAPSHOT)</th><th align="center">Getting Started with Cayenne ROP (Remote Object Persistence)</th><th></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="getting-started-rop-part1.html">Next</a></td></tr></table><hr></div><div class="book" title="Getting Started with Cayenne ROP (Remote Object Persistence)"><div class="titlepage"><div><div><h1 class="title"><a name="getting-started-rop"></a>Getting Started with Cayenne ROP (Remote Object Persistence)</h1></div><div><p class="copyright">Copyright &copy; 2011-2014 Apache Software Foundation and individual authors</p></div><div><div class="legalnotice" title="License"><a name="d0e
 11"></a><p class="legalnotice-title"><b>License</b></p><p>Licensed to the Apache Software Foundation (ASF) under one or more contributor
+        </script></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div xmlns:d="http://docbook.org/ns/docbook" class="navheader"><table width="100%" summary="Navigation header"><tr><th class="versioninfo">v.4.0 (4.0.M4-SNAPSHOT)</th><th align="center">Getting Started with Cayenne ROP (Remote Object Persistence)</th><th></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="getting-started-rop-part1.html">Next</a></td></tr></table><hr></div><div class="book" title="Getting Started with Cayenne ROP (Remote Object Persistence)"><div class="titlepage"><div><div><h1 class="title"><a name="getting-started-rop"></a>Getting Started with Cayenne ROP (Remote Object Persistence)</h1></div><div><p class="copyright">Copyright &copy; 2011-2014 Apache Software Foundation and individual authors</p></div><div><div class="legalnotice" title="License"><a name="d0e
 11"></a><p class="legalnotice-title"><b>License</b></p><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 ASF licenses this file to you under
                 the Apache License, Version 2.0 (the "License"); you may not use this file except in