You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by bu...@apache.org on 2017/10/06 07:50:17 UTC

svn commit: r1019170 [42/42] - in /websites/staging/cayenne/trunk/content: ./ 2017/10/ doap/ docs/ docs/4.0/api/ docs/4.0/api/org/apache/cayenne/ docs/4.0/api/org/apache/cayenne/access/ docs/4.0/api/org/apache/cayenne/access/class-use/ docs/4.0/api/org...

Modified: websites/staging/cayenne/trunk/content/docs/4.0/tutorial/index.html
==============================================================================
--- websites/staging/cayenne/trunk/content/docs/4.0/tutorial/index.html (original)
+++ websites/staging/cayenne/trunk/content/docs/4.0/tutorial/index.html Fri Oct  6 07:49:44 2017
@@ -9,7 +9,7 @@
     ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
     var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
   })();
-        </script></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div xmlns:d="http://docbook.org/ns/docbook" class="navheader"><table width="100%" summary="Navigation header"><tr><th class="versioninfo">v.4.0 (4.0.B1)</th><th align="center">Getting Started with Cayenne</th><th></th></tr><tr><td width="20%" align="left">&nbsp;</td><th width="60%" align="center">&nbsp;</th><td width="20%" align="right">&nbsp;<a accesskey="n" href="getting-started-part1.html">Next</a></td></tr></table><hr></div><div class="book"><div class="titlepage"><div><div><h1 class="title"><a name="getting-started"></a>Getting Started with Cayenne</h1></div><div><p class="copyright">Copyright &copy; 2011-2017 Apache Software Foundation and individual authors</p></div><div><div class="legalnotice"><a name="d0e12"></a><p class="legalnotice-title"><b>License</b></p><p>Licensed to the Apache Software Foundation (ASF) under one or more contributor
+        </script></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div xmlns:d="http://docbook.org/ns/docbook" class="navheader"><table width="100%" summary="Navigation header"><tr><th class="versioninfo">v.4.0 (4.0.B2)</th><th align="center">Getting Started with Cayenne</th><th></th></tr><tr><td width="20%" align="left">&nbsp;</td><th width="60%" align="center">&nbsp;</th><td width="20%" align="right">&nbsp;<a accesskey="n" href="getting-started-part1.html">Next</a></td></tr></table><hr></div><div class="book"><div class="titlepage"><div><div><h1 class="title"><a name="getting-started"></a>Getting Started with Cayenne</h1></div><div><p class="copyright">Copyright &copy; 2011-2017 Apache Software Foundation and individual authors</p></div><div><div class="legalnotice"><a name="d0e12"></a><p class="legalnotice-title"><b>License</b></p><p>Licensed to the Apache Software Foundation (ASF) under one or more contributor
                 license agreements. See the NOTICE file distributed with this work for additional
                 information regarding copyright ownership. The ASF licenses this file to you under
                 the Apache License, Version 2.0 (the "License"); you may not use this file except in
@@ -17,4 +17,4 @@
                 http://www.apache.org/licenses/LICENSE-2.0</p><p>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.</p></div></div></div><hr></div><div class="toc"><p><b>Table of Contents</b></p><dl class="toc"><dt><span class="chapter"><a href="getting-started-part1.html">1. Setting up the environment</a></span></dt><dd><dl><dt><span class="section"><a href="getting-started-part1.html#d0e25">Setup</a></span></dt></dl></dd><dt><span class="chapter"><a href="getting-started-part2.html">2. Learning mapping basics</a></span></dt><dd><dl><dt><span class="section"><a href="getting-started-part2.html#d0e47">Starting a project</a></span></dt><dt><span class="section"><a href="getting-started-part2.html#d0e202">Getting started with Object Relational Mapping (ORM)</a></span></dt><dt><span class="section"><a href="getting-started-part2.html#d0e342">Creating Java Classes</a></span></dt></dl></dd><dt><span class="chapter"><a href="getting-started-part3.html">3. Learning Cayenne API</a></span></dt><dd><dl><dt><span class="sectio
 n"><a href="getting-started-part3.html#d0e414">Getting started with ObjectContext</a></span></dt><dt><span class="section"><a href="getting-started-part3.html#d0e485">Getting started with persistent objects</a></span></dt><dt><span class="section"><a href="getting-started-part3.html#d0e565">Selecting Objects</a></span></dt><dt><span class="section"><a href="getting-started-part3.html#d0e610">Deleting Objects</a></span></dt></dl></dd><dt><span class="chapter"><a href="getting-started-part4.html">4. Converting to Web Application</a></span></dt><dd><dl><dt><span class="section"><a href="getting-started-part4.html#d0e659">Converting to Web Application</a></span></dt></dl></dd></dl></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left">&nbsp;</td><td width="20%" align="center">&nbsp;</td><td width="40%" align="right">&nbsp;<a accesskey="n" href="getting-started-part1.html">Next</a></td></tr><tr><td width="40%" align="left" 
 valign="top">&nbsp;</td><td width="20%" align="center">&nbsp;</td><td width="40%" align="right" valign="top">&nbsp;Chapter&nbsp;1.&nbsp;Setting up the environment</td></tr></table></div></body></html>
\ No newline at end of file
+                language governing permissions and limitations under the License.</p></div></div></div><hr></div><div class="toc"><p><b>Table of Contents</b></p><dl class="toc"><dt><span class="chapter"><a href="getting-started-part1.html">1. Setting up the environment</a></span></dt><dd><dl><dt><span class="section"><a href="getting-started-part1.html#d0e25">Setup</a></span></dt></dl></dd><dt><span class="chapter"><a href="getting-started-part2.html">2. Learning mapping basics</a></span></dt><dd><dl><dt><span class="section"><a href="getting-started-part2.html#d0e47">Starting a project</a></span></dt><dt><span class="section"><a href="getting-started-part2.html#d0e202">Getting started with Object Relational Mapping (ORM)</a></span></dt><dt><span class="section"><a href="getting-started-part2.html#d0e342">Creating Java Classes</a></span></dt></dl></dd><dt><span class="chapter"><a href="getting-started-part3.html">3. Learning Cayenne API</a></span></dt><dd><dl><dt><span class="sectio
 n"><a href="getting-started-part3.html#d0e420">Getting started with ObjectContext</a></span></dt><dt><span class="section"><a href="getting-started-part3.html#d0e491">Getting started with persistent objects</a></span></dt><dt><span class="section"><a href="getting-started-part3.html#d0e571">Selecting Objects</a></span></dt><dt><span class="section"><a href="getting-started-part3.html#d0e616">Deleting Objects</a></span></dt></dl></dd><dt><span class="chapter"><a href="getting-started-part4.html">4. Converting to Web Application</a></span></dt><dd><dl><dt><span class="section"><a href="getting-started-part4.html#d0e665">Converting to Web Application</a></span></dt></dl></dd></dl></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left">&nbsp;</td><td width="20%" align="center">&nbsp;</td><td width="40%" align="right">&nbsp;<a accesskey="n" href="getting-started-part1.html">Next</a></td></tr><tr><td width="40%" align="left" 
 valign="top">&nbsp;</td><td width="20%" align="center">&nbsp;</td><td width="40%" align="right" valign="top">&nbsp;Chapter&nbsp;1.&nbsp;Setting up the environment</td></tr></table></div></body></html>
\ No newline at end of file

Modified: websites/staging/cayenne/trunk/content/docs/4.0/upgrade-guide/ar01.html
==============================================================================
--- websites/staging/cayenne/trunk/content/docs/4.0/upgrade-guide/ar01.html (original)
+++ websites/staging/cayenne/trunk/content/docs/4.0/upgrade-guide/ar01.html Fri Oct  6 07:49:44 2017
@@ -9,12 +9,12 @@
     ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
     var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
   })();
-        </script></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div xmlns:d="http://docbook.org/ns/docbook" class="navheader"><table width="100%" summary="Navigation header"><tr><th class="versioninfo">v.4.0 (4.0.M5)</th><th align="center">Guide to 4.0 Features</th><th></th></tr><tr><td width="20%" align="left"><a accesskey="p" href="index.html">Prev</a>&nbsp;</td><th width="60%" align="center">&nbsp;</th><td width="20%" align="right">&nbsp;</td></tr></table><hr></div><div class="article"><div class="titlepage"><div><div><h1 class="title"><a name="d0e19"></a>Guide to 4.0 Features</h1></div></div><hr></div><div class="toc"><p><b>Table of Contents</b></p><dl class="toc"><dt><span class="section"><a href="ar01.html#java-version">Java Version</a></span></dt><dt><span class="section"><a href="ar01.html#cayenne-configuration">Cayenne Configuration</a></span></dt><dt><span class="section"><a href="ar01.html#framework-api">Framework API</a></span><
 /dt><dt><span class="section"><a href="ar01.html#cayenne-modeler">CayenneModeler</a></span></dt><dt><span class="section"><a href="ar01.html#build-tools">Build Tools</a></span></dt></dl></div><p>This guide highlights the new features and changes introduced in Apache Cayenne 4.0. For a full list of changes consult
+        </script></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div xmlns:d="http://docbook.org/ns/docbook" class="navheader"><table width="100%" summary="Navigation header"><tr><th class="versioninfo">v.4.0 (4.0.B2)</th><th align="center">Guide to 4.0 Features</th><th></th></tr><tr><td width="20%" align="left"><a accesskey="p" href="index.html">Prev</a>&nbsp;</td><th width="60%" align="center">&nbsp;</th><td width="20%" align="right">&nbsp;</td></tr></table><hr></div><div class="article"><div class="titlepage"><div><div><h1 class="title"><a name="d0e19"></a>Guide to 4.0 Features</h1></div></div><hr></div><div class="toc"><p><b>Table of Contents</b></p><dl class="toc"><dt><span class="section"><a href="ar01.html#java-version">Java Version</a></span></dt><dt><span class="section"><a href="ar01.html#cayenne-configuration">Cayenne Configuration</a></span></dt><dt><span class="section"><a href="ar01.html#framework-api">Framework API</a></span><
 /dt><dt><span class="section"><a href="ar01.html#cayenne-modeler">CayenneModeler</a></span></dt><dt><span class="section"><a href="ar01.html#build-tools">Build Tools</a></span></dt></dl></div><p>This guide highlights the new features and changes introduced in Apache Cayenne 4.0. For a full list of changes consult
 		RELEASE-NOTES.txt included in Cayenne download. For release-specific upgrade instructions check UPGRADE.txt.</p><div class="section"><div class="titlepage"><div><div><h2 class="title"><a name="java-version"></a>Java Version</h2></div></div></div><p>Minimum required JDK version is 1.7 or newer. Cayenne 4.0 is fully tested with Java 1.7,
 			1.8. </p><p>The examples below often use Java 8 syntax. But those same examples should work without lambdas just as well.</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title"><a name="cayenne-configuration"></a>Cayenne Configuration</h2></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="d0e34"></a>ServerRuntimeBuilder</h3></div></div></div><p>Cayenne 3.1 introduced dependency injection and ServerRuntime. 4.0 provides a very convenient utility to create a custom runtime
 				with various extensions. This reduces the code needed to integrate Cayenne in your environment to just a few lines and no
 				boilerplate.
-				E.g.:</p><pre class="programlisting">ServerRuntime runtime = <span xmlns="http://www.w3.org/1999/xhtml" class="hl-keyword">new</span> ServerRuntimeBuilder(<span xmlns="http://www.w3.org/1999/xhtml" class="hl-string">"myproject"</span>)
+				E.g.:</p><pre class="programlisting">ServerRuntime runtime = ServerRuntime.builder(<span xmlns="http://www.w3.org/1999/xhtml" class="hl-string">"myproject"</span>)
         .addConfigs(<span xmlns="http://www.w3.org/1999/xhtml" class="hl-string">"cayenne-project1.xml"</span>, <span xmlns="http://www.w3.org/1999/xhtml" class="hl-string">"cayenne-project2.xml"</span>)
         .addModule(binder -&gt; binder.bind(JdbcEventLogger.<span xmlns="http://www.w3.org/1999/xhtml" class="hl-keyword">class</span>).toInstance(myLogger))
         .dataSource(myDataSource)
@@ -23,7 +23,8 @@
 				decorators. True to the "smallest-footprint" DI philosophy, decorator approach is
 				very simple and does not require proxies or class enhancement. Just implement the
 				decorated interface and provide a constructor that takes a delegate instance being
-				decorated:</p><pre class="programlisting"><span xmlns="http://www.w3.org/1999/xhtml" class="hl-keyword">public</span> <span xmlns="http://www.w3.org/1999/xhtml" class="hl-keyword">class</span> MyInterfaceDecorator <span xmlns="http://www.w3.org/1999/xhtml" class="hl-keyword">implements</span> MyInterface {
+				decorated:
+				</p><pre class="programlisting"><span xmlns="http://www.w3.org/1999/xhtml" class="hl-keyword">public</span> <span xmlns="http://www.w3.org/1999/xhtml" class="hl-keyword">class</span> MyInterfaceDecorator <span xmlns="http://www.w3.org/1999/xhtml" class="hl-keyword">implements</span> MyInterface {
 
     <span xmlns="http://www.w3.org/1999/xhtml" class="hl-keyword">private</span> MyInterface delegate;
 
@@ -37,35 +38,38 @@
     }
 }
 
-Module module = <span xmlns="http://www.w3.org/1999/xhtml" class="hl-keyword">new</span> Module() {
-
-    <span xmlns="http://www.w3.org/1999/xhtml" class="hl-annotation">@Override</span>
-    <span xmlns="http://www.w3.org/1999/xhtml" class="hl-keyword">public</span> <span xmlns="http://www.w3.org/1999/xhtml" class="hl-keyword">void</span> configure(Binder binder) {
-        binder.decorate(MyInterface.<span xmlns="http://www.w3.org/1999/xhtml" class="hl-keyword">class</span>).before(MyInterfaceDecorator.<span xmlns="http://www.w3.org/1999/xhtml" class="hl-keyword">class</span>);
-    }
-};</pre></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title"><a name="framework-api"></a>Framework API</h2></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="d0e56"></a>Fluent Query API</h3></div></div></div><p>Fluent Query API is one of the most exciting new features in Cayenne 4.0. This syntax is "chainable" so you can write query
-				assembly and execution code on one line. The most useful fluent queries are ObjectSelect, SQLSelect and SelectById:</p><div class="section"><div class="titlepage"><div><div><h4 class="title"><a name="d0e61"></a>ObjectSelect</h4></div></div></div><p>A "chainable" analog of SelectQuery.
+Module module = binder -&gt;
+        binder.decorate(MyInterface.<span xmlns="http://www.w3.org/1999/xhtml" class="hl-keyword">class</span>).before(MyInterfaceDecorator.<span xmlns="http://www.w3.org/1999/xhtml" class="hl-keyword">class</span>);</pre><p>
+			</p></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title"><a name="framework-api"></a>Framework API</h2></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="d0e57"></a>Fluent Query API</h3></div></div></div><p>Fluent Query API is one of the most exciting new features in Cayenne 4.0. This syntax is "chainable" so you can write query
+				assembly and execution code on one line. The most useful fluent queries are ObjectSelect, SQLSelect and SelectById:</p><div class="section"><div class="titlepage"><div><div><h4 class="title"><a name="d0e62"></a>ObjectSelect</h4></div></div></div><p>A "chainable" analog of SelectQuery.
 					</p><pre class="programlisting">Artist a = ObjectSelect
      .query(Artist.<span xmlns="http://www.w3.org/1999/xhtml" class="hl-keyword">class</span>)
      .where(Artist.ARTIST_NAME.eq(<span xmlns="http://www.w3.org/1999/xhtml" class="hl-string">"Picasso"</span>))
-     .selectOne(context);</pre></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a name="d0e68"></a>SQLSelect</h4></div></div></div><p>A "chainable" analog of SQLTemplate used specifically to run selecting raw
+     .selectOne(context);</pre></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a name="d0e69"></a>ColumnSelect</h4></div></div></div><p>
+					This query allows you directly access individual properties of Objects and use functions (including aggregate)
+					via type-safe API.
+					</p><pre class="programlisting">List&lt;String&gt; names = ObjectSelect
+	.columnQuery(Artist.<span xmlns="http://www.w3.org/1999/xhtml" class="hl-keyword">class</span>, Artist.ARTIST_NAME)
+	.where(Artist.ARTIST_NAME.length().gt(<span xmlns="http://www.w3.org/1999/xhtml" class="hl-number">6</span>))
+	.select(context);</pre><p>
+				</p></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a name="d0e77"></a>SQLSelect</h4></div></div></div><p>A "chainable" analog of SQLTemplate used specifically to run selecting raw
 					SQL:</p><pre class="programlisting">List&lt;Long&gt; ids = SQLSelect
      .scalarQuery(Long.<span xmlns="http://www.w3.org/1999/xhtml" class="hl-keyword">class</span>, <span xmlns="http://www.w3.org/1999/xhtml" class="hl-string">"SELECT ARTIST_ID FROM ARTIST ORDER BY ARTIST_ID"</span>)
-     .select(context);</pre></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a name="d0e75"></a>SelectById</h4></div></div></div><p>There's really no good analog of SelectById in Cayenne prior to 4.0. Previously available ObjectIdQuery didn't support half of
+     .select(context);</pre></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a name="d0e84"></a>SelectById</h4></div></div></div><p>There's really no good analog of SelectById in Cayenne prior to 4.0. Previously available ObjectIdQuery didn't support half of
 					the features of SelectById (e.g. caching consistent with other queries, prefetches, etc.)
 					:</p><pre class="programlisting">Artist a = SelectById
      .query(Artist.<span xmlns="http://www.w3.org/1999/xhtml" class="hl-keyword">class</span>, <span xmlns="http://www.w3.org/1999/xhtml" class="hl-number">3</span>)
      .useLocalCache(<span xmlns="http://www.w3.org/1999/xhtml" class="hl-string">"g1"</span>)
-     .selectOne(context)</pre></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="objectcontext"></a>ObjectContext</h3></div></div></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a name="d0e85"></a>Callback-based Object Iterator</h4></div></div></div><p>ObjectContext now features a simpler way to iterate over large result sets, based on callback interface that can be
+     .selectOne(context)</pre></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="objectcontext"></a>ObjectContext</h3></div></div></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a name="d0e94"></a>Callback-based Object Iterator</h4></div></div></div><p>ObjectContext now features a simpler way to iterate over large result sets, based on callback interface that can be
 					implemented with a
 					lambda:</p><pre class="programlisting">SelectQuery&lt;Artist&gt; q = <span xmlns="http://www.w3.org/1999/xhtml" class="hl-keyword">new</span> SelectQuery&lt;Artist&gt;(Artist.<span xmlns="http://www.w3.org/1999/xhtml" class="hl-keyword">class</span>);
 
 context.iterate(q, (Artist a) -&gt; {
     <span xmlns="http://www.w3.org/1999/xhtml" class="hl-comment">// do something with the object...</span>
     ...
-});</pre></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="d0e92"></a>Generics in Expressions and Queries</h3></div></div></div><p>We finished the work of "genericizing" Cayenne APIs started in 3.1. Now all APIs dealing with persistent objects (Expressions,
-				Queries, ObjectContext, etc.) support generics of Persistent object type or attribute property type.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="d0e97"></a>Property API</h3></div></div></div><p>Persistent superclasses (_MyEntity) now contain a set of static Property&lt;T&gt; variables generated from the model. These
-				metadata objects make possible to create type-safe Expressions and other query parts.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="d0e102"></a>Positional Parameter Bindings </h3></div></div></div><p>Expressions and SQLTemplate traditionally supported binding of parameters by name as a map. Cayenne 4.0 introduces a very easy
+});</pre></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="d0e101"></a>Generics in Expressions and Queries</h3></div></div></div><p>We finished the work of "genericizing" Cayenne APIs started in 3.1. Now all APIs dealing with persistent objects (Expressions,
+				Queries, ObjectContext, etc.) support generics of Persistent object type or attribute property type.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="d0e106"></a>Property API</h3></div></div></div><p>Persistent superclasses (_MyEntity) now contain a set of static Property&lt;T&gt; variables generated from the model. These
+				metadata objects make possible to create type-safe Expressions and other query parts.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="d0e111"></a>Positional Parameter Bindings </h3></div></div></div><p>Expressions and SQLTemplate traditionally supported binding of parameters by name as a map. Cayenne 4.0 introduces a very easy
 				form of positional bindings. It works with the same named template format, only parameters are bound by position, left-to-right.
 				Here we showing a more complex example with the same parameter name being used more than once in the
 				query:</p><pre class="programlisting"><span xmlns="http://www.w3.org/1999/xhtml" class="hl-comment">// two distinct names, 3 positional parameters.</span>
@@ -73,7 +77,7 @@ context.iterate(q, (Artist a) -&gt; {
 Expression e = ExpressionFactory.exp(
      <span xmlns="http://www.w3.org/1999/xhtml" class="hl-string">"price = $price or averagePrice = $price and maxPrice = $maxPrice"</span>, <span xmlns="http://www.w3.org/1999/xhtml" class="hl-number">23</span>, <span xmlns="http://www.w3.org/1999/xhtml" class="hl-number">50</span>);</pre><p>This
 				API is supported in Expressions, SQLTemplate as well as new SQLSelect and can be used interchnageably with named parameters with a
-				single template flavor.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="d0e110"></a>Improved Transaction API</h3></div></div></div><p>Transaction factory is now setup via DI (instead of being configured in the Modeler). There's a utility method on ServerRuntime
+				single template flavor.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="d0e119"></a>Improved Transaction API</h3></div></div></div><p>Transaction factory is now setup via DI (instead of being configured in the Modeler). There's a utility method on ServerRuntime
 				to perform multiple operations as one
 				transaction:</p><pre class="programlisting">runtime.performInTransaction(() -&gt; {
 	<span xmlns="http://www.w3.org/1999/xhtml" class="hl-comment">// ... do some changes</span>
@@ -83,23 +87,46 @@ Expression e = ExpressionFactory.exp(
 	context.commitChanges();
 
 	<span xmlns="http://www.w3.org/1999/xhtml" class="hl-keyword">return</span> true;
-});</pre></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="d0e117"></a>Transparent Database Cryptography with "cayenne-crypto" Module</h3></div></div></div><p>Cayenne includes a new module called "cayenne-crypto" that enables transparent cryptography for designated data columns. This is
+});</pre></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="d0e126"></a>Transparent Database Cryptography with "cayenne-crypto" Module</h3></div></div></div><p>Cayenne includes a new module called "cayenne-crypto" that enables transparent cryptography for designated data columns. This is
 				a pretty cool feature that allows to enable encryption/decryption of your sensitive data pretty much declaratively using your
 				regular DB storage. Encrypted values can be stored in (VAR)BINARY and (VAR)CHAR columns. Currently "cayenne-crypto" supports
 				AES/CBC/PKCS5Padding encryption (though other cyphers can be added). It also supports encrypted data compression. Here is an example
 				of building a crypto DI module that can be added to
-				ServerRuntime:</p><pre class="programlisting">Module cryptoExtensions = <span xmlns="http://www.w3.org/1999/xhtml" class="hl-keyword">new</span> CryptoModuleBuilder()
+				ServerRuntime:</p><pre class="programlisting">Module cryptoExtensions = CryptoModule.extend()
 	.keyStore(<span xmlns="http://www.w3.org/1999/xhtml" class="hl-string">"file:///mykeystore"</span>, <span xmlns="http://www.w3.org/1999/xhtml" class="hl-string">"keystorepassword"</span>.toCharArray(), <span xmlns="http://www.w3.org/1999/xhtml" class="hl-string">"keyalias"</span>)
 	.compress()
-	.build();</pre></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title"><a name="cayenne-modeler"></a>CayenneModeler</h2></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="d0e127"></a>Improved UI</h3></div></div></div><p>CayenneModeler features a number of UI improvements. Attributes and relationships are now edited in the same view (no need to
-				switch between the tabs). Project tree allows to easily filter elements by type and quickly collapse the tree.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="d0e132"></a>Dropped Support for Mapping Listeners</h3></div></div></div><p>Managing listeners in the DataMap XML model is counterproductive and confusing, so support for listeners was removed from both
+	.module();</pre></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title"><a name="cayenne-modeler"></a>CayenneModeler</h2></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="d0e136"></a>Improved UI</h3></div></div></div><p>CayenneModeler features a number of UI improvements. Attributes and relationships are now edited in the same view (no need to
+				switch between the tabs). Project tree allows to easily filter elements by type and quickly collapse the tree.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="d0e141"></a>Dropped Support for Mapping Listeners</h3></div></div></div><p>Managing listeners in the DataMap XML model is counterproductive and confusing, so support for listeners was removed from both
 				the XML and the Modeler. If you previously had listeners mapped in the model, annotate their callback methods, and perform listener
 				registration in the code: </p><pre class="programlisting">runtime.getDataDomain().addListener(myListener);</pre><p>
-				Entity callbacks on the other hand are managed in the Modeler as before.</p></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title"><a name="build-tools"></a>Build Tools</h2></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="d0e143"></a>cdbimport</h3></div></div></div><p>"cdbimport" has evolved from an experiment to a full-featured production tool that significantly reduces (and sometimes
+				or via DI: </p><pre class="programlisting">Module module = binder -&gt; ServerModule.contributeDomainListeners(myListener);</pre><p>
+				Entity callbacks on the other hand are managed in the Modeler as before.</p></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title"><a name="build-tools"></a>Build Tools</h2></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="d0e155"></a>cdbimport</h3></div></div></div><p>"cdbimport" has evolved from an experiment to a full-featured production tool that significantly reduces (and sometimes
 				eliminates) the need for manual maintenance of the DataMaps in CayenneModeler. Two improvements made this possible. First, smart
 				merge algorithm will ensure that custom changes to the model are not overridden on subsequent runs of "cdbimport". Second, the
 				mechanism for specifing DB reverse-engineering parameters, such as name filtering, is made much more powerful with many new options.
 				E.g. we started supporting filters by catalogs and schemas, table name filters can be added per catalog/schema or at the top level,
 				etc.
-			</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="d0e148"></a>cgen</h3></div></div></div><p>As was mentioned above, cgen now includes Property&lt;T&gt; static variables for expression building. It is also made smarter about
-				its defaults for "destDir" and "superPkg".</p></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="index.html">Prev</a>&nbsp;</td><td width="20%" align="center">&nbsp;</td><td width="40%" align="right">&nbsp;</td></tr><tr><td width="40%" align="left" valign="top">Cayenne 4.0 New Features and Upgrade Guide&nbsp;</td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top">&nbsp;</td></tr></table></div></body></html>
\ No newline at end of file
+			</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="d0e160"></a>cgen</h3></div></div></div><p>As was mentioned above, cgen now includes Property&lt;T&gt; static variables for expression building. It is also made smarter about
+				its defaults for "destDir" and "superPkg".</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="d0e165"></a>Gradle Plugin</h3></div></div></div><p>
+				Cayenne now provides it's own Gradle Plugin that allows you easily integrate <code class="code">cdbimport</code>
+				and <code class="code">cgen</code> tools into your build process.
+				Here is example of it's usage:
+				</p><pre class="programlisting">
+buildscript {
+    repositories {
+        mavenCentral()
+    }
+    dependencies {
+        classpath group: 'org.apache.cayenne.plugins', name: 'cayenne-gradle-plugin', version: '4.0.B2'
+    }
+}
+
+apply plugin: 'org.apache.cayenne'
+
+cayenne.defaultDataMap 'datamap.map.xml'
+
+dependencies {
+    compile cayenne.dependency('server')
+    compile cayenne.dependency('java8')
+}</pre><p>
+			</p></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="index.html">Prev</a>&nbsp;</td><td width="20%" align="center">&nbsp;</td><td width="40%" align="right">&nbsp;</td></tr><tr><td width="40%" align="left" valign="top">Cayenne 4.0 New Features and Upgrade Guide&nbsp;</td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top">&nbsp;</td></tr></table></div></body></html>
\ No newline at end of file

Modified: websites/staging/cayenne/trunk/content/docs/4.0/upgrade-guide/index.html
==============================================================================
--- websites/staging/cayenne/trunk/content/docs/4.0/upgrade-guide/index.html (original)
+++ websites/staging/cayenne/trunk/content/docs/4.0/upgrade-guide/index.html Fri Oct  6 07:49:44 2017
@@ -9,7 +9,7 @@
     ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
     var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
   })();
-        </script></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div xmlns:d="http://docbook.org/ns/docbook" class="navheader"><table width="100%" summary="Navigation header"><tr><th class="versioninfo">v.4.0 (4.0.M5)</th><th align="center">Cayenne 4.0 New Features and Upgrade Guide</th><th></th></tr><tr><td width="20%" align="left">&nbsp;</td><th width="60%" align="center">&nbsp;</th><td width="20%" align="right">&nbsp;<a accesskey="n" href="ar01.html">Next</a></td></tr></table><hr></div><div class="book"><div class="titlepage"><div><div><h1 class="title"><a name="upgrade-guide"></a>Cayenne 4.0 New Features and Upgrade Guide</h1></div><div><p class="copyright">Copyright &copy; 2011-2017 Apache Software Foundation and individual authors</p></div><div><div class="legalnotice"><a name="d0e11"></a><p class="legalnotice-title"><b>License</b></p><p>Licensed to the Apache Software Foundation (ASF) under one or more contributor
+        </script></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div xmlns:d="http://docbook.org/ns/docbook" class="navheader"><table width="100%" summary="Navigation header"><tr><th class="versioninfo">v.4.0 (4.0.B2)</th><th align="center">Cayenne 4.0 New Features and Upgrade Guide</th><th></th></tr><tr><td width="20%" align="left">&nbsp;</td><th width="60%" align="center">&nbsp;</th><td width="20%" align="right">&nbsp;<a accesskey="n" href="ar01.html">Next</a></td></tr></table><hr></div><div class="book"><div class="titlepage"><div><div><h1 class="title"><a name="upgrade-guide"></a>Cayenne 4.0 New Features and Upgrade Guide</h1></div><div><p class="copyright">Copyright &copy; 2011-2017 Apache Software Foundation and individual authors</p></div><div><div class="legalnotice"><a name="d0e11"></a><p class="legalnotice-title"><b>License</b></p><p>Licensed to the Apache Software Foundation (ASF) under one or more contributor
                 license agreements. See the NOTICE file distributed with this work for additional
                 information regarding copyright ownership. The ASF licenses this file to you under
                 the Apache License, Version 2.0 (the "License"); you may not use this file except in

Modified: websites/staging/cayenne/trunk/content/docs/index.html
==============================================================================
--- websites/staging/cayenne/trunk/content/docs/index.html (original)
+++ websites/staging/cayenne/trunk/content/docs/index.html Fri Oct  6 07:49:44 2017
@@ -100,7 +100,7 @@ h2:hover > .headerlink, h3:hover > .head
 here.</p>
 <ul>
 <li><a href="/docs/4.0/tutorial/index.html">Getting Started (4.0)</a></li>
-<li><a href="/docs/4.0/index.html">Version 4.0 (alpha)</a></li>
+<li><a href="/docs/4.0/index.html">Version 4.0 (beta)</a></li>
 <li><a href="/docs/3.1/index.html">Version 3.1 (stable)</a></li>
 </ul>
 <h2 id="legacy-documentation">Legacy Documentation<a class="headerlink" href="#legacy-documentation" title="Permanent link">&para;</a></h2>

Modified: websites/staging/cayenne/trunk/content/download.html
==============================================================================
--- websites/staging/cayenne/trunk/content/download.html (original)
+++ websites/staging/cayenne/trunk/content/download.html Fri Oct  6 07:49:44 2017
@@ -97,25 +97,25 @@
 h2:hover > .headerlink, h3:hover > .headerlink, h1:hover > .headerlink, h6:hover > .headerlink, h4:hover > .headerlink, h5:hover > .headerlink, dt:hover > .elementid-permalink { visibility: visible }</style>
 <h2 id="download">Download<a class="headerlink" href="#download" title="Permanent link">&para;</a></h2>
 <p><em>KEYS file to verify the file signatures can be <a href="http://www.apache.org/dist/cayenne/KEYS">found here</a>.</em></p>
-<h3 id="latest-development-release-40b1-beta">Latest Development Release - 4.0.B1 (Beta)<a class="headerlink" href="#latest-development-release-40b1-beta" title="Permanent link">&para;</a></h3>
+<h3 id="latest-development-release-40b2-beta">Latest Development Release - 4.0.B2 (Beta)<a class="headerlink" href="#latest-development-release-40b2-beta" title="Permanent link">&para;</a></h3>
 <p>Requires Java 1.7 or above.</p>
 <ul>
-<li><a href="http://www.apache.org/dyn/closer.lua/cayenne/4.0.B1/cayenne-4.0.B1.tar.gz">Cayenne 4.0.B1</a>
+<li><a href="http://www.apache.org/dyn/closer.lua/cayenne/4.0.B2/cayenne-4.0.B2.tar.gz">Cayenne 4.0.B2</a>
  binary distribution with cross-platform Java CayenneModeler. 
-(<a href="http://www.apache.org/dist/cayenne/4.0.B1/cayenne-4.0.B1.tar.gz.asc">pgp</a>, <a href="http://www.apache.org/dist/cayenne/4.0.B1/cayenne-4.0.B1.tar.gz.md5">md5</a>
+(<a href="http://www.apache.org/dist/cayenne/4.0.B2/cayenne-4.0.B2.tar.gz.asc">pgp</a>, <a href="http://www.apache.org/dist/cayenne/4.0.B2/cayenne-4.0.B2.tar.gz.md5">md5</a>
 )</li>
-<li><a href="http://www.apache.org/dyn/closer.lua/cayenne/4.0.B1/cayenne-4.0.B1-macosx.dmg">Cayenne 4.0.B1</a>
+<li><a href="http://www.apache.org/dyn/closer.lua/cayenne/4.0.B2/cayenne-4.0.B2-macosx.dmg">Cayenne 4.0.B2</a>
  binary distribution with Mac OS X CayenneModeler. 
-(<a href="http://www.apache.org/dist/cayenne/4.0.B1/cayenne-4.0.B1-macosx.dmg.asc">pgp</a>, <a href="http://www.apache.org/dist/cayenne/4.0.B1/cayenne-4.0.B1-macosx.dmg.md5">md5</a>
+(<a href="http://www.apache.org/dist/cayenne/4.0.B2/cayenne-4.0.B2-macosx.dmg.asc">pgp</a>, <a href="http://www.apache.org/dist/cayenne/4.0.B2/cayenne-4.0.B2-macosx.dmg.md5">md5</a>
 )</li>
-<li><a href="http://www.apache.org/dyn/closer.lua/cayenne/4.0.B1/cayenne-4.0.B1-win.zip">Cayenne 4.0.B1</a>
+<li><a href="http://www.apache.org/dyn/closer.lua/cayenne/4.0.B2/cayenne-4.0.B2-win.zip">Cayenne 4.0.B2</a>
  binary distribution with Windows CayenneModeler. 
-(<a href="http://www.apache.org/dist/cayenne/4.0.B1/cayenne-4.0.B1-win.zip.asc">pgp</a>, <a href="http://www.apache.org/dist/cayenne/4.0.B1/cayenne-4.0.B1-win.zip.md5">md5</a>
+(<a href="http://www.apache.org/dist/cayenne/4.0.B2/cayenne-4.0.B2-win.zip.asc">pgp</a>, <a href="http://www.apache.org/dist/cayenne/4.0.B2/cayenne-4.0.B2-win.zip.md5">md5</a>
 )</li>
-<li><a href="http://www.apache.org/dyn/closer.lua/cayenne/4.0.B1/cayenne-4.0.B1-src.tar.gz">Cayenne 4.0.B1</a>
+<li><a href="http://www.apache.org/dyn/closer.lua/cayenne/4.0.B2/cayenne-4.0.B2-src.tar.gz">Cayenne 4.0.B2</a>
  source distribution
-(<a href="http://www.apache.org/dist/cayenne/4.0.B1/cayenne-4.0.B1-src.tar.gz.asc">pgp</a>, <a href="http://www.apache.org/dist/cayenne/4.0.B1/cayenne-4.0.B1-src.tar.gz.md5">md5</a>)</li>
-<li><a href="https://raw.githubusercontent.com/apache/cayenne/4.0.B1/docs/doc/src/main/resources/RELEASE-NOTES.txt">Release Notes</a></li>
+(<a href="http://www.apache.org/dist/cayenne/4.0.B2/cayenne-4.0.B2-src.tar.gz.asc">pgp</a>, <a href="http://www.apache.org/dist/cayenne/4.0.B2/cayenne-4.0.B2-src.tar.gz.md5">md5</a>)</li>
+<li><a href="https://raw.githubusercontent.com/apache/cayenne/4.0.B2/docs/doc/src/main/resources/RELEASE-NOTES.txt">Release Notes</a></li>
 </ul>
 <h3 id="latest-stable-release-311">Latest Stable Release - 3.1.1<a class="headerlink" href="#latest-stable-release-311" title="Permanent link">&para;</a></h3>
 <p>Requires Java 1.5 or above.</p>

Modified: websites/staging/cayenne/trunk/content/index.html
==============================================================================
--- websites/staging/cayenne/trunk/content/index.html (original)
+++ websites/staging/cayenne/trunk/content/index.html Fri Oct  6 07:49:44 2017
@@ -123,11 +123,11 @@ high-volume  environments, Cayenne is an
 services.</p>
 <h2 id="news">News<a class="headerlink" href="#news" title="Permanent link">&para;</a></h2>
 <ul>
+<li>Oct 06, 2017 - <a href="/2017/06/cayenne-40B2-released.html">4.0 BETA 2 released</a></li>
 <li>Jun 12, 2017 - <a href="/2017/06/cayenne-40B1-released.html">4.0 BETA released</a></li>
 <li>Mar 06, 2017 - <a href="/2017/03/cayenne-40M5-released.html">4.0 Milestone 5 released</a></li>
 <li>Dec 13, 2016 - <a href="/2016/12/cayenne-40M4-released.html">4.0 Milestone 4 released</a></li>
 <li>May 16, 2016 - <a href="/2016/05/cayenne-311-released.html">3.1.1 released</a></li>
-<li>Feb 12, 2016 - <a href="/2016/02/cayenne-40m3-released.html">4.0 Milestone 3 released</a> </li>
 </ul>
 <h2 id="cayenne-modeler">Cayenne Modeler<a class="headerlink" href="#cayenne-modeler" title="Permanent link">&para;</a></h2>
 <p><span style="float: right"><img style="border: 0px solid black" src="/img/modeler-thumb-4.0.jpg"></span>