You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by aa...@apache.org on 2010/01/16 18:27:41 UTC

svn commit: r900003 [2/3] - in /cayenne/main/branches/STABLE-3.0/docs/doc/src/main/resources/doc/Documentation: Cayenne Guide/Expressions/Expression Factory Utilities/ Cayenne Guide/Expressions/Path Expressions/ Cayenne Guide/Tutorial/Tutorial Java Cla...

Modified: cayenne/main/branches/STABLE-3.0/docs/doc/src/main/resources/doc/Documentation/Overview/Guide to 3.0 Features/index.html
URL: http://svn.apache.org/viewvc/cayenne/main/branches/STABLE-3.0/docs/doc/src/main/resources/doc/Documentation/Overview/Guide%20to%203.0%20Features/index.html?rev=900003&r1=900002&r2=900003&view=diff
==============================================================================
--- cayenne/main/branches/STABLE-3.0/docs/doc/src/main/resources/doc/Documentation/Overview/Guide to 3.0 Features/index.html (original)
+++ cayenne/main/branches/STABLE-3.0/docs/doc/src/main/resources/doc/Documentation/Overview/Guide to 3.0 Features/index.html Sat Jan 16 17:27:39 2010
@@ -72,7 +72,7 @@
 
 <h3><a name="Guideto3.0Features-Embeddables"></a>Embeddables</h3>
 
-<p>Added a new mapping artifact - Embeddable, that allows to map composite objects to a single table. </p>
+<p>Added a new mapping artifact - <a href="../../../Documentation/Modeler Guide/Modeling Object Layer/Modeling Embeddables/index.html" title="Modeling Embeddables">Embeddable</a>, that allows to map composite objects to a single table. </p>
 
 <h3><a name="Guideto3.0Features-FlattenedAttributes"></a>Flattened Attributes</h3>
 
@@ -97,10 +97,9 @@
 
 <h2><a name="Guideto3.0Features-CayennePersistenceAPI"></a>Cayenne Persistence API</h2>
 
-<h3><a name="Guideto3.0Features-Java5Migration"></a>Java 5 Migration</h3>
-
-<p>Cayenne now requires Java 5 or newer to run. This allowed us to start using generics, enums and other Java 5 features.</p>
+<h3><a name="Guideto3.0Features-Java5Required"></a>Java 5 Required</h3>
 
+<p>Cayenne now requires Java 5 or newer to run. This allowed us to start providing generics-based API, enums and other Java 5 features.</p>
 
 <h3><a name="Guideto3.0Features-ObjectContext"></a>ObjectContext</h3>
 
@@ -124,6 +123,13 @@
 </ul>
 
 
+<h3><a name="Guideto3.0Features-SelectQueryImprovements"></a>SelectQuery Improvements</h3>
+
+<ul>
+	<li>Added support for "path splits". Splits allow to control how the joins are generated for the overlapping path expressions. By default a group of overlapping qualifier paths will produce a single join. To "split" that into separate joins, Cayenne allows to use "aliases" in path expressions, and then bind them to the actual pathes using <tt>"SelectQuery.addPathSplitAliases(String path, String... aliases)</tt>.</li>
+</ul>
+
+
 <h3><a name="Guideto3.0Features-EntityLifecycleCallbacks"></a>Entity Lifecycle Callbacks</h3>
 
 <p>Cayenne lifecycle callbacks are similar (but not identical) to callbacks defined in the JPA specification. This is a feature that allows to perform custom operations at certain points in the object lifecycle. For more details see <a href="../../../Documentation/Cayenne Guide/Lifecycle Callbacks/index.html" title="Lifecycle Callbacks">this page</a>.</p>
@@ -153,6 +159,7 @@
 <ul>
 	<li>Added missing DB expressions to ExpressionFactory.</li>
 	<li><a href="../../../Documentation/Cayenne Guide/Expressions/Path Expressions/index.html" title="Path Expressions">Added support</a> for OUTER JOINS</li>
+	<li><a href="../../../Documentation/Cayenne Guide/Expressions/Expression Factory Utilities/index.html" title="Expression Factory Utilities">Added support</a> for split expressions (see <tt>"ExpressionFactory.matchAllExp(String path, Object... values)"</tt> and <tt>"ExpressionFactory.matchAllExp(String path, Collection values)"</tt>). This is also related to the qualifier splits for SelectQuery described above.</li>
 	<li>Added support for matching against TRUE and FALSE.</li>
 </ul>
 
@@ -220,15 +227,15 @@
 	<li>Reopen Last Project on Startup</li>
 	<li>Added progress/log view</li>
 	<li>Added SQL syntax highlighting.</li>
-	<li>Added EJBQL Query mapping capabilities, with synatx highlighting.</li>
+	<li>Added EJBQL Query mapping capabilities, with syntax highlighting.</li>
 	<li>Added support for quoting of SQL Identifiers</li>
 	<li>The Modeler can be <a href="../../../Documentation/Cayenne Guide/Maven2 Plugins/maven2-modeler/index.html" title="maven2-modeler">started from Maven</a></li>
 	<li>Added "Infer Relationships" operation to automatically create DbRelationships based on PK/FK naming conventions.</li>
 	<li>Added support for mapping Embeddable objects.</li>
+	<li>Added undo/redo support</li>
 </ul>
 
 
-
 <h2><a name="Guideto3.0Features-DeploymentandRuntime"></a>Deployment and Runtime</h2>
 
 <h3><a name="Guideto3.0Features-ImprovedPerformance"></a>Improved Performance</h3>

Modified: cayenne/main/branches/STABLE-3.0/docs/doc/src/main/resources/doc/Documentation/Remote Object Persistence Guide/Remote Object Persistence CWS Deployment/index.html
URL: http://svn.apache.org/viewvc/cayenne/main/branches/STABLE-3.0/docs/doc/src/main/resources/doc/Documentation/Remote%20Object%20Persistence%20Guide/Remote%20Object%20Persistence%20CWS%20Deployment/index.html?rev=900003&r1=900002&r2=900003&view=diff
==============================================================================
--- cayenne/main/branches/STABLE-3.0/docs/doc/src/main/resources/doc/Documentation/Remote Object Persistence Guide/Remote Object Persistence CWS Deployment/index.html (original)
+++ cayenne/main/branches/STABLE-3.0/docs/doc/src/main/resources/doc/Documentation/Remote Object Persistence Guide/Remote Object Persistence CWS Deployment/index.html Sat Jan 16 17:27:39 2010
@@ -32,7 +32,7 @@
 <li><a href="../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Introduction/index.html">Remote Object Persistence Introduction</a></li>
 <li><a href="../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Features/index.html">Remote Object Persistence Features</a></li>
 <li><a href="../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Installation/index.html">Remote Object Persistence Installation</a></li>
-<li><a href="../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Quick Start/index.html">Remote Object Persistence Quick Start</a></li>
+<li><a href="../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Tutorial/index.html">Remote Object Persistence Tutorial</a></li>
 <li><a href="../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Coding Server/index.html">Remote Object Persistence Coding Server</a></li>
 <li><a href="../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Coding Client/index.html">Remote Object Persistence Coding Client</a></li>
 <li><a href="../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence CWS Deployment/index.html">Remote Object Persistence CWS Deployment</a><ul>

Modified: cayenne/main/branches/STABLE-3.0/docs/doc/src/main/resources/doc/Documentation/Remote Object Persistence Guide/Remote Object Persistence Client Deployment/index.html
URL: http://svn.apache.org/viewvc/cayenne/main/branches/STABLE-3.0/docs/doc/src/main/resources/doc/Documentation/Remote%20Object%20Persistence%20Guide/Remote%20Object%20Persistence%20Client%20Deployment/index.html?rev=900003&r1=900002&r2=900003&view=diff
==============================================================================
--- cayenne/main/branches/STABLE-3.0/docs/doc/src/main/resources/doc/Documentation/Remote Object Persistence Guide/Remote Object Persistence Client Deployment/index.html (original)
+++ cayenne/main/branches/STABLE-3.0/docs/doc/src/main/resources/doc/Documentation/Remote Object Persistence Guide/Remote Object Persistence Client Deployment/index.html Sat Jan 16 17:27:39 2010
@@ -32,7 +32,7 @@
 <li><a href="../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Introduction/index.html">Remote Object Persistence Introduction</a></li>
 <li><a href="../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Features/index.html">Remote Object Persistence Features</a></li>
 <li><a href="../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Installation/index.html">Remote Object Persistence Installation</a></li>
-<li><a href="../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Quick Start/index.html">Remote Object Persistence Quick Start</a></li>
+<li><a href="../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Tutorial/index.html">Remote Object Persistence Tutorial</a></li>
 <li><a href="../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Coding Server/index.html">Remote Object Persistence Coding Server</a></li>
 <li><a href="../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Coding Client/index.html">Remote Object Persistence Coding Client</a></li>
 <li><a href="../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence CWS Deployment/index.html">Remote Object Persistence CWS Deployment</a></li>

Modified: cayenne/main/branches/STABLE-3.0/docs/doc/src/main/resources/doc/Documentation/Remote Object Persistence Guide/Remote Object Persistence Coding Client/index.html
URL: http://svn.apache.org/viewvc/cayenne/main/branches/STABLE-3.0/docs/doc/src/main/resources/doc/Documentation/Remote%20Object%20Persistence%20Guide/Remote%20Object%20Persistence%20Coding%20Client/index.html?rev=900003&r1=900002&r2=900003&view=diff
==============================================================================
--- cayenne/main/branches/STABLE-3.0/docs/doc/src/main/resources/doc/Documentation/Remote Object Persistence Guide/Remote Object Persistence Coding Client/index.html (original)
+++ cayenne/main/branches/STABLE-3.0/docs/doc/src/main/resources/doc/Documentation/Remote Object Persistence Guide/Remote Object Persistence Coding Client/index.html Sat Jan 16 17:27:39 2010
@@ -32,7 +32,7 @@
 <li><a href="../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Introduction/index.html">Remote Object Persistence Introduction</a></li>
 <li><a href="../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Features/index.html">Remote Object Persistence Features</a></li>
 <li><a href="../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Installation/index.html">Remote Object Persistence Installation</a></li>
-<li><a href="../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Quick Start/index.html">Remote Object Persistence Quick Start</a></li>
+<li><a href="../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Tutorial/index.html">Remote Object Persistence Tutorial</a></li>
 <li><a href="../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Coding Server/index.html">Remote Object Persistence Coding Server</a></li>
 <li><a href="../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Coding Client/index.html">Remote Object Persistence Coding Client</a><ul>
 </ul>

Modified: cayenne/main/branches/STABLE-3.0/docs/doc/src/main/resources/doc/Documentation/Remote Object Persistence Guide/Remote Object Persistence Coding Server/Remote Object Persistence Lifecycle Callbacks/index.html
URL: http://svn.apache.org/viewvc/cayenne/main/branches/STABLE-3.0/docs/doc/src/main/resources/doc/Documentation/Remote%20Object%20Persistence%20Guide/Remote%20Object%20Persistence%20Coding%20Server/Remote%20Object%20Persistence%20Lifecycle%20Callbacks/index.html?rev=900003&r1=900002&r2=900003&view=diff
==============================================================================
--- cayenne/main/branches/STABLE-3.0/docs/doc/src/main/resources/doc/Documentation/Remote Object Persistence Guide/Remote Object Persistence Coding Server/Remote Object Persistence Lifecycle Callbacks/index.html (original)
+++ cayenne/main/branches/STABLE-3.0/docs/doc/src/main/resources/doc/Documentation/Remote Object Persistence Guide/Remote Object Persistence Coding Server/Remote Object Persistence Lifecycle Callbacks/index.html Sat Jan 16 17:27:39 2010
@@ -32,7 +32,7 @@
 <li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Introduction/index.html">Remote Object Persistence Introduction</a></li>
 <li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Features/index.html">Remote Object Persistence Features</a></li>
 <li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Installation/index.html">Remote Object Persistence Installation</a></li>
-<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Quick Start/index.html">Remote Object Persistence Quick Start</a></li>
+<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Tutorial/index.html">Remote Object Persistence Tutorial</a></li>
 <li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Coding Server/index.html">Remote Object Persistence Coding Server</a><ul>
 <li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Coding Server/Remote Object Persistence Lifecycle Callbacks/index.html">Remote Object Persistence Lifecycle Callbacks</a><ul>
 </ul>

Modified: cayenne/main/branches/STABLE-3.0/docs/doc/src/main/resources/doc/Documentation/Remote Object Persistence Guide/Remote Object Persistence Coding Server/index.html
URL: http://svn.apache.org/viewvc/cayenne/main/branches/STABLE-3.0/docs/doc/src/main/resources/doc/Documentation/Remote%20Object%20Persistence%20Guide/Remote%20Object%20Persistence%20Coding%20Server/index.html?rev=900003&r1=900002&r2=900003&view=diff
==============================================================================
--- cayenne/main/branches/STABLE-3.0/docs/doc/src/main/resources/doc/Documentation/Remote Object Persistence Guide/Remote Object Persistence Coding Server/index.html (original)
+++ cayenne/main/branches/STABLE-3.0/docs/doc/src/main/resources/doc/Documentation/Remote Object Persistence Guide/Remote Object Persistence Coding Server/index.html Sat Jan 16 17:27:39 2010
@@ -32,7 +32,7 @@
 <li><a href="../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Introduction/index.html">Remote Object Persistence Introduction</a></li>
 <li><a href="../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Features/index.html">Remote Object Persistence Features</a></li>
 <li><a href="../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Installation/index.html">Remote Object Persistence Installation</a></li>
-<li><a href="../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Quick Start/index.html">Remote Object Persistence Quick Start</a></li>
+<li><a href="../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Tutorial/index.html">Remote Object Persistence Tutorial</a></li>
 <li><a href="../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Coding Server/index.html">Remote Object Persistence Coding Server</a><ul>
 <li><a href="../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Coding Server/Remote Object Persistence Lifecycle Callbacks/index.html">Remote Object Persistence Lifecycle Callbacks</a></li>
 </ul>

Modified: cayenne/main/branches/STABLE-3.0/docs/doc/src/main/resources/doc/Documentation/Remote Object Persistence Guide/Remote Object Persistence Comparison/index.html
URL: http://svn.apache.org/viewvc/cayenne/main/branches/STABLE-3.0/docs/doc/src/main/resources/doc/Documentation/Remote%20Object%20Persistence%20Guide/Remote%20Object%20Persistence%20Comparison/index.html?rev=900003&r1=900002&r2=900003&view=diff
==============================================================================
--- cayenne/main/branches/STABLE-3.0/docs/doc/src/main/resources/doc/Documentation/Remote Object Persistence Guide/Remote Object Persistence Comparison/index.html (original)
+++ cayenne/main/branches/STABLE-3.0/docs/doc/src/main/resources/doc/Documentation/Remote Object Persistence Guide/Remote Object Persistence Comparison/index.html Sat Jan 16 17:27:39 2010
@@ -32,7 +32,7 @@
 <li><a href="../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Introduction/index.html">Remote Object Persistence Introduction</a></li>
 <li><a href="../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Features/index.html">Remote Object Persistence Features</a></li>
 <li><a href="../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Installation/index.html">Remote Object Persistence Installation</a></li>
-<li><a href="../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Quick Start/index.html">Remote Object Persistence Quick Start</a></li>
+<li><a href="../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Tutorial/index.html">Remote Object Persistence Tutorial</a></li>
 <li><a href="../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Coding Server/index.html">Remote Object Persistence Coding Server</a></li>
 <li><a href="../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Coding Client/index.html">Remote Object Persistence Coding Client</a></li>
 <li><a href="../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence CWS Deployment/index.html">Remote Object Persistence CWS Deployment</a></li>

Modified: cayenne/main/branches/STABLE-3.0/docs/doc/src/main/resources/doc/Documentation/Remote Object Persistence Guide/Remote Object Persistence Customization/index.html
URL: http://svn.apache.org/viewvc/cayenne/main/branches/STABLE-3.0/docs/doc/src/main/resources/doc/Documentation/Remote%20Object%20Persistence%20Guide/Remote%20Object%20Persistence%20Customization/index.html?rev=900003&r1=900002&r2=900003&view=diff
==============================================================================
--- cayenne/main/branches/STABLE-3.0/docs/doc/src/main/resources/doc/Documentation/Remote Object Persistence Guide/Remote Object Persistence Customization/index.html (original)
+++ cayenne/main/branches/STABLE-3.0/docs/doc/src/main/resources/doc/Documentation/Remote Object Persistence Guide/Remote Object Persistence Customization/index.html Sat Jan 16 17:27:39 2010
@@ -32,7 +32,7 @@
 <li><a href="../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Introduction/index.html">Remote Object Persistence Introduction</a></li>
 <li><a href="../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Features/index.html">Remote Object Persistence Features</a></li>
 <li><a href="../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Installation/index.html">Remote Object Persistence Installation</a></li>
-<li><a href="../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Quick Start/index.html">Remote Object Persistence Quick Start</a></li>
+<li><a href="../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Tutorial/index.html">Remote Object Persistence Tutorial</a></li>
 <li><a href="../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Coding Server/index.html">Remote Object Persistence Coding Server</a></li>
 <li><a href="../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Coding Client/index.html">Remote Object Persistence Coding Client</a></li>
 <li><a href="../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence CWS Deployment/index.html">Remote Object Persistence CWS Deployment</a></li>

Modified: cayenne/main/branches/STABLE-3.0/docs/doc/src/main/resources/doc/Documentation/Remote Object Persistence Guide/Remote Object Persistence Features/index.html
URL: http://svn.apache.org/viewvc/cayenne/main/branches/STABLE-3.0/docs/doc/src/main/resources/doc/Documentation/Remote%20Object%20Persistence%20Guide/Remote%20Object%20Persistence%20Features/index.html?rev=900003&r1=900002&r2=900003&view=diff
==============================================================================
--- cayenne/main/branches/STABLE-3.0/docs/doc/src/main/resources/doc/Documentation/Remote Object Persistence Guide/Remote Object Persistence Features/index.html (original)
+++ cayenne/main/branches/STABLE-3.0/docs/doc/src/main/resources/doc/Documentation/Remote Object Persistence Guide/Remote Object Persistence Features/index.html Sat Jan 16 17:27:39 2010
@@ -34,7 +34,7 @@
 </ul>
 </li>
 <li><a href="../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Installation/index.html">Remote Object Persistence Installation</a></li>
-<li><a href="../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Quick Start/index.html">Remote Object Persistence Quick Start</a></li>
+<li><a href="../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Tutorial/index.html">Remote Object Persistence Tutorial</a></li>
 <li><a href="../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Coding Server/index.html">Remote Object Persistence Coding Server</a></li>
 <li><a href="../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Coding Client/index.html">Remote Object Persistence Coding Client</a></li>
 <li><a href="../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence CWS Deployment/index.html">Remote Object Persistence CWS Deployment</a></li>

Modified: cayenne/main/branches/STABLE-3.0/docs/doc/src/main/resources/doc/Documentation/Remote Object Persistence Guide/Remote Object Persistence Installation/index.html
URL: http://svn.apache.org/viewvc/cayenne/main/branches/STABLE-3.0/docs/doc/src/main/resources/doc/Documentation/Remote%20Object%20Persistence%20Guide/Remote%20Object%20Persistence%20Installation/index.html?rev=900003&r1=900002&r2=900003&view=diff
==============================================================================
--- cayenne/main/branches/STABLE-3.0/docs/doc/src/main/resources/doc/Documentation/Remote Object Persistence Guide/Remote Object Persistence Installation/index.html (original)
+++ cayenne/main/branches/STABLE-3.0/docs/doc/src/main/resources/doc/Documentation/Remote Object Persistence Guide/Remote Object Persistence Installation/index.html Sat Jan 16 17:27:39 2010
@@ -34,7 +34,7 @@
 <li><a href="../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Installation/index.html">Remote Object Persistence Installation</a><ul>
 </ul>
 </li>
-<li><a href="../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Quick Start/index.html">Remote Object Persistence Quick Start</a></li>
+<li><a href="../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Tutorial/index.html">Remote Object Persistence Tutorial</a></li>
 <li><a href="../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Coding Server/index.html">Remote Object Persistence Coding Server</a></li>
 <li><a href="../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Coding Client/index.html">Remote Object Persistence Coding Client</a></li>
 <li><a href="../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence CWS Deployment/index.html">Remote Object Persistence CWS Deployment</a></li>
@@ -51,11 +51,16 @@
 
 <h3><a name="RemoteObjectPersistenceInstallation-ServerJarFiles"></a>Server Jar Files</h3>
 
-<p>Cayenne web service is no different from a regular Cayenne application, so it requires <b><tt>cayenne-server.jar</tt></b> and all standard dependencies. One additional required third party library is <b><tt>hessian.jar</tt></b>, version 3.1.6, which is included in "lib/third-party" or can be downloaded from <a href="http://www.caucho.com/hessian/" rel="nofollow">http://www.caucho.com/hessian/</a>.</p>
+<p>Cayenne web service is no different from a regular Cayenne application, so it requires <b><tt>cayenne-server.jar</tt></b> and all standard dependencies. The only additional required third-party library is Hessian:</p>
+
+<ul>
+	<li><a href="http://www.caucho.com/hessian/" rel="nofollow">Hessian Library</a>, version 3.1.6.</li>
+</ul>
+
 
 <h3><a name="RemoteObjectPersistenceInstallation-ClientJarFiles"></a>Client Jar Files</h3>
 
-<p>On the client <b><tt>cayenne-client.jar</tt></b> is needed. This is a stripped down version of Cayenne runtime. The following third party dependencies are needed (all included in "lib/third-party" directory of the distribution):</p>
+<p>On the client <b><tt>cayenne-client.jar</tt></b> is needed. This is a stripped-down version of Cayenne runtime. The following third party dependencies are needed (all included in "lib/third-party" directory of the distribution, except for hessian):</p>
 
 <ul>
 	<li><a href="http://jakarta.apache.org/commons/logging/" rel="nofollow">Apache Commons Logging</a>, version 1.1.</li>
@@ -64,7 +69,9 @@
 </ul>
 
 
-<p>Note that there can be issues with running different versions of Hessian on the client and server since the Hessian protocols sometimes change between even minor releases. We recommend you keep them matched or look at the Hessian source to decide whether you might have compatibility issues.</p></div>
+<p>Note that there can be issues with running different versions of Hessian on the client and server since the Hessian protocols sometimes change between even minor releases. We recommend you keep them matched or look at the Hessian source to decide whether you might have compatibility issues.</p>
+
+<div class='panelMacro'><table class='noteMacro'><colgroup><col width='24'><col></colgroup><tr><td valign='top'><img src="../../../images/emoticons/warning.gif" width="16" height="16" align="absmiddle" alt="" border="0"></td><td><b>Hessian Versions</b><br />Cayenne 3.0 works correctly with Hessian 3.0.x and 3.1.x. Hessian 4.0.2 has a <a href="http://maillist.caucho.com/pipermail/hessian-interest/2009-December/000842.html" rel="nofollow">bug</a> that stops ROP. Hessian 3.2.x is binary incompatible with other versions and cannot be used.</td></tr></table></div> </div>
 </div>
   <div class="clearer">.</div>
   <div style="height: 12px; background-image: url('../../../images/border_bottom.gif'); background-repeat: repeat-x;"></div>

Modified: cayenne/main/branches/STABLE-3.0/docs/doc/src/main/resources/doc/Documentation/Remote Object Persistence Guide/Remote Object Persistence Introduction/index.html
URL: http://svn.apache.org/viewvc/cayenne/main/branches/STABLE-3.0/docs/doc/src/main/resources/doc/Documentation/Remote%20Object%20Persistence%20Guide/Remote%20Object%20Persistence%20Introduction/index.html?rev=900003&r1=900002&r2=900003&view=diff
==============================================================================
--- cayenne/main/branches/STABLE-3.0/docs/doc/src/main/resources/doc/Documentation/Remote Object Persistence Guide/Remote Object Persistence Introduction/index.html (original)
+++ cayenne/main/branches/STABLE-3.0/docs/doc/src/main/resources/doc/Documentation/Remote Object Persistence Guide/Remote Object Persistence Introduction/index.html Sat Jan 16 17:27:39 2010
@@ -34,7 +34,7 @@
 </li>
 <li><a href="../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Features/index.html">Remote Object Persistence Features</a></li>
 <li><a href="../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Installation/index.html">Remote Object Persistence Installation</a></li>
-<li><a href="../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Quick Start/index.html">Remote Object Persistence Quick Start</a></li>
+<li><a href="../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Tutorial/index.html">Remote Object Persistence Tutorial</a></li>
 <li><a href="../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Coding Server/index.html">Remote Object Persistence Coding Server</a></li>
 <li><a href="../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Coding Client/index.html">Remote Object Persistence Coding Client</a></li>
 <li><a href="../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence CWS Deployment/index.html">Remote Object Persistence CWS Deployment</a></li>

Modified: cayenne/main/branches/STABLE-3.0/docs/doc/src/main/resources/doc/Documentation/Remote Object Persistence Guide/Remote Object Persistence Limitations/index.html
URL: http://svn.apache.org/viewvc/cayenne/main/branches/STABLE-3.0/docs/doc/src/main/resources/doc/Documentation/Remote%20Object%20Persistence%20Guide/Remote%20Object%20Persistence%20Limitations/index.html?rev=900003&r1=900002&r2=900003&view=diff
==============================================================================
--- cayenne/main/branches/STABLE-3.0/docs/doc/src/main/resources/doc/Documentation/Remote Object Persistence Guide/Remote Object Persistence Limitations/index.html (original)
+++ cayenne/main/branches/STABLE-3.0/docs/doc/src/main/resources/doc/Documentation/Remote Object Persistence Guide/Remote Object Persistence Limitations/index.html Sat Jan 16 17:27:39 2010
@@ -32,7 +32,7 @@
 <li><a href="../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Introduction/index.html">Remote Object Persistence Introduction</a></li>
 <li><a href="../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Features/index.html">Remote Object Persistence Features</a></li>
 <li><a href="../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Installation/index.html">Remote Object Persistence Installation</a></li>
-<li><a href="../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Quick Start/index.html">Remote Object Persistence Quick Start</a></li>
+<li><a href="../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Tutorial/index.html">Remote Object Persistence Tutorial</a></li>
 <li><a href="../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Coding Server/index.html">Remote Object Persistence Coding Server</a></li>
 <li><a href="../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Coding Client/index.html">Remote Object Persistence Coding Client</a></li>
 <li><a href="../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence CWS Deployment/index.html">Remote Object Persistence CWS Deployment</a></li>
@@ -49,7 +49,6 @@
 
 <ul>
 	<li>Client classes have to be available to the server JVM.</li>
-	<li>No pure XML web service with a defined WSDL (although binary Hessian service is available for many languages other than Java)</li>
 	<li>No attribute and relationship-level security.</li>
 	<li>No query-level security.</li>
 	<li>No role-based security.</li>

Modified: cayenne/main/branches/STABLE-3.0/docs/doc/src/main/resources/doc/Documentation/Remote Object Persistence Guide/Remote Object Persistence Security/index.html
URL: http://svn.apache.org/viewvc/cayenne/main/branches/STABLE-3.0/docs/doc/src/main/resources/doc/Documentation/Remote%20Object%20Persistence%20Guide/Remote%20Object%20Persistence%20Security/index.html?rev=900003&r1=900002&r2=900003&view=diff
==============================================================================
--- cayenne/main/branches/STABLE-3.0/docs/doc/src/main/resources/doc/Documentation/Remote Object Persistence Guide/Remote Object Persistence Security/index.html (original)
+++ cayenne/main/branches/STABLE-3.0/docs/doc/src/main/resources/doc/Documentation/Remote Object Persistence Guide/Remote Object Persistence Security/index.html Sat Jan 16 17:27:39 2010
@@ -32,7 +32,7 @@
 <li><a href="../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Introduction/index.html">Remote Object Persistence Introduction</a></li>
 <li><a href="../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Features/index.html">Remote Object Persistence Features</a></li>
 <li><a href="../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Installation/index.html">Remote Object Persistence Installation</a></li>
-<li><a href="../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Quick Start/index.html">Remote Object Persistence Quick Start</a></li>
+<li><a href="../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Tutorial/index.html">Remote Object Persistence Tutorial</a></li>
 <li><a href="../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Coding Server/index.html">Remote Object Persistence Coding Server</a></li>
 <li><a href="../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Coding Client/index.html">Remote Object Persistence Coding Client</a></li>
 <li><a href="../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence CWS Deployment/index.html">Remote Object Persistence CWS Deployment</a></li>
@@ -48,7 +48,7 @@
 <div id="ConfluenceContent"><h3><a name="RemoteObjectPersistenceSecurity-SecuringCayenneWebServiceAccess"></a>Securing Cayenne Web Service Access</h3>
 
 <ul>
-	<li><a href="../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Quick Start/Remote Object Persistence Tutorial Authentication/index.html" title="Remote Object Persistence Tutorial Authentication">Use HTTP(S) BASIC authentication</a> to authenticate the clients.</li>
+	<li><a href="../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Tutorial/Remote Object Persistence Tutorial Authentication/index.html" title="Remote Object Persistence Tutorial Authentication">Use HTTP(S) BASIC authentication</a> to authenticate the clients.</li>
 	<li>Explicitly check "Not for Client Use" for entities that should stay server-only.</li>
 	<li>Subclass <tt>org.apache.cayenne.remote.hessian.service.HessianServlet</tt> for user-defined fine-grained access control.</li>
 </ul>

Added: cayenne/main/branches/STABLE-3.0/docs/doc/src/main/resources/doc/Documentation/Remote Object Persistence Guide/Remote Object Persistence Tutorial/Remote Object Persistence Tutorial Authentication/index.html
URL: http://svn.apache.org/viewvc/cayenne/main/branches/STABLE-3.0/docs/doc/src/main/resources/doc/Documentation/Remote%20Object%20Persistence%20Guide/Remote%20Object%20Persistence%20Tutorial/Remote%20Object%20Persistence%20Tutorial%20Authentication/index.html?rev=900003&view=auto
==============================================================================
--- cayenne/main/branches/STABLE-3.0/docs/doc/src/main/resources/doc/Documentation/Remote Object Persistence Guide/Remote Object Persistence Tutorial/Remote Object Persistence Tutorial Authentication/index.html (added)
+++ cayenne/main/branches/STABLE-3.0/docs/doc/src/main/resources/doc/Documentation/Remote Object Persistence Guide/Remote Object Persistence Tutorial/Remote Object Persistence Tutorial Authentication/index.html Sat Jan 16 17:27:39 2010
@@ -0,0 +1,180 @@
+<!--
+   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 compliance
+   with the License.  You may obtain a copy of the License at
+ 
+     http://www.apache.org/licenses/LICENSE-2.0
+ 
+   Unless required by applicable law or agreed to in writing,
+   software distributed under the License is 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.
+-->
+<html>
+  <head>
+    <title>Apache Cayenne Documentation - Remote Object Persistence Tutorial Authentication</title>
+    <style type="text/css">@import "../../../../style.css";</style>
+  </head>
+<body>
+  <div class="header">
+    <div style="float: left;"><a href="http://cayenne.apache.org/"><img src="../../../../images/logo.gif" align="absmiddle" border="0"></a></div>
+    <span class="logoSpaceLink"><a href="../../../../index.html">Cayenne User Documentation</a></span><br />
+    <span class="pagetitle">Remote Object Persistence Tutorial Authentication</span>
+  </div>
+<div id="cayenne_toc">
+<ul>
+<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Introduction/index.html">Remote Object Persistence Introduction</a></li>
+<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Features/index.html">Remote Object Persistence Features</a></li>
+<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Installation/index.html">Remote Object Persistence Installation</a></li>
+<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Tutorial/index.html">Remote Object Persistence Tutorial</a><ul>
+<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Tutorial/Remote Object Persistence Tutorial Prerequisites/index.html">Remote Object Persistence Tutorial Prerequisites</a></li>
+<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Tutorial/Remote Object Persistence Tutorial Client Project/index.html">Remote Object Persistence Tutorial Client Project</a></li>
+<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Tutorial/Remote Object Persistence Tutorial WebService/index.html">Remote Object Persistence Tutorial WebService</a></li>
+<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Tutorial/Remote Object Persistence Tutorial Client Code/index.html">Remote Object Persistence Tutorial Client Code</a></li>
+<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Tutorial/Remote Object Persistence Tutorial Authentication/index.html">Remote Object Persistence Tutorial Authentication</a><ul>
+</ul>
+</li>
+</ul>
+</li>
+<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Coding Server/index.html">Remote Object Persistence Coding Server</a></li>
+<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Coding Client/index.html">Remote Object Persistence Coding Client</a></li>
+<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence CWS Deployment/index.html">Remote Object Persistence CWS Deployment</a></li>
+<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Client Deployment/index.html">Remote Object Persistence Client Deployment</a></li>
+<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Security/index.html">Remote Object Persistence Security</a></li>
+<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Customization/index.html">Remote Object Persistence Customization</a></li>
+<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Comparison/index.html">Remote Object Persistence Comparison</a></li>
+<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Limitations/index.html">Remote Object Persistence Limitations</a></li>
+</ul>
+</div>
+<div id="ConfluenceContent"><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 in the previous chapter supports BASIC authentication on the client side, so we'll demonstrate how to set it up here.</p>
+
+<h2><a name="RemoteObjectPersistenceTutorialAuthentication-SecuringROPServerApplication"></a>Securing ROP Server Application</h2>
+
+<p>Open <tt>web.xml</tt> file in the server project and setup security constraints with BASIC authentication for the ROP service:</p>
+
+<div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
+<pre class="code-java">&lt;security-constraint&gt;
+    &lt;web-resource-collection&gt;
+        &lt;web-resource-name&gt;CayenneService&lt;/web-resource-name&gt;
+        &lt;url-pattern&gt;/cayenne-service&lt;/url-pattern&gt;
+    &lt;/web-resource-collection&gt;
+    &lt;auth-constraint&gt;
+        &lt;role-name&gt;cayenne-service-user&lt;/role-name&gt;
+    &lt;/auth-constraint&gt;
+&lt;/security-constraint&gt;
+    
+&lt;login-config&gt;
+    &lt;auth-method&gt;BASIC&lt;/auth-method&gt;
+    &lt;realm-name&gt;Cayenne Realm&lt;/realm-name&gt;
+&lt;/login-config&gt;
+	
+&lt;security-role&gt;
+    &lt;role-name&gt;cayenne-service-user&lt;/role-name&gt;
+&lt;/security-role&gt;</pre>
+</div></div>
+
+<h2><a name="RemoteObjectPersistenceTutorialAuthentication-ConfiguringJettyforBASICAuthentication"></a>Configuring Jetty for BASIC Authentication</h2>
+
+<div class='panelMacro'><table class='noteMacro'><colgroup><col width='24'><col></colgroup><tr><td valign='top'><img src="../../../../images/emoticons/warning.gif" width="16" height="16" align="absmiddle" alt="" border="0"></td><td>These instructions are specific to Jetty 6. Other containers (and versions of Jetty) will have different mechansims to achieve the same thing.</td></tr></table></div>
+
+<p>Open <tt>pom.xml</tt> in the server project and configure a "userRealm" for the Jetty plugin:</p>
+
+<div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
+<pre class="code-java">&lt;plugin&gt;
+	&lt;groupId&gt;org.mortbay.jetty&lt;/groupId&gt;
+		&lt;artifactId&gt;maven-jetty-plugin&lt;/artifactId&gt;
+		&lt;version&gt;6.1.22&lt;/version&gt;
+		&lt;!-- adding configuration below: --&gt;
+		&lt;configuration&gt;
+			&lt;userRealms&gt;
+				&lt;userRealm implementation=<span class="code-quote">"org.mortbay.jetty.security.HashUserRealm"</span>&gt;
+					&lt;!-- <span class="code-keyword">this</span> name must match the realm-name in web.xml --&gt;
+					&lt;name&gt;Cayenne Realm&lt;/name&gt;
+					&lt;config&gt;realm.properties&lt;/config&gt;
+				&lt;/userRealm&gt;
+			&lt;/userRealms&gt;
+		&lt;/configuration&gt;
+	&lt;/plugin&gt;
+&lt;/plugins&gt;</pre>
+</div></div>
+
+<p>Now create a new file called {["realm.properties"}} <em>at the root of the server project</em> and put user login/password in there:</p>
+
+<p><div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent panelContent">
+<pre>cayenne-user: secret,cayenne-service-user</pre>
+</div></div>.</p>
+
+<p>Now let's stop the server and start it again. Everything should start as before, but if you go to <a href="http://localhost:8080/tutorial/cayenne-service" rel="nofollow">http://localhost:8080/tutorial/cayenne-service</a>, your browser should pop up authentication dialog. Enter "cayenne-user/secret" for user name / password, and you should see "Hessian Requires POST" message. So the server is now secured.</p>
+
+<h2><a name="RemoteObjectPersistenceTutorialAuthentication-RunningClientwithBasicAuthentication"></a>Running Client with Basic Authentication</h2>
+
+<p>If you run the client without any changes, you'll get the following error:</p>
+
+<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent panelContent">
+<pre>Jan 16, 2010 6:09:03 PM org.apache.cayenne.remote.hessian.HessianConnection connect
+INFO: Connecting to [http://localhost:8080/tutorial/cayenne-service] - dedicated session.
+Jan 16, 2010 6:09:03 PM org.apache.cayenne.remote.hessian.HessianConnection connect
+INFO: Error establishing remote session. URL - http://localhost:8080/tutorial/cayenne-service; 
+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:1034)
+	at java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:367)
+	at com.caucho.hessian.client.HessianProxy.invoke(HessianProxy.java:168)
+	at $Proxy0.establishSession(Unknown Source)
+	at org.apache.cayenne.remote.hessian.HessianConnection.connect(HessianConnection.java:210)
+	at org.apache.cayenne.remote.hessian.HessianConnection.getServerEventBridge(HessianConnection.java:114)
+	at org.apache.cayenne.remote.ClientChannel.setupRemoteChannelListener(ClientChannel.java:256)
+	at org.apache.cayenne.remote.ClientChannel.&lt;init&gt;(ClientChannel.java:94)
+	at org.apache.cayenne.remote.ClientChannel.&lt;init&gt;(ClientChannel.java:76)
+	at org.apache.cayenne.remote.ClientChannel.&lt;init&gt;(ClientChannel.java:71)
+	at org.apache.cayenne.remote.ClientChannel.&lt;init&gt;(ClientChannel.java:67)
+	at org.example.cayenne.persistent.client.Main.main(Main.java:25)
+Exception in thread "main" org.apache.cayenne.CayenneRuntimeException: [v.3.0RC1 Jan 05 2010 14:44:59] Error 
+establishing remote session. URL - http://localhost:8080/tutorial/cayenne-service; 
+CAUSE - cannot retry due to server authentication, in streaming mode
+	at org.apache.cayenne.remote.hessian.HessianConnection.connect(HessianConnection.java:229)
+	at org.apache.cayenne.remote.hessian.HessianConnection.getServerEventBridge(HessianConnection.java:114)
+	at org.apache.cayenne.remote.ClientChannel.setupRemoteChannelListener(ClientChannel.java:256)
+	at org.apache.cayenne.remote.ClientChannel.&lt;init&gt;(ClientChannel.java:94)
+	at org.apache.cayenne.remote.ClientChannel.&lt;init&gt;(ClientChannel.java:76)
+	at org.apache.cayenne.remote.ClientChannel.&lt;init&gt;(ClientChannel.java:71)
+	at org.apache.cayenne.remote.ClientChannel.&lt;init&gt;(ClientChannel.java:67)
+	at org.example.cayenne.persistent.client.Main.main(Main.java:25)
+Caused by: java.net.HttpRetryException: cannot retry due to server authentication, in streaming mode
+	at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1034)
+	at java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:367)
+	at com.caucho.hessian.client.HessianProxy.invoke(HessianProxy.java:168)
+	at $Proxy0.establishSession(Unknown Source)
+	at org.apache.cayenne.remote.hessian.HessianConnection.connect(HessianConnection.java:210)
+	... 7 more</pre>
+</div></div>
+
+<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>
+
+<div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
+<pre class="code-java">ClientConnection connection = <span class="code-keyword">new</span> HessianConnection(
+		<span class="code-quote">"http:<span class="code-comment">//localhost:8080/tutorial/cayenne-service"</span>,
+</span>		<span class="code-quote">"cayenne-user"</span>, <span class="code-quote">"secret"</span>, <span class="code-keyword">null</span>);</pre>
+</div></div>
+
+<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="clearer">.</div>
+  <div style="height: 12px; background-image: url('../../../../images/border_bottom.gif'); background-repeat: repeat-x;"></div>
+
+  <div class="smalltext copyright">
+    Copyright &copy;2001-2010 Apache Software Foundation
+  </div>
+
+</body>
+</html>

Propchange: cayenne/main/branches/STABLE-3.0/docs/doc/src/main/resources/doc/Documentation/Remote Object Persistence Guide/Remote Object Persistence Tutorial/Remote Object Persistence Tutorial Authentication/index.html
------------------------------------------------------------------------------
    svn:eol-style = native

Added: cayenne/main/branches/STABLE-3.0/docs/doc/src/main/resources/doc/Documentation/Remote Object Persistence Guide/Remote Object Persistence Tutorial/Remote Object Persistence Tutorial Client Code/index.html
URL: http://svn.apache.org/viewvc/cayenne/main/branches/STABLE-3.0/docs/doc/src/main/resources/doc/Documentation/Remote%20Object%20Persistence%20Guide/Remote%20Object%20Persistence%20Tutorial/Remote%20Object%20Persistence%20Tutorial%20Client%20Code/index.html?rev=900003&view=auto
==============================================================================
--- cayenne/main/branches/STABLE-3.0/docs/doc/src/main/resources/doc/Documentation/Remote Object Persistence Guide/Remote Object Persistence Tutorial/Remote Object Persistence Tutorial Client Code/index.html (added)
+++ cayenne/main/branches/STABLE-3.0/docs/doc/src/main/resources/doc/Documentation/Remote Object Persistence Guide/Remote Object Persistence Tutorial/Remote Object Persistence Tutorial Client Code/index.html Sat Jan 16 17:27:39 2010
@@ -0,0 +1,226 @@
+<!--
+   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 compliance
+   with the License.  You may obtain a copy of the License at
+ 
+     http://www.apache.org/licenses/LICENSE-2.0
+ 
+   Unless required by applicable law or agreed to in writing,
+   software distributed under the License is 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.
+-->
+<html>
+  <head>
+    <title>Apache Cayenne Documentation - Remote Object Persistence Tutorial Client Code</title>
+    <style type="text/css">@import "../../../../style.css";</style>
+  </head>
+<body>
+  <div class="header">
+    <div style="float: left;"><a href="http://cayenne.apache.org/"><img src="../../../../images/logo.gif" align="absmiddle" border="0"></a></div>
+    <span class="logoSpaceLink"><a href="../../../../index.html">Cayenne User Documentation</a></span><br />
+    <span class="pagetitle">Remote Object Persistence Tutorial Client Code</span>
+  </div>
+<div id="cayenne_toc">
+<ul>
+<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Introduction/index.html">Remote Object Persistence Introduction</a></li>
+<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Features/index.html">Remote Object Persistence Features</a></li>
+<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Installation/index.html">Remote Object Persistence Installation</a></li>
+<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Tutorial/index.html">Remote Object Persistence Tutorial</a><ul>
+<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Tutorial/Remote Object Persistence Tutorial Prerequisites/index.html">Remote Object Persistence Tutorial Prerequisites</a></li>
+<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Tutorial/Remote Object Persistence Tutorial Client Project/index.html">Remote Object Persistence Tutorial Client Project</a></li>
+<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Tutorial/Remote Object Persistence Tutorial WebService/index.html">Remote Object Persistence Tutorial WebService</a></li>
+<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Tutorial/Remote Object Persistence Tutorial Client Code/index.html">Remote Object Persistence Tutorial Client Code</a><ul>
+</ul>
+</li>
+<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Tutorial/Remote Object Persistence Tutorial Authentication/index.html">Remote Object Persistence Tutorial Authentication</a></li>
+</ul>
+</li>
+<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Coding Server/index.html">Remote Object Persistence Coding Server</a></li>
+<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Coding Client/index.html">Remote Object Persistence Coding Client</a></li>
+<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence CWS Deployment/index.html">Remote Object Persistence CWS Deployment</a></li>
+<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Client Deployment/index.html">Remote Object Persistence Client Deployment</a></li>
+<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Security/index.html">Remote Object Persistence Security</a></li>
+<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Customization/index.html">Remote Object Persistence Customization</a></li>
+<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Comparison/index.html">Remote Object Persistence Comparison</a></li>
+<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Limitations/index.html">Remote Object Persistence Limitations</a></li>
+</ul>
+</div>
+<div id="ConfluenceContent"><h2><a name="RemoteObjectPersistenceTutorialClientCode-StartingCommandLineClient"></a>Starting Command Line Client</h2>
+
+<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 <a href="../../../../Documentation/Cayenne Guide/Tutorial/Tutorial ObjectContext/index.html" title="Tutorial ObjectContext">Cayenne tutorial</a>, although with a few ROP-specific parts required to bootstrap the ObjectContext.</p>
+
+<p>Let's start by creating an empty Main class with the standard main() method in the client project:</p>
+
+<div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
+<pre class="code-java"><span class="code-keyword">package</span> org.example.cayenne.persistent.client;
+
+<span class="code-keyword">public</span> class Main {
+
+	<span class="code-keyword">public</span> <span class="code-keyword">static</span> void main(<span class="code-object">String</span>[] args) {
+
+	}
+}</pre>
+</div></div>
+
+<p>Now the part that is actually different from regular Cayenne - establishing the server connection and obtaining the ObjectContext:</p>
+
+<div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
+<pre class="code-java">ClientConnection connection = <span class="code-keyword">new</span> HessianConnection(<span class="code-quote">"http:<span class="code-comment">//localhost:8080/tutorial/cayenne-service"</span>);
+</span>DataChannel channel = <span class="code-keyword">new</span> ClientChannel(connection);
+ObjectContext context = <span class="code-keyword">new</span> CayenneContext(channel);</pre>
+</div></div>
+
+<p>Note that the "channel" 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 connection (or channel, or context).</p>
+
+<p>So now let's do the same persistent operaions that we did in the first tutorial "Main" class. Let's start by creating and saving some objects:</p>
+
+<div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
+<pre class="code-java"><span class="code-comment">// creating <span class="code-keyword">new</span> Artist
+</span>Artist picasso = context.newObject(Artist.class);
+picasso.setName(<span class="code-quote">"Pablo Picasso"</span>);
+
+<span class="code-comment">// Creating other objects
+</span>Gallery metropolitan = context.newObject(Gallery.class);
+metropolitan.setName(<span class="code-quote">"Metropolitan Museum of Art"</span>);
+
+Painting girl = context.newObject(Painting.class);
+girl.setName(<span class="code-quote">"Girl Reading at a Table"</span>);
+
+Painting stein = context.newObject(Painting.class);
+stein.setName(<span class="code-quote">"Gertrude Stein"</span>);
+
+<span class="code-comment">// connecting objects together via relationships
+</span>picasso.addToPaintings(girl);
+picasso.addToPaintings(stein);
+
+girl.setGallery(metropolitan);
+stein.setGallery(metropolitan);
+
+<span class="code-comment">// saving all the changes above
+</span>context.commitChanges();</pre>
+</div></div>
+
+<p>Now let's select them back:</p>
+
+<div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
+<pre class="code-java"><span class="code-comment">// SelectQuery examples
+</span>SelectQuery select1 = <span class="code-keyword">new</span> SelectQuery(Painting.class);
+List&lt;Painting&gt; paintings1 = context.performQuery(select1);
+
+Expression qualifier2 = ExpressionFactory.likeIgnoreCaseExp(
+		Painting.NAME_PROPERTY, <span class="code-quote">"gi%"</span>);
+SelectQuery select2 = <span class="code-keyword">new</span> SelectQuery(Painting.class, qualifier2);
+List&lt;Painting&gt; paintings2 = context.performQuery(select2);</pre>
+</div></div>
+
+<p>Now, delete:</p>
+
+<div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
+<pre class="code-java">Expression qualifier = ExpressionFactory.matchExp(Artist.NAME_PROPERTY,
+				<span class="code-quote">"Pablo Picasso"</span>);
+SelectQuery selectToDelete = <span class="code-keyword">new</span> SelectQuery(Artist.class, qualifier);
+Artist picasso = (Artist) DataObjectUtils.objectForQuery(context,
+		selectToDelete);
+
+<span class="code-keyword">if</span> (picasso != <span class="code-keyword">null</span>) {
+	context.deleteObject(picasso);
+	context.commitChanges();
+}</pre>
+</div></div>
+
+<p>This code is exactly the same as in the first tutorial. So now let's try running the client and see what happens. In Eclipse open main class and select <tt>"Run &gt; Rus As &gt; Java Application"</tt> from the menu (assuming the ROP server started in the previous step is still running). You will some output in both server and client process consoles. Client:</p>
+
+<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent panelContent">
+<pre>INFO: Connecting to [http://localhost:8080/tutorial/cayenne-service] - dedicated session.
+INFO: === Connected, session: org.apache.cayenne.remote.RemoteSession@9e09a4[sessionId=10qsakj1mj806] - took 219 ms.
+INFO: --- Message 0: Bootstrap
+INFO: === Message 0: Bootstrap done - took 71 ms.
+INFO: --- Message 1: flush-cascade-sync
+INFO: === Message 1: flush-cascade-sync done - took 1342 ms.
+INFO: --- Message 2: Query
+INFO: === Message 2: Query done - took 58 ms.
+INFO: --- Message 3: Query
+INFO: === Message 3: Query done - took 21 ms.
+INFO: --- Message 4: Query
+INFO: === Message 4: Query done - took 22 ms.
+INFO: --- Message 5: Query
+INFO: === Message 5: Query done - took 16 ms.
+INFO: --- Message 6: Query
+INFO: === Message 6: Query done - took 2 ms.
+INFO: --- Message 7: Query
+INFO: === Message 7: Query done - took 2 ms.
+INFO: --- Message 8: Query
+INFO: === Message 8: Query done - took 2 ms.
+INFO: --- Message 9: flush-cascade-sync
+INFO: === Message 9: flush-cascade-sync done - took 30 ms.</pre>
+</div></div>
+
+<p>As you see client prints no SQL statmenets, just a bunch of query and flush messages sent to the server. The server side is more verbose, showing the actual client queries executed against the database:</p>
+
+<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent panelContent">
+<pre>...
+INFO: SELECT NEXT_ID FROM AUTO_PK_SUPPORT WHERE TABLE_NAME = ? FOR UPDATE [bind: 1:'GALLERY']
+INFO: SELECT NEXT_ID FROM AUTO_PK_SUPPORT WHERE TABLE_NAME = ? FOR UPDATE [bind: 1:'ARTIST']
+INFO: SELECT NEXT_ID FROM AUTO_PK_SUPPORT WHERE TABLE_NAME = ? FOR UPDATE [bind: 1:'PAINTING']
+INFO: --- will run 3 queries.
+INFO: INSERT INTO GALLERY (ID, NAME) VALUES (?, ?)
+INFO: [batch bind: 1-&gt;ID:200, 2-&gt;NAME:'Metropolitan Museum of Art']
+INFO: === updated 1 row.
+INFO: INSERT INTO ARTIST (DATE_OF_BIRTH, ID, NAME) VALUES (?, ?, ?)
+INFO: [batch bind: 1-&gt;DATE_OF_BIRTH:NULL, 2-&gt;ID:200, 3-&gt;NAME:'Pablo Picasso']
+INFO: === updated 1 row.
+INFO: INSERT INTO PAINTING (ARTIST_ID, GALLERY_ID, ID, NAME) VALUES (?, ?, ?, ?)
+INFO: [batch bind: 1-&gt;ARTIST_ID:200, 2-&gt;GALLERY_ID:200, 3-&gt;ID:200, 4-&gt;NAME:'Girl Reading at a Table']
+INFO: [batch bind: 1-&gt;ARTIST_ID:200, 2-&gt;GALLERY_ID:200, 3-&gt;ID:201, 4-&gt;NAME:'Gertrude Stein']
+INFO: === updated 2 rows.
+INFO: +++ transaction committed.
+INFO: --- will run 1 query.
+INFO: --- transaction started.
+INFO: SELECT t0.GALLERY_ID, t0.ARTIST_ID, t0.NAME, t0.ID FROM PAINTING t0
+INFO: === returned 2 rows. - took 15 ms.
+INFO: +++ transaction committed.
+INFO: --- will run 1 query.
+INFO: --- transaction started.
+INFO: SELECT t0.GALLERY_ID, t0.ARTIST_ID, t0.NAME, t0.ID FROM PAINTING t0 WHERE UPPER(t0.NAME) LIKE UPPER(?) [bind: 1-&gt;NAME:'gi%']
+INFO: === returned 1 row. - took 9 ms.
+INFO: +++ transaction committed.
+INFO: --- will run 1 query.
+INFO: --- transaction started.
+INFO: SELECT t0.DATE_OF_BIRTH, t0.ID, t0.NAME FROM ARTIST t0 WHERE t0.NAME = ? [bind: 1-&gt;NAME:'Pablo Picasso']
+INFO: === returned 1 row. - took 7 ms.
+INFO: +++ transaction committed.
+INFO: --- will run 2 queries.
+INFO: --- transaction started.
+INFO: DELETE FROM PAINTING WHERE ID = ?
+INFO: [batch bind: 1-&gt;ID:200]
+INFO: [batch bind: 1-&gt;ID:201]
+INFO: === updated 2 rows.
+INFO: DELETE FROM ARTIST WHERE ID = ?
+INFO: [batch bind: 1-&gt;ID:200]
+INFO: === updated 1 row.
+INFO: +++ transaction committed.</pre>
+</div></div>
+
+<p>You are done with the basic ROP client!</p>
+
+<hr />
+<p><b>Next Step: <a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Tutorial/Remote Object Persistence Tutorial Authentication/index.html" title="Remote Object Persistence Tutorial Authentication">Remote Object Persistence Tutorial Authentication</a></b></p>
+<hr />
+</div>
+</div>
+  <div class="clearer">.</div>
+  <div style="height: 12px; background-image: url('../../../../images/border_bottom.gif'); background-repeat: repeat-x;"></div>
+
+  <div class="smalltext copyright">
+    Copyright &copy;2001-2010 Apache Software Foundation
+  </div>
+
+</body>
+</html>

Propchange: cayenne/main/branches/STABLE-3.0/docs/doc/src/main/resources/doc/Documentation/Remote Object Persistence Guide/Remote Object Persistence Tutorial/Remote Object Persistence Tutorial Client Code/index.html
------------------------------------------------------------------------------
    svn:eol-style = native

Added: cayenne/main/branches/STABLE-3.0/docs/doc/src/main/resources/doc/Documentation/Remote Object Persistence Guide/Remote Object Persistence Tutorial/Remote Object Persistence Tutorial Client Project/datamap-enableclient.png
URL: http://svn.apache.org/viewvc/cayenne/main/branches/STABLE-3.0/docs/doc/src/main/resources/doc/Documentation/Remote%20Object%20Persistence%20Guide/Remote%20Object%20Persistence%20Tutorial/Remote%20Object%20Persistence%20Tutorial%20Client%20Project/datamap-enableclient.png?rev=900003&view=auto
==============================================================================
Files cayenne/main/branches/STABLE-3.0/docs/doc/src/main/resources/doc/Documentation/Remote Object Persistence Guide/Remote Object Persistence Tutorial/Remote Object Persistence Tutorial Client Project/datamap-enableclient.png (added) and cayenne/main/branches/STABLE-3.0/docs/doc/src/main/resources/doc/Documentation/Remote Object Persistence Guide/Remote Object Persistence Tutorial/Remote Object Persistence Tutorial Client Project/datamap-enableclient.png Sat Jan 16 17:27:39 2010 differ

Added: cayenne/main/branches/STABLE-3.0/docs/doc/src/main/resources/doc/Documentation/Remote Object Persistence Guide/Remote Object Persistence Tutorial/Remote Object Persistence Tutorial Client Project/index.html
URL: http://svn.apache.org/viewvc/cayenne/main/branches/STABLE-3.0/docs/doc/src/main/resources/doc/Documentation/Remote%20Object%20Persistence%20Guide/Remote%20Object%20Persistence%20Tutorial/Remote%20Object%20Persistence%20Tutorial%20Client%20Project/index.html?rev=900003&view=auto
==============================================================================
--- cayenne/main/branches/STABLE-3.0/docs/doc/src/main/resources/doc/Documentation/Remote Object Persistence Guide/Remote Object Persistence Tutorial/Remote Object Persistence Tutorial Client Project/index.html (added)
+++ cayenne/main/branches/STABLE-3.0/docs/doc/src/main/resources/doc/Documentation/Remote Object Persistence Guide/Remote Object Persistence Tutorial/Remote Object Persistence Tutorial Client Project/index.html Sat Jan 16 17:27:39 2010
@@ -0,0 +1,142 @@
+<!--
+   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 compliance
+   with the License.  You may obtain a copy of the License at
+ 
+     http://www.apache.org/licenses/LICENSE-2.0
+ 
+   Unless required by applicable law or agreed to in writing,
+   software distributed under the License is 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.
+-->
+<html>
+  <head>
+    <title>Apache Cayenne Documentation - Remote Object Persistence Tutorial Client Project</title>
+    <style type="text/css">@import "../../../../style.css";</style>
+  </head>
+<body>
+  <div class="header">
+    <div style="float: left;"><a href="http://cayenne.apache.org/"><img src="../../../../images/logo.gif" align="absmiddle" border="0"></a></div>
+    <span class="logoSpaceLink"><a href="../../../../index.html">Cayenne User Documentation</a></span><br />
+    <span class="pagetitle">Remote Object Persistence Tutorial Client Project</span>
+  </div>
+<div id="cayenne_toc">
+<ul>
+<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Introduction/index.html">Remote Object Persistence Introduction</a></li>
+<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Features/index.html">Remote Object Persistence Features</a></li>
+<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Installation/index.html">Remote Object Persistence Installation</a></li>
+<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Tutorial/index.html">Remote Object Persistence Tutorial</a><ul>
+<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Tutorial/Remote Object Persistence Tutorial Prerequisites/index.html">Remote Object Persistence Tutorial Prerequisites</a></li>
+<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Tutorial/Remote Object Persistence Tutorial Client Project/index.html">Remote Object Persistence Tutorial Client Project</a><ul>
+</ul>
+</li>
+<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Tutorial/Remote Object Persistence Tutorial WebService/index.html">Remote Object Persistence Tutorial WebService</a></li>
+<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Tutorial/Remote Object Persistence Tutorial Client Code/index.html">Remote Object Persistence Tutorial Client Code</a></li>
+<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Tutorial/Remote Object Persistence Tutorial Authentication/index.html">Remote Object Persistence Tutorial Authentication</a></li>
+</ul>
+</li>
+<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Coding Server/index.html">Remote Object Persistence Coding Server</a></li>
+<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Coding Client/index.html">Remote Object Persistence Coding Client</a></li>
+<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence CWS Deployment/index.html">Remote Object Persistence CWS Deployment</a></li>
+<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Client Deployment/index.html">Remote Object Persistence Client Deployment</a></li>
+<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Security/index.html">Remote Object Persistence Security</a></li>
+<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Customization/index.html">Remote Object Persistence Customization</a></li>
+<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Comparison/index.html">Remote Object Persistence Comparison</a></li>
+<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Limitations/index.html">Remote Object Persistence Limitations</a></li>
+</ul>
+</div>
+<div id="ConfluenceContent"><h2><a name="RemoteObjectPersistenceTutorialClientProject-CreateanROPClientProjectinEclipse"></a>Create an ROP Client Project in Eclipse</h2>
+
+<p>Creation of a new Eclipse project has been discussed in some details <a href="../../../../Documentation/Cayenne Guide/Tutorial/Tutorial Starting Project/index.html" title="Tutorial Starting Project">here</a>, so we will omit the screenshots for the common parts.</p>
+
+<p>In Eclipse select <tt>"File &gt; New &gt; Other..."</tt> and then <tt>"Maven &gt; Maven Project"</tt>. Click <tt>"Next"</tt>. On the following screen check <tt>"Create a simple project"</tt> checkbox and click <tt>"Next"</tt> again. In the dialog shown on the screenshot below, enter <tt>"org.example.cayenne"</tt> for the <tt>"Group Id"</tt> and <tt>"tutorial-rop-client"</tt> for the <tt>"Artifact Id"</tt> (both without the quotes) and click <tt>"Finish"</tt>. </p>
+
+<p>Now you should have a new empty project in the Eclipse workspace. Check that the project Java compiler settings are correct. Rightclick on the <tt>"tutorial-rop-client"</tt> project, select "Properties &gt; Java Compiler" and ensure that <tt>"Compiler compliance level"</tt> is at least 1.5 (some versions of Maven plugin seem to be setting it to 1.4 by default).</p>
+
+<h2><a name="RemoteObjectPersistenceTutorialClientProject-CreateClientJavaClasses"></a>Create Client Java Classes</h2>
+
+<p>The client doesn't need the XML ORM mapping, as it is loaded from the server. However it needs the client-side Java classes. Let's generate them from the existing mapping:</p>
+
+<ul>
+	<li>Start CayenneModeler and open <tt>cayenne.xml</tt> from the <tt>"tutorial"</tt> project (located under <tt>"tutorial/src/main/resources"</tt>, unless it is already open.</li>
+	<li>Select the "UntitledDomainMap" DataMap and check <tt>"Allow Client Entities"</tt> checkbox.</li>
+	<li>Enter <tt>"org.example.cayenne.persistent.client"</tt> for the <tt>"Client Java Package"</tt> and click <tt>"Update.."</tt> button next to the field to refresh the client package of all entities.</li>
+</ul>
+
+
+<p><img src="datamap-enableclient.png" align="absmiddle" border="0" /></p>
+
+<ul>
+	<li>Select <tt>"Tools &gt; Generate Classes"</tt> menu.</li>
+	<li>For <tt>"Type"</tt> select <tt>"Client Persistent Objects"</tt>.</li>
+	<li>For the <tt>"Output Directory"</tt> select <tt>"tutorial-rop-client/src/main/java"</tt> folder (as client classes should go in the <em>client</em> project).</li>
+	<li>Click on <tt>"Entities"</tt> tab and check the <tt>"Check All Entities"</tt> checkbox (unless it is already checked and reads "Uncheck all Entities").</li>
+	<li>Click <tt>"Generate"</tt>.</li>
+</ul>
+
+
+<p>Now go back to Eclipse, right click on <tt>"tutorial-rop-client"</tt> project and select <tt>"Refresh"</tt> - you should see pairs of classes generated for each mapped entity, same as on the server. And again, we see a bunch of errors in those classes. Let's fix it now by adding two dependencies, <tt>"cayenne-client"</tt> and <tt>"resin-hessian"</tt>, in the bottom of the pom.xml file. We also need to add Caucho M2 repository to pull Hessian jar files. The resulting POM should look like this:</p>
+
+<div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
+<pre class="code-java">&lt;project xmlns=<span class="code-quote">"http:<span class="code-comment">//maven.apache.org/POM/4.0.0"</span> xmlns:xsi=<span class="code-quote">"http://www.w3.org/2001/XMLSchema-instance"</span>
+</span>	xsi:schemaLocation=<span class="code-quote">"http:<span class="code-comment">//maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"</span>&gt;
+</span>	&lt;modelVersion&gt;4.0.0&lt;/modelVersion&gt;
+	&lt;groupId&gt;org.example.cayenne&lt;/groupId&gt;
+	&lt;artifactId&gt;tutorial-rop-client&lt;/artifactId&gt;
+	&lt;version&gt;0.0.1-SNAPSHOT&lt;/version&gt;
+
+	&lt;dependencies&gt;
+		&lt;dependency&gt;
+			&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.0RC2&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;/dependency&gt;
+	&lt;/dependencies&gt;
+
+	&lt;repositories&gt;
+		&lt;repository&gt;
+			&lt;id&gt;caucho&lt;/id&gt;
+			&lt;name&gt;Caucho Repository&lt;/name&gt;
+			&lt;url&gt;http:<span class="code-comment">//caucho.com/m2&lt;/url&gt;
+</span>			&lt;layout&gt;<span class="code-keyword">default</span>&lt;/layout&gt;
+			&lt;snapshots&gt;
+				&lt;enabled&gt;<span class="code-keyword">false</span>&lt;/enabled&gt;
+			&lt;/snapshots&gt;
+			&lt;releases&gt;
+				&lt;enabled&gt;<span class="code-keyword">true</span>&lt;/enabled&gt;
+			&lt;/releases&gt;
+		&lt;/repository&gt;
+	&lt;/repositories&gt;
+&lt;/project&gt;</pre>
+</div></div>
+
+<p>Your computer must be connected to the internet. Once you save the <tt>pom.xml</tt>, Eclipse will download the needed jar files and add them to the project build path. After that all the errors should disappear.</p>
+
+<p>Now let's check the entity class pairs. They look almost identical to their server counterparts, although the superclass and the property access code are different. At this point these differences are somewhat academic, so let's go on with the tutorial.</p>
+
+<hr />
+<p><b>Next Step: <a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Tutorial/Remote Object Persistence Tutorial WebService/index.html" title="Remote Object Persistence Tutorial WebService">Remote Object Persistence Tutorial WebService</a></b></p>
+<hr /></div>
+</div>
+  <div class="clearer">.</div>
+  <div style="height: 12px; background-image: url('../../../../images/border_bottom.gif'); background-repeat: repeat-x;"></div>
+
+  <div class="smalltext copyright">
+    Copyright &copy;2001-2010 Apache Software Foundation
+  </div>
+
+</body>
+</html>

Propchange: cayenne/main/branches/STABLE-3.0/docs/doc/src/main/resources/doc/Documentation/Remote Object Persistence Guide/Remote Object Persistence Tutorial/Remote Object Persistence Tutorial Client Project/index.html
------------------------------------------------------------------------------
    svn:eol-style = native

Copied: cayenne/main/branches/STABLE-3.0/docs/doc/src/main/resources/doc/Documentation/Remote Object Persistence Guide/Remote Object Persistence Tutorial/Remote Object Persistence Tutorial Prerequisites/index.html (from r899988, cayenne/main/branches/STABLE-3.0/docs/doc/src/main/resources/doc/Documentation/Remote Object Persistence Guide/Remote Object Persistence Quick Start/Remote Object Persistence Tutorial Setup/index.html)
URL: http://svn.apache.org/viewvc/cayenne/main/branches/STABLE-3.0/docs/doc/src/main/resources/doc/Documentation/Remote%20Object%20Persistence%20Guide/Remote%20Object%20Persistence%20Tutorial/Remote%20Object%20Persistence%20Tutorial%20Prerequisites/index.html?p2=cayenne/main/branches/STABLE-3.0/docs/doc/src/main/resources/doc/Documentation/Remote%20Object%20Persistence%20Guide/Remote%20Object%20Persistence%20Tutorial/Remote%20Object%20Persistence%20Tutorial%20Prerequisites/index.html&p1=cayenne/main/branches/STABLE-3.0/docs/doc/src/main/resources/doc/Documentation/Remote%20Object%20Persistence%20Guide/Remote%20Object%20Persistence%20Quick%20Start/Remote%20Object%20Persistence%20Tutorial%20Setup/index.html&r1=899988&r2=900003&rev=900003&view=diff
==============================================================================
--- cayenne/main/branches/STABLE-3.0/docs/doc/src/main/resources/doc/Documentation/Remote Object Persistence Guide/Remote Object Persistence Quick Start/Remote Object Persistence Tutorial Setup/index.html (original)
+++ cayenne/main/branches/STABLE-3.0/docs/doc/src/main/resources/doc/Documentation/Remote Object Persistence Guide/Remote Object Persistence Tutorial/Remote Object Persistence Tutorial Prerequisites/index.html Sat Jan 16 17:27:39 2010
@@ -18,28 +18,28 @@
 -->
 <html>
   <head>
-    <title>Apache Cayenne Documentation - Remote Object Persistence Tutorial Setup</title>
+    <title>Apache Cayenne Documentation - Remote Object Persistence Tutorial Prerequisites</title>
     <style type="text/css">@import "../../../../style.css";</style>
   </head>
 <body>
   <div class="header">
     <div style="float: left;"><a href="http://cayenne.apache.org/"><img src="../../../../images/logo.gif" align="absmiddle" border="0"></a></div>
     <span class="logoSpaceLink"><a href="../../../../index.html">Cayenne User Documentation</a></span><br />
-    <span class="pagetitle">Remote Object Persistence Tutorial Setup</span>
+    <span class="pagetitle">Remote Object Persistence Tutorial Prerequisites</span>
   </div>
 <div id="cayenne_toc">
 <ul>
 <li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Introduction/index.html">Remote Object Persistence Introduction</a></li>
 <li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Features/index.html">Remote Object Persistence Features</a></li>
 <li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Installation/index.html">Remote Object Persistence Installation</a></li>
-<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Quick Start/index.html">Remote Object Persistence Quick Start</a><ul>
-<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Quick Start/Remote Object Persistence Tutorial Setup/index.html">Remote Object Persistence Tutorial Setup</a><ul>
+<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Tutorial/index.html">Remote Object Persistence Tutorial</a><ul>
+<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Tutorial/Remote Object Persistence Tutorial Prerequisites/index.html">Remote Object Persistence Tutorial Prerequisites</a><ul>
 </ul>
 </li>
-<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Quick Start/Remote Object Persistence Tutorial Client Project/index.html">Remote Object Persistence Tutorial Client Project</a></li>
-<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Quick Start/Remote Object Persistence Tutorial WebService/index.html">Remote Object Persistence Tutorial WebService</a></li>
-<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Quick Start/Remote Object Persistence Tutorial Client Code/index.html">Remote Object Persistence Tutorial Client Code</a></li>
-<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Quick Start/Remote Object Persistence Tutorial Authentication/index.html">Remote Object Persistence Tutorial Authentication</a></li>
+<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Tutorial/Remote Object Persistence Tutorial Client Project/index.html">Remote Object Persistence Tutorial Client Project</a></li>
+<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Tutorial/Remote Object Persistence Tutorial WebService/index.html">Remote Object Persistence Tutorial WebService</a></li>
+<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Tutorial/Remote Object Persistence Tutorial Client Code/index.html">Remote Object Persistence Tutorial Client Code</a></li>
+<li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Tutorial/Remote Object Persistence Tutorial Authentication/index.html">Remote Object Persistence Tutorial Authentication</a></li>
 </ul>
 </li>
 <li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Coding Server/index.html">Remote Object Persistence Coding Server</a></li>
@@ -52,45 +52,21 @@
 <li><a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Limitations/index.html">Remote Object Persistence Limitations</a></li>
 </ul>
 </div>
-<div id="ConfluenceContent"><p>This tutorial starts where the <a href="../../../../Documentation/Cayenne Guide/Tutorial/index.html" title="Tutorial">Tutorial</a> left off. All the code that is required however is in this tutorial so you don't have to have finished that tutorial to do this one. If you'd like to start here you are able to without reference to the other tutorial.</p>
-
-<h3><a name="RemoteObjectPersistenceTutorialSetup-SetupfromScratch"></a>Setup from Scratch</h3>
+<div id="ConfluenceContent"><p>This tutorial starts where the <a href="../../../../Documentation/Cayenne Guide/Tutorial/index.html" title="Tutorial">Cayenne Tutorial</a> left off. If you have gone through the previous tutorial, and have the "tutorial" project open in Eclipse, you can go directly to the <a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Tutorial/Remote Object Persistence Tutorial Client Project/index.html" title="Remote Object Persistence Tutorial Client Project">next step</a>. If not, here are the compressed instructions to prepare you for work with ROP:</p>
 
 <ul>
-	<li>Install Maven 2 (<a href="http://maven.apache.org" rel="nofollow">http://maven.apache.org</a>)</li>
-	<li>Get the code from <a href="http://svn.apache.org/repos/asf/cayenne/main/trunk/docs/quick-start-rop/" rel="nofollow">http://svn.apache.org/repos/asf/cayenne/main/trunk/docs/quick-start-rop/</a> with svn, i.e.
-	<ul>
-		<li>svn co <a href="http://svn.apache.org/repos/asf/cayenne/main/trunk/docs/quick-start-rop/" rel="nofollow">http://svn.apache.org/repos/asf/cayenne/main/trunk/docs/quick-start-rop/</a></li>
-	</ul>
-	</li>
-	<li>Build Eclipse config files (or your favorite IDE)
-	<ul>
-		<li>cd quick-start-rop</li>
-		<li>mvn eclipse:eclipse
-		<ul>
-			<li><a href="http://maven.apache.org/guides/mini/guide-ide-eclipse.html" rel="nofollow">Eclipse Info</a></li>
-			<li><a href="http://maven.apache.org/guides/mini/guide-ide-idea.html" rel="nofollow">IDEA Info</a></li>
-			<li><a href="http://maven.apache.org/guides/mini/guide-ide-netbeans/guide-ide-netbeans.html" rel="nofollow">NetBeans Info</a></li>
-		</ul>
-		</li>
-	</ul>
-	</li>
-	<li><a href="../../../../Documentation/Modeler Guide/Introduction to CayenneModeler/Running CayenneModeler/index.html" title="Running CayenneModeler">Start CayenneModeler</a> and <a href="../../../../Documentation/Cayenne Guide/Tutorial/Tutorial Starting Project/index.html" title="Tutorial Starting Project">add <tt>derby.jar</tt> to the modeler CLASSPATH</a>. Open <tt>"cayenne-rop-server-tutorial/src/main/resources/cayenne.xml"</tt> in CayenneModeler and <a href="../../../../Documentation/Cayenne Guide/Tutorial/Tutorial Java Classes/index.html" title="Tutorial Java Classes">generate a database schema</a> (skip the Java class generation part, just do the database).
-	<ul>
-		<li>You might also want to change the path to the db, its currently set to /tmp/testdb, which works fine on *nix but not so nicely on Windows.</li>
-	</ul>
-	</li>
-	<li>From the cayenne-rop-server-tutorial directory start jetty with the cayenne bits deployed
-	<ul>
-		<li>mvn jetty:run-war</li>
-	</ul>
-	</li>
-	<li>You are now running the Cayenne ROP server app</li>
+	<li><a href="/confluence/pages/createpage.action?spaceKey=CAYDOC30&amp;title=Step%201%20-%20Eclipse%20Setup&amp;linkCreation=true&amp;fromPageId=5966303" class="createlink">Step 1 &#45; Eclipse Setup</a></li>
+	<li><a href="../../../../Documentation/Cayenne Guide/Tutorial/Tutorial Starting Project/index.html" title="Tutorial Starting Project">Step 2 - Create a project</a></li>
+	<li><a href="../../../../Documentation/Cayenne Guide/Tutorial/Tutorial Object Relational Mapping/index.html" title="Tutorial Object Relational Mapping">Step 3 - Create Cayenne OR Mapping</a></li>
+	<li><a href="../../../../Documentation/Cayenne Guide/Tutorial/Tutorial Java Classes/index.html" title="Tutorial Java Classes">Step 4 - Create Java Classes</a></li>
+	<li><a href="../../../../Documentation/Cayenne Guide/Tutorial/Tutorial Webapp/index.html" title="Tutorial Webapp">Step 5 - Convert the project to webapp</a>.</li>
 </ul>
 
 
+<p>Note that at <tt>"Step 5"</tt> you can skip the JSP creation part. Just setup <tt>web.xml</tt> and <tt>maven-jetty-plugin</tt> in the POM.</p>
+
 <hr />
-<p><b>Next Step: <a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Quick Start/Remote Object Persistence Tutorial Client Project/index.html" title="Remote Object Persistence Tutorial Client Project">Remote Object Persistence Tutorial Client Project</a></b></p>
+<p><b>Next Step: <a href="../../../../Documentation/Remote Object Persistence Guide/Remote Object Persistence Tutorial/Remote Object Persistence Tutorial Client Project/index.html" title="Remote Object Persistence Tutorial Client Project">Remote Object Persistence Tutorial Client Project</a></b></p>
 <hr /></div>
 </div>
   <div class="clearer">.</div>