http://git-wip-us.apache.org/repos/asf/cayenne-website/blob/868c6ecf/src/main/site/content/dev/release-guide.md ---------------------------------------------------------------------- diff --git a/src/main/site/content/dev/release-guide.md b/src/main/site/content/dev/release-guide.md index 5622456..13b2d36 100644 --- a/src/main/site/content/dev/release-guide.md +++ b/src/main/site/content/dev/release-guide.md @@ -110,14 +110,14 @@ be considered by the PMC (particularly -1 votes will be discussed) when making the final decision, but are not binding. * Each PMC member will do the following before voting on a release: * download the artifacts - * satisfy themselves that the source matches the appropriate GIT tag. + * satisfy themselves that the source matches the appropriate Git tag. This can be done by diffing the source against a recent git checkout. * satisfy themselves that the Apache licensing requirements are met (this will usually be achieved by ensuring that all notices are in place and -verifying that the source matches GIT since all commits to GIT are possible +verifying that the source matches Git since all commits to Git are possible only if the committer has a CLA on file). * satisfy themselves that the binary distribution is sane and passes -basic usability tests. For example, that the Cayenne modeler runs and the +basic usability tests. For example, that the Cayenne Modeler runs and the main jar passes some basic tests. * satisfy themselves that the source passes agreed unit tests (either by running them manually or verifying that CI service has run those tests against
http://git-wip-us.apache.org/repos/asf/cayenne-website/blob/868c6ecf/src/main/site/content/docs/4.0/cayenne-guide.html ---------------------------------------------------------------------- diff --git a/src/main/site/content/docs/4.0/cayenne-guide.html b/src/main/site/content/docs/4.0/cayenne-guide.html index a963e2e..78f14a5 100644 --- a/src/main/site/content/docs/4.0/cayenne-guide.html +++ b/src/main/site/content/docs/4.0/cayenne-guide.html @@ -63,7 +63,7 @@ menu: <tr> <td class="tableblock halign-left valign-top"><p class="tableblock">4.0</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Java 1.7 or newer</p></td> - <td class="tableblock halign-left valign-top"><p class="tableblock">Beta</p></td> + <td class="tableblock halign-left valign-top"><p class="tableblock">Stable</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock">3.1</p></td> @@ -121,7 +121,7 @@ menu: <plugin> <groupId>org.apache.cayenne.plugins</groupId> <artifactId>cayenne-modeler-maven-plugin</artifactId> - <version>4.0.RC1</version> + <version>4.0</version> </plugin> </plugins> </build></code></pre> @@ -345,9 +345,9 @@ total 24 </div> <div class="ulist"> <ul> - <li> <p><code>cayenne-di-4.0.RC1.jar</code> - Cayenne dependency injection (DI) container library. All applications will require this file.</p> </li> - <li> <p><code>cayenne-server-4.0.RC1.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.0.RC1.jar</code> - a client-side runtime for <a href="#introduction-to-rop">ROP applications</a></p> </li> + <li> <p><code>cayenne-di-4.0.jar</code> - Cayenne dependency injection (DI) container library. All applications will require this file.</p> </li> + <li> <p><code>cayenne-server-4.0.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.0.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> @@ -371,7 +371,7 @@ total 24 <pre class="highlight"><code class="language-xml xml" data-lang="xml"><dependency> <groupId>org.apache.cayenne</groupId> <artifactId>cayenne-server</artifactId> - <version>4.0.RC1</version> + <version>4.0</version> </dependency></code></pre> </div> </div> @@ -527,7 +527,7 @@ total 24 <pre class="highlight"><code class="language-xml xml" data-lang="xml"><plugin> <groupId>org.apache.cayenne.plugins</groupId> <artifactId>cayenne-maven-plugin</artifactId> - <version>4.0.RC1</version> + <version>4.0</version> <configuration> <map>${project.basedir}/src/main/resources/my.map.xml</map> @@ -690,7 +690,7 @@ total 24 <pre class="highlight"><code class="language-xml xml" data-lang="xml"><plugin> <groupId>org.apache.cayenne.plugins</groupId> <artifactId>cayenne-maven-plugin</artifactId> - <version>4.0.RC1</version> + <version>4.0</version> <executions> <execution> <configuration> @@ -924,7 +924,7 @@ total 24 <pre class="highlight"><code class="language-XML XML" data-lang="XML"><plugin> <groupId>org.apache.cayenne.plugins</groupId> <artifactId>cayenne-maven-plugin</artifactId> - <version>4.0.RC1</version> + <version>4.0</version> <executions> <execution> @@ -961,7 +961,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.0.RC1'</code></pre> + <pre class="highlight"><code class="language-Groovy Groovy" data-lang="Groovy">compile 'org.apache.cayenne:cayenne-server:4.0'</code></pre> </div> </div> <div class="ulist"> @@ -983,7 +983,7 @@ total 24 } // add Cayenne Gradle Plugin dependencies { - classpath group: 'org.apache.cayenne.plugins', name: 'cayenne-gradle-plugin', version: '4.0.RC1' + classpath group: 'org.apache.cayenne.plugins', name: 'cayenne-gradle-plugin', version: '4.0' } } @@ -2298,12 +2298,19 @@ List<String> names = context.performQuery(query);</code></pre> </div> <div class="listingblock"> <div class="content"> - <pre class="highlight"><code class="language-java java" data-lang="java">SQLSelect<Painting> q1 = SQLSelect + <pre class="highlight"><code class="language-java java" data-lang="java">// Selecting objects +List<Painting> paintings = SQLSelect .query(Painting.class, "SELECT * FROM PAINTING WHERE PAINTING_TITLE LIKE #bind($title)") .params("title", "painting%") .upperColumnNames() .localCache() .limit(100) + .select(context); + +// Selecting scalar values +List<String> paintingNames = SQLSelect + .scalarQuery(String.class, "SELECT PAINTING_TITLE FROM PAINTING WHERE ESTIMATED_PRICE > #bind($price)") + .params("price", 100000) .select(context);</code></pre> </div> </div> @@ -3510,7 +3517,7 @@ List<Artist> artists = <p>This tells Cayenne that the query created here would like to use local cache of the context it is executed against. A vararg parameter to <code>localCache()</code> (or <code>sharedCache()</code>) method contains so called "cache groups". Those are arbitrary names that allow to categorize queries for the purpose of setting cache policies or explicit invalidation of the cache. More on that below.</p> </div> <div class="paragraph"> - <p>The above API is enough for the caching to work, but by default your cache is an unmanaged LRU map. You canât control its size, expiration policies, etc. For the managed cache, you will need to explicitly use one of the more advanced cache providers. Use can use <a href="#ext-cayenne-jcache">JCache integration module</a> to enable any of JCache API compatible caching providers.</p> + <p>The above API is enough for the caching to work, but by default your cache is an unmanaged LRU map. You canât control its size, expiration policies, etc. For the managed cache, you will need to explicitly use one of the more advanced cache providers. Use can use <a href="#ext-jcache">JCache integration module</a> to enable any of JCache API compatible caching providers.</p> </div> <div class="paragraph"> <p>Often "passive" cache expiration policies used by caching providers are not sufficient, and the users want real-time cache invalidation when the data changes. So in addition to those policies, the app can invalidate individual cache groups explicitly with <code>RefreshQuery</code>:</p> @@ -4168,7 +4175,7 @@ ServerRuntime runtime = ServerRuntime.builder() <pre class="highlight"><code class="language-XML XML" data-lang="XML"><plugin> <groupId>org.apache.cayenne.plugins</groupId> <artifactId>cayenne-maven-plugin</artifactId> - <version>4.0.RC1</version> + <version>4.0</version> <configuration> <map>${project.basedir}/src/main/resources/datamap.map.xml</map> @@ -4737,7 +4744,7 @@ ServerRuntime runtime = ServerRuntime.builder() <pre class="highlight"><code class="language-XML XML" data-lang="XML"><dependency> <groupId>org.apache.cayenne</groupId> <artifactId>cayenne-cache-invalidation</artifactId> - <version>4.0.RC1</version> + <version>4.0</version> </dependency></code></pre> </div> </div> @@ -4746,7 +4753,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.0.RC1'</code></pre> + <pre class="highlight"><code class="language-Groovy Groovy" data-lang="Groovy">compile 'org.apache.cayenne:cayenne-cache-invalidation:4.0'</code></pre> </div> </div> </div> @@ -4831,7 +4838,7 @@ public class MyEntity extends _MyEntity { <pre class="highlight"><code class="language-XML XML" data-lang="XML"><dependency> <groupId>org.apache.cayenne</groupId> <artifactId>cayenne-commitlog</artifactId> - <version>4.0.RC1</version> + <version>4.0</version> </dependency></code></pre> </div> </div> @@ -4840,7 +4847,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.0.RC1'</code></pre> + <pre class="highlight"><code class="language-Groovy Groovy" data-lang="Groovy">compile 'org.apache.cayenne:cayenne-commitlog:4.0'</code></pre> </div> </div> </div> @@ -4917,7 +4924,7 @@ public class MyEntity extends _MyEntity { <pre class="highlight"><code class="language-XML XML" data-lang="XML"><dependency> <groupId>org.apache.cayenne</groupId> <artifactId>cayenne-crypto</artifactId> - <version>4.0.RC1</version> + <version>4.0</version> </dependency></code></pre> </div> </div> @@ -4926,7 +4933,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.0.RC1'</code></pre> + <pre class="highlight"><code class="language-Groovy Groovy" data-lang="Groovy">compile 'org.apache.cayenne:cayenne-crypto:4.0'</code></pre> </div> </div> </div> @@ -5042,7 +5049,7 @@ public class MyEntity extends _MyEntity { <pre class="highlight"><code class="language-XML XML" data-lang="XML"><dependency> <groupId>org.apache.cayenne</groupId> <artifactId>cayenne-dbcp2</artifactId> - <version>4.0.RC1</version> + <version>4.0</version> </dependency></code></pre> </div> </div> @@ -5051,7 +5058,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-dbcp2:4.0.RC1'</code></pre> + <pre class="highlight"><code class="language-Groovy Groovy" data-lang="Groovy">compile 'org.apache.cayenne:cayenne-dbcp2:4.0'</code></pre> </div> </div> </div> @@ -5085,7 +5092,7 @@ public class MyEntity extends _MyEntity { <pre class="highlight"><code class="language-XML XML" data-lang="XML"><dependency> <groupId>org.apache.cayenne</groupId> <artifactId>cayenne-java8</artifactId> - <version>4.0.RC1</version> + <version>4.0</version> </dependency></code></pre> </div> </div> @@ -5094,7 +5101,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-java8:4.0.RC1'</code></pre> + <pre class="highlight"><code class="language-Groovy Groovy" data-lang="Groovy">compile 'org.apache.cayenne:cayenne-java8:4.0'</code></pre> </div> </div> </div> @@ -5123,7 +5130,7 @@ public class MyEntity extends _MyEntity { <pre class="highlight"><code class="language-XML XML" data-lang="XML"><dependency> <groupId>org.apache.cayenne</groupId> <artifactId>cayenne-jcache</artifactId> - <version>4.0.RC1</version> + <version>4.0</version> </dependency></code></pre> </div> </div> @@ -5132,7 +5139,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-jcache:4.0.RC1'</code></pre> + <pre class="highlight"><code class="language-Groovy Groovy" data-lang="Groovy">compile 'org.apache.cayenne:cayenne-jcache:4.0'</code></pre> </div> </div> </div> @@ -5177,7 +5184,7 @@ public class MyEntity extends _MyEntity { <pre class="highlight"><code class="language-XML XML" data-lang="XML"><dependency> <groupId>org.apache.cayenne</groupId> <artifactId>cayenne-joda</artifactId> - <version>4.0.RC1</version> + <version>4.0</version> </dependency></code></pre> </div> </div> @@ -5186,7 +5193,7 @@ 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-joda:4.0.RC1'</code></pre> + <pre class="highlight"><code class="language-Groovy Groovy" data-lang="Groovy">compile 'org.apache.cayenne:cayenne-joda:4.0'</code></pre> </div> </div> </div> @@ -5245,6 +5252,18 @@ public class MyEntity extends _MyEntity { <li> <p>Default value: none, project DataNode configuration is used</p> </li> </ul> </div> </li> + <li> <p><code>cayenne.jdbc.max_wait</code> defines a maximum time in milliseconds that a connection request could wait in the connection queue. After this period expires, an exception will be thrown in the calling method. A value of zero will make the thread wait until a connection is available with no time out.</p> + <div class="ulist"> + <ul> + <li> <p>Default value: 20 seconds</p> </li> + </ul> + </div> </li> + <li> <p><code>cayenne.jdbc.validation_query</code> defines a SQL string that returns some result. It will be used to validate connections in the pool.</p> + <div class="ulist"> + <ul> + <li> <p>Default value: none</p> </li> + </ul> + </div> </li> <li> <p><code>cayenne.querycache.size</code> An integer defining the maximum number of entries in the query cache. Note that not all QueryCache providers may respect this property. MapQueryCache uses it, but the rest would use alternative configuration methods.</p> <div class="ulist"> <ul> @@ -5252,6 +5271,13 @@ public class MyEntity extends _MyEntity { <li> <p>Default value: 2000</p> </li> </ul> </div> </li> + <li> <p><code>cayenne.DataRowStore.snapshot.size</code> defines snapshot cache max size</p> + <div class="ulist"> + <ul> + <li> <p>Possible values: any positive int</p> </li> + <li> <p>Default value: 10000</p> </li> + </ul> + </div> </li> <li> <p><code>cayenne.server.contexts_sync_strategy</code> defines whether peer ObjectContexts should receive snapshot events after commits from other contexts. If true (<em>default</em>), the contexts would automatically synchronize their state with peers.</p> <div class="ulist"> <ul> @@ -5280,6 +5306,18 @@ public class MyEntity extends _MyEntity { <li> <p>Default value: false</p> </li> </ul> </div> </li> + <li> <p><code>cayenne.server.query_execution_time_logging_threshold</code> defines the minimum number of milliseconds a query must run before it is logged. A value less than or equal to zero disables logging.</p> + <div class="ulist"> + <ul> + <li> <p>Default value: 0</p> </li> + </ul> + </div> </li> + <li> <p><code>cayenne.server.domain.name</code> defines an optional name of the runtime DataDomain. If not specified, the name is inferred from the configuration name.</p> + <div class="ulist"> + <ul> + <li> <p>Default value: none</p> </li> + </ul> + </div> </li> <li> <p><code>cayenne.rop.service_url</code> defines the URL of the ROP server</p> <div class="ulist"> <ul> @@ -5381,6 +5419,11 @@ public class MyEntity extends _MyEntity { <td class="tableblock halign-left valign-middle"><p class="tableblock">Stores DataDomain filters.</p></td> </tr> <tr> + <td class="tableblock halign-left valign-middle"><p class="tableblock"><code>cayenne.server.domain_listeners</code></p></td> + <td class="tableblock halign-left valign-middle"><p class="tableblock"><code>List<Object></code></p></td> + <td class="tableblock halign-left valign-middle"><p class="tableblock">Stores DataDomain listeners.</p></td> + </tr> + <tr> <td class="tableblock halign-left valign-middle"><p class="tableblock"><code>cayenne.server.project_locations</code></p></td> <td class="tableblock halign-left valign-middle"><p class="tableblock"><code>List<String></code></p></td> <td class="tableblock halign-left valign-middle"><p class="tableblock">Stores locations of the one of more project configuration files.</p></td> http://git-wip-us.apache.org/repos/asf/cayenne-website/blob/868c6ecf/src/main/site/content/docs/4.0/getting-started-guide.html ---------------------------------------------------------------------- diff --git a/src/main/site/content/docs/4.0/getting-started-guide.html b/src/main/site/content/docs/4.0/getting-started-guide.html index 2b3be4f..61e217c 100644 --- a/src/main/site/content/docs/4.0/getting-started-guide.html +++ b/src/main/site/content/docs/4.0/getting-started-guide.html @@ -284,7 +284,7 @@ menu: <artifactId>tutorial</artifactId> <version>0.0.1-SNAPSHOT</version> <properties> - <cayenne.version>4.0.RC1</cayenne.version> <i class="conum" data-value="1"></i><b>(1)</b> + <cayenne.version>4.0</cayenne.version> <i class="conum" data-value="1"></i><b>(1)</b> <maven.compiler.source>1.8</maven.compiler.source> <i class="conum" data-value="2"></i><b>(2)</b> <maven.compiler.target>1.8</maven.compiler.target> </properties> http://git-wip-us.apache.org/repos/asf/cayenne-website/blob/868c6ecf/src/main/site/content/docs/4.0/getting-started-guide/images/base-datamap.png ---------------------------------------------------------------------- diff --git a/src/main/site/content/docs/4.0/getting-started-guide/images/base-datamap.png b/src/main/site/content/docs/4.0/getting-started-guide/images/base-datamap.png index a12bc01..a4dee53 100644 Binary files a/src/main/site/content/docs/4.0/getting-started-guide/images/base-datamap.png and b/src/main/site/content/docs/4.0/getting-started-guide/images/base-datamap.png differ http://git-wip-us.apache.org/repos/asf/cayenne-website/blob/868c6ecf/src/main/site/content/docs/4.0/getting-started-guide/images/base-datanode.png ---------------------------------------------------------------------- diff --git a/src/main/site/content/docs/4.0/getting-started-guide/images/base-datanode.png b/src/main/site/content/docs/4.0/getting-started-guide/images/base-datanode.png index 69939bb..7cae6bf 100644 Binary files a/src/main/site/content/docs/4.0/getting-started-guide/images/base-datanode.png and b/src/main/site/content/docs/4.0/getting-started-guide/images/base-datanode.png differ http://git-wip-us.apache.org/repos/asf/cayenne-website/blob/868c6ecf/src/main/site/content/docs/4.0/getting-started-guide/images/modeler-artistid.png ---------------------------------------------------------------------- diff --git a/src/main/site/content/docs/4.0/getting-started-guide/images/modeler-artistid.png b/src/main/site/content/docs/4.0/getting-started-guide/images/modeler-artistid.png index fb8c1dd..548b472 100644 Binary files a/src/main/site/content/docs/4.0/getting-started-guide/images/modeler-artistid.png and b/src/main/site/content/docs/4.0/getting-started-guide/images/modeler-artistid.png differ http://git-wip-us.apache.org/repos/asf/cayenne-website/blob/868c6ecf/src/main/site/content/docs/4.0/getting-started-guide/images/modeler-deleterule.png ---------------------------------------------------------------------- diff --git a/src/main/site/content/docs/4.0/getting-started-guide/images/modeler-deleterule.png b/src/main/site/content/docs/4.0/getting-started-guide/images/modeler-deleterule.png index 86ada13..87d5d1c 100644 Binary files a/src/main/site/content/docs/4.0/getting-started-guide/images/modeler-deleterule.png and b/src/main/site/content/docs/4.0/getting-started-guide/images/modeler-deleterule.png differ http://git-wip-us.apache.org/repos/asf/cayenne-website/blob/868c6ecf/src/main/site/content/docs/4.0/getting-started-guide/images/modeler-started.png ---------------------------------------------------------------------- diff --git a/src/main/site/content/docs/4.0/getting-started-guide/images/modeler-started.png b/src/main/site/content/docs/4.0/getting-started-guide/images/modeler-started.png index 5d83e7c..407f1eb 100644 Binary files a/src/main/site/content/docs/4.0/getting-started-guide/images/modeler-started.png and b/src/main/site/content/docs/4.0/getting-started-guide/images/modeler-started.png differ http://git-wip-us.apache.org/repos/asf/cayenne-website/blob/868c6ecf/src/main/site/content/docs/4.0/getting-started-rop.html ---------------------------------------------------------------------- diff --git a/src/main/site/content/docs/4.0/getting-started-rop.html b/src/main/site/content/docs/4.0/getting-started-rop.html index d0d4090..6988b5c 100644 --- a/src/main/site/content/docs/4.0/getting-started-rop.html +++ b/src/main/site/content/docs/4.0/getting-started-rop.html @@ -105,7 +105,7 @@ weight: 40 <groupId>org.apache.cayenne</groupId> <artifactId>cayenne-client</artifactId> <!-- Here specify the version of Cayenne you are actually using --> - <version>4.0.RC1</version> + <version>4.0</version> </dependency> <dependency> <groupId>com.caucho</groupId> http://git-wip-us.apache.org/repos/asf/cayenne-website/blob/868c6ecf/src/main/site/content/docs/4.0/getting-started-rop/images/datamap-enableclient.png ---------------------------------------------------------------------- diff --git a/src/main/site/content/docs/4.0/getting-started-rop/images/datamap-enableclient.png b/src/main/site/content/docs/4.0/getting-started-rop/images/datamap-enableclient.png index 62a2af2..549759f 100644 Binary files a/src/main/site/content/docs/4.0/getting-started-rop/images/datamap-enableclient.png and b/src/main/site/content/docs/4.0/getting-started-rop/images/datamap-enableclient.png differ http://git-wip-us.apache.org/repos/asf/cayenne-website/blob/868c6ecf/src/main/site/content/docs/4.0/upgrade-guide.html ---------------------------------------------------------------------- diff --git a/src/main/site/content/docs/4.0/upgrade-guide.html b/src/main/site/content/docs/4.0/upgrade-guide.html index d266837..92457ae 100644 --- a/src/main/site/content/docs/4.0/upgrade-guide.html +++ b/src/main/site/content/docs/4.0/upgrade-guide.html @@ -92,7 +92,7 @@ Module module = binder -> <div class="sect3"> <h4 id="fluent-query-api"><a class="anchor" href="#fluent-query-api"></a>Fluent Query API</h4> <div class="paragraph"> - <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> + <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 <code>ObjectSelect</code>, <code>SQLSelect</code> and <code>SelectById</code>:</p> </div> <div class="sect4"> <h5 id="objectselect"><a class="anchor" href="#objectselect"></a>ObjectSelect</h5> @@ -125,7 +125,7 @@ Module module = binder -> <div class="sect4"> <h5 id="sqlselect"><a class="anchor" href="#sqlselect"></a>SQLSelect</h5> <div class="paragraph"> - <p>A "chainable" analog of SQLTemplate used specifically to run selecting raw SQL:</p> + <p>A "chainable" analog of <code>SQLTemplate</code> used specifically to run selecting raw SQL:</p> </div> <div class="listingblock"> <div class="content"> @@ -138,7 +138,7 @@ Module module = binder -> <div class="sect4"> <h5 id="selectbyid"><a class="anchor" href="#selectbyid"></a>SelectById</h5> <div class="paragraph"> - <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> + <p>Thereâs really no good analog of <code>SelectById</code> in Cayenne prior to 4.0. Previously available <code>ObjectIdQuery</code> didnât support half of the features of <code>SelectById</code> (e.g. caching consistent with other queries, prefetches, etc.) :</p> </div> <div class="listingblock"> <div class="content"> @@ -178,13 +178,13 @@ context.iterate(q, (Artist a) -> { <div class="sect3"> <h4 id="property-api"><a class="anchor" href="#property-api"></a>Property API</h4> <div class="paragraph"> - <p>Persistent superclasses (_MyEntity) now contain a set of static Property<T> variables generated from the model. These metadata objects make possible to create type-safe Expressions and other query parts.</p> + <p>Persistent superclasses (_MyEntity) now contain a set of static <code>Property<T></code> variables generated from the model. These metadata objects make possible to create type-safe Expressions and other query parts.</p> </div> </div> <div class="sect3"> <h4 id="positional-parameter-bindings"><a class="anchor" href="#positional-parameter-bindings"></a>Positional Parameter Bindings</h4> <div class="paragraph"> - <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> + <p>Expressions and <code>SQLTemplate</code> 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> </div> <div class="listingblock"> <div class="content"> @@ -195,7 +195,7 @@ Expression e = ExpressionFactory.exp( </div> </div> <div class="paragraph"> - <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> + <p>This API is supported in Expressions, SQLTemplate as well as new SQLSelect and can be used interchangeably with named parameters with a single template flavor.</p> </div> </div> <div class="sect3"> @@ -268,19 +268,19 @@ Expression e = ExpressionFactory.exp( <div class="sect3"> <h4 id="cdbimport"><a class="anchor" href="#cdbimport"></a>cdbimport</h4> <div class="paragraph"> - <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> + <p><code>cdbimport</code> 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> <div class="sect3"> <h4 id="cgen"><a class="anchor" href="#cgen"></a>cgen</h4> <div class="paragraph"> - <p>As was mentioned above, cgen now includes Property<T> static variables for expression building. It is also made smarter about its defaults for "destDir" and "superPkg".</p> + <p>As was mentioned above, <code>cgen</code> now includes <code>Property<T></code> static variables for expression building. It is also made smarter about its defaults for "destDir" and "superPkg".</p> </div> </div> <div class="sect3"> <h4 id="gradle-plugin"><a class="anchor" href="#gradle-plugin"></a>Gradle Plugin</h4> <div class="paragraph"> - <p>Cayenne now provides itâs own Gradle Plugin that allows you easily integrate cdbimport and cgen tools into your build process. Here is example of itâs usage:</p> + <p>Cayenne now provides itâs own Gradle Plugin that allows you easily integrate <code>cdbimport</code> and <code>cgen</code> tools into your build process. Here is example of itâs usage:</p> </div> <div class="listingblock"> <div class="content"> @@ -289,7 +289,7 @@ Expression e = ExpressionFactory.exp( mavenCentral() } dependencies { - classpath group: 'org.apache.cayenne.plugins', name: 'cayenne-gradle-plugin', version: '4.0.B2' + classpath group: 'org.apache.cayenne.plugins', name: 'cayenne-gradle-plugin', version: '4.0' } } http://git-wip-us.apache.org/repos/asf/cayenne-website/blob/868c6ecf/src/main/site/content/news/cayenne-40-final-released.md ---------------------------------------------------------------------- diff --git a/src/main/site/content/news/cayenne-40-final-released.md b/src/main/site/content/news/cayenne-40-final-released.md new file mode 100644 index 0000000..fc54492 --- /dev/null +++ b/src/main/site/content/news/cayenne-40-final-released.md @@ -0,0 +1,34 @@ +--- +title: Cayenne 4.0 Final Released +date: 2018-08-16T12:00:00+03:00 +--- + +Apache Cayenne team is really glad to announce a long awaited release of _Cayenne 4.0_. + +It's really important milestone for all Cayenne community. +Here is some facts how long this journey was: + +* Development started: _May 29, 2012_ (back then it was Cayenne 3.2) +* Development releases: _8_ +* Changes and new features: _218_ +* Issues fixed: _179_ +* Commits made: _2421_ +* Authors: _29_ + +Thanks to everyone who made it possible! + +Cayenne can be downloaded from [here](/download.html). + +{{% gap %}} + +Here is bug fixes since release candidate: + +* {{% jira 2418 %}} Modeler: unable to edit entity selected via Search +* {{% jira 2427 %}} Modeler: Undo throws exception +* {{% jira 2430 %}} Modeler: Redo throws NPE +* {{% jira 2431 %}} Cayenne JDK 11 compatibility +* {{% jira 2435 %}} cdbimport: procedure parameters are not imported +* {{% jira 2436 %}} NPE in CayenneRuntimeException constructor +* {{% jira 2442 %}} Broken EventBridge providers implementations +* {{% jira 2444 %}} Change URI from http:// to https:// in xsi:schemaLocation +* {{% jira 2445 %}} Oracle: Problem with ExpressionFactory.notInExp() \ No newline at end of file http://git-wip-us.apache.org/repos/asf/cayenne-website/blob/868c6ecf/src/main/site/data/cayenne.yaml ---------------------------------------------------------------------- diff --git a/src/main/site/data/cayenne.yaml b/src/main/site/data/cayenne.yaml index bdaeaa4..29f96c8 100644 --- a/src/main/site/data/cayenne.yaml +++ b/src/main/site/data/cayenne.yaml @@ -26,10 +26,10 @@ releases: - version: "4.0" - latestRevision: "4.0.RC1" + latestRevision: "4.0" type: "Stable" - description: "Release Candidate" - date: "2018-04-25" + description: "Latest stable release" + date: "2018-08-15" docs: true downloadable: true jdk: 1.7 @@ -47,8 +47,8 @@ releases: - version: "3.1" latestRevision: "3.1.3" - description: "Latest stable release" - type: "Stable" + description: "Previous stable release" + type: "Aging" date: "2018-07-23" docs: true downloadable: true @@ -56,7 +56,7 @@ releases: - version: "3.0" latestRevision: "3.0.2" - description: "Previous stable release" + description: "Legacy release" type: "Legacy" date: "2011-06-21" docs: true http://git-wip-us.apache.org/repos/asf/cayenne-website/blob/868c6ecf/src/main/site/static/docs/4.0/api/allclasses-frame.html ---------------------------------------------------------------------- diff --git a/src/main/site/static/docs/4.0/api/allclasses-frame.html b/src/main/site/static/docs/4.0/api/allclasses-frame.html index 7d82430..f2eee69 100644 --- a/src/main/site/static/docs/4.0/api/allclasses-frame.html +++ b/src/main/site/static/docs/4.0/api/allclasses-frame.html @@ -2,10 +2,10 @@ <!-- NewPage --> <html lang="en"> <head> -<!-- Generated by javadoc (1.8.0_111) on Mon Apr 23 10:59:11 MSK 2018 --> +<!-- Generated by javadoc (1.8.0_111) on Thu Aug 16 11:39:03 MSK 2018 --> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> -<title>All Classes (cayenne-doc: Cayenne Documentation 4.0.RC1 API)</title> -<meta name="date" content="2018-04-23"> +<title>All Classes (cayenne-doc: Cayenne Documentation 4.0 API)</title> +<meta name="date" content="2018-08-16"> <link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style"> <script type="text/javascript" src="script.js"></script> </head> http://git-wip-us.apache.org/repos/asf/cayenne-website/blob/868c6ecf/src/main/site/static/docs/4.0/api/allclasses-noframe.html ---------------------------------------------------------------------- diff --git a/src/main/site/static/docs/4.0/api/allclasses-noframe.html b/src/main/site/static/docs/4.0/api/allclasses-noframe.html index 7326624..e0dbca2 100644 --- a/src/main/site/static/docs/4.0/api/allclasses-noframe.html +++ b/src/main/site/static/docs/4.0/api/allclasses-noframe.html @@ -2,10 +2,10 @@ <!-- NewPage --> <html lang="en"> <head> -<!-- Generated by javadoc (1.8.0_111) on Mon Apr 23 10:59:11 MSK 2018 --> +<!-- Generated by javadoc (1.8.0_111) on Thu Aug 16 11:39:03 MSK 2018 --> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> -<title>All Classes (cayenne-doc: Cayenne Documentation 4.0.RC1 API)</title> -<meta name="date" content="2018-04-23"> +<title>All Classes (cayenne-doc: Cayenne Documentation 4.0 API)</title> +<meta name="date" content="2018-08-16"> <link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style"> <script type="text/javascript" src="script.js"></script> </head>
