You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by nt...@apache.org on 2018/08/28 12:16:23 UTC

[2/2] cayenne-website git commit: Update 4.1.M2 docs

Update 4.1.M2 docs


Project: http://git-wip-us.apache.org/repos/asf/cayenne-website/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne-website/commit/dcfcb5e2
Tree: http://git-wip-us.apache.org/repos/asf/cayenne-website/tree/dcfcb5e2
Diff: http://git-wip-us.apache.org/repos/asf/cayenne-website/diff/dcfcb5e2

Branch: refs/heads/master
Commit: dcfcb5e26ac83d83ce0975ec1a0ec5d423e840e6
Parents: ca3b907
Author: Nikita Timofeev <st...@gmail.com>
Authored: Tue Aug 28 15:11:58 2018 +0300
Committer: Nikita Timofeev <st...@gmail.com>
Committed: Tue Aug 28 15:11:58 2018 +0300

----------------------------------------------------------------------
 .../site/content/docs/4.1/cayenne-guide.html    | 313 ++++++++++++-------
 .../content/docs/4.1/cayenne-guide.toc.html     |   8 +-
 .../re-modeler-reverseengineering-dialog.png    | Bin 37668 -> 52923 bytes
 .../docs/4.1/getting-started-db-first.html      |  62 +---
 .../docs/4.1/getting-started-db-first.toc.html  |   1 -
 .../content/docs/4.1/getting-started-rop.html   |   8 +-
 6 files changed, 227 insertions(+), 165 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cayenne-website/blob/dcfcb5e2/src/main/site/content/docs/4.1/cayenne-guide.html
----------------------------------------------------------------------
diff --git a/src/main/site/content/docs/4.1/cayenne-guide.html b/src/main/site/content/docs/4.1/cayenne-guide.html
index 979f499..404fc24 100644
--- a/src/main/site/content/docs/4.1/cayenne-guide.html
+++ b/src/main/site/content/docs/4.1/cayenne-guide.html
@@ -347,9 +347,9 @@ total 24
     </div> 
     <div class="ulist"> 
      <ul> 
-      <li> <p><code>cayenne-di-4.1.M2.jar</code> - Cayenne dependency injection (DI) container library. All applications will require this file.</p> </li>
-      <li> <p><code>cayenne-server-4.1.M2.jar</code> - contains main Cayenne runtime (adapters, DB access classes, etc.). Most applications will require this file.</p> </li>
-      <li> <p><code>cayenne-client-4.1.M2.jar</code> - a client-side runtime for <a href="#introduction-to-rop">ROP applications</a></p> </li>
+      <li> <p><code>cayenne-di-4.1.M2.jar</code> - Cayenne dependency injection (DI) container library. All applications will require this file.</p> </li> 
+      <li> <p><code>cayenne-server-4.1.M2.jar</code> - contains main Cayenne runtime (adapters, DB access classes, etc.). Most applications will require this file.</p> </li> 
+      <li> <p><code>cayenne-client-4.1.M2.jar</code> - a client-side runtime for <a href="#introduction-to-rop">ROP applications</a></p> </li> 
       <li> <p>Other cayenne-* jars - various Cayenne tools extensions.</p> </li> 
      </ul> 
     </div> 
@@ -519,6 +519,11 @@ total 24
         <td class="tableblock halign-left valign-middle"><p class="tableblock">boolean</p></td> 
         <td class="tableblock halign-left valign-middle"><p class="tableblock">If set to "true", will generate String Property names. Default is "false"</p></td> 
        </tr> 
+       <tr> 
+        <td class="tableblock halign-left valign-middle"><p class="tableblock">force</p></td> 
+        <td class="tableblock halign-left valign-middle"><p class="tableblock">boolean</p></td> 
+        <td class="tableblock halign-left valign-middle"><p class="tableblock">If set to "true", will force run from maven/gradle.</p></td> 
+       </tr> 
       </tbody> 
      </table> 
      <div class="paragraph"> 
@@ -969,7 +974,7 @@ total 24
     </div> 
     <div class="listingblock"> 
      <div class="content"> 
-      <pre class="highlight"><code class="language-Groovy Groovy" data-lang="Groovy">compile 'org.apache.cayenne:cayenne-server:4.1.M2'</code></pre>
+      <pre class="highlight"><code class="language-Groovy Groovy" data-lang="Groovy">compile 'org.apache.cayenne:cayenne-server:4.1.M2'</code></pre> 
      </div> 
     </div> 
     <div class="ulist"> 
@@ -1675,6 +1680,18 @@ generic.writeProperty("name", "New Name");</code></pre>
 tx.addConnection("mydatanode", myConnection);</code></pre> 
      </div> 
     </div> 
+    <div class="paragraph"> 
+     <p>You can control transaction isolation level and propagation logic using TransactionDescriptor.</p> 
+    </div> 
+    <div class="listingblock"> 
+     <div class="content"> 
+      <pre class="highlight"><code class="language-java java" data-lang="java">TransactionDescriptor descriptor = new TransactionDescriptor(
+                Connection.TRANSACTION_SERIALIZABLE,
+                TransactionPropagation.REQUIRES_NEW
+        );
+transactionManager.performInTransaction(transactionalOperation, descriptor);</code></pre> 
+     </div> 
+    </div> 
    </div> 
   </div> 
   <div class="sect2"> 
@@ -4144,26 +4161,27 @@ ServerRuntime runtime = ServerRuntime.builder()
     <div class="listingblock"> 
      <div class="content"> 
       <pre class="highlight"><code class="language-XML XML" data-lang="XML">&lt;plugin&gt;
-		&lt;groupId&gt;org.apache.cayenne.plugins&lt;/groupId&gt;
-		&lt;artifactId&gt;cayenne-maven-plugin&lt;/artifactId&gt;
-		&lt;version&gt;4.1.M2&lt;/version&gt;
-
-		&lt;configuration&gt;
-			&lt;map&gt;${project.basedir}/src/main/resources/datamap.map.xml&lt;/map&gt;
-			&lt;dataSource&gt;
-				&lt;url&gt;&lt;!-- jdbc url --&gt;&lt;/url&gt;
-				&lt;driver&gt;&lt;!-- jdbc driver class --&gt;&lt;/driver&gt;
-				&lt;username&gt;username&lt;/username&gt;
-				&lt;password&gt;password&lt;/password&gt;
-			&lt;/dataSource&gt;
-			&lt;dbimport&gt;
-				&lt;defaultPackage&gt;com.example.package&lt;/defaultPackage&gt;
-			    &lt;includeTable&gt;.*&lt;/includeTable&gt;
-			&lt;/dbimport&gt;
-		&lt;/configuration&gt;
-		&lt;dependencies&gt;
-			&lt;!-- jdbc driver dependency --&gt;
-		&lt;/dependencies&gt;
+	&lt;groupId&gt;org.apache.cayenne.plugins&lt;/groupId&gt;
+	&lt;artifactId&gt;cayenne-maven-plugin&lt;/artifactId&gt;
+	&lt;version&gt;4.1.M2&lt;/version&gt;
+
+	&lt;configuration&gt;
+        &lt;cayenneProject&gt;${project.basedir}/src/main/resources/cayenne/cayenne-project.xml&lt;/cayenneProject&gt;
+        &lt;map&gt;${project.basedir}/src/main/resources/datamap.map.xml&lt;/map&gt;
+        &lt;dataSource&gt;
+            &lt;url&gt;&lt;!-- jdbc url --&gt;&lt;/url&gt;
+            &lt;driver&gt;&lt;!-- jdbc driver class --&gt;&lt;/driver&gt;
+            &lt;username&gt;username&lt;/username&gt;
+            &lt;password&gt;password&lt;/password&gt;
+        &lt;/dataSource&gt;
+        &lt;dbimport&gt;
+            &lt;defaultPackage&gt;com.example.package&lt;/defaultPackage&gt;
+            &lt;includeTable&gt;.*&lt;/includeTable&gt;
+        &lt;/dbimport&gt;
+    &lt;/configuration&gt;
+    &lt;dependencies&gt;
+        &lt;!-- jdbc driver dependency --&gt;
+    &lt;/dependencies&gt;
 &lt;/plugin&gt;</code></pre> 
      </div> 
     </div> 
@@ -4317,7 +4335,7 @@ ServerRuntime runtime = ServerRuntime.builder()
     </div> 
    </div> 
    <div class="sect3"> 
-    <h4 id="including-and-excluding-tables-columns-and-procedures"><a class="anchor" href="#including-and-excluding-tables-columns-and-procedures"></a>Including and Excluding tables, columns and procedures</h4> 
+    <h4 id="including-and-excluding-tables-columns-procedures-and-relationships"><a class="anchor" href="#including-and-excluding-tables-columns-procedures-and-relationships"></a>Including and Excluding tables, columns, procedures and relationships</h4> 
     <div class="paragraph"> 
      <p>Cayenne reverse engineering let you fine tune table, columns and stored procedures names that you need to import to your model file. In every filter you can use regexp syntax. Here is some examples of configuration for common tasks.</p> 
     </div> 
@@ -4400,7 +4418,18 @@ ServerRuntime runtime = ServerRuntime.builder()
      </div> 
     </div> 
     <div class="paragraph"> 
-     <p>All filtering tags <code>&lt;includeTable&gt;</code>, <code>&lt;excludeTable&gt;</code>, <code>&lt;includeColumn&gt;</code>, <code>&lt;excludeColumn&gt;</code>, <code>&lt;includeProcedure&gt;</code> and <code>&lt;excludeProcedure&gt;</code> have 2 ways to pass filtering RegExp.</p> 
+     <p>9) Exclude relationships:</p> 
+    </div> 
+    <div class="listingblock"> 
+     <div class="content"> 
+      <pre class="highlight"><code class="language-XML XML" data-lang="XML">&lt;excludeRelationship&gt;excludeRelationship01&lt;/excludeRelationship&gt;
+&lt;excludeRelationship&gt;
+    &lt;pattern&gt;excludeRelationship03&lt;/pattern&gt;
+&lt;/excludeRelationship&gt;</code></pre> 
+     </div> 
+    </div> 
+    <div class="paragraph"> 
+     <p>All filtering tags <code>&lt;includeTable&gt;</code>, <code>&lt;excludeTable&gt;</code>, <code>&lt;includeColumn&gt;</code>, <code>&lt;excludeColumn&gt;</code>, <code>&lt;includeProcedure&gt;</code>, <code>&lt;excludeProcedure&gt;</code> and <code>&lt;excludeRelationship&gt;</code> have 2 ways to pass filtering RegExp.</p> 
     </div> 
     <div class="paragraph"> 
      <p>1) text inside tag</p> 
@@ -4510,6 +4539,12 @@ ServerRuntime runtime = ServerRuntime.builder()
             &lt;pattern&gt;excludeProcedure-02&lt;/pattern&gt;
         &lt;/excludeProcedure&gt;
 
+        &lt;excludeRelationship&gt;excludeRelationship-01&lt;/excludeRelationship&gt;
+
+        &lt;excludeRelationship&gt;
+            &lt;pattern&gt;excludeRelationship-02&lt;/pattern&gt;
+        &lt;/excludeRelationship&gt;
+
     &lt;/catalog&gt;
 &lt;/dbimport&gt;</code></pre> 
      </div> 
@@ -4558,6 +4593,9 @@ ServerRuntime runtime = ServerRuntime.builder()
     &lt;excludeProcedure&gt;excludeProcedure-01&lt;/excludeProcedure&gt;
     &lt;excludeProcedure pattern="excludeProcedure-02"/&gt;
 
+    &lt;excludeRelationship&gt;excludeRelationship-01&lt;/excludeRelationship&gt;
+    &lt;excludeRelationship pattern="excludeRelationship-02"/&gt;
+
 &lt;/catalog&gt;</code></pre> 
      </div> 
     </div> 
@@ -4638,27 +4676,10 @@ ServerRuntime runtime = ServerRuntime.builder()
     <p>Alternative aproach to using <a href="#cdbimport">cdbimport</a> is doing reverse engineering from <a href="#cayennemodeler-application">CayenneModeler</a>. Currently modeler GUI doesn’t support all features of ant/maven tasks but it suffice for general DB import. Especially it’s a good place to quickly start working on your data model.</p> 
    </div> 
    <div class="paragraph"> 
-    <p>You can find reverse engineering tool in main modeler menu <strong>Tools &gt; Reengineer Database Schema</strong></p> 
-   </div> 
-   <div class="sect3"> 
-    <h4 id="datasource-selection"><a class="anchor" href="#datasource-selection"></a>DataSource selection</h4> 
-    <div class="paragraph"> 
-     <p>First you should select DataSource. If you don’t have any DataSource yet you can create one from this menu.</p> 
-    </div> 
-    <div class="imageblock" style="text-align: center"> 
-     <div class="content"> 
-      <img src="images/re-modeler-datasource-select.png" alt="re modeler datasource select"> 
-     </div> 
-    </div> 
-    <div class="paragraph"> 
-     <p>Datasource selection dialog.</p> 
-    </div> 
+    <p>You can find reverse engineering tool in dataMap view on <strong>DbImport Tab</strong>.</p> 
    </div> 
    <div class="sect3"> 
     <h4 id="reverse-engineering-options"><a class="anchor" href="#reverse-engineering-options"></a>Reverse engineering options</h4> 
-    <div class="paragraph"> 
-     <p>Once DataSource is selected you can proceed to reverse engineering options.</p> 
-    </div> 
     <div class="imageblock" style="text-align: center"> 
      <div class="content"> 
       <img src="images/re-modeler-reverseengineering-dialog.png" alt="re modeler reverseengineering dialog"> 
@@ -4672,30 +4693,42 @@ ServerRuntime runtime = ServerRuntime.builder()
     </div> 
     <div class="ulist"> 
      <ul> 
-      <li> <p><strong>Select Catalog</strong>: catalog to process</p> </li> 
-     </ul> 
-    </div> 
-    <div class="admonitionblock note"> 
-     <table> 
-      <tbody>
-       <tr> 
-        <td class="icon"> <i class="fa fa-info-circle fa-2x" title="Note"></i> </td> 
-        <td class="content"> You can only select one catalog. If you need to import multiple catalogs you need to run process several times. </td> 
-       </tr> 
-      </tbody>
-     </table> 
-    </div> 
-    <div class="ulist"> 
-     <ul> 
-      <li> <p><strong>Table Name Pattern</strong>: RegExp to filter tables. Default pattern .* includes all tables.</p> </li> 
-      <li> <p><strong>Procedure Name Pattern</strong>: RegExp to filter procedures. Default pattern .* includes all stored procedures.</p> </li> 
-      <li> <p><strong>Naming Strategy</strong>: Currently there is only one naming strategy available. See ant/maven tools <a href="#namingStrategy">documentation</a> for details about naming strategy.</p> </li> 
+      <li> <p><strong>Add Catalog</strong></p> </li> 
+      <li> <p><strong>Add Schema</strong></p> </li> 
+      <li> <p><strong>Add Include Table</strong></p> </li> 
+      <li> <p><strong>Add Exclude Table</strong></p> </li> 
+      <li> <p><strong>Add Include Column</strong></p> </li> 
+      <li> <p><strong>Add Exclude Column</strong></p> </li> 
+      <li> <p><strong>Add Include Procedure</strong></p> </li> 
+      <li> <p><strong>Add Exclude Procedure</strong></p> </li> 
       <li> <p><strong>Tables with Meaningful PK Pattern</strong>: Comma separated list of RegExp’s for tables that you want to have meaningful primary keys. By default no meaningful PKs are created.</p> </li> 
+      <li> <p><strong>Strip from table names</strong>: Regex that matches the part of the table name that needs to be stripped off generating ObjEntity name.</p> </li> 
+      <li> <p><strong>Skip relationships loading</strong>: Whether to load relationships.</p> </li> 
+      <li> <p><strong>Skip primary key loading</strong>: Whether to load primary keys.</p> </li> 
+      <li> <p><strong>Force datamap catalog</strong>: will set DbEntity catalog to one in the DataMap.</p> </li> 
+      <li> <p><strong>Force datamap schema</strong>: will set DbEntity schema to one in the DataMap.</p> </li> 
       <li> <p><strong>Use Java primitive types</strong>: Use primitive types (e.g. <strong>int</strong>) or Object types (e.g. <strong>java.lang.Integer</strong>).</p> </li> 
       <li> <p><strong>Use old java.util.Date type</strong>: Use <strong>java.util.Date</strong> for all columns with <strong>DATE/TIME/TIMESTAMP</strong> types. By default <strong>java.time.</strong> types will be used.</p> </li> 
      </ul> 
     </div> 
    </div> 
+   <div class="sect3"> 
+    <h4 id="datasource-selection"><a class="anchor" href="#datasource-selection"></a>DataSource selection</h4> 
+    <div class="paragraph"> 
+     <p>Then you click <code>Run Import</code> or <code>Configure Connection</code> to set DataSource. If you don’t have any DataSource yet you can create one from this menu.</p> 
+    </div> 
+    <div class="imageblock" style="text-align: center"> 
+     <div class="content"> 
+      <img src="images/re-modeler-datasource-select.png" alt="re modeler datasource select"> 
+     </div> 
+    </div> 
+    <div class="paragraph"> 
+     <p>Datasource selection dialog.</p> 
+    </div> 
+    <div class="paragraph"> 
+     <p>Then click <code>continue</code> to start dbImport.</p> 
+    </div> 
+   </div> 
   </div> 
  </div> 
 </div> 
@@ -4728,7 +4761,7 @@ ServerRuntime runtime = ServerRuntime.builder()
      <h5 id="gradle"><a class="anchor" href="#gradle"></a>Gradle</h5> 
      <div class="listingblock"> 
       <div class="content"> 
-       <pre class="highlight"><code class="language-Groovy Groovy" data-lang="Groovy">compile 'org.apache.cayenne:cayenne-cache-invalidation:4.1.M2'</code></pre>
+       <pre class="highlight"><code class="language-Groovy Groovy" data-lang="Groovy">compile 'org.apache.cayenne:cayenne-cache-invalidation:4.1.M2'</code></pre> 
       </div> 
      </div> 
     </div> 
@@ -4826,7 +4859,7 @@ public class MyEntity extends _MyEntity {
      <h5 id="gradle-2"><a class="anchor" href="#gradle-2"></a>Gradle</h5> 
      <div class="listingblock"> 
       <div class="content"> 
-       <pre class="highlight"><code class="language-Groovy Groovy" data-lang="Groovy">compile 'org.apache.cayenne:cayenne-commitlog:4.1.M2'</code></pre>
+       <pre class="highlight"><code class="language-Groovy Groovy" data-lang="Groovy">compile 'org.apache.cayenne:cayenne-commitlog:4.1.M2'</code></pre> 
       </div> 
      </div> 
     </div> 
@@ -4912,7 +4945,7 @@ public class MyEntity extends _MyEntity {
      <h5 id="gradle-3"><a class="anchor" href="#gradle-3"></a>Gradle</h5> 
      <div class="listingblock"> 
       <div class="content"> 
-       <pre class="highlight"><code class="language-Groovy Groovy" data-lang="Groovy">compile 'org.apache.cayenne:cayenne-crypto:4.1.M2'</code></pre>
+       <pre class="highlight"><code class="language-Groovy Groovy" data-lang="Groovy">compile 'org.apache.cayenne:cayenne-crypto:4.1.M2'</code></pre> 
       </div> 
      </div> 
     </div> 
@@ -5041,7 +5074,7 @@ public class MyEntity extends _MyEntity {
      <h5 id="gradle-4"><a class="anchor" href="#gradle-4"></a>Gradle</h5> 
      <div class="listingblock"> 
       <div class="content"> 
-       <pre class="highlight"><code class="language-Groovy Groovy" data-lang="Groovy">compile 'org.apache.cayenne:cayenne-jcache:4.1.M2'</code></pre>
+       <pre class="highlight"><code class="language-Groovy Groovy" data-lang="Groovy">compile 'org.apache.cayenne:cayenne-jcache:4.1.M2'</code></pre> 
       </div> 
      </div> 
     </div> 
@@ -5070,11 +5103,21 @@ public class MyEntity extends _MyEntity {
    </div> 
   </div> 
   <div class="sect2"> 
-   <h3 id="ext-joda"><a class="anchor" href="#ext-joda"></a>5.5. Joda time extension</h3> 
+   <h3 id="ext-project-compatibility"><a class="anchor" href="#ext-project-compatibility"></a>5.5. Project compatibility extension</h3> 
    <div class="sect3"> 
     <h4 id="description-5"><a class="anchor" href="#description-5"></a>Description</h4> 
     <div class="paragraph"> 
-     <p>Joda time module allows to use <code>org.joda.time.LocalTime</code>, <code>org.joda.time.LocalDate</code>, <code>org.joda.time.LocalDateTime</code> and <code>org.joda.time.DateTime</code> types for entity attributes.</p> 
+     <p>Since version 4.1 Cayenne doesn’t allow to load project XML files from previous versions as this can lead to unexpected errors in runtime. This module allows to use project files from older versions performing their upgrade on the fly (without modifying files). This can be useful when using Cayenne models from third-party libraries in your app.</p> 
+    </div> 
+    <div class="admonitionblock note"> 
+     <table> 
+      <tbody>
+       <tr> 
+        <td class="icon"> <i class="fa fa-info-circle fa-2x" title="Note"></i> </td> 
+        <td class="content"> You should prefer explicit project upgrade via Cayenne Modeler. </td> 
+       </tr> 
+      </tbody>
+     </table> 
     </div> 
    </div> 
    <div class="sect3"> 
@@ -5085,7 +5128,7 @@ public class MyEntity extends _MyEntity {
       <div class="content"> 
        <pre class="highlight"><code class="language-XML XML" data-lang="XML">&lt;dependency&gt;
     &lt;groupId&gt;org.apache.cayenne&lt;/groupId&gt;
-    &lt;artifactId&gt;cayenne-joda&lt;/artifactId&gt;
+    &lt;artifactId&gt;cayenne-project-compatibility&lt;/artifactId&gt;
     &lt;version&gt;4.1.M2&lt;/version&gt;
 &lt;/dependency&gt;</code></pre> 
       </div> 
@@ -5095,7 +5138,7 @@ public class MyEntity extends _MyEntity {
      <h5 id="gradle-5"><a class="anchor" href="#gradle-5"></a>Gradle</h5> 
      <div class="listingblock"> 
       <div class="content"> 
-       <pre class="highlight"><code class="language-Groovy Groovy" data-lang="Groovy">compile 'org.apache.cayenne:cayenne-joda:4.1.M2'</code></pre>
+       <pre class="highlight"><code class="language-Groovy Groovy" data-lang="Groovy">compile 'org.apache.cayenne:cayenne-project-compatibility:4.1.M2'</code></pre> 
       </div> 
      </div> 
     </div> 
@@ -5103,26 +5146,16 @@ public class MyEntity extends _MyEntity {
    <div class="sect3"> 
     <h4 id="usage-5"><a class="anchor" href="#usage-5"></a>Usage</h4> 
     <div class="paragraph"> 
-     <p>This module doesn’t require any additional setup, you can just use new data types in your model.</p> 
+     <p>This module doesn’t require any additional setup.</p> 
     </div> 
    </div> 
   </div> 
   <div class="sect2"> 
-   <h3 id="ext-project-compatibility"><a class="anchor" href="#ext-project-compatibility"></a>5.6. Project compatibility extension</h3> 
+   <h3 id="ext-velocity"><a class="anchor" href="#ext-velocity"></a>5.6. Apache Velocity extension</h3> 
    <div class="sect3"> 
     <h4 id="description-6"><a class="anchor" href="#description-6"></a>Description</h4> 
     <div class="paragraph"> 
-     <p>Since version 4.1 Cayenne doesn’t allow to load project XML files from previous versions as this can lead to unexpected errors in runtime. This module allows to use project files from older versions performing their upgrade on the fly (without modifying files). This can be useful when using Cayenne models from third-party libraries in your app.</p> 
-    </div> 
-    <div class="admonitionblock note"> 
-     <table> 
-      <tbody>
-       <tr> 
-        <td class="icon"> <i class="fa fa-info-circle fa-2x" title="Note"></i> </td> 
-        <td class="content"> You should prefer explicit project upgrade via Cayenne Modeler. </td> 
-       </tr> 
-      </tbody>
-     </table> 
+     <p>This module enables usage of full featured Apache Velocity templates in <code>org.apache.cayenne.query.SQLTemplate</code> queries.</p> 
     </div> 
    </div> 
    <div class="sect3"> 
@@ -5133,7 +5166,7 @@ public class MyEntity extends _MyEntity {
       <div class="content"> 
        <pre class="highlight"><code class="language-XML XML" data-lang="XML">&lt;dependency&gt;
     &lt;groupId&gt;org.apache.cayenne&lt;/groupId&gt;
-    &lt;artifactId&gt;cayenne-project-compatibility&lt;/artifactId&gt;
+    &lt;artifactId&gt;cayenne-velocity&lt;/artifactId&gt;
     &lt;version&gt;4.1.M2&lt;/version&gt;
 &lt;/dependency&gt;</code></pre> 
       </div> 
@@ -5143,7 +5176,7 @@ public class MyEntity extends _MyEntity {
      <h5 id="gradle-6"><a class="anchor" href="#gradle-6"></a>Gradle</h5> 
      <div class="listingblock"> 
       <div class="content"> 
-       <pre class="highlight"><code class="language-Groovy Groovy" data-lang="Groovy">compile 'org.apache.cayenne:cayenne-project-compatibility:4.1.M2'</code></pre>
+       <pre class="highlight"><code class="language-Groovy Groovy" data-lang="Groovy">compile 'org.apache.cayenne:cayenne-velocity:4.1.M2'</code></pre> 
       </div> 
      </div> 
     </div> 
@@ -5153,14 +5186,42 @@ public class MyEntity extends _MyEntity {
     <div class="paragraph"> 
      <p>This module doesn’t require any additional setup.</p> 
     </div> 
+    <div class="paragraph"> 
+     <p>In addition of directives mentioned in <a href="#directives">this chapter</a>, this module enables <code>#chain</code> and <code>#chunk</code> directives.</p> 
+    </div> 
+    <div class="paragraph"> 
+     <p><code>#chain</code> and <code>#chunk</code> directives are used for conditional inclusion of SQL code. They are used together with <code>#chain</code> wrapping multiple <code>#chunks</code>. A chunk evaluates its parameter expression and if it is NULL suppresses rendering of the enclosed SQL block. A chain renders its prefix and its chunks joined by the operator. If all the chunks are suppressed, the chain itself is suppressed. This allows to work with otherwise hard to script SQL semantics. E.g. a WHERE clause can contain multiple conditions joined with AND or OR. Application code would like to exclude a condition if its right-hand parameter is not present (similar to Expression pruning discussed above). If all conditions are excluded, the entire WHERE clause should be excluded. chain/chunk allows to do that.</p> 
+    </div> 
+    <div class="paragraph"> 
+     <p>Semantics:</p> 
+    </div> 
+    <div class="listingblock"> 
+     <div class="content"> 
+      <pre class="highlight"><code>#chain(operator) ... #end
+#chain(operator prefix) ... #end
+#chunk() ... #end
+#chunk(param) ... #end</code></pre> 
+     </div> 
+    </div> 
+    <div class="paragraph"> 
+     <p>Full example:</p> 
+    </div> 
+    <div class="listingblock"> 
+     <div class="content"> 
+      <pre class="highlight"><code>#chain('OR' 'WHERE')
+    #chunk($name) NAME LIKE #bind($name) #end
+    #chunk($id) ARTIST_ID &gt; #bind($id) #end
+#end"</code></pre> 
+     </div> 
+    </div> 
    </div> 
   </div> 
   <div class="sect2"> 
-   <h3 id="ext-velocity"><a class="anchor" href="#ext-velocity"></a>5.7. Apache Velocity extension</h3> 
+   <h3 id="cayenne-web-extension"><a class="anchor" href="#cayenne-web-extension"></a>5.7. Cayenne Web extension</h3> 
    <div class="sect3"> 
     <h4 id="description-7"><a class="anchor" href="#description-7"></a>Description</h4> 
     <div class="paragraph"> 
-     <p>This module enables usage of full featured Apache Velocity templates in <code>org.apache.cayenne.query.SQLTemplate</code> queries.</p> 
+     <p>This module provides basic utilities to bootstrap Cayenne service inside web application.</p> 
     </div> 
    </div> 
    <div class="sect3"> 
@@ -5171,7 +5232,7 @@ public class MyEntity extends _MyEntity {
       <div class="content"> 
        <pre class="highlight"><code class="language-XML XML" data-lang="XML">&lt;dependency&gt;
     &lt;groupId&gt;org.apache.cayenne&lt;/groupId&gt;
-    &lt;artifactId&gt;cayenne-velocity&lt;/artifactId&gt;
+    &lt;artifactId&gt;cayenne-web&lt;/artifactId&gt;
     &lt;version&gt;4.1.M2&lt;/version&gt;
 &lt;/dependency&gt;</code></pre> 
       </div> 
@@ -5181,42 +5242,72 @@ public class MyEntity extends _MyEntity {
      <h5 id="gradle-7"><a class="anchor" href="#gradle-7"></a>Gradle</h5> 
      <div class="listingblock"> 
       <div class="content"> 
-       <pre class="highlight"><code class="language-Groovy Groovy" data-lang="Groovy">compile 'org.apache.cayenne:cayenne-velocity:4.1.M2'</code></pre>
+       <pre class="highlight"><code class="language-Groovy Groovy" data-lang="Groovy">compile 'org.apache.cayenne:cayenne-web:4.1.M2'</code></pre> 
       </div> 
      </div> 
     </div> 
    </div> 
+  </div> 
+  <div class="sect2"> 
+   <h3 id="cayenne-osgi-extension"><a class="anchor" href="#cayenne-osgi-extension"></a>5.8. Cayenne OSGI extension</h3> 
    <div class="sect3"> 
-    <h4 id="usage-7"><a class="anchor" href="#usage-7"></a>Usage</h4> 
+    <h4 id="description-8"><a class="anchor" href="#description-8"></a>Description</h4> 
     <div class="paragraph"> 
-     <p>This module doesn’t require any additional setup.</p> 
+     <p>This module helps to bootstrap Cayenne in OSGi environment.</p> 
     </div> 
-    <div class="paragraph"> 
-     <p>In addition of directives mentioned in <a href="#directives">this chapter</a>, this module enables <code>#chain</code> and <code>#chunk</code> directives.</p> 
+   </div> 
+   <div class="sect3"> 
+    <h4 id="including-in-a-project-8"><a class="anchor" href="#including-in-a-project-8"></a>Including in a project</h4> 
+    <div class="sect4"> 
+     <h5 id="maven-8"><a class="anchor" href="#maven-8"></a>Maven</h5> 
+     <div class="listingblock"> 
+      <div class="content"> 
+       <pre class="highlight"><code class="language-XML XML" data-lang="XML">&lt;dependency&gt;
+    &lt;groupId&gt;org.apache.cayenne&lt;/groupId&gt;
+    &lt;artifactId&gt;cayenne-osgi&lt;/artifactId&gt;
+    &lt;version&gt;4.1.M2&lt;/version&gt;
+&lt;/dependency&gt;</code></pre> 
+      </div> 
+     </div> 
     </div> 
-    <div class="paragraph"> 
-     <p><code>#chain</code> and <code>#chunk</code> directives are used for conditional inclusion of SQL code. They are used together with <code>#chain</code> wrapping multiple <code>#chunks</code>. A chunk evaluates its parameter expression and if it is NULL suppresses rendering of the enclosed SQL block. A chain renders its prefix and its chunks joined by the operator. If all the chunks are suppressed, the chain itself is suppressed. This allows to work with otherwise hard to script SQL semantics. E.g. a WHERE clause can contain multiple conditions joined with AND or OR. Application code would like to exclude a condition if its right-hand parameter is not present (similar to Expression pruning discussed above). If all conditions are excluded, the entire WHERE clause should be excluded. chain/chunk allows to do that.</p> 
+    <div class="sect4"> 
+     <h5 id="gradle-8"><a class="anchor" href="#gradle-8"></a>Gradle</h5> 
+     <div class="listingblock"> 
+      <div class="content"> 
+       <pre class="highlight"><code class="language-Groovy Groovy" data-lang="Groovy">compile 'org.apache.cayenne:cayenne-osgi:4.1.M2'</code></pre> 
+      </div> 
+     </div> 
     </div> 
+   </div> 
+  </div> 
+  <div class="sect2"> 
+   <h3 id="cayenne-rop-server-extension"><a class="anchor" href="#cayenne-rop-server-extension"></a>5.9. Cayenne Rop Server extension</h3> 
+   <div class="sect3"> 
+    <h4 id="description-9"><a class="anchor" href="#description-9"></a>Description</h4> 
     <div class="paragraph"> 
-     <p>Semantics:</p> 
+     <p>This module creates services for the server side of an <a href="#introduction-to-rop">ROP</a> application.</p> 
     </div> 
-    <div class="listingblock"> 
-     <div class="content"> 
-      <pre class="highlight"><code>#chain(operator) ... #end
-#chain(operator prefix) ... #end
-#chunk() ... #end
-#chunk(param) ... #end</code></pre> 
+   </div> 
+   <div class="sect3"> 
+    <h4 id="including-in-a-project-9"><a class="anchor" href="#including-in-a-project-9"></a>Including in a project</h4> 
+    <div class="sect4"> 
+     <h5 id="maven-9"><a class="anchor" href="#maven-9"></a>Maven</h5> 
+     <div class="listingblock"> 
+      <div class="content"> 
+       <pre class="highlight"><code class="language-XML XML" data-lang="XML">&lt;dependency&gt;
+    &lt;groupId&gt;org.apache.cayenne&lt;/groupId&gt;
+    &lt;artifactId&gt;cayenne-rop-server&lt;/artifactId&gt;
+    &lt;version&gt;4.1.M2&lt;/version&gt;
+&lt;/dependency&gt;</code></pre> 
+      </div> 
      </div> 
     </div> 
-    <div class="paragraph"> 
-     <p>Full example:</p> 
-    </div> 
-    <div class="listingblock"> 
-     <div class="content"> 
-      <pre class="highlight"><code>#chain('OR' 'WHERE')
-    #chunk($name) NAME LIKE #bind($name) #end
-    #chunk($id) ARTIST_ID &gt; #bind($id) #end
-#end"</code></pre> 
+    <div class="sect4"> 
+     <h5 id="gradle-9"><a class="anchor" href="#gradle-9"></a>Gradle</h5> 
+     <div class="listingblock"> 
+      <div class="content"> 
+       <pre class="highlight"><code class="language-Groovy Groovy" data-lang="Groovy">compile 'org.apache.cayenne:cayenne-rop-server:4.1.M2'</code></pre> 
+      </div> 
      </div> 
     </div> 
    </div> 

http://git-wip-us.apache.org/repos/asf/cayenne-website/blob/dcfcb5e2/src/main/site/content/docs/4.1/cayenne-guide.toc.html
----------------------------------------------------------------------
diff --git a/src/main/site/content/docs/4.1/cayenne-guide.toc.html b/src/main/site/content/docs/4.1/cayenne-guide.toc.html
index 66ef537..120252d 100644
--- a/src/main/site/content/docs/4.1/cayenne-guide.toc.html
+++ b/src/main/site/content/docs/4.1/cayenne-guide.toc.html
@@ -39,9 +39,11 @@
     <li><a href="#ext-commit-log" class="nav-link">5.2. Commit log extension</a></li> 
     <li><a href="#ext-crypto" class="nav-link">5.3. Crypto extension</a></li> 
     <li><a href="#ext-jcache" class="nav-link">5.4. JCache integration</a></li> 
-    <li><a href="#ext-joda" class="nav-link">5.5. Joda time extension</a></li> 
-    <li><a href="#ext-project-compatibility" class="nav-link">5.6. Project compatibility extension</a></li> 
-    <li><a href="#ext-velocity" class="nav-link">5.7. Apache Velocity extension</a></li> 
+    <li><a href="#ext-project-compatibility" class="nav-link">5.5. Project compatibility extension</a></li> 
+    <li><a href="#ext-velocity" class="nav-link">5.6. Apache Velocity extension</a></li> 
+    <li><a href="#cayenne-web-extension" class="nav-link">5.7. Cayenne Web extension</a></li> 
+    <li><a href="#cayenne-osgi-extension" class="nav-link">5.8. Cayenne OSGI extension</a></li> 
+    <li><a href="#cayenne-rop-server-extension" class="nav-link">5.9. Cayenne Rop Server extension</a></li> 
    </ul> </li> 
   <li><a href="#appendix-a-configuration-properties" class="nav-link">6. Appendix A. Configuration Properties</a></li> 
   <li><a href="#appendix-b-service-collections" class="nav-link">7. Appendix B. Service Collections</a></li> 

http://git-wip-us.apache.org/repos/asf/cayenne-website/blob/dcfcb5e2/src/main/site/content/docs/4.1/cayenne-guide/images/re-modeler-reverseengineering-dialog.png
----------------------------------------------------------------------
diff --git a/src/main/site/content/docs/4.1/cayenne-guide/images/re-modeler-reverseengineering-dialog.png b/src/main/site/content/docs/4.1/cayenne-guide/images/re-modeler-reverseengineering-dialog.png
index 8b09d07..ba6c89d 100644
Binary files a/src/main/site/content/docs/4.1/cayenne-guide/images/re-modeler-reverseengineering-dialog.png and b/src/main/site/content/docs/4.1/cayenne-guide/images/re-modeler-reverseengineering-dialog.png differ

http://git-wip-us.apache.org/repos/asf/cayenne-website/blob/dcfcb5e2/src/main/site/content/docs/4.1/getting-started-db-first.html
----------------------------------------------------------------------
diff --git a/src/main/site/content/docs/4.1/getting-started-db-first.html b/src/main/site/content/docs/4.1/getting-started-db-first.html
index 5ddbd2a..62efc08 100644
--- a/src/main/site/content/docs/4.1/getting-started-db-first.html
+++ b/src/main/site/content/docs/4.1/getting-started-db-first.html
@@ -41,7 +41,7 @@ menu:
    <div class="sect3"> 
     <h4 id="java"><a class="anchor" href="#java"></a>Java</h4> 
     <div class="paragraph"> 
-     <p>Cayenne 4.0 requires JDK 1.7 or newer.</p> 
+     <p>Cayenne 4.1 requires JDK 1.8 or newer.</p> 
     </div> 
    </div> 
    <div class="sect3"> 
@@ -193,7 +193,9 @@ ALTER TABLE PAINTING ADD FOREIGN KEY (GALLERY_ID) REFERENCES GALLERY (ID) ON DEL
       <pre class="highlight"><code class="language-xml xml" data-lang="xml">&lt;configuration&gt;
     ...
     &lt;/dataSource&gt;
-    &lt;map&gt;${project.basedir}/src/main/resources/datamap.map.xml&lt;/map&gt;</code></pre> 
+    &lt;cayenneProject&gt;${project.basedir}/src/main/resources/cayenne/cayenne-project.xml&lt;/cayenneProject&gt;
+    &lt;map&gt;${project.basedir}/src/main/resources/datamap.map.xml&lt;/map&gt;
+    ...</code></pre> 
      </div> 
     </div> 
     <div class="paragraph"> 
@@ -259,7 +261,7 @@ ALTER TABLE PAINTING ADD FOREIGN KEY (GALLERY_ID) REFERENCES GALLERY (ID) ON DEL
      </div> 
     </div> 
     <div class="paragraph"> 
-     <p>Great! We now have Cayenne DataMap file that describe model from our database.</p> 
+     <p>Great! We now have Cayenne DataMap file that describe model from our database and cayenne-project.xml file.</p> 
     </div> 
     <div class="admonitionblock note"> 
      <table> 
@@ -272,16 +274,13 @@ ALTER TABLE PAINTING ADD FOREIGN KEY (GALLERY_ID) REFERENCES GALLERY (ID) ON DEL
      </table> 
     </div> 
    </div> 
-  </div> 
-  <div class="sect2"> 
-   <h3 id="creating-project"><a class="anchor" href="#creating-project"></a>2.2. Creating project</h3> 
-   <div class="paragraph"> 
-    <p>Now we also need to create project file, currently this should be done manually via Cayenne Modeler.</p> 
-   </div> 
    <div class="sect3"> 
     <h4 id="setup-modeler-maven-plugin"><a class="anchor" href="#setup-modeler-maven-plugin"></a>Setup Modeler Maven plugin</h4> 
     <div class="paragraph"> 
-     <p>To launch Modeler we’ll use <code>cayenne-modeler-maven-plugin</code>. To use it just include it in <code>pom.xml</code> like we did with <code>cayenne-maven-plugin</code>:</p> 
+     <p>Cayenne Modeler can be helpful in case you want to make some customizations to your model, though it’s usage optional.</p> 
+    </div> 
+    <div class="paragraph"> 
+     <p>To launch Modeler we’ll use <code>cayenne-modeler-maven-plugin</code>. Just include it in <code>pom.xml</code> like we did with <code>cayenne-maven-plugin</code> and tell where your project is:</p> 
     </div> 
     <div class="listingblock"> 
      <div class="content"> 
@@ -289,11 +288,14 @@ ALTER TABLE PAINTING ADD FOREIGN KEY (GALLERY_ID) REFERENCES GALLERY (ID) ON DEL
     &lt;groupId&gt;org.apache.cayenne.plugins&lt;/groupId&gt;
     &lt;artifactId&gt;cayenne-modeler-maven-plugin&lt;/artifactId&gt;
     &lt;version&gt;${cayenne.version}&lt;/version&gt;
+    &lt;configuration&gt;
+        &lt;modelFile&gt;${project.basedir}/src/main/resources/cayenne-project.xml&lt;/modelFile&gt;
+    &lt;/configuration&gt;
 &lt;/plugin&gt;</code></pre> 
      </div> 
     </div> 
     <div class="paragraph"> 
-     <p>To launch it simple use console:</p> 
+     <p>To launch it simply run:</p> 
     </div> 
     <div class="listingblock"> 
      <div class="content"> 
@@ -301,29 +303,6 @@ ALTER TABLE PAINTING ADD FOREIGN KEY (GALLERY_ID) REFERENCES GALLERY (ID) ON DEL
      </div> 
     </div> 
    </div> 
-   <div class="sect3"> 
-    <h4 id="create-project"><a class="anchor" href="#create-project"></a>Create project</h4> 
-    <div class="paragraph"> 
-     <p>In Modeler start new project and select <code>File</code> &gt; <code>Import DataMap</code>. In File Select dialog select created <code>datamap.map.xml</code> file and click <code>Select DataMap</code>. Now all we need is to save project, click <code>Save</code> and select same folder where <code>datamap.map.xml</code> file is (it should be selected by default). That’s all, you should see now <code>cayenne-project.xml</code> file in IDEA:</p> 
-    </div> 
-    <div class="imageblock" style="text-align: center"> 
-     <div class="content"> 
-      <img src="images/tutorial-cayenne-project.png" alt="tutorial cayenne project"> 
-     </div> 
-    </div> 
-    <div class="paragraph"> 
-     <p>To use newly created project in Modeler later let’s configure plugin to open it automatically:</p> 
-    </div> 
-    <div class="listingblock"> 
-     <div class="content"> 
-      <pre class="highlight"><code class="language-xml xml" data-lang="xml">&lt;plugin&gt;
-    ...
-    &lt;configuration&gt;
-        &lt;modelFile&gt;${project.basedir}/src/main/resources/cayenne-project.xml&lt;/modelFile&gt;
-    &lt;/configuration&gt;</code></pre> 
-     </div> 
-    </div> 
-   </div> 
   </div> 
  </div> 
 </div> 
@@ -542,24 +521,9 @@ ALTER TABLE cayenne_demo.PAINTING ADD COLUMN __service_column INT;</code></pre>
             &lt;artifactId&gt;cayenne-server&lt;/artifactId&gt;
             &lt;version&gt;${cayenne.version}&lt;/version&gt;
         &lt;/dependency&gt;
-        &lt;dependency&gt;
-            &lt;groupId&gt;org.apache.cayenne&lt;/groupId&gt;
-            &lt;artifactId&gt;cayenne-java8&lt;/artifactId&gt;
-            &lt;version&gt;${cayenne.version}&lt;/version&gt;
-        &lt;/dependency&gt;
     &lt;/dependencies&gt;</code></pre> 
     </div> 
    </div> 
-   <div class="admonitionblock note"> 
-    <table> 
-     <tbody>
-      <tr> 
-       <td class="icon"> <i class="fa fa-info-circle fa-2x" title="Note"></i> </td> 
-       <td class="content"> <code>cayenne-java8</code> module required to support Java 8 date/time types. </td> 
-      </tr> 
-     </tbody>
-    </table> 
-   </div> 
    <div class="paragraph"> 
     <p>Additionally we need to tell <code>Maven compiler plugin</code> that our code uses Java 8:</p> 
    </div> 

http://git-wip-us.apache.org/repos/asf/cayenne-website/blob/dcfcb5e2/src/main/site/content/docs/4.1/getting-started-db-first.toc.html
----------------------------------------------------------------------
diff --git a/src/main/site/content/docs/4.1/getting-started-db-first.toc.html b/src/main/site/content/docs/4.1/getting-started-db-first.toc.html
index 2678486..4dcd88a 100644
--- a/src/main/site/content/docs/4.1/getting-started-db-first.toc.html
+++ b/src/main/site/content/docs/4.1/getting-started-db-first.toc.html
@@ -11,7 +11,6 @@
   <li><a href="#importing-database" class="nav-link">2. Importing database</a> 
    <ul class="sectlevel2 nav"> 
     <li><a href="#reverse-engineering-database" class="nav-link">2.1. Reverse engineering database</a></li> 
-    <li><a href="#creating-project" class="nav-link">2.2. Creating project</a></li> 
    </ul> </li> 
   <li><a href="#advanced-usage-of-cdbimport" class="nav-link">3. Advanced usage of cdbimport</a> 
    <ul class="sectlevel2 nav"> 

http://git-wip-us.apache.org/repos/asf/cayenne-website/blob/dcfcb5e2/src/main/site/content/docs/4.1/getting-started-rop.html
----------------------------------------------------------------------
diff --git a/src/main/site/content/docs/4.1/getting-started-rop.html b/src/main/site/content/docs/4.1/getting-started-rop.html
index a2821d2..3c58cd2 100644
--- a/src/main/site/content/docs/4.1/getting-started-rop.html
+++ b/src/main/site/content/docs/4.1/getting-started-rop.html
@@ -144,7 +144,7 @@ weight: 40
    <div class="sect3"> 
     <h4 id="setting-up-dependencies"><a class="anchor" href="#setting-up-dependencies"></a>Setting up Dependencies</h4> 
     <div class="paragraph"> 
-     <p>Now lets get back to the "tutorial" project that contains a web application and set up dependencies. The only extra one that we don’t have yet is <code>resin-hessian.jar</code>, just like the client, so let’s add it (and the caucho repo declaration) to the <code>pom.xml</code>.</p> 
+     <p>Now lets get back to the "tutorial" project that contains a web application and set up dependencies. Let’s add <code>resin-hessian.jar</code> (and the caucho repo declaration) and <code>cayenne-rop-server</code> to the <code>pom.xml</code></p> 
     </div> 
     <div class="listingblock"> 
      <div class="content"> 
@@ -154,6 +154,12 @@ weight: 40
     &lt;dependencies&gt;
         ...
         &lt;dependency&gt;
+        	&lt;groupId&gt;org.apache.cayenne&lt;/groupId&gt;
+        	&lt;artifactId&gt;cayenne-rop-server&lt;/artifactId&gt;
+        	&lt;!-- Here specify the version of Cayenne you are actually using --&gt;
+            &lt;version&gt;{version}&lt;/version&gt;
+        &lt;/dependency&gt;
+        &lt;dependency&gt;
             &lt;groupId&gt;com.caucho&lt;/groupId&gt;
             &lt;artifactId&gt;hessian&lt;/artifactId&gt;
             &lt;version&gt;4.0.38&lt;/version&gt;