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/11/14 07:02:47 UTC

svn commit: r1034938 - in /cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation: Cayenne Guide/Tutorial/ Modeler Guide/Configuring Deployment Settings/ Modeler Guide/Introduction to CayenneModeler/General Navigation/ Modeler Guide/Modeling ...

Author: aadamchik
Date: Sun Nov 14 06:02:46 2010
New Revision: 1034938

URL: http://svn.apache.org/viewvc?rev=1034938&view=rev
Log:
syncing docs from wiki - part 4

Added:
    cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Cayenne Guide/Tutorial/
    cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Cayenne Guide/Tutorial/index.html   (with props)
    cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Modeler Guide/Configuring Deployment Settings/modeler-datadomain.png
    cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Modeler Guide/Introduction to CayenneModeler/General Navigation/icon-embeddable.gif
    cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Modeler Guide/Introduction to CayenneModeler/General Navigation/modeler-toolbar.png
    cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Modeler Guide/Modeling Database Layer/Password Encoding/
    cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Modeler Guide/Modeling Database Layer/Password Encoding/index.html   (with props)
    cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Modeler Guide/Modeling Database Layer/Password Encoding/screenshot_01.png
    cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Modeler Guide/Modeling Object Layer/CayenneModeler Flattened Relationships/modeler-flattenedrelationship.png
    cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Modeler Guide/Modeling Object Layer/Modeling Embeddables/
    cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Modeler Guide/Modeling Object Layer/Modeling Embeddables/index.html   (with props)
    cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Modeler Guide/Modeling Object Layer/Modeling Embeddables/modeler-eattributes.png
    cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Modeler Guide/Modeling Object Layer/Modeling Embeddables/modeler-embeddedinspector.png
    cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Modeler Guide/Modeling Object Layer/Modeling Embeddables/modeler-newembeddable.png
    cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Modeler Guide/Modeling Object Layer/Modeling Inheritance/Modeling Single Table Inheritance/
    cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Modeler Guide/Modeling Object Layer/Modeling Inheritance/Modeling Single Table Inheritance/book-dbentity.png
    cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Modeler Guide/Modeling Object Layer/Modeling Inheritance/Modeling Single Table Inheritance/book-qualifier.png
    cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Modeler Guide/Modeling Object Layer/Modeling Inheritance/Modeling Single Table Inheritance/index.html   (with props)
    cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Modeler Guide/Modeling Object Layer/Modeling Inheritance/Modeling Single Table Inheritance/single-table-inheritance.png
    cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Modeler Guide/Modeling Object Layer/Modeling Inheritance/Modeling Vertical Inheritance/
    cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Modeler Guide/Modeling Object Layer/Modeling Inheritance/Modeling Vertical Inheritance/flattened_attribute.png
    cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Modeler Guide/Modeling Object Layer/Modeling Inheritance/Modeling Vertical Inheritance/index.html   (with props)
    cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Modeler Guide/Modeling Object Layer/Modeling Inheritance/Modeling Vertical Inheritance/vertical-inheritance.png
    cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Modeler Guide/Modeling Object Layer/Modeling Inheritance/inheritance-overview.png
    cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Overview/Guide to 3.1 Features/
    cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Overview/Guide to 3.1 Features/Dependency Injection Container/
    cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Overview/Guide to 3.1 Features/Dependency Injection Container/index.html   (with props)
    cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Overview/Guide to 3.1 Features/index.html   (with props)
    cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Remote Object Persistence Guide/Remote Object Persistence Tutorial/
    cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Remote Object Persistence Guide/Remote Object Persistence Tutorial/index.html   (with props)

Added: cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Cayenne Guide/Tutorial/index.html
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Cayenne%20Guide/Tutorial/index.html?rev=1034938&view=auto
==============================================================================
--- cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Cayenne Guide/Tutorial/index.html (added)
+++ cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Cayenne Guide/Tutorial/index.html Sun Nov 14 06:02:46 2010
@@ -0,0 +1,62 @@
+<!--
+   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 - Tutorial</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">Tutorial</span>
+  </div>
+<div id="cayenne_toc">
+<ul>
+<li><a href="../../../Documentation/Cayenne Guide/Introduction/index.html">Introduction</a></li>
+<li><a href="../../../Documentation/Cayenne Guide/Installation/index.html">Installation</a></li>
+<li><a href="../../../Documentation/Cayenne Guide/Tutorial/index.html">Tutorial</a><ul>
+</ul>
+</li>
+<li><a href="../../../Documentation/Cayenne Guide/Design/index.html">Design</a></li>
+<li><a href="../../../Documentation/Cayenne Guide/DataContext/index.html">DataContext</a></li>
+<li><a href="../../../Documentation/Cayenne Guide/Queries/index.html">Queries</a></li>
+<li><a href="../../../Documentation/Cayenne Guide/DataObjects/index.html">DataObjects</a></li>
+<li><a href="../../../Documentation/Cayenne Guide/Stored Procedures/index.html">Stored Procedures</a></li>
+<li><a href="../../../Documentation/Cayenne Guide/Expressions/index.html">Expressions</a></li>
+<li><a href="../../../Documentation/Cayenne Guide/Lifecycle Callbacks/index.html">Lifecycle Callbacks</a></li>
+<li><a href="../../../Documentation/Cayenne Guide/Performance Tuning/index.html">Performance Tuning</a></li>
+<li><a href="../../../Documentation/Cayenne Guide/Caching and Fresh Data/index.html">Caching and Fresh Data</a></li>
+<li><a href="../../../Documentation/Cayenne Guide/Deployment/index.html">Deployment</a></li>
+<li><a href="../../../Documentation/Cayenne Guide/Ant Tasks/index.html">Ant Tasks</a></li>
+<li><a href="../../../Documentation/Cayenne Guide/Maven2 Plugins/index.html">Maven2 Plugins</a></li>
+<li><a href="../../../Documentation/Cayenne Guide/Customization/index.html">Customization</a></li>
+</ul>
+</div>
+<div id="ConfluenceContent"><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>There's no Cayenne 3.1 tutorial yet, as 3.1 is still under active development. You may want to check <a href="https://cwiki.apache.org/confluence/confluence/display/CAYDOC30/Tutorial" title="Tutorial">a tutorial for Cayenne 3.0</a> instead.</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>
+
+  <div class="smalltext copyright">
+    Copyright &copy;2001-2010 Apache Software Foundation
+  </div>
+
+</body>
+</html>

Propchange: cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Cayenne Guide/Tutorial/index.html
------------------------------------------------------------------------------
    svn:eol-style = native

Added: cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Modeler Guide/Configuring Deployment Settings/modeler-datadomain.png
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Modeler%20Guide/Configuring%20Deployment%20Settings/modeler-datadomain.png?rev=1034938&view=auto
==============================================================================
Files cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Modeler Guide/Configuring Deployment Settings/modeler-datadomain.png (added) and cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Modeler Guide/Configuring Deployment Settings/modeler-datadomain.png Sun Nov 14 06:02:46 2010 differ

Added: cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Modeler Guide/Introduction to CayenneModeler/General Navigation/icon-embeddable.gif
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Modeler%20Guide/Introduction%20to%20CayenneModeler/General%20Navigation/icon-embeddable.gif?rev=1034938&view=auto
==============================================================================
Files cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Modeler Guide/Introduction to CayenneModeler/General Navigation/icon-embeddable.gif (added) and cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Modeler Guide/Introduction to CayenneModeler/General Navigation/icon-embeddable.gif Sun Nov 14 06:02:46 2010 differ

Added: cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Modeler Guide/Introduction to CayenneModeler/General Navigation/modeler-toolbar.png
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Modeler%20Guide/Introduction%20to%20CayenneModeler/General%20Navigation/modeler-toolbar.png?rev=1034938&view=auto
==============================================================================
Files cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Modeler Guide/Introduction to CayenneModeler/General Navigation/modeler-toolbar.png (added) and cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Modeler Guide/Introduction to CayenneModeler/General Navigation/modeler-toolbar.png Sun Nov 14 06:02:46 2010 differ

Added: cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Modeler Guide/Modeling Database Layer/Password Encoding/index.html
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Modeler%20Guide/Modeling%20Database%20Layer/Password%20Encoding/index.html?rev=1034938&view=auto
==============================================================================
--- cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Modeler Guide/Modeling Database Layer/Password Encoding/index.html (added)
+++ cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Modeler Guide/Modeling Database Layer/Password Encoding/index.html Sun Nov 14 06:02:46 2010
@@ -0,0 +1,148 @@
+<!--
+   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 - Password Encoding</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">Password Encoding</span>
+  </div>
+<div id="cayenne_toc">
+<ul>
+<li><a href="../../../../Documentation/Modeler Guide/Introduction to CayenneModeler/index.html">Introduction to CayenneModeler</a></li>
+<li><a href="../../../../Documentation/Modeler Guide/ORM Case Study/index.html">ORM Case Study</a></li>
+<li><a href="../../../../Documentation/Modeler Guide/Cayenne Project Structure/index.html">Cayenne Project Structure</a></li>
+<li><a href="../../../../Documentation/Modeler Guide/Common Modeling Tasks/index.html">Common Modeling Tasks</a></li>
+<li><a href="../../../../Documentation/Modeler Guide/Modeling Database Layer/index.html">Modeling Database Layer</a><ul>
+<li><a href="../../../../Documentation/Modeler Guide/Modeling Database Layer/Password Encoding/index.html">Password Encoding</a><ul>
+</ul>
+</li>
+<li><a href="../../../../Documentation/Modeler Guide/Modeling Database Layer/To Dep PK Checkbox/index.html">To Dep PK Checkbox</a></li>
+</ul>
+</li>
+<li><a href="../../../../Documentation/Modeler Guide/Modeling Object Layer/index.html">Modeling Object Layer</a></li>
+<li><a href="../../../../Documentation/Modeler Guide/Modeling Queries/index.html">Modeling Queries</a></li>
+<li><a href="../../../../Documentation/Modeler Guide/Configuring Deployment Settings/index.html">Configuring Deployment Settings</a></li>
+<li><a href="../../../../Documentation/Modeler Guide/Migrate Changes between Model and Database/index.html">Migrate Changes between Model and Database</a></li>
+<li><a href="../../../../Documentation/Modeler Guide/Preferences Panel/index.html">Preferences Panel</a></li>
+<li><a href="../../../../Documentation/Modeler Guide/Modeling Tips/index.html">Modeling Tips</a></li>
+</ul>
+</div>
+<div id="ConfluenceContent"><p>Cayenne stores the database connection details within the XML model file. This includes the database URI, database name, user name and password. For many people this works perfectly well and is the simplest approach. For others, storing the database as plain text poses a security problem and a more sophisticated approach is needed.</p>
+
+
+<h3><a name="PasswordEncoding-Modeler"></a>Modeler</h3>
+
+<p>Let's start with configuring the Modeler.</p>
+
+<p><span class="image-wrap" style=""><img src="screenshot_01.png?version=2&amp;modificationDate=1164714689000" style="border: 0px solid black" /></span></p>
+
+<p>The new fields are:</p>
+
+<ul>
+	<li><b>Password Encoder</b> The class used to encode and decode passwords.  Two standard encoders are included: PlainTextPasswordEncoder and Rot13PasswordEncoder.  The plain text encoder is essentially the current Cayenne default &#8211; passwords are stored in plain text.  The <a href="http://en.wikipedia.org/wiki/ROT13" class="external-link" rel="nofollow">ROT-13 </a> encoder does a simple Caesar cipher of the password, which is easily unscrambled, but provides a slight degree of obfuscation.  This field is user-editable and a different/custom class can be entered.</li>
+</ul>
+
+
+<ul>
+	<li><b>Password Salt</b> A user-entered text string which can be used to <a href="http://en.wikipedia.org/wiki/Salt_%28cryptography%29" class="external-link" rel="nofollow">salt </a> the encoder. Not all encoders make use of this value: for example the plain text and ROT-13 encoders do not.</li>
+</ul>
+
+
+<ul>
+	<li><b>Password Location</b> A pulldown list for where to obtain the password.  The default is from inside the Cayenne model (the normal Cayenne method).  Other options include Classpath (searches the Java CLASSPATH for it), Executable Program (run a command to obtain the password), and URL (file: or http: based URLs are common choices).</li>
+</ul>
+
+
+<ul>
+	<li><b>Password Source</b> This field is ignored if the Password Location is Model.  If the Password Location is Classpath, Executable Program, or URL, then it is used to specify the filename to find in the CLASSPATH, the program to run (with all parameters), or the URL.</li>
+</ul>
+
+
+<h3><a name="PasswordEncoding-API"></a>API</h3>
+
+<p>If you want to implement your own password encoder, you will need to implement the <tt>PasswordEncoding</tt> interface:</p>
+
+<div class="code panel" style="border-style: solid;border-width: 1px;"><div class="codeHeader panelHeader" style="border-bottom-width: 1px;border-bottom-style: solid;"><b>PasswordEncoding.java</b></div><div class="codeContent panelContent">
+<pre class="code-java"><span class="code-keyword">public</span> <span class="code-keyword">interface</span> PasswordEncoding
+{
+  <span class="code-keyword">final</span> <span class="code-object">String</span>[] standardEncoders =
+    <span class="code-keyword">new</span> <span class="code-object">String</span>[] { PlainTextPasswordEncoder.class.getName(),
+                   Rot13PasswordEncoder.class.getName() };
+
+  /**
+   * Decodes an encoded database password.
+   * 
+   * @param encodedPassword - The encoded password to be decoded
+   * @param salt - An optional data element which can be used to salt the algorithm.
+   * @<span class="code-keyword">return</span> The decoded normal/plain plassword.
+   */
+  <span class="code-keyword">public</span> <span class="code-object">String</span> decodePassword(<span class="code-object">String</span> encodedPassword, <span class="code-object">String</span> salt);
+
+  /**
+   * Encodes a normal/plain database password.
+   * 
+   * @param normalPassword - The normal/plain password to be encoded
+   * @param salt - An optional data element which can be used to salt the algorithm.
+   * @<span class="code-keyword">return</span> The encoded password.
+   */
+  <span class="code-keyword">public</span> <span class="code-object">String</span> encodePassword(<span class="code-object">String</span> normalPassword, <span class="code-object">String</span> salt);
+}
+</pre>
+</div></div>
+
+<p>When loading the model, the retrieved password is passed through the <tt>decodePassword(encodedPassword, salt)</tt> method to obtain the actual password.  When saving the model, if the <b>Password Location</b> is in the Cayenne Model or Java Classpath, then the <tt>encodePassword(normalPassword, salt)</tt> method is called and the returned value is saved.</p>
+
+<p>The standard encoders, such as the plain text encoder, are trival:</p>
+
+<div class="code panel" style="border-style: solid;border-width: 1px;"><div class="codeHeader panelHeader" style="border-bottom-width: 1px;border-bottom-style: solid;"><b>PlainTextPasswordEncoder.java</b></div><div class="codeContent panelContent">
+<pre class="code-java"><span class="code-keyword">package</span> org.objectstyle.cayenne.conf;
+
+<span class="code-keyword">public</span> class PlainTextPasswordEncoder <span class="code-keyword">implements</span> PasswordEncoding
+{
+  <span class="code-keyword">public</span> <span class="code-object">String</span> decodePassword(<span class="code-object">String</span> encodedPassword, <span class="code-object">String</span> salt)
+  {
+    <span class="code-keyword">return</span> encodedPassword;
+  }
+
+  <span class="code-keyword">public</span> <span class="code-object">String</span> encodePassword(<span class="code-object">String</span> normalPassword, <span class="code-object">String</span> salt)
+  {
+    <span class="code-keyword">return</span> normalPassword;
+  }
+}
+</pre>
+</div></div>
+
+<p>If your organization requires something more advanced, say to use real encryption or to fetch the password from a web service or LDAP source, then you can write an encoder to handle it and plug it into Cayenne (make sure to add the JAR with your custom encoder to the Modeler's Classpath Preferences settings and to the Java Classpath at runtime).</p>
+
+<div class='panelMacro'><table class='infoMacro'><colgroup><col width='24'><col></colgroup><tr><td valign='top'><img src="../../../../images/emoticons/information.gif" width="16" height="16" align="absmiddle" alt="" border="0"></td><td><b>Useful Information</b><br />The encoding is only applied to the database password on the Cayenne side.  The data stream between the application and database is unaffected, so the password could (and usually will) be transmitted in-the-clear over the network to the database.</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>
+
+  <div class="smalltext copyright">
+    Copyright &copy;2001-2010 Apache Software Foundation
+  </div>
+
+</body>
+</html>

Propchange: cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Modeler Guide/Modeling Database Layer/Password Encoding/index.html
------------------------------------------------------------------------------
    svn:eol-style = native

Added: cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Modeler Guide/Modeling Database Layer/Password Encoding/screenshot_01.png
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Modeler%20Guide/Modeling%20Database%20Layer/Password%20Encoding/screenshot_01.png?rev=1034938&view=auto
==============================================================================
Files cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Modeler Guide/Modeling Database Layer/Password Encoding/screenshot_01.png (added) and cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Modeler Guide/Modeling Database Layer/Password Encoding/screenshot_01.png Sun Nov 14 06:02:46 2010 differ

Added: cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Modeler Guide/Modeling Object Layer/CayenneModeler Flattened Relationships/modeler-flattenedrelationship.png
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Modeler%20Guide/Modeling%20Object%20Layer/CayenneModeler%20Flattened%20Relationships/modeler-flattenedrelationship.png?rev=1034938&view=auto
==============================================================================
Files cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Modeler Guide/Modeling Object Layer/CayenneModeler Flattened Relationships/modeler-flattenedrelationship.png (added) and cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Modeler Guide/Modeling Object Layer/CayenneModeler Flattened Relationships/modeler-flattenedrelationship.png Sun Nov 14 06:02:46 2010 differ

Added: cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Modeler Guide/Modeling Object Layer/Modeling Embeddables/index.html
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Modeler%20Guide/Modeling%20Object%20Layer/Modeling%20Embeddables/index.html?rev=1034938&view=auto
==============================================================================
--- cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Modeler Guide/Modeling Object Layer/Modeling Embeddables/index.html (added)
+++ cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Modeler Guide/Modeling Object Layer/Modeling Embeddables/index.html Sun Nov 14 06:02:46 2010
@@ -0,0 +1,89 @@
+<!--
+   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 - Modeling Embeddables</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">Modeling Embeddables</span>
+  </div>
+<div id="cayenne_toc">
+<ul>
+<li><a href="../../../../Documentation/Modeler Guide/Introduction to CayenneModeler/index.html">Introduction to CayenneModeler</a></li>
+<li><a href="../../../../Documentation/Modeler Guide/ORM Case Study/index.html">ORM Case Study</a></li>
+<li><a href="../../../../Documentation/Modeler Guide/Cayenne Project Structure/index.html">Cayenne Project Structure</a></li>
+<li><a href="../../../../Documentation/Modeler Guide/Common Modeling Tasks/index.html">Common Modeling Tasks</a></li>
+<li><a href="../../../../Documentation/Modeler Guide/Modeling Database Layer/index.html">Modeling Database Layer</a></li>
+<li><a href="../../../../Documentation/Modeler Guide/Modeling Object Layer/index.html">Modeling Object Layer</a><ul>
+<li><a href="../../../../Documentation/Modeler Guide/Modeling Object Layer/Modeling ObjEntities/index.html">Modeling ObjEntities</a></li>
+<li><a href="../../../../Documentation/Modeler Guide/Modeling Object Layer/Modeling Inheritance/index.html">Modeling Inheritance</a></li>
+<li><a href="../../../../Documentation/Modeler Guide/Modeling Object Layer/Modeling Embeddables/index.html">Modeling Embeddables</a><ul>
+</ul>
+</li>
+<li><a href="../../../../Documentation/Modeler Guide/Modeling Object Layer/Modeling Enumerations/index.html">Modeling Enumerations</a></li>
+<li><a href="../../../../Documentation/Modeler Guide/Modeling Object Layer/Many-to-Many Relationships/index.html">Many-to-Many Relationships</a></li>
+<li><a href="../../../../Documentation/Modeler Guide/Modeling Object Layer/CayenneModeler Flattened Relationships/index.html">CayenneModeler Flattened Relationships</a></li>
+<li><a href="../../../../Documentation/Modeler Guide/Modeling Object Layer/Delete Rules/index.html">Delete Rules</a></li>
+<li><a href="../../../../Documentation/Modeler Guide/Modeling Object Layer/Modeling Remote Persistence/index.html">Modeling Remote Persistence</a></li>
+</ul>
+</li>
+<li><a href="../../../../Documentation/Modeler Guide/Modeling Queries/index.html">Modeling Queries</a></li>
+<li><a href="../../../../Documentation/Modeler Guide/Configuring Deployment Settings/index.html">Configuring Deployment Settings</a></li>
+<li><a href="../../../../Documentation/Modeler Guide/Migrate Changes between Model and Database/index.html">Migrate Changes between Model and Database</a></li>
+<li><a href="../../../../Documentation/Modeler Guide/Preferences Panel/index.html">Preferences Panel</a></li>
+<li><a href="../../../../Documentation/Modeler Guide/Modeling Tips/index.html">Modeling Tips</a></li>
+</ul>
+</div>
+<div id="ConfluenceContent"><p>An <tt>Embeddable</tt> is a persistent Java class that does not have its own persistent "identity" ("identity" is an ORM concept similar to "primary key") and is managed by Cayenne as a part of its owning object. Embeddables are mapped in Cayenne similar to ObjEntities, except that they are not linked to any DbEntity. An Embeddable becomes linked to one when it is "embedded" in an owning ObjEntity. "Embedding" means mapping ObjEntity's ObjAttribute to an embeddable type.  A single embeddable can be included ("embedded") in more than one ObjEntity.</p>
+
+<p>Embeddable classes are generated by Cayenne (via the Modeler, Ant or Maven), just like other persistent classes. There's no common embeddable superclass, so each embeddable inherits from Object. Still Cayenne generates a familiar pair of <tt>_Xyz</tt> superclass and <tt>Xyz</tt> subclass for each Embeddable.</p>
+
+<h3><a name="ModelingEmbeddables-MappinganEmbeddable"></a>Mapping an Embeddable</h3>
+
+<p>A new Embeddable is created by clicking on the "Create Embeddable" button on the toolbar (or selecting an appropriate item from the menu). The only required field is a fully qualified class name:</p>
+
+<p><span class="image-wrap" style=""><img src="modeler-newembeddable.png?version=1&amp;modificationDate=1261946466000" style="border: 0px solid black" /></span></p>
+
+<p>An embeddable can have one or more attributes. Each attribute requires at least the name and the java type specified. Quite often you would also specify the DbAttribute name. Although Embeddable is not connected to a DbEntity just yet, this will save some typing during embedding it to ObjEntities (provided the DB column names for the Embeddable are the same across ObjEntities):</p>
+
+<p><span class="image-wrap" style=""><img src="modeler-eattributes.png?version=1&amp;modificationDate=1261946896000" style="border: 0px solid black" /></span></p>
+
+<h3><a name="ModelingEmbeddables-EmbeddinganEmbeddable"></a>Embedding an Embeddable</h3>
+
+<p>A process of embedding an Embeddable is rather simple - just select the embeddable type for a given ObjAttribute "java Type". CayenneModeler would automatically include all Embeddable classes it knows about in the Java types dropdown. If the underlying DbEntity has the same column names as the original Embeddable, that's all you need to do. If not, you can override the default column names by clicking on the attribute inspector button ("I") and changing DbAttribute mappings for this particular embedding:</p>
+
+<p><span class="image-wrap" style=""><img src="modeler-embeddedinspector.png?version=1&amp;modificationDate=1261947231000" style="border: 0px solid black" /></span></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/trunk/docs/doc/src/main/resources/doc/Documentation/Modeler Guide/Modeling Object Layer/Modeling Embeddables/index.html
------------------------------------------------------------------------------
    svn:eol-style = native

Added: cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Modeler Guide/Modeling Object Layer/Modeling Embeddables/modeler-eattributes.png
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Modeler%20Guide/Modeling%20Object%20Layer/Modeling%20Embeddables/modeler-eattributes.png?rev=1034938&view=auto
==============================================================================
Files cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Modeler Guide/Modeling Object Layer/Modeling Embeddables/modeler-eattributes.png (added) and cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Modeler Guide/Modeling Object Layer/Modeling Embeddables/modeler-eattributes.png Sun Nov 14 06:02:46 2010 differ

Added: cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Modeler Guide/Modeling Object Layer/Modeling Embeddables/modeler-embeddedinspector.png
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Modeler%20Guide/Modeling%20Object%20Layer/Modeling%20Embeddables/modeler-embeddedinspector.png?rev=1034938&view=auto
==============================================================================
Files cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Modeler Guide/Modeling Object Layer/Modeling Embeddables/modeler-embeddedinspector.png (added) and cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Modeler Guide/Modeling Object Layer/Modeling Embeddables/modeler-embeddedinspector.png Sun Nov 14 06:02:46 2010 differ

Added: cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Modeler Guide/Modeling Object Layer/Modeling Embeddables/modeler-newembeddable.png
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Modeler%20Guide/Modeling%20Object%20Layer/Modeling%20Embeddables/modeler-newembeddable.png?rev=1034938&view=auto
==============================================================================
Files cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Modeler Guide/Modeling Object Layer/Modeling Embeddables/modeler-newembeddable.png (added) and cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Modeler Guide/Modeling Object Layer/Modeling Embeddables/modeler-newembeddable.png Sun Nov 14 06:02:46 2010 differ

Added: cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Modeler Guide/Modeling Object Layer/Modeling Inheritance/Modeling Single Table Inheritance/book-dbentity.png
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Modeler%20Guide/Modeling%20Object%20Layer/Modeling%20Inheritance/Modeling%20Single%20Table%20Inheritance/book-dbentity.png?rev=1034938&view=auto
==============================================================================
Files cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Modeler Guide/Modeling Object Layer/Modeling Inheritance/Modeling Single Table Inheritance/book-dbentity.png (added) and cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Modeler Guide/Modeling Object Layer/Modeling Inheritance/Modeling Single Table Inheritance/book-dbentity.png Sun Nov 14 06:02:46 2010 differ

Added: cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Modeler Guide/Modeling Object Layer/Modeling Inheritance/Modeling Single Table Inheritance/book-qualifier.png
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Modeler%20Guide/Modeling%20Object%20Layer/Modeling%20Inheritance/Modeling%20Single%20Table%20Inheritance/book-qualifier.png?rev=1034938&view=auto
==============================================================================
Files cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Modeler Guide/Modeling Object Layer/Modeling Inheritance/Modeling Single Table Inheritance/book-qualifier.png (added) and cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Modeler Guide/Modeling Object Layer/Modeling Inheritance/Modeling Single Table Inheritance/book-qualifier.png Sun Nov 14 06:02:46 2010 differ

Added: cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Modeler Guide/Modeling Object Layer/Modeling Inheritance/Modeling Single Table Inheritance/index.html
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Modeler%20Guide/Modeling%20Object%20Layer/Modeling%20Inheritance/Modeling%20Single%20Table%20Inheritance/index.html?rev=1034938&view=auto
==============================================================================
--- cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Modeler Guide/Modeling Object Layer/Modeling Inheritance/Modeling Single Table Inheritance/index.html (added)
+++ cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Modeler Guide/Modeling Object Layer/Modeling Inheritance/Modeling Single Table Inheritance/index.html Sun Nov 14 06:02:46 2010
@@ -0,0 +1,102 @@
+<!--
+   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 - Modeling Single Table Inheritance</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">Modeling Single Table Inheritance</span>
+  </div>
+<div id="cayenne_toc">
+<ul>
+<li><a href="../../../../../Documentation/Modeler Guide/Introduction to CayenneModeler/index.html">Introduction to CayenneModeler</a></li>
+<li><a href="../../../../../Documentation/Modeler Guide/ORM Case Study/index.html">ORM Case Study</a></li>
+<li><a href="../../../../../Documentation/Modeler Guide/Cayenne Project Structure/index.html">Cayenne Project Structure</a></li>
+<li><a href="../../../../../Documentation/Modeler Guide/Common Modeling Tasks/index.html">Common Modeling Tasks</a></li>
+<li><a href="../../../../../Documentation/Modeler Guide/Modeling Database Layer/index.html">Modeling Database Layer</a></li>
+<li><a href="../../../../../Documentation/Modeler Guide/Modeling Object Layer/index.html">Modeling Object Layer</a><ul>
+<li><a href="../../../../../Documentation/Modeler Guide/Modeling Object Layer/Modeling ObjEntities/index.html">Modeling ObjEntities</a></li>
+<li><a href="../../../../../Documentation/Modeler Guide/Modeling Object Layer/Modeling Inheritance/index.html">Modeling Inheritance</a><ul>
+<li><a href="../../../../../Documentation/Modeler Guide/Modeling Object Layer/Modeling Inheritance/Modeling Single Table Inheritance/index.html">Modeling Single Table Inheritance</a><ul>
+</ul>
+</li>
+<li><a href="../../../../../Documentation/Modeler Guide/Modeling Object Layer/Modeling Inheritance/Modeling Vertical Inheritance/index.html">Modeling Vertical Inheritance</a></li>
+</ul>
+</li>
+<li><a href="../../../../../Documentation/Modeler Guide/Modeling Object Layer/Modeling Embeddables/index.html">Modeling Embeddables</a></li>
+<li><a href="../../../../../Documentation/Modeler Guide/Modeling Object Layer/Modeling Enumerations/index.html">Modeling Enumerations</a></li>
+<li><a href="../../../../../Documentation/Modeler Guide/Modeling Object Layer/Many-to-Many Relationships/index.html">Many-to-Many Relationships</a></li>
+<li><a href="../../../../../Documentation/Modeler Guide/Modeling Object Layer/CayenneModeler Flattened Relationships/index.html">CayenneModeler Flattened Relationships</a></li>
+<li><a href="../../../../../Documentation/Modeler Guide/Modeling Object Layer/Delete Rules/index.html">Delete Rules</a></li>
+<li><a href="../../../../../Documentation/Modeler Guide/Modeling Object Layer/Modeling Remote Persistence/index.html">Modeling Remote Persistence</a></li>
+</ul>
+</li>
+<li><a href="../../../../../Documentation/Modeler Guide/Modeling Queries/index.html">Modeling Queries</a></li>
+<li><a href="../../../../../Documentation/Modeler Guide/Configuring Deployment Settings/index.html">Configuring Deployment Settings</a></li>
+<li><a href="../../../../../Documentation/Modeler Guide/Migrate Changes between Model and Database/index.html">Migrate Changes between Model and Database</a></li>
+<li><a href="../../../../../Documentation/Modeler Guide/Preferences Panel/index.html">Preferences Panel</a></li>
+<li><a href="../../../../../Documentation/Modeler Guide/Modeling Tips/index.html">Modeling Tips</a></li>
+</ul>
+</div>
+<div id="ConfluenceContent"><h2><a name="ModelingSingleTableInheritance-ModelingSingleTableInheritance"></a>Modeling Single Table Inheritance</h2>
+
+<p>Let's look at a specific example shown below. An online bookstore may be selling regular paper books and electronic books. Both share a number of common attributes placed in a common superclass "Book", but also have a number of specific attributes found only in each book distribution format:</p>
+
+<p><span class="image-wrap" style=""><img src="single-table-inheritance.png?version=1&amp;modificationDate=1280231792000" style="border: 0px solid black" /></span></p>
+
+<blockquote><p>As with many other ORM inheritance examples, this one is contrived and oversimplified. In a real bookstore it is likely that the same book is available in both formats, so mapping this inheritance hierarchy as a composition may be more appropriate, but let's stick with this example for simplicity sake.</p></blockquote>
+
+<p>As you see, a "BOOK" table contains attributes from superclass and all subclasses, plus it has the ID (primary key) and a "TYPE" column which will be used as a "discriminator colum" to determine which sublcass is stored in each row. Mapping of this inheritance hierarchy, just like mapping a single class, starts by creating a DbEntity for the "BOOK" table:</p>
+
+<p><span class="image-wrap" style=""><img src="book-dbentity.png?version=1&amp;modificationDate=1280231772000" style="border: 0px solid black" /></span></p>
+
+<p>Now let's create a superclass "Book", mapping only the columns that should be in the superclass (you can do it by clicking on "Create ObjEntity" icon on the DbEntity toolbar, and then removing unneeded subclass attributes). The next step is to create two subclasses. For each one of them, create a new ObjEntity, then under "Inheritance" dropdown specify "Book" as a superclass. This automatically selects "Table/View" to be "BOOK". </p>
+
+<p>While Book is an abstract class and we did not specify entity qualifier for it (we could if it wasn't abstract), PaperBook and EBook both require "Qualifier" field to be populated. Let's assume that "E" is a designator for e-books, and "P" - for the paper books, then respective qualifiers would look like this:</p>
+
+<ul>
+	<li><tt>type = 'E'</tt></li>
+	<li><tt>type = 'P'</tt></li>
+</ul>
+
+
+<p><span class="image-wrap" style=""><img src="book-qualifier.png?version=1&amp;modificationDate=1280231781000" style="border: 0px solid black" /></span></p>
+
+<blockquote><p>Unlike some other ORMs, Cayenne is really flexible about the semantics of discriminator columns. Qualifier can be any valid Cayenne expression, as long as it doesn't span any relationships (i.e. uses columns of the root table only). It doesn't have to be a single collumn, it can contain less or greater expressions. E.g. "<tt>price &gt; 500</tt>", "<tt>type = 'E' and sizeMB &lt; 1000</tt>", etc. Note however that if the expression is not settable (e.g. when using &lt; or &gt;), Cayenne won't be able to guess the right values on insert and the user application must provide those values explicitly. </p></blockquote>
+
+<blockquote><p>Also note that Qualifiers are not inherited. When defining qualifiers for inheritance purposes keep in mind that a fetch qualifier built by Cayenne will include the qualifier of a root entity of a query and qualifiers of all its known subentities joined using "or" operator. </p></blockquote>
+
+<p>Finally switch to "Attributes" tab and in addition to the already shown inherited attributes, add entity-specific attributes. Note that Relationships can also be inherited, or subclass-specific (not shown in our example).</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/trunk/docs/doc/src/main/resources/doc/Documentation/Modeler Guide/Modeling Object Layer/Modeling Inheritance/Modeling Single Table Inheritance/index.html
------------------------------------------------------------------------------
    svn:eol-style = native

Added: cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Modeler Guide/Modeling Object Layer/Modeling Inheritance/Modeling Single Table Inheritance/single-table-inheritance.png
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Modeler%20Guide/Modeling%20Object%20Layer/Modeling%20Inheritance/Modeling%20Single%20Table%20Inheritance/single-table-inheritance.png?rev=1034938&view=auto
==============================================================================
Files cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Modeler Guide/Modeling Object Layer/Modeling Inheritance/Modeling Single Table Inheritance/single-table-inheritance.png (added) and cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Modeler Guide/Modeling Object Layer/Modeling Inheritance/Modeling Single Table Inheritance/single-table-inheritance.png Sun Nov 14 06:02:46 2010 differ

Added: cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Modeler Guide/Modeling Object Layer/Modeling Inheritance/Modeling Vertical Inheritance/flattened_attribute.png
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Modeler%20Guide/Modeling%20Object%20Layer/Modeling%20Inheritance/Modeling%20Vertical%20Inheritance/flattened_attribute.png?rev=1034938&view=auto
==============================================================================
Files cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Modeler Guide/Modeling Object Layer/Modeling Inheritance/Modeling Vertical Inheritance/flattened_attribute.png (added) and cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Modeler Guide/Modeling Object Layer/Modeling Inheritance/Modeling Vertical Inheritance/flattened_attribute.png Sun Nov 14 06:02:46 2010 differ

Added: cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Modeler Guide/Modeling Object Layer/Modeling Inheritance/Modeling Vertical Inheritance/index.html
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Modeler%20Guide/Modeling%20Object%20Layer/Modeling%20Inheritance/Modeling%20Vertical%20Inheritance/index.html?rev=1034938&view=auto
==============================================================================
--- cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Modeler Guide/Modeling Object Layer/Modeling Inheritance/Modeling Vertical Inheritance/index.html (added)
+++ cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Modeler Guide/Modeling Object Layer/Modeling Inheritance/Modeling Vertical Inheritance/index.html Sun Nov 14 06:02:46 2010
@@ -0,0 +1,85 @@
+<!--
+   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 - Modeling Vertical Inheritance</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">Modeling Vertical Inheritance</span>
+  </div>
+<div id="cayenne_toc">
+<ul>
+<li><a href="../../../../../Documentation/Modeler Guide/Introduction to CayenneModeler/index.html">Introduction to CayenneModeler</a></li>
+<li><a href="../../../../../Documentation/Modeler Guide/ORM Case Study/index.html">ORM Case Study</a></li>
+<li><a href="../../../../../Documentation/Modeler Guide/Cayenne Project Structure/index.html">Cayenne Project Structure</a></li>
+<li><a href="../../../../../Documentation/Modeler Guide/Common Modeling Tasks/index.html">Common Modeling Tasks</a></li>
+<li><a href="../../../../../Documentation/Modeler Guide/Modeling Database Layer/index.html">Modeling Database Layer</a></li>
+<li><a href="../../../../../Documentation/Modeler Guide/Modeling Object Layer/index.html">Modeling Object Layer</a><ul>
+<li><a href="../../../../../Documentation/Modeler Guide/Modeling Object Layer/Modeling ObjEntities/index.html">Modeling ObjEntities</a></li>
+<li><a href="../../../../../Documentation/Modeler Guide/Modeling Object Layer/Modeling Inheritance/index.html">Modeling Inheritance</a><ul>
+<li><a href="../../../../../Documentation/Modeler Guide/Modeling Object Layer/Modeling Inheritance/Modeling Single Table Inheritance/index.html">Modeling Single Table Inheritance</a></li>
+<li><a href="../../../../../Documentation/Modeler Guide/Modeling Object Layer/Modeling Inheritance/Modeling Vertical Inheritance/index.html">Modeling Vertical Inheritance</a><ul>
+</ul>
+</li>
+</ul>
+</li>
+<li><a href="../../../../../Documentation/Modeler Guide/Modeling Object Layer/Modeling Embeddables/index.html">Modeling Embeddables</a></li>
+<li><a href="../../../../../Documentation/Modeler Guide/Modeling Object Layer/Modeling Enumerations/index.html">Modeling Enumerations</a></li>
+<li><a href="../../../../../Documentation/Modeler Guide/Modeling Object Layer/Many-to-Many Relationships/index.html">Many-to-Many Relationships</a></li>
+<li><a href="../../../../../Documentation/Modeler Guide/Modeling Object Layer/CayenneModeler Flattened Relationships/index.html">CayenneModeler Flattened Relationships</a></li>
+<li><a href="../../../../../Documentation/Modeler Guide/Modeling Object Layer/Delete Rules/index.html">Delete Rules</a></li>
+<li><a href="../../../../../Documentation/Modeler Guide/Modeling Object Layer/Modeling Remote Persistence/index.html">Modeling Remote Persistence</a></li>
+</ul>
+</li>
+<li><a href="../../../../../Documentation/Modeler Guide/Modeling Queries/index.html">Modeling Queries</a></li>
+<li><a href="../../../../../Documentation/Modeler Guide/Configuring Deployment Settings/index.html">Configuring Deployment Settings</a></li>
+<li><a href="../../../../../Documentation/Modeler Guide/Migrate Changes between Model and Database/index.html">Migrate Changes between Model and Database</a></li>
+<li><a href="../../../../../Documentation/Modeler Guide/Preferences Panel/index.html">Preferences Panel</a></li>
+<li><a href="../../../../../Documentation/Modeler Guide/Modeling Tips/index.html">Modeling Tips</a></li>
+</ul>
+</div>
+<div id="ConfluenceContent"><h2><a name="ModelingVerticalInheritance-ModelingVerticalInheritance"></a>Modeling Vertical Inheritance</h2>
+
+<p>Continuing with the example used for <a href="../../../../../Documentation/Modeler Guide/Modeling Object Layer/Modeling Inheritance/Modeling Single Table Inheritance/index.html" title="Modeling Single Table Inheritance">single table mapping</a>, let's re-map it as vertical inheritance.</p>
+
+<p><span class="image-wrap" style=""><img src="vertical-inheritance.png?version=1&amp;modificationDate=1280231909000" style="border: 0px solid black" /></span></p>
+
+<p>Note that in Cayenne <b>vertical</b> is essentially <b>single table with flattened attributes in subclasses</b>. We'll demonstrate this below.</p>
+
+<p>We need to start by mapping all 3 tables, and creating 1..1 relationship between BOOK and subclass tables ("To Dep PK" must be checked on BOOK side of relationships).</p>
+
+<p>On the ObjEntity end, there is no difference in mapping qualifier (it is needed), superclass, root table ("Table/View" for subclasses is still "BOOK"). The only difference is that subclass-specific attributes are mapped as "flattened attributes":</p>
+
+<p><span class="image-wrap" style=""><img src="flattened_attribute.png?version=1&amp;modificationDate=1280231902000" style="border: 0px solid black" /></span></p>
+
+<blockquote><p>Note that flattened attributes can be used with or without inheritance, however in combination with single-table inheritance mapping, they give us "vertical" inheritance.</p></blockquote></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/trunk/docs/doc/src/main/resources/doc/Documentation/Modeler Guide/Modeling Object Layer/Modeling Inheritance/Modeling Vertical Inheritance/index.html
------------------------------------------------------------------------------
    svn:eol-style = native

Added: cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Modeler Guide/Modeling Object Layer/Modeling Inheritance/Modeling Vertical Inheritance/vertical-inheritance.png
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Modeler%20Guide/Modeling%20Object%20Layer/Modeling%20Inheritance/Modeling%20Vertical%20Inheritance/vertical-inheritance.png?rev=1034938&view=auto
==============================================================================
Files cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Modeler Guide/Modeling Object Layer/Modeling Inheritance/Modeling Vertical Inheritance/vertical-inheritance.png (added) and cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Modeler Guide/Modeling Object Layer/Modeling Inheritance/Modeling Vertical Inheritance/vertical-inheritance.png Sun Nov 14 06:02:46 2010 differ

Added: cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Modeler Guide/Modeling Object Layer/Modeling Inheritance/inheritance-overview.png
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Modeler%20Guide/Modeling%20Object%20Layer/Modeling%20Inheritance/inheritance-overview.png?rev=1034938&view=auto
==============================================================================
Files cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Modeler Guide/Modeling Object Layer/Modeling Inheritance/inheritance-overview.png (added) and cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Modeler Guide/Modeling Object Layer/Modeling Inheritance/inheritance-overview.png Sun Nov 14 06:02:46 2010 differ

Added: cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Overview/Guide to 3.1 Features/Dependency Injection Container/index.html
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Overview/Guide%20to%203.1%20Features/Dependency%20Injection%20Container/index.html?rev=1034938&view=auto
==============================================================================
--- cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Overview/Guide to 3.1 Features/Dependency Injection Container/index.html (added)
+++ cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Overview/Guide to 3.1 Features/Dependency Injection Container/index.html Sun Nov 14 06:02:46 2010
@@ -0,0 +1,80 @@
+<!--
+   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 - Dependency Injection Container</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">Dependency Injection Container</span>
+  </div>
+<div id="cayenne_toc">
+<ul>
+<li><a href="../../../../Documentation/Overview/Database Support/index.html">Database Support</a></li>
+<li><a href="../../../../Documentation/Overview/License/index.html">License</a></li>
+<li><a href="../../../../Documentation/Overview/Guide to 3.1 Features/index.html">Guide to 3.1 Features</a><ul>
+<li><a href="../../../../Documentation/Overview/Guide to 3.1 Features/Dependency Injection Container/index.html">Dependency Injection Container</a><ul>
+</ul>
+</li>
+</ul>
+</li>
+<li><a href="../../../../Documentation/Overview/Guide to 3.0 Features/index.html">Guide to 3.0 Features</a></li>
+<li><a href="../../../../Documentation/Overview/Guide to 1.2 Features/index.html">Guide to 1.2 Features</a></li>
+<li><a href="../../../../Documentation/Overview/Guide to 1.1 Features/index.html">Guide to 1.1 Features</a></li>
+</ul>
+</div>
+<div id="ConfluenceContent"><h2><a name="DependencyInjectionContainer-Introduction"></a>Introduction</h2>
+
+<p>Since 3.1 Cayenne runtime bundles a simple dependency injection (DI) container. <a href="http://en.wikipedia.org/wiki/Dependency_injection" class="external-link" rel="nofollow">Dependency injection</a> (also known as "Inversion of Control") is a powerful approach of assembling application components without creating tight coupling between them. There are a number of well-known dependency injection frameworks, such as Spring and Guice. </p>
+
+<p>Cayenne DI container is used internally by the framework to wire its components, and also allows users to easily extend and customize Cayenne. Cayenne DI does not attempt to be "better than X or Y framework" or even be a general purpose DI framework. Still it has no dependency on the rest of Cayenne and can theoretically be used as a standalone container (at your own risk). </p>
+
+<p>Cayenne DI framework provides annotation-based configuration API similar to Google Guice and a subset of standard DI features needed by Cayenne. We decided not to use a third-party framework for a number of reasons. Size - Cayenne DI container is about 30K. Guice and Spring are at least 15 times larger (depending on what parts you want to include). Potential conflict with DI frameworks used by applications - we don't want to dictate the user's choice of a DI framework (or a version of a DI framework). Using Cayenne DI will not create a conflict with any third party DI container.</p>
+
+<h2><a name="DependencyInjectionContainer-FeaturesofCayenneDI"></a>Features of Cayenne DI</h2>
+
+<ul>
+	<li>annotation-based field dependency injection</li>
+	<li>annotation-based constructor dependency injection</li>
+	<li>injection of Injector instance</li>
+	<li>injection of map and list "configurations"</li>
+	<li>binding interfaces to implementation classes via fluent API</li>
+	<li>binding interfaces to "provider" (same as "factory") classes</li>
+	<li>merging multiple DI "modules"</li>
+	<li>dependency cycle detection</li>
+	<li>standard and user-defined scopes for bound objects.</li>
+</ul>
+
+
+<h2><a name="DependencyInjectionContainer-ExamplesofCustomizingCayenneviaDI"></a>Examples of Customizing Cayenne via DI</h2>
+
+<p><em>TODO</em></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/trunk/docs/doc/src/main/resources/doc/Documentation/Overview/Guide to 3.1 Features/Dependency Injection Container/index.html
------------------------------------------------------------------------------
    svn:eol-style = native

Added: cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Overview/Guide to 3.1 Features/index.html
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Overview/Guide%20to%203.1%20Features/index.html?rev=1034938&view=auto
==============================================================================
--- cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Overview/Guide to 3.1 Features/index.html (added)
+++ cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Overview/Guide to 3.1 Features/index.html Sun Nov 14 06:02:46 2010
@@ -0,0 +1,112 @@
+<!--
+   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 - Guide to 3.1 Features</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">Guide to 3.1 Features</span>
+  </div>
+<div id="cayenne_toc">
+<ul>
+<li><a href="../../../Documentation/Overview/Database Support/index.html">Database Support</a></li>
+<li><a href="../../../Documentation/Overview/License/index.html">License</a></li>
+<li><a href="../../../Documentation/Overview/Guide to 3.1 Features/index.html">Guide to 3.1 Features</a><ul>
+<li><a href="../../../Documentation/Overview/Guide to 3.1 Features/Dependency Injection Container/index.html">Dependency Injection Container</a></li>
+</ul>
+</li>
+<li><a href="../../../Documentation/Overview/Guide to 3.0 Features/index.html">Guide to 3.0 Features</a></li>
+<li><a href="../../../Documentation/Overview/Guide to 1.2 Features/index.html">Guide to 1.2 Features</a></li>
+<li><a href="../../../Documentation/Overview/Guide to 1.1 Features/index.html">Guide to 1.1 Features</a></li>
+</ul>
+</div>
+<div id="ConfluenceContent"><p>This page highlights the new features and changes introduced in 3.1 release. It is a high-level overview and as such is by no means complete. Consult RELEASE-NOTES.txt file included in each release for the full list of changes, and UPGRADE.txt for the upgrade instructions.</p>
+
+<ul>
+	<li><a href="#Guideto3.1Features-DistributionContentsStructure">Distribution Contents Structure</a></li>
+	<li><a href="#Guideto3.1Features-CayenneConfiguration">Cayenne Configuration</a></li>
+	<li><a href="#Guideto3.1Features-FrameworkAPI">Framework API</a></li>
+	<li><a href="#Guideto3.1Features-CayenneModeler">CayenneModeler</a></li>
+</ul>
+
+
+<h2><a name="Guideto3.1Features-DistributionContentsStructure"></a>Distribution Contents Structure</h2>
+
+<p>Cayenne distribution is made leaner and more modular:</p>
+
+<ul>
+	<li><tt>"cayenne-modeler.jar"</tt> is no longer included in the "lib" folder, as it is no longer used for loading local JNDI overrides. Of course "CayenneModeler-the-app" is still included.</li>
+	<li>Ashwood library used for commit operation sorting is no longer a third-party dependency. Instead a small subset of the relevant Ashwood classes got included in Cayenne core.</li>
+	<li>The following helper modules are split away from Cayenne core: <tt>"cayenne-project"</tt> and <tt>"cayenne-wocompat"</tt>. They are bundled in CayenneModeler, and are available from the source distribution. They are not included as standalone jars in the binary distribution.</li>
+</ul>
+
+
+<h2><a name="Guideto3.1Features-CayenneConfiguration"></a>Cayenne Configuration</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>The new DI-based bootstrap and configuration approach is not API-compatible with earlier versions of Cayenne. Make sure you read the UPGRADE.txt file for instructions how to upgrade the existing projects.</td></tr></table></div>
+
+<h3><a name="Guideto3.1Features-DependencyInjectionContainer"></a>Dependency Injection Container</h3>
+
+<p>Cayenne 3.1 runtime stack is built around the ideas of Dependency Injection (DI), making it extremely flexible and easy to extend. It bundles a small, flexible annotations-based <a href="../../../Documentation/Overview/Guide to 3.1 Features/Dependency Injection Container/index.html" title="Dependency Injection Container">DI</a> to configure its services. The idea behind Cayenne DI is to provide DI services and extension points to Cayenne, but do not interfere with other DI containers that may be present in the application. I.e. it is invisible to the users who do not care about advanced Cayenne customization.</p>
+
+<h3><a name="Guideto3.1Features-BootstrappingCayenneinVariousEnvironments"></a>Bootstrapping Cayenne in Various Environments</h3>
+
+<p><em>TODO... For now read the UPGRADE.txt file and check the tutorials source code for bootstrap examples.</em> Here is a simple example of starting a server-side Cayenne stack:</p>
+
+<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent panelContent">
+<pre>ServerRuntime runtime = new ServerRuntime("cayenne-UntitledDomain.xml");</pre>
+</div></div>
+
+<h3><a name="Guideto3.1Features-ConfiguringLocalDataSources%2CRemovalofJNDIHack"></a>Configuring Local DataSources, Removal of JNDI Hack</h3>
+
+<p>Cayenne 3.1 provides a property-based mechanism to override Modeler DataSource definitions, regardless of whether they are driver configurations, JNDI, DBCP, etc. A quick configuration example is shown below:</p>
+
+<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent panelContent">
+<pre>-Dcayenne.jdbc.driver=com.mysql.jdbc.Driver -Dcayenne.jdbc.url=jdbc:mysql://localhost/mydb \
+-Dcayenne.jdbc.username=user -Dcayenne.jdbc.password=password</pre>
+</div></div>
+
+<p>For more details and configuration options see javadocs of <tt>org.apache.cayenne.configuration.server.PropertyDataSourceFactory</tt>. </p>
+
+<p>This feature supersedes what was formerly known as "JNDI hack", i.e. JNDI DataSource failover load strategy based on CayenneModeler preferences database. The problem with JNDI hack was unstable and frequently corrupted preferences database, and the need to include hsqldb and cayenne-modeler jars in the runtime. </p>
+
+<h2><a name="Guideto3.1Features-FrameworkAPI"></a>Framework API</h2>
+
+<p><em>TODO... See UPGRADE.txt for the list of changes</em></p>
+
+<h2><a name="Guideto3.1Features-CayenneModeler"></a>CayenneModeler</h2>
+
+<h3><a name="Guideto3.1Features-JavaPreferencesAPI"></a>Java Preferences API</h3>
+
+<p>We got rid of HSQLDB-based preferences storage, and are using standard Java Preferences API for the Modeler preferences. This solved a long-standing stability issue with Modeler preferences. So no more lost user preferences.</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/trunk/docs/doc/src/main/resources/doc/Documentation/Overview/Guide to 3.1 Features/index.html
------------------------------------------------------------------------------
    svn:eol-style = native

Added: cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Remote Object Persistence Guide/Remote Object Persistence Tutorial/index.html
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Remote%20Object%20Persistence%20Guide/Remote%20Object%20Persistence%20Tutorial/index.html?rev=1034938&view=auto
==============================================================================
--- cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Remote Object Persistence Guide/Remote Object Persistence Tutorial/index.html (added)
+++ cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Remote Object Persistence Guide/Remote Object Persistence Tutorial/index.html Sun Nov 14 06:02:46 2010
@@ -0,0 +1,58 @@
+<!--
+   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</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</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>
+</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"><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>There's no Cayenne 3.1 ROP tutorial yet, as 3.1 is still under active development. You may want to check <a href="https://cwiki.apache.org/confluence/confluence/display/CAYDOC30/Remote%20Object%20Persistence%20Tutorial" title="Remote Object Persistence Tutorial">a tutorial for Cayenne 3.0</a> instead.</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>
+
+  <div class="smalltext copyright">
+    Copyright &copy;2001-2010 Apache Software Foundation
+  </div>
+
+</body>
+</html>

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