You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by sk...@apache.org on 2016/12/06 13:16:30 UTC

[3/5] cayenne git commit: Cayenne documentation update - added Modeler reverse engineering tool description - docbook maven plugin updated - all docs updated to proper syntax highlight - css style added for console input/output elements ( tag

http://git-wip-us.apache.org/repos/asf/cayenne/blob/34be65a0/docs/docbook/cayenne-guide/src/docbkx/re-modeler.xml
----------------------------------------------------------------------
diff --git a/docs/docbook/cayenne-guide/src/docbkx/re-modeler.xml b/docs/docbook/cayenne-guide/src/docbkx/re-modeler.xml
new file mode 100644
index 0000000..017c455
--- /dev/null
+++ b/docs/docbook/cayenne-guide/src/docbkx/re-modeler.xml
@@ -0,0 +1,113 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+	Licensed to the Apache Software Foundation (ASF) under one or more
+	contributor license agreements. See the NOTICE file distributed with
+	this work for additional information regarding copyright ownership.
+	The ASF licenses this file to you under the Apache License, Version
+	2.0 (the "License"); you may not use this file except in compliance
+	with the License. You may obtain a copy of the License at
+
+	http://www.apache.org/licenses/LICENSE-2.0 Unless required by
+	applicable law or agreed to in writing, software distributed under the
+	License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
+	CONDITIONS OF ANY KIND, either express or implied. See the License for
+	the specific language governing permissions and limitations under the
+	License.
+-->
+<chapter version="5.0" xml:id="re-modeler" xmlns="http://docbook.org/ns/docbook"
+         xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:ns="http://docbook.org/ns/docbook">
+    <title>Reverse Engineering in Cayenne Modeler</title>
+
+    <para>
+        Alternative aproach to using <link linkend="what-is-cdbimport">cdbimport </link> is doing reverse engineering
+        from <link linkend="running-cayennemodeler">Cayenne Modeler</link>. 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.
+    </para>
+
+    <para>
+        You can find reverse engineering tool in main modeler menu
+        <emphasis role="strong">
+            <guimenu>Tools</guimenu> &gt; <guimenuitem>Reengineer Database Schema</guimenuitem>
+        </emphasis>
+    </para>
+
+    <section xml:id="modeler-re-datasource">
+        <title>DataSource selection</title>
+        <para>First you should select DataSource. If you don't have any DataSource
+            yet you can create one from this menu.
+            <mediaobject>
+                <imageobject condition="web">
+                    <imagedata fileref="images/re-modeler-datasource-select.png"
+                               format="PNG" scale="70"/>
+                </imageobject>
+
+                <textobject>
+                    <phrase>Datasource selection dialog</phrase>
+                </textobject>
+
+                <caption>
+                    <para>Datasource selection dialog.</para>
+                </caption>
+            </mediaobject>
+        </para>
+    </section>
+
+    <section xml:id="modeler-re-options">
+        <title>Reverse engineering options</title>
+        <para>Once DataSource is selected you can proceed to reverse engineering
+            options.
+            <mediaobject>
+                <imageobject condition="web">
+                    <imagedata fileref="images/re-modeler-reverseengineering-dialog.png"
+                               format="PNG" scale="70"/>
+                </imageobject>
+
+                <textobject>
+                    <phrase>Reverse Engineering dialog</phrase>
+                </textobject>
+
+                <caption>
+                    <para>Reverse Engineering dialog.</para>
+                </caption>
+            </mediaobject>
+        </para>
+
+        <para>
+            Here is a list of options to tune what will be processed by reverse engineering:
+            <itemizedlist>
+                <listitem>
+                    <para><emphasis role="strong">Select Catalog</emphasis>:
+                        catalog to process
+                        <note>
+                            <para>You can only select one catalog. If you need to import multiple catalogs you need to run process several times.</para>
+                        </note>
+                    </para>
+                </listitem>
+
+                <listitem>
+                    <para><emphasis role="strong">Table Name Pattern</emphasis>:
+                        RegExp to filter tables. Default pattern <code>.*</code> includes all tables.
+                    </para>
+                </listitem>
+                <listitem>
+                    <para><emphasis role="strong">Procedure Name Pattern</emphasis>:
+                        RegExp to filter procedures. Default pattern <code>.*</code> includes all stored procedures.
+                    </para>
+                </listitem>
+                <listitem>
+                    <para><emphasis role="strong">Naming Strategy</emphasis>:
+                        Currently there is only one naming strategy available.
+                        See ant/maven tools <link linkend="re-name-generator">documentation</link> for details about naming strategy.
+                    </para>
+                </listitem>
+                <listitem>
+                    <para><emphasis role="strong">Tables with Meaningful PK Pattern</emphasis>:
+                        Comma separated list of RegExp's for tables that you want to have meaningful primary keys.
+                        By default no meaningful PKs are created.
+                    </para>
+                </listitem>
+            </itemizedlist>
+        </para>
+    </section>
+</chapter>

http://git-wip-us.apache.org/repos/asf/cayenne/blob/34be65a0/docs/docbook/cayenne-guide/src/docbkx/re-name-generator.xml
----------------------------------------------------------------------
diff --git a/docs/docbook/cayenne-guide/src/docbkx/re-name-generator.xml b/docs/docbook/cayenne-guide/src/docbkx/re-name-generator.xml
index e89ebfa..34824b6 100644
--- a/docs/docbook/cayenne-guide/src/docbkx/re-name-generator.xml
+++ b/docs/docbook/cayenne-guide/src/docbkx/re-name-generator.xml
@@ -38,13 +38,15 @@
                 </listitem>
             </itemizedlist>
         </para>
-        <table>
-            <tbody>
+        <table frame="void">
+            <thead>
                 <tr>
-                    <td>OneToMany</td>
-                    <td>Implicit</td>
-                    <td>Explicit</td>
+                    <th>OneToMany</th>
+                    <th>Implicit</th>
+                    <th>Explicit</th>
                 </tr>
+            </thead>
+            <tbody>
                 <tr>
                     <td>ARTIST.ARTIST_ID -- PAINTING.ARTIST_ID</td>
                     <td>Artists.paintings</td>
@@ -67,7 +69,11 @@
         <title>Cuztomizing Name Generator</title>
         <para>
             In case you want to customize the default naming strategy, you could set your own strategy through the namingStrategy option in the Maven or Ant 
-            configuration. Ensure that naming strategy class is in a class-path and implements ObjectNameGenerator interface.
+            configuration. Ensure that naming strategy class is in a class-path and implements <code>org.apache.cayenne.dbsync.naming.ObjectNameGenerator</code> interface.
+            <programlisting language="xml">
+    &lt;reverseEngineering&gt;
+        &lt;namingStrategy&gt;YourCustomNameGenerator&lt;/namingStrategy&gt;
+    &lt;/reverseEngineering&gt;</programlisting>
         </para>
     </section>
 </chapter>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cayenne/blob/34be65a0/docs/docbook/cayenne-guide/src/docbkx/re-relationships-loading-control.xml
----------------------------------------------------------------------
diff --git a/docs/docbook/cayenne-guide/src/docbkx/re-relationships-loading-control.xml b/docs/docbook/cayenne-guide/src/docbkx/re-relationships-loading-control.xml
index bc0bc23..9007cab 100644
--- a/docs/docbook/cayenne-guide/src/docbkx/re-relationships-loading-control.xml
+++ b/docs/docbook/cayenne-guide/src/docbkx/re-relationships-loading-control.xml
@@ -64,7 +64,7 @@
     <section xml:id="many-to-many">
         <title>ManyToMany</title>
         <para>
-            This type of relationships usually modeled via join or junction table (http://en.wikipedia.org/wiki/Junction_table).
+            This type of relationships usually modeled via join or junction table (<link xlink:href="http://en.wikipedia.org/wiki/Junction_table">http://en.wikipedia.org/wiki/Junction_table</link>).
             It is also successfully handled by cdbimport. Notice that join table should contain two and only two columns. Both of this columns 
             should be included as primary keys. 
         </para>
@@ -72,24 +72,22 @@
     <section xml:id="skip-relationships-loading">
         <title>Skip Relationships Loading</title>
         <para>
-            You are able to skip relationships loading by the &lt;skipRelationshipsLoading&gt; element.
+            You are able to skip relationships loading by the <code language="xml">&lt;skipRelationshipsLoading&gt;</code> element.
         </para>
         <programlisting language="xml">
-            &lt;reverseEngineering&gt;
-                &lt;skipRelationshipsLoading&gt;true&lt;skipRelationshipsLoading&gt;
-            &lt;/reverseEngineering&gt;
-        </programlisting>
+    &lt;reverseEngineering&gt;
+        &lt;skipRelationshipsLoading&gt;true&lt;skipRelationshipsLoading&gt;
+    &lt;/reverseEngineering&gt;</programlisting>
     </section>
     <section xml:id="skip-pk-loading">
         <title>Skip Primary Keys Loading</title>
         <para>
-            Another useful Cayenne reverse engineering property is &lt;skipPrimaryKeyLoading&gt;. If you decide to support all relationships at the application layer
+            Another useful Cayenne reverse engineering property is <code language="xml">&lt;skipPrimaryKeyLoading&gt;</code>. If you decide to support all relationships at the application layer
             and avoid their management in database, you\u2019ll find useful to turn off primary keys synchronization at all.
         </para>
         <programlisting language="xml">
-            &lt;reverseEngineering&gt;
-                &lt;skipPrimaryKeyLoading&gt;true&lt;skipPrimaryKeyLoading&gt;
-            &lt;/reverseEngineering&gt;
-        </programlisting>
+    &lt;reverseEngineering&gt;
+        &lt;skipPrimaryKeyLoading&gt;true&lt;skipPrimaryKeyLoading&gt;
+    &lt;/reverseEngineering&gt;</programlisting>
     </section>
 </chapter>

http://git-wip-us.apache.org/repos/asf/cayenne/blob/34be65a0/docs/docbook/cayenne-guide/src/docbkx/re-table-types.xml
----------------------------------------------------------------------
diff --git a/docs/docbook/cayenne-guide/src/docbkx/re-table-types.xml b/docs/docbook/cayenne-guide/src/docbkx/re-table-types.xml
index 55403fe..6df6179 100644
--- a/docs/docbook/cayenne-guide/src/docbkx/re-table-types.xml
+++ b/docs/docbook/cayenne-guide/src/docbkx/re-table-types.xml
@@ -19,24 +19,22 @@
     <title>Table Types</title>
     <para>
         By default, cdbimport processes only tables and views from schema, but there are a lot of other objects that could be loaded from database,
-        such as SYSTEM TABLE, GLOBAL TEMPORARY, LOCAL TEMPORARY, ALIAS, SYNONYM, etc. Those things are specific for concrete databases and could be accepted
-        by the &lt;tableType&gt;&lt;tableType&gt; element.
+        such as <code>SYSTEM TABLE, GLOBAL TEMPORARY, LOCAL TEMPORARY, ALIAS, SYNONYM</code>, etc. Those things are specific for concrete databases and could be accepted
+        by the <code language="xml">&lt;tableType&gt;&lt;/tableType&gt;</code> element.
     </para>
     <para>
         Import only tables
         <programlisting language="xml">
-                &lt;reverseEngineering>&gt;
-                    &lt;tableType&gt;TABLE&lt;/tableType&gt;
-                &lt;/reverseEngineering&gt;
-        </programlisting>
+    &lt;reverseEngineering&gt;
+        &lt;tableType&gt;TABLE&lt;/tableType&gt;
+    &lt;/reverseEngineering&gt;</programlisting>
     </para>
     <para>
-        Tables and views (default option)
+        Tables and views (<emphasis>default option</emphasis>)
         <programlisting language="xml">
-                &lt;reverseEngineering>&gt;
-                    &lt;tableType&gt;TABLE&lt;/tableType&gt;
-                    &lt;tableType&gt;VIEWS&lt;/tableType&gt;
-                &lt;/reverseEngineering&gt;
-        </programlisting>
+    &lt;reverseEngineering&gt;
+        &lt;tableType&gt;TABLE&lt;/tableType&gt;
+        &lt;tableType&gt;VIEWS&lt;/tableType&gt;
+    &lt;/reverseEngineering&gt;</programlisting>
     </para>
 </chapter>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cayenne/blob/34be65a0/docs/docbook/cayenne-guide/src/docbkx/re-types-mapping.xml
----------------------------------------------------------------------
diff --git a/docs/docbook/cayenne-guide/src/docbkx/re-types-mapping.xml b/docs/docbook/cayenne-guide/src/docbkx/re-types-mapping.xml
index 274c4ec..e99146a 100644
--- a/docs/docbook/cayenne-guide/src/docbkx/re-types-mapping.xml
+++ b/docs/docbook/cayenne-guide/src/docbkx/re-types-mapping.xml
@@ -18,60 +18,60 @@
     version="5.0" xml:id="re-types-mapping">
     <title>Types Mapping</title>
     <para>
-        Types mapping is a process of mapping between Database types and Java Classes through JDBC types that are represented by java.sql.Types.
+        Types mapping is a process of mapping between Database types and Java Classes through JDBC types that are represented by <code>java.sql.Types</code>.
     </para>
     <para>
-        By default, java.sql.Types will be mapped to Java built in types or wrapper class types. Actually, Cayenne allows you to override the default mapping.
-        You could use the &lt;typeMapper&gt; configuration section to customize how JDBC types should be identified in database and how they should be
+        By default, <code>java.sql.Types</code> will be mapped to Java built in types or wrapper class types. Actually, Cayenne allows you to override the default mapping.
+        You could use the <code>&lt;typeMapper&gt;</code> configuration section to customize how JDBC types should be identified in database and how they should be
         mapped to Java Classes during reverse engineering process.
     </para>
     <para>
-        Sometimes you need to map database types to your custom Java Classes. If you really want to do this, then you should implement 
-        org.apache.cayenne.access.types.ExtendedType interface for your classes.
+        Sometimes you need to map database types to your custom Java Classes. If you really want to do this, then you should implement
+        <code>org.apache.cayenne.access.types.ExtendedType</code> interface for your classes.
     </para>
     <section xml:id="basic-configuration">
         <title>Basic Configuration</title>
         <para>Here is an example of a basic typeMapper configuration:</para>
         <programlisting language="xml">
-                &lt;reverseEngineering&gt;
-                    &lt;typeMapper&gt;
-                        &lt;mapperClassName&gt;class&lt;/mapperClassName&gt;
-                        &lt;usePrimitives&gt;false&lt;/usePrimitives&gt;
-                        &lt;type&gt;
-                            &lt;!-- Java type names--&gt;
-                            &lt;java&gt;java.math.BigDecimal&lt;/java&gt;
-                            &lt;!-- JDBC tag is name for java.sql.Types --&gt;
-                            &lt;jdbc&gt;DECIMAL&lt;/jdbc&gt;
-                            &lt;!-- Length, scale and precision can be used to specify the mapping precisely --&gt;
-                            &lt;precision&gt;16&lt;/precision&gt;
-                            &lt;scale&gt;2&lt;/scale&gt;
-                        &lt;/type&gt;
-                        &lt;type&gt;
-                            &lt;java&gt;java.lang.Long&lt;/java&gt;
-                            &lt;jdbc&gt;NUMERIC&lt;/jdbc&gt;
-                        &lt;/type&gt;
-                        &lt;type&gt;
-                            &lt;java&gt;java.lang.String&lt;/java&gt;
-                            &lt;jdbc&gt;VARCHAR&lt;/jdbc&gt;
-                            &lt;length&gt;100&lt;/length&gt;
-                            &lt;notNull&gt;true&lt;/notNull&gt;
-                        &lt;/type&gt;
-                        &lt;type&gt;
-                            &lt;java&gt;java.util.Date&lt;/java&gt;
-                            &lt;jdbc&gt;TIMESTAMP&lt;/jdbc&gt;
-                        &lt;/type&gt;
-                    &lt;/typeMapper&gt;
-                &lt;/reverseEngineering&gt;
+    &lt;reverseEngineering&gt;
+        &lt;typeMapper&gt;
+            &lt;mapperClassName&gt;CustomMapperClass&lt;/mapperClassName&gt;
+            &lt;usePrimitives&gt;false&lt;/usePrimitives&gt;
+            &lt;type&gt;
+                &lt;!-- Java type names--&gt;
+                &lt;java&gt;java.math.BigDecimal&lt;/java&gt;
+                &lt;!-- JDBC tag is name for java.sql.Types --&gt;
+                &lt;jdbc&gt;DECIMAL&lt;/jdbc&gt;
+                &lt;!-- Length, scale and precision can be used to specify the mapping precisely --&gt;
+                &lt;precision&gt;16&lt;/precision&gt;
+                &lt;scale&gt;2&lt;/scale&gt;
+            &lt;/type&gt;
+            &lt;type&gt;
+                &lt;java&gt;java.lang.Long&lt;/java&gt;
+                &lt;jdbc&gt;NUMERIC&lt;/jdbc&gt;
+            &lt;/type&gt;
+            &lt;type&gt;
+                &lt;java&gt;java.lang.String&lt;/java&gt;
+                &lt;jdbc&gt;VARCHAR&lt;/jdbc&gt;
+                &lt;length&gt;100&lt;/length&gt;
+                &lt;notNull&gt;true&lt;/notNull&gt;
+            &lt;/type&gt;
+            &lt;type&gt;
+                &lt;java&gt;java.util.Date&lt;/java&gt;
+                &lt;jdbc&gt;TIMESTAMP&lt;/jdbc&gt;
+            &lt;/type&gt;
+        &lt;/typeMapper&gt;
+    &lt;/reverseEngineering&gt;
         </programlisting>
         <itemizedlist>
             <listitem>
                 <para>
-                    &lt;mapperClassName&gt; - name of the fully qualified custom Java mapper class.
+                    <code>&lt;mapperClassName&gt;</code> - name of the fully qualified custom Java mapper class.
                 </para>
             </listitem>
             <listitem>
                 <para>
-                    &lt;usePrimitives&gt; -  allows you to make a decision whether to use primitives or not. It's quite useful, because primitives are faster than objects.
+                    <code>&lt;usePrimitives&gt;</code> -  allows you to make a decision whether to use primitives or not. It's quite useful, because primitives are faster than objects.
                     If you want to use primitive type instead of wrapper type just set this option to true, otherwise false. It is more intuitive and has less overhead.
                     If it is not possible because generics/autoboxing reasons, or if you want it to be nullable, then use the wrapper type. All the wrapper classes
                     (Integer, Long, Byte, Double, Float, Short) are subclasses of the abstract class Number. The object of the wrapper class contains/wraps them respectively
@@ -81,42 +81,40 @@
             </listitem>
             <listitem>
                 <para>
-                    &lt;java&gt; - name of the fully qualified Java class for mapping. If the class is a primitive wrapper class such as java.lang.Integer, 
+                    <code>&lt;java&gt;</code> - name of the fully qualified Java class for mapping. If the class is a primitive wrapper class such as java.lang.Integer,
                     the mapping also applies to the primitive type.
                 </para>
             </listitem>
             <listitem>
                 <para>
-                    &lt;jdbc&gt; -  JDBC type which will be used by JDBC PreparedStatement, SQL Queries and for loading data from JDBC ResultSet. 
+                    <code>&lt;jdbc&gt;</code> -  JDBC type which will be used by JDBC PreparedStatement, SQL Queries and for loading data from JDBC ResultSet.
                     The valid types are defined in java.sql.Types.
                 </para>
             </listitem>
             <listitem>
                 <para>
-                    &lt;notNull&gt; - It's not a conditional constraint. Either your mapping are always required, in which case you should specify them as notNull="true", 
+                    <code>&lt;notNull&gt;</code> - It's not a conditional constraint. Either your mapping are always required, in which case you should specify them as notNull="true",
                     or not.
                 </para>
             </listitem>
             <listitem>
                 <para>
-                    &lt;length&gt;, &lt;precision&gt;, &lt;scale&gt; - length, scale and precision are used to specify the mapping precisely.
+                    <code>&lt;length&gt;, &lt;precision&gt;, &lt;scale&gt;</code> - length, scale and precision are used to specify the mapping precisely.
                 </para>
             </listitem>
         </itemizedlist>
-        <para>Note that you could write the elements above as attributes of &lt;type&gt;, for example:</para>
-        <programlisting language="xml">
-            &lt;type java="java built-in type"
-                jdbc="java.sql.Types Name"
-                length="Numeric value"
-                precision="Numeric value"
-                scale="Numeric value"
-                notNull="true|false"/&gt;
-        </programlisting>
+        <para>Note that you could write the elements above as attributes of <code>&lt;type&gt;</code>, for example:</para>
+        <programlisting language="xml">    &lt;type java="java built-in type"
+        jdbc="java.sql.Types Name"
+        length="Numeric value"
+        precision="Numeric value"
+        scale="Numeric value"
+        notNull="true|false"/&gt;</programlisting>
         <para>
-            The number of attributes specified in &lt;type&gt; and the order of the &lt;type&gt; is important for types mapping.
-            If &lt;typeMapper&gt; and &lt;type&gt; specifications are found in &lt;reverseEngineering&gt;, then they will be applied for all 
-            reverse engineering schemas and catalogs. Otherwise, Cayenne will automatically choose default behaviour for all schema and catalogs: 
-            java.sql.Types will be mapped to java built in types or wrapper class types.
+            The number of attributes specified in <code>&lt;type&gt;</code> and the order of the <code>&lt;type&gt;</code> is important for types mapping.
+            If <code>&lt;typeMapper&gt;</code> and <code>&lt;type&gt;</code> specifications are found in <code>&lt;reverseEngineering&gt;</code>, then they will be applied for all
+            reverse engineering schemas and catalogs. Otherwise, Cayenne will automatically choose default behaviour for all schema and catalogs:
+            <code>java.sql.Types</code> will be mapped to java built in types or wrapper class types.
         </para>        
     </section>
 </chapter>

http://git-wip-us.apache.org/repos/asf/cayenne/blob/34be65a0/docs/docbook/cayenne-guide/src/docbkx/rop-deployment.xml
----------------------------------------------------------------------
diff --git a/docs/docbook/cayenne-guide/src/docbkx/rop-deployment.xml b/docs/docbook/cayenne-guide/src/docbkx/rop-deployment.xml
index 4fdc932..b15a8b9 100644
--- a/docs/docbook/cayenne-guide/src/docbkx/rop-deployment.xml
+++ b/docs/docbook/cayenne-guide/src/docbkx/rop-deployment.xml
@@ -30,7 +30,7 @@
                 problem" protections of the container. E.g. the later can be achieved in Tomcat 7 by
                 adding the following <emphasis>context.xml</emphasis> file to the webapp's META-INF/
                 directory:
-                <programlisting>&lt;Context>
+                <programlisting language="xml">&lt;Context>
     &lt;Valve className="org.apache.catalina.authenticator.BasicAuthenticator"
             changeSessionIdOnAuthentication="false" />
 &lt;/Context></programlisting>(The

http://git-wip-us.apache.org/repos/asf/cayenne/blob/34be65a0/docs/docbook/cayenne-guide/src/docbkx/setup.xml
----------------------------------------------------------------------
diff --git a/docs/docbook/cayenne-guide/src/docbkx/setup.xml b/docs/docbook/cayenne-guide/src/docbkx/setup.xml
index d6aa512..704cfc1 100644
--- a/docs/docbook/cayenne-guide/src/docbkx/setup.xml
+++ b/docs/docbook/cayenne-guide/src/docbkx/setup.xml
@@ -25,8 +25,8 @@
                     <para><emphasis role="italic">Java</emphasis>: Cayenne runtime framework and
                         CayenneModeler GUI tool are written in 100% Java, and run on any
                         Java-compatible platform. Minimal required JDK version depends on the
-                        version of Cayenne you are using, as shown in the following table: <table
-                            frame="void">
+                        version of Cayenne you are using, as shown in the following table:
+                        <table frame="void">
                             <caption>Cayenne Version History</caption>
                             <col width="28%"/>
                             <col width="36%"/>
@@ -77,8 +77,10 @@
                 <listitem>
                     <para><emphasis role="italic">Third-party Libraries:</emphasis> Cayenne runtime
                         framework has a minimal set of required and a few more optional dependencies
-                        on third-party open source packages. See "Including Cayenne in a Project"
-                        chapter for details.</para>
+                        on third-party open source packages. See
+                        <link linkend="including-cayenne-in-project">"Including Cayenne in a Project"</link>
+                        chapter for details.
+                    </para>
                 </listitem>
             </itemizedlist>
         </para>
@@ -88,33 +90,51 @@
         <para>CayenneModeler GUI tool is intended to work with object relational mapping projects. While
             you can edit your XML by hand, it is rarely needed, as the Modeler is a pretty advanced
             tool included in Cayenne distribution. To obtain CayenneModeler, download Cayenne
-            distribution archive from <link xlink:href="http://cayenne.apache.org/download.html"
-                >http://cayenne.apache.org/download.html</link> matching the OS you are using. Of
-            course Java needs to be installed on the machine where you are going to run the
-            Modeler.</para>
-        <para>OS X distribution contains CayenneModeler.app at the root of the distribution disk
-            image.</para>
-        <para>Windows distribution contains CayenneModeler.exe file in the <code>bin</code>
-            directory.</para>
-        <para>Cross-platform distribution (targeting Linux, but as the name implies, compatible with any
-            OS) contains a runnable CayenneModeler.jar in the <code>bin</code> directory. It can be
-            executed either by double-clicking, or if the environment is not configured to execute
-            jars, by running from command-line:</para>
-        <programlisting>java -jar CayenneModeler.jar</programlisting>
+            distribution archive from
+            <link xlink:href="http://cayenne.apache.org/download.html">http://cayenne.apache.org/download.html</link>
+            matching the OS you are using. Of course Java needs to be installed on the machine where
+            you are going to run the Modeler.
+        </para>
+        <itemizedlist>
+            <listitem>
+                <para>OS X distribution contains CayenneModeler.app at the root of the distribution disk
+                    image.
+                </para>
+            </listitem>
+            <listitem>
+                <para>Windows distribution contains CayenneModeler.exe file in the
+                    <code>bin</code>
+                    directory.
+                </para>
+            </listitem>
+            <listitem>
+                <para>Cross-platform distribution (targeting Linux, but as the name implies, compatible with any
+                    OS) contains a runnable CayenneModeler.jar in the <code>bin</code> directory. It can be
+                    executed either by double-clicking, or if the environment is not configured to execute
+                    jars, by running from command-line:
+                </para>
+                <screen><prompt>$</prompt> java -jar CayenneModeler.jar</screen>
+            </listitem>
+        </itemizedlist>
+
         <para>The Modeler can also be started from Maven. While it may look like an exotic way to start a
             GUI application, it has its benefits - no need to download Cayenne distribution, the
             version of the Modeler always matches the version of the framework, the plugin can find
-            mapping files in the project automatically. So is an attractive option to some
+            mapping files in the project automatically. So it is an attractive option to some
             developers. Maven option requires a declaration in the
-            POM:<programlisting>&lt;build>
+            POM:
+            <programlisting language="xml">&lt;build>
     &lt;plugins>
         &lt;plugin>
             &lt;groupId>org.apache.cayenne.plugins&lt;/groupId>
             &lt;artifactId>maven-cayenne-modeler-plugin&lt;/artifactId>
-            &lt;version>X.Y.Z&lt;/version>
+            &lt;version><?eval ${project.version}?>&lt;/version>
         &lt;/plugin>
     &lt;/plugins>
-&lt;/build></programlisting></para>
-        <para>And then can be run as <programlisting>mvn cayenne-modeler:run</programlisting></para>
+&lt;/build></programlisting>
+        </para>
+        <para>And then can be run as
+            <screen><prompt>$</prompt> mvn cayenne-modeler:run</screen>
+        </para>
     </section>
 </chapter>

http://git-wip-us.apache.org/repos/asf/cayenne/blob/34be65a0/docs/docbook/cayenne-guide/src/docbkx/starting-cayenne.xml
----------------------------------------------------------------------
diff --git a/docs/docbook/cayenne-guide/src/docbkx/starting-cayenne.xml b/docs/docbook/cayenne-guide/src/docbkx/starting-cayenne.xml
index 4bb5cd2..a1302f9 100644
--- a/docs/docbook/cayenne-guide/src/docbkx/starting-cayenne.xml
+++ b/docs/docbook/cayenne-guide/src/docbkx/starting-cayenne.xml
@@ -114,7 +114,7 @@ ServerRuntime runtime = new ServerRuntime("com/example/cayenne-project.xml", ext
         <para>Still Cayenne includes a piece of web app configuration code that can assist in
             quickly setting up simple Cayenne-enabled web applications. We are talking about
             CayenneFilter. It is declared in
-            web.xml:<programlisting>&lt;web-app>
+            web.xml:<programlisting language="xml">&lt;web-app>
     ...
     &lt;filter>
         &lt;filter-name>cayenne-project&lt;/filter-name>

http://git-wip-us.apache.org/repos/asf/cayenne/blob/34be65a0/docs/docbook/cayenne-guide/src/images/re-modeler-datasource-select.png
----------------------------------------------------------------------
diff --git a/docs/docbook/cayenne-guide/src/images/re-modeler-datasource-select.png b/docs/docbook/cayenne-guide/src/images/re-modeler-datasource-select.png
new file mode 100644
index 0000000..79ada1c
Binary files /dev/null and b/docs/docbook/cayenne-guide/src/images/re-modeler-datasource-select.png differ

http://git-wip-us.apache.org/repos/asf/cayenne/blob/34be65a0/docs/docbook/cayenne-guide/src/images/re-modeler-reverseengineering-dialog.png
----------------------------------------------------------------------
diff --git a/docs/docbook/cayenne-guide/src/images/re-modeler-reverseengineering-dialog.png b/docs/docbook/cayenne-guide/src/images/re-modeler-reverseengineering-dialog.png
new file mode 100644
index 0000000..bea9c78
Binary files /dev/null and b/docs/docbook/cayenne-guide/src/images/re-modeler-reverseengineering-dialog.png differ

http://git-wip-us.apache.org/repos/asf/cayenne/blob/34be65a0/docs/docbook/docbook-stylesheets/src/main/resources/css/cayenne-doc.css
----------------------------------------------------------------------
diff --git a/docs/docbook/docbook-stylesheets/src/main/resources/css/cayenne-doc.css b/docs/docbook/docbook-stylesheets/src/main/resources/css/cayenne-doc.css
index 57f7ea6..c6e8ad2 100644
--- a/docs/docbook/docbook-stylesheets/src/main/resources/css/cayenne-doc.css
+++ b/docs/docbook/docbook-stylesheets/src/main/resources/css/cayenne-doc.css
@@ -67,6 +67,14 @@ pre.programlisting {
     clear:         both;
 }
 
+pre.screen {
+    font-family: Courier New,monospace;
+    font-size:     10pt;
+    padding:       7pt 3pt;
+    border:        1pt solid black;
+    background:    #F9F9F6;
+}
+
 div.table {
     margin:        1em;
     padding:       0.5em;

http://git-wip-us.apache.org/repos/asf/cayenne/blob/34be65a0/docs/docbook/getting-started-reverse-engineering/src/docbkx/index.xml
----------------------------------------------------------------------
diff --git a/docs/docbook/getting-started-reverse-engineering/src/docbkx/index.xml b/docs/docbook/getting-started-reverse-engineering/src/docbkx/index.xml
index 38dafb0..dd8288a 100644
--- a/docs/docbook/getting-started-reverse-engineering/src/docbkx/index.xml
+++ b/docs/docbook/getting-started-reverse-engineering/src/docbkx/index.xml
@@ -19,7 +19,7 @@
     <info>
         <title>Getting Started with Cayenne Reverse Engineering</title>
         <copyright>
-            <year>2011-2014</year>
+            <year>2011-<?dbtimestamp format="Y"?></year>
             <holder>Apache Software Foundation and individual authors</holder>
         </copyright>
         <legalnotice>

http://git-wip-us.apache.org/repos/asf/cayenne/blob/34be65a0/docs/docbook/getting-started-reverse-engineering/src/docbkx/reverse-engineering-ch1.xml
----------------------------------------------------------------------
diff --git a/docs/docbook/getting-started-reverse-engineering/src/docbkx/reverse-engineering-ch1.xml b/docs/docbook/getting-started-reverse-engineering/src/docbkx/reverse-engineering-ch1.xml
index 13844b0..eb6dd33 100644
--- a/docs/docbook/getting-started-reverse-engineering/src/docbkx/reverse-engineering-ch1.xml
+++ b/docs/docbook/getting-started-reverse-engineering/src/docbkx/reverse-engineering-ch1.xml
@@ -24,32 +24,28 @@
             Shopping Cart and Customer. Considering the above sentence, we have a Java class and database
             table name called \u201cCustomer\u201d.</para>
         <para>Java Class:</para>
-        <programlisting language="java">
-            public class Customer {
+        <programlisting language="java">public class Customer {
 
-                private int id;
-                private String name;
+    private int id;
+    private String name;
 
-                public Customer(){
-                    // to do your instance initialization stuff here
-                }
+    public Customer(){
+        // to do your instance initialization stuff here
+    }
 
-                public  Customer(int id,String name){
-                    this.id = id;
-                    this.name = name;
-                }
+    public  Customer(int id,String name){
+        this.id = id;
+        this.name = name;
+    }
 
-                // getter and setter method goes here
+    // getter and setter method goes here
 
-            }
-        </programlisting>
+}</programlisting>
         <para>Database:</para>
-        <programlisting language="sql">
-            CREATE TABLE `customer` (
-            `id` INT(11) NOT NULL,
-            `name` VARCHAR(45) DEFAULT NULL,
-            PRIMARY KEY (`id`));
-        </programlisting>
+        <programlisting language="sql">CREATE TABLE `customer` (
+`id` INT(11) NOT NULL,
+`name` VARCHAR(45) DEFAULT NULL,
+PRIMARY KEY (`id`));</programlisting>
         <para>
             <inlinemediaobject>
                 <imageobject>
@@ -62,33 +58,29 @@
             due to the client requirement. In that case you have to update both Java class and table model manually.
         </para>
         <para>Java Class:</para>
-        <programlisting language="java">
-            public class Customer {
+        <programlisting language="java">public class Customer {
 
-                private int id;
-                private String firstname;
-                private String lastname;
-                public Customer(){
-                    // to do your instance initialization stuff here
-                }
+    private int id;
+    private String firstname;
+    private String lastname;
+    public Customer(){
+        // to do your instance initialization stuff here
+    }
 
-                public  Customer(int id,String fname,String lname){
-                    this.id = id;
-                    this.firstname = fname;
-                    this.lastname = lname;
-                }
+    public  Customer(int id,String fname,String lname){
+        this.id = id;
+        this.firstname = fname;
+        this.lastname = lname;
+    }
 
-                // getter and setter method goes here
-            }
-        </programlisting>
+    // getter and setter method goes here
+}</programlisting>
         <para>Database:</para>
-        <programlisting language="sql">
-            CREATE TABLE `customer` (
-            `id` INT(11) NOT NULL,
-            `firstname` VARCHAR(45) DEFAULT NULL,
-            `lastname` VARCHAR(45) DEFAULT NULL,
-            PRIMARY KEY (`id`));
-        </programlisting>
+        <programlisting language="sql">CREATE TABLE `customer` (
+`id` INT(11) NOT NULL,
+`firstname` VARCHAR(45) DEFAULT NULL,
+`lastname` VARCHAR(45) DEFAULT NULL,
+PRIMARY KEY (`id`));</programlisting>
         <para>
             <inlinemediaobject>
                 <imageobject>
@@ -130,82 +122,84 @@
             You could use CDBImport Maven plugin by declaring and configuring it in your pom.xml.
             See an example with comments below:
         </para>
-        <programlisting language="xml">
-            &lt;profile&gt;
-                &lt;!-- Here we define a profile with cdbimport and cgen configurations.
-                For sure you could define all plugins in general build section, but it will be time consuming
-                during each build to load database structure and check it for changes. Also, you will probably want to
-                control when exactly reverse engineering happens in order to correct its results if necessary. --&gt;
-                &lt;id>ormsync&lt;/id&gt;
-                &lt;build&gt;
-                    &lt;plugins&gt;
-                        &lt;plugin&gt;
-                            &lt;groupId&gt;org.apache.cayenne.plugins&lt;/groupId&gt;
-                            &lt;artifactId&gt;maven-cayenne-plugin&lt;/artifactId&gt;
-                            &lt;version&gt;4.0.M3&lt;/version&gt;
-                            &lt;executions&gt;
-                                &lt;execution&gt;
-                                    &lt;id&gt;ormsync&lt;/id&gt;
-                                    &lt;goals&gt;
-                                        &lt;!-- Again, cdbimport is a part of reverse engineering process.
-                                        Next step is generating Java classes according to their mapping by cgen. --&gt;
-                                        &lt;goal&gt;cdbimport&lt;/goal&gt;
-                                        &lt;goal&gt;cgen&lt;/goal&gt;
-                                    &lt;/goals&gt;
-                                    &lt;configuration&gt;
-                                        &lt;!-- At first, we have to define database connection information
-                                        from which the structure will be loaded. --&gt;
-                                        &lt;driver&gt;com.mysql.jdbc.Driver&lt;/driver&gt;
-                                        &lt;url&gt;jdbc:mysql://127.0.0.1:3306/test&lt;/url&gt;
-                                        &lt;username&gt;root&lt;/username&gt;
-                                        &lt;!--&lt;password&gt;password&lt;/password&gt;--&gt;
-                                        &lt;!-- Next step is to define mapping file, which we are going to use.
-                                        If it doesn't exist, it will be created automatically after the first plugin execution.
-                                        Here you could also define some mapping properties. It isn't necessary for cdbimport task, but it will be used by cgen. --&gt;
-                                        &lt;map&gt;${project.basedir}/src/main/resources/shopping.map.xml&lt;/map&gt;
-                                        &lt;defaultPackage&gt;org.apache.cayenne.shopping&lt;/defaultPackage&gt;
-                                        &lt;superPkg&gt;org.apache.cayenne.shopping.auto&lt;/superPkg&gt;
-                                        &lt;!-- Last part of configuration is reverse engineering tuning.
-                                        Here we just define which catalogs we want to process and which tables should be excluded.
-                                        You could find detailed description of possible configurations in the documentation. --&gt;
-                                        &lt;catalog&gt;test&lt;/catalog&gt;
-                                        &lt;excludeTables&gt;system_patch,v_*,*_view&lt;/excludeTables&gt;
-                                    &lt;/configuration&gt;
-                                &lt;/execution&gt;
-                            &lt;/executions&gt;
-                            &lt;dependencies&gt;
-                                &lt;!-- Also, you have to add JDBC driver dependency. --&gt;
-                                &lt;dependency&gt;
-                                    &lt;groupId&gt;mysql&lt;/groupId&gt;
-                                    &lt;artifactId&gt;mysql-connector-java&lt;/artifactId&gt;
-                                    &lt;version&gt;5.1.28&lt;/version&gt;
-                                &lt;/dependency&gt;
-                            &lt;/dependencies&gt;
-                        &lt;/plugin&gt;
-                    &lt;/plugins&gt;
-                &lt;/build&gt;
-            &lt;/profile&gt;
-        </programlisting>
+        <programlisting language="xml">&lt;profile&gt;
+    &lt;!-- Here we define a profile with cdbimport and cgen configurations.
+    For sure you could define all plugins in general build section, but it will be time consuming
+    during each build to load database structure and check it for changes. Also, you will probably want to
+    control when exactly reverse engineering happens in order to correct its results if necessary. --&gt;
+    &lt;id>ormsync&lt;/id&gt;
+    &lt;build&gt;
+        &lt;plugins&gt;
+            &lt;plugin&gt;
+                &lt;groupId&gt;org.apache.cayenne.plugins&lt;/groupId&gt;
+                &lt;artifactId&gt;maven-cayenne-plugin&lt;/artifactId&gt;
+                &lt;version&gt;<?eval ${project.version}?>&lt;/version&gt;
+                &lt;executions&gt;
+                    &lt;execution&gt;
+                        &lt;id&gt;ormsync&lt;/id&gt;
+                        &lt;goals&gt;
+                            &lt;!-- Again, cdbimport is a part of reverse engineering process.
+                            Next step is generating Java classes according to their mapping by cgen. --&gt;
+                            &lt;goal&gt;cdbimport&lt;/goal&gt;
+                            &lt;goal&gt;cgen&lt;/goal&gt;
+                        &lt;/goals&gt;
+                        &lt;configuration&gt;
+                            &lt;!-- At first, we have to define database connection information
+                            from which the structure will be loaded. --&gt;
+                            &lt;driver&gt;com.mysql.jdbc.Driver&lt;/driver&gt;
+                            &lt;url&gt;jdbc:mysql://127.0.0.1:3306/test&lt;/url&gt;
+                            &lt;username&gt;root&lt;/username&gt;
+                            &lt;!--&lt;password&gt;password&lt;/password&gt;--&gt;
+                            &lt;!-- Next step is to define mapping file, which we are going to use.
+                            If it doesn't exist, it will be created automatically after the first plugin execution.
+                            Here you could also define some mapping properties. It isn't necessary for cdbimport task, but it will be used by cgen. --&gt;
+                            &lt;map&gt;${project.basedir}/src/main/resources/shopping.map.xml&lt;/map&gt;
+                            &lt;defaultPackage&gt;org.apache.cayenne.shopping&lt;/defaultPackage&gt;
+                            &lt;superPkg&gt;org.apache.cayenne.shopping.auto&lt;/superPkg&gt;
+                            &lt;!-- Last part of configuration is reverse engineering tuning.
+                            Here we just define which catalogs we want to process and which tables should be excluded.
+                            You could find detailed description of possible configurations in the <link xlink:href="http://cayenne.apache.org/docs/4.0/cayenne-guide/including-cayenne-in-project.html#mvn-cdbimport">documentation</link>. --&gt;
+                            &lt;reverseEngineering>
+                                &lt;catalog&gt;
+                                    &lt;name>test&lt;/name>
+                                    &lt;excludeTable>system_patch&lt;/excludeTable>
+                                    &lt;excludeTable>v_*&lt;/excludeTable>
+                                    &lt;excludeTable>*_view&lt;/excludeTable>
+                                &lt;/catalog&gt;
+                            &lt;/reverseEngineering>
+                        &lt;/configuration&gt;
+                    &lt;/execution&gt;
+                &lt;/executions&gt;
+                &lt;dependencies&gt;
+                    &lt;!-- Also, you have to add JDBC driver dependency. --&gt;
+                    &lt;dependency&gt;
+                        &lt;groupId&gt;mysql&lt;/groupId&gt;
+                        &lt;artifactId&gt;mysql-connector-java&lt;/artifactId&gt;
+                        &lt;version&gt;5.1.28&lt;/version&gt;
+                    &lt;/dependency&gt;
+                &lt;/dependencies&gt;
+            &lt;/plugin&gt;
+        &lt;/plugins&gt;
+    &lt;/build&gt;
+&lt;/profile&gt;</programlisting>
         <para>
             Let\u2019s consider that shopping application consists of the following tables and relationships in database.
             Initially, we are going to take customer, order tables and one foreign key relationship between them.
         </para>
-        <para>SQL</para>
-        <programlisting language="sql">
-            CREATE TABLE `customer` (
-            `id` INT(11) NOT NULL,
-            `name` VARCHAR(50) DEFAULT NULL,
-            PRIMARY KEY (`id`));
+        <para>Database:</para>
+        <programlisting language="sql">CREATE TABLE `customer` (
+`id` INT(11) NOT NULL,
+`name` VARCHAR(50) DEFAULT NULL,
+PRIMARY KEY (`id`));
 
-            CREATE TABLE `order` (
-            `id` INT(11) NOT NULL,
-            `amount` DECIMAL(6,2) DEFAULT NULL,
-            `customer_id` INT(11) DEFAULT NULL,
-            PRIMARY KEY (`id`),
-            KEY `fk_customers_id_idx` (`customer_id`),
-            CONSTRAINT `fk_customers_id_refference` FOREIGN KEY (`customer_id`) REFERENCES `customer` (`id`)
-            ON DELETE CASCADE ON UPDATE CASCADE);
-        </programlisting>
+CREATE TABLE `order` (
+`id` INT(11) NOT NULL,
+`amount` DECIMAL(6,2) DEFAULT NULL,
+`customer_id` INT(11) DEFAULT NULL,
+PRIMARY KEY (`id`),
+KEY `fk_customers_id_idx` (`customer_id`),
+CONSTRAINT `fk_customers_id_refference` FOREIGN KEY (`customer_id`) REFERENCES `customer` (`id`)
+ON DELETE CASCADE ON UPDATE CASCADE);</programlisting>
         <para>
             <inlinemediaobject>
                 <imageobject>
@@ -217,50 +211,46 @@
             Now, please arrange the profile above for your custom DB settings. That\u2019s all you need to do for reverse
             engineering with Cayenne. Now you are able to run the reverse engineering task as described below.
         </para>
-        <programlisting>
-            mvn compile -Pormsync
-        </programlisting>
+        <screen><prompt>$</prompt> mvn compile -Pormsync</screen>
         <para>The output should look like this:</para>
-        <programlisting>
-            [INFO] Scanning for projects...
-            [INFO]
-            [INFO] ------------------------------------------------------------------------
-            [INFO] Building MySQLTest 0.0.1-SNAPSHOT
-            [INFO] ------------------------------------------------------------------------
-            [INFO]
-            [INFO] --- maven-cayenne-plugin:4.0.M3:cdbimport (ormsync) @ MySQLTest ---
-            Aug 16, 2016 3:36:41 PM org.apache.cayenne.datasource.DriverDataSource logConnect
-            INFO: Connecting to 'jdbc:mysql://127.0.0.1:3306/test' as 'root'
-            Aug 16, 2016 3:36:41 PM org.apache.cayenne.datasource.DriverDataSource getConnection
-            INFO: +++ Connecting: SUCCESS.
-            Aug 16, 2016 3:36:41 PM org.apache.cayenne.log.CommonsJdbcEventLogger log
-            INFO: Detected and installed adapter: org.apache.cayenne.dba.mysql.MySQLAdapter
-            Aug 16, 2016 3:36:41 PM org.apache.cayenne.datasource.DriverDataSource logConnect
-            INFO: Connecting to 'jdbc:mysql://127.0.0.1:3306/test' as 'root'
-            Aug 16, 2016 3:36:41 PM org.apache.cayenne.datasource.DriverDataSource getConnection
-            INFO: +++ Connecting: SUCCESS.
-            Aug 16, 2016 3:36:41 PM org.apache.cayenne.access.DbLoader load
-            INFO: Schema loading...
-            Aug 16, 2016 3:36:41 PM org.apache.cayenne.datasource.DriverDataSource logConnect
-            INFO: Connecting to 'jdbc:mysql://127.0.0.1:3306/test' as 'root'
-            Aug 16, 2016 3:36:41 PM org.apache.cayenne.datasource.DriverDataSource getConnection
-            INFO: +++ Connecting: SUCCESS.
-            Aug 16, 2016 3:36:41 PM org.apache.cayenne.log.CommonsJdbcEventLogger log
-            INFO: Detected and installed adapter: org.apache.cayenne.dba.mysql.MySQLAdapter
-            [INFO]   Table: test.customer
-            [INFO]   Table: test.order
-            [INFO]     Db Relationship : toOne  (order.customer_id, customer.id)
-            [INFO]     Db Relationship : toMany (customer.id, order.customer_id)
-            [INFO]
-            [INFO] Map file does not exist. Loaded db model will be saved into '**/MySQLTest/src/main/resources/shopping.map.xml'
-            [INFO]
-            [INFO] --- maven-cayenne-plugin:4.0.M3:cgen (ormsync) @ MySQLTest ---
-            [INFO] Generating superclass file: **/MySQLTest/src/main/java/org/apache/cayenne/shopping/auto/_Customer.java
-            [INFO] Generating class file:**/MySQLTest/src/main/java/org/apache/cayenne/shopping/Customer.java
-            [INFO] Generating superclass file: **/MySQLTest/src/main/java/org/apache/cayenne/shopping/auto/_Order.java
-            [INFO] Generating class file: **/MySQLTest/src/main/java/org/apache/cayenne/shopping/Order.java
-            [INFO]
-        </programlisting>
+        <screen>[INFO] Scanning for projects...
+[INFO]
+[INFO] ------------------------------------------------------------------------
+[INFO] Building MySQLTest 0.0.1-SNAPSHOT
+[INFO] ------------------------------------------------------------------------
+[INFO]
+[INFO] --- maven-cayenne-plugin:4.0.M3:cdbimport (ormsync) @ MySQLTest ---
+Aug 16, 2016 3:36:41 PM org.apache.cayenne.datasource.DriverDataSource logConnect
+INFO: Connecting to 'jdbc:mysql://127.0.0.1:3306/test' as 'root'
+Aug 16, 2016 3:36:41 PM org.apache.cayenne.datasource.DriverDataSource getConnection
+INFO: +++ Connecting: SUCCESS.
+Aug 16, 2016 3:36:41 PM org.apache.cayenne.log.CommonsJdbcEventLogger log
+INFO: Detected and installed adapter: org.apache.cayenne.dba.mysql.MySQLAdapter
+Aug 16, 2016 3:36:41 PM org.apache.cayenne.datasource.DriverDataSource logConnect
+INFO: Connecting to 'jdbc:mysql://127.0.0.1:3306/test' as 'root'
+Aug 16, 2016 3:36:41 PM org.apache.cayenne.datasource.DriverDataSource getConnection
+INFO: +++ Connecting: SUCCESS.
+Aug 16, 2016 3:36:41 PM org.apache.cayenne.access.DbLoader load
+INFO: Schema loading...
+Aug 16, 2016 3:36:41 PM org.apache.cayenne.datasource.DriverDataSource logConnect
+INFO: Connecting to 'jdbc:mysql://127.0.0.1:3306/test' as 'root'
+Aug 16, 2016 3:36:41 PM org.apache.cayenne.datasource.DriverDataSource getConnection
+INFO: +++ Connecting: SUCCESS.
+Aug 16, 2016 3:36:41 PM org.apache.cayenne.log.CommonsJdbcEventLogger log
+INFO: Detected and installed adapter: org.apache.cayenne.dba.mysql.MySQLAdapter
+[INFO]   Table: test.customer
+[INFO]   Table: test.order
+[INFO]     Db Relationship : toOne  (order.customer_id, customer.id)
+[INFO]     Db Relationship : toMany (customer.id, order.customer_id)
+[INFO]
+[INFO] Map file does not exist. Loaded db model will be saved into '**/MySQLTest/src/main/resources/shopping.map.xml'
+[INFO]
+[INFO] --- maven-cayenne-plugin:4.0.M3:cgen (ormsync) @ MySQLTest ---
+[INFO] Generating superclass file: **/MySQLTest/src/main/java/org/apache/cayenne/shopping/auto/_Customer.java
+[INFO] Generating class file:**/MySQLTest/src/main/java/org/apache/cayenne/shopping/Customer.java
+[INFO] Generating superclass file: **/MySQLTest/src/main/java/org/apache/cayenne/shopping/auto/_Order.java
+[INFO] Generating class file: **/MySQLTest/src/main/java/org/apache/cayenne/shopping/Order.java
+[INFO]</screen>
         <para>
             Above output demonstrates what was loaded from database (test.order, test.customer tables and customer_id relationships)
             by cdbimport task and which classes was generated by cgen task.
@@ -278,43 +268,41 @@
             but not subclasses (Customer.java, Order.java).
         </para>
         <para>Console will provide the following output:</para>
-        <programlisting>
-            [INFO] Scanning for projects...
-            [INFO]
-            [INFO] ------------------------------------------------------------------------
-            [INFO] Building MySQLTest 0.0.1-SNAPSHOT
-            [INFO] ------------------------------------------------------------------------
-            [INFO]
-            [INFO] --- maven-cayenne-plugin:4.0.M3:cdbimport (ormsync) @ MySQLTest ---
-            Aug 16, 2016 4:44:33 PM org.apache.cayenne.datasource.DriverDataSource logConnect
-            INFO: Connecting to 'jdbc:mysql://127.0.0.1:3306/test' as 'root'
-            Aug 16, 2016 4:44:33 PM org.apache.cayenne.datasource.DriverDataSource getConnection
-            INFO: +++ Connecting: SUCCESS.
-            Aug 16, 2016 4:44:33 PM org.apache.cayenne.log.CommonsJdbcEventLogger log
-            INFO: Detected and installed adapter: org.apache.cayenne.dba.mysql.MySQLAdapter
-            Aug 16, 2016 4:44:33 PM org.apache.cayenne.datasource.DriverDataSource logConnect
-            INFO: Connecting to 'jdbc:mysql://127.0.0.1:3306/test' as 'root'
-            Aug 16, 2016 4:44:33 PM org.apache.cayenne.datasource.DriverDataSource getConnection
-            INFO: +++ Connecting: SUCCESS.
-            Aug 16, 2016 4:44:33 PM org.apache.cayenne.access.DbLoader load
-            INFO: Schema loading...
-            Aug 16, 2016 4:44:33 PM org.apache.cayenne.datasource.DriverDataSource logConnect
-            INFO: Connecting to 'jdbc:mysql://127.0.0.1:3306/test' as 'root'
-            Aug 16, 2016 4:44:34 PM org.apache.cayenne.datasource.DriverDataSource getConnection
-            INFO: +++ Connecting: SUCCESS.
-            Aug 16, 2016 4:44:34 PM org.apache.cayenne.log.CommonsJdbcEventLogger log
-            INFO: Detected and installed adapter: org.apache.cayenne.dba.mysql.MySQLAdapter
-            [INFO]   Table: test.customer
-            [INFO]   Table: test.order
-            [INFO]     Db Relationship : toOne  (order.customer_id, customer.id)
-            [INFO]     Db Relationship : toMany (customer.id, order.customer_id)
-            [INFO]
-            [INFO] Detected changes: No changes to import.
-            [INFO]
-            [INFO] --- maven-cayenne-plugin:4.0.M3:cgen (ormsync) @ MySQLTest ---
-            [INFO] Generating superclass file: **/MySQLTest/src/main/java/org/apache/cayenne/shopping/auto/_Customer.java
-            [INFO] Generating superclass file: **/MySQLTest/src/main/java/org/apache/cayenne/shopping/auto/_Order.java
-            [INFO]
-        </programlisting>
+        <screen>[INFO] Scanning for projects...
+[INFO]
+[INFO] ------------------------------------------------------------------------
+[INFO] Building MySQLTest 0.0.1-SNAPSHOT
+[INFO] ------------------------------------------------------------------------
+[INFO]
+[INFO] --- maven-cayenne-plugin:4.0.M3:cdbimport (ormsync) @ MySQLTest ---
+Aug 16, 2016 4:44:33 PM org.apache.cayenne.datasource.DriverDataSource logConnect
+INFO: Connecting to 'jdbc:mysql://127.0.0.1:3306/test' as 'root'
+Aug 16, 2016 4:44:33 PM org.apache.cayenne.datasource.DriverDataSource getConnection
+INFO: +++ Connecting: SUCCESS.
+Aug 16, 2016 4:44:33 PM org.apache.cayenne.log.CommonsJdbcEventLogger log
+INFO: Detected and installed adapter: org.apache.cayenne.dba.mysql.MySQLAdapter
+Aug 16, 2016 4:44:33 PM org.apache.cayenne.datasource.DriverDataSource logConnect
+INFO: Connecting to 'jdbc:mysql://127.0.0.1:3306/test' as 'root'
+Aug 16, 2016 4:44:33 PM org.apache.cayenne.datasource.DriverDataSource getConnection
+INFO: +++ Connecting: SUCCESS.
+Aug 16, 2016 4:44:33 PM org.apache.cayenne.access.DbLoader load
+INFO: Schema loading...
+Aug 16, 2016 4:44:33 PM org.apache.cayenne.datasource.DriverDataSource logConnect
+INFO: Connecting to 'jdbc:mysql://127.0.0.1:3306/test' as 'root'
+Aug 16, 2016 4:44:34 PM org.apache.cayenne.datasource.DriverDataSource getConnection
+INFO: +++ Connecting: SUCCESS.
+Aug 16, 2016 4:44:34 PM org.apache.cayenne.log.CommonsJdbcEventLogger log
+INFO: Detected and installed adapter: org.apache.cayenne.dba.mysql.MySQLAdapter
+[INFO]   Table: test.customer
+[INFO]   Table: test.order
+[INFO]     Db Relationship : toOne  (order.customer_id, customer.id)
+[INFO]     Db Relationship : toMany (customer.id, order.customer_id)
+[INFO]
+[INFO] Detected changes: No changes to import.
+[INFO]
+[INFO] --- maven-cayenne-plugin:4.0.M3:cgen (ormsync) @ MySQLTest ---
+[INFO] Generating superclass file: **/MySQLTest/src/main/java/org/apache/cayenne/shopping/auto/_Customer.java
+[INFO] Generating superclass file: **/MySQLTest/src/main/java/org/apache/cayenne/shopping/auto/_Order.java
+[INFO]</screen>
     </section>
 </chapter>

http://git-wip-us.apache.org/repos/asf/cayenne/blob/34be65a0/docs/docbook/getting-started-reverse-engineering/src/docbkx/reverse-engineering-ch2.xml
----------------------------------------------------------------------
diff --git a/docs/docbook/getting-started-reverse-engineering/src/docbkx/reverse-engineering-ch2.xml b/docs/docbook/getting-started-reverse-engineering/src/docbkx/reverse-engineering-ch2.xml
index 2a48924..65d06c0 100644
--- a/docs/docbook/getting-started-reverse-engineering/src/docbkx/reverse-engineering-ch2.xml
+++ b/docs/docbook/getting-started-reverse-engineering/src/docbkx/reverse-engineering-ch2.xml
@@ -22,61 +22,55 @@
             Let's rename "name" column from the Customer table to the "first_name".
         </para>
         <para>
-            SQL
+            Database:
         </para>
-        <programlisting>
-            ALTER TABLE `customer` 
-            CHANGE COLUMN `name` `first_name` VARCHAR(50) NULL DEFAULT NULL ;
-        </programlisting>
+        <programlisting language="sql">ALTER TABLE `customer`
+CHANGE COLUMN `name` `first_name` VARCHAR(50) NULL DEFAULT NULL ;</programlisting>
         <para>
             Now we can do reverse engineering again by the command we already know:
         </para>
-        <programlisting>
-            mvn compile -Pormsync
-        </programlisting>
+        <screen><prompt>$</prompt> mvn compile -Pormsync</screen>
         <para>The output should look like this:</para>
-        <programlisting>
-            [INFO] Scanning for projects...
-            [INFO]
-            [INFO] ------------------------------------------------------------------------
-            [INFO] Building MySQLTest 0.0.1-SNAPSHOT
-            [INFO] ------------------------------------------------------------------------
-            [INFO]
-            [INFO] --- maven-cayenne-plugin:4.0.M3:cdbimport (ormsync) @ MySQLTest ---
-            Aug 16, 2016 5:07:31 PM org.apache.cayenne.datasource.DriverDataSource logConnect
-            INFO: Connecting to 'jdbc:mysql://127.0.0.1:3306/test' as 'root'
-            Aug 16, 2016 5:07:32 PM org.apache.cayenne.datasource.DriverDataSource getConnection
-            INFO: +++ Connecting: SUCCESS.
-            Aug 16, 2016 5:07:32 PM org.apache.cayenne.log.CommonsJdbcEventLogger log
-            INFO: Detected and installed adapter: org.apache.cayenne.dba.mysql.MySQLAdapter
-            Aug 16, 2016 5:07:32 PM org.apache.cayenne.datasource.DriverDataSource logConnect
-            INFO: Connecting to 'jdbc:mysql://127.0.0.1:3306/test' as 'root'
-            Aug 16, 2016 5:07:32 PM org.apache.cayenne.datasource.DriverDataSource getConnection
-            INFO: +++ Connecting: SUCCESS.
-            Aug 16, 2016 5:07:32 PM org.apache.cayenne.access.DbLoader load
-            INFO: Schema loading...
-            Aug 16, 2016 5:07:32 PM org.apache.cayenne.datasource.DriverDataSource logConnect
-            INFO: Connecting to 'jdbc:mysql://127.0.0.1:3306/test' as 'root'
-            Aug 16, 2016 5:07:32 PM org.apache.cayenne.datasource.DriverDataSource getConnection
-            INFO: +++ Connecting: SUCCESS.
-            Aug 16, 2016 5:07:32 PM org.apache.cayenne.log.CommonsJdbcEventLogger log
-            INFO: Detected and installed adapter: org.apache.cayenne.dba.mysql.MySQLAdapter
-            [INFO]   Table: test.customer
-            [INFO]   Table: test.order
-            [INFO]     Db Relationship : toOne  (order.customer_id, customer.id)
-            [INFO]     Db Relationship : toMany (customer.id, order.customer_id)
-            [INFO]
-            [INFO] Detected changes:
-            [INFO]     Add Column           customer.first_name
-            [INFO]     Drop Column          customer.name
-            [INFO]
-            [INFO] Migration Complete Successfully.
-            [INFO]
-            [INFO] --- maven-cayenne-plugin:4.0.M3:cgen (ormsync) @ MySQLTest ---
-            [INFO] Generating superclass file: **/MySQLTest/src/main/java/org/apache/cayenne/shopping/auto/_Customer.java
-            [INFO] Generating superclass file: **/MySQLTest/src/main/java/org/apache/cayenne/shopping/auto/_Order.java
-            [INFO]
-        </programlisting>
+        <screen>[INFO] Scanning for projects...
+[INFO]
+[INFO] ------------------------------------------------------------------------
+[INFO] Building MySQLTest 0.0.1-SNAPSHOT
+[INFO] ------------------------------------------------------------------------
+[INFO]
+[INFO] --- maven-cayenne-plugin:4.0.M3:cdbimport (ormsync) @ MySQLTest ---
+Aug 16, 2016 5:07:31 PM org.apache.cayenne.datasource.DriverDataSource logConnect
+INFO: Connecting to 'jdbc:mysql://127.0.0.1:3306/test' as 'root'
+Aug 16, 2016 5:07:32 PM org.apache.cayenne.datasource.DriverDataSource getConnection
+INFO: +++ Connecting: SUCCESS.
+Aug 16, 2016 5:07:32 PM org.apache.cayenne.log.CommonsJdbcEventLogger log
+INFO: Detected and installed adapter: org.apache.cayenne.dba.mysql.MySQLAdapter
+Aug 16, 2016 5:07:32 PM org.apache.cayenne.datasource.DriverDataSource logConnect
+INFO: Connecting to 'jdbc:mysql://127.0.0.1:3306/test' as 'root'
+Aug 16, 2016 5:07:32 PM org.apache.cayenne.datasource.DriverDataSource getConnection
+INFO: +++ Connecting: SUCCESS.
+Aug 16, 2016 5:07:32 PM org.apache.cayenne.access.DbLoader load
+INFO: Schema loading...
+Aug 16, 2016 5:07:32 PM org.apache.cayenne.datasource.DriverDataSource logConnect
+INFO: Connecting to 'jdbc:mysql://127.0.0.1:3306/test' as 'root'
+Aug 16, 2016 5:07:32 PM org.apache.cayenne.datasource.DriverDataSource getConnection
+INFO: +++ Connecting: SUCCESS.
+Aug 16, 2016 5:07:32 PM org.apache.cayenne.log.CommonsJdbcEventLogger log
+INFO: Detected and installed adapter: org.apache.cayenne.dba.mysql.MySQLAdapter
+[INFO]   Table: test.customer
+[INFO]   Table: test.order
+[INFO]     Db Relationship : toOne  (order.customer_id, customer.id)
+[INFO]     Db Relationship : toMany (customer.id, order.customer_id)
+[INFO]
+[INFO] Detected changes:
+[INFO]     Add Column           customer.first_name
+[INFO]     Drop Column          customer.name
+[INFO]
+[INFO] Migration Complete Successfully.
+[INFO]
+[INFO] --- maven-cayenne-plugin:4.0.M3:cgen (ormsync) @ MySQLTest ---
+[INFO] Generating superclass file: **/MySQLTest/src/main/java/org/apache/cayenne/shopping/auto/_Customer.java
+[INFO] Generating superclass file: **/MySQLTest/src/main/java/org/apache/cayenne/shopping/auto/_Order.java
+[INFO]</screen>
         <para>
             As you could see, cdbimport task found and applied our changes to the model. Then, superclasses was updated by 
             cgen task to catch our changes. Notice that Cayenne treated a column renaming change as dropping and adding 
@@ -89,44 +83,42 @@
             Let\u2019s rename an "amount" ObjAttribute name to "totalPrice" in Order ObjectEntity. After running
             reverse engineering task, the output will show you no changes to import:
         </para>
-        <programlisting>
-            [INFO] Scanning for projects...
-            [INFO]
-            [INFO] ------------------------------------------------------------------------
-            [INFO] Building MySQLTest 0.0.1-SNAPSHOT
-            [INFO] ------------------------------------------------------------------------
-            [INFO]
-            [INFO] --- maven-cayenne-plugin:4.0.M3:cdbimport (ormsync) @ MySQLTest ---
-            Aug 16, 2016 5:26:53 PM org.apache.cayenne.datasource.DriverDataSource logConnect
-            INFO: Connecting to 'jdbc:mysql://127.0.0.1:3306/test' as 'root'
-            Aug 16, 2016 5:26:53 PM org.apache.cayenne.datasource.DriverDataSource getConnection
-            INFO: +++ Connecting: SUCCESS.
-            Aug 16, 2016 5:26:53 PM org.apache.cayenne.log.CommonsJdbcEventLogger log
-            INFO: Detected and installed adapter: org.apache.cayenne.dba.mysql.MySQLAdapter
-            Aug 16, 2016 5:26:53 PM org.apache.cayenne.datasource.DriverDataSource logConnect
-            INFO: Connecting to 'jdbc:mysql://127.0.0.1:3306/test' as 'root'
-            Aug 16, 2016 5:26:53 PM org.apache.cayenne.datasource.DriverDataSource getConnection
-            INFO: +++ Connecting: SUCCESS.
-            Aug 16, 2016 5:26:53 PM org.apache.cayenne.access.DbLoader load
-            INFO: Schema loading...
-            Aug 16, 2016 5:26:53 PM org.apache.cayenne.datasource.DriverDataSource logConnect
-            INFO: Connecting to 'jdbc:mysql://127.0.0.1:3306/test' as 'root'
-            Aug 16, 2016 5:26:53 PM org.apache.cayenne.datasource.DriverDataSource getConnection
-            INFO: +++ Connecting: SUCCESS.
-            Aug 16, 2016 5:26:53 PM org.apache.cayenne.log.CommonsJdbcEventLogger log
-            INFO: Detected and installed adapter: org.apache.cayenne.dba.mysql.MySQLAdapter
-            [INFO]   Table: test.customer
-            [INFO]   Table: test.order
-            [INFO]     Db Relationship : toOne  (order.customer_id, customer.id)
-            [INFO]     Db Relationship : toMany (customer.id, order.customer_id)
-            [INFO]
-            [INFO] Detected changes: No changes to import.
-            [INFO]
-            [INFO] --- maven-cayenne-plugin:4.0.M3:cgen (ormsync) @ MySQLTest ---
-            [INFO] Generating superclass file: **/MySQLTest/src/main/java/org/apache/cayenne/shopping/auto/_Customer.java
-            [INFO] Generating superclass file: **/MySQLTest/src/main/java/org/apache/cayenne/shopping/auto/_Order.java
-            [INFO]
-        </programlisting>
+        <screen>[INFO] Scanning for projects...
+[INFO]
+[INFO] ------------------------------------------------------------------------
+[INFO] Building MySQLTest 0.0.1-SNAPSHOT
+[INFO] ------------------------------------------------------------------------
+[INFO]
+[INFO] --- maven-cayenne-plugin:4.0.M3:cdbimport (ormsync) @ MySQLTest ---
+Aug 16, 2016 5:26:53 PM org.apache.cayenne.datasource.DriverDataSource logConnect
+INFO: Connecting to 'jdbc:mysql://127.0.0.1:3306/test' as 'root'
+Aug 16, 2016 5:26:53 PM org.apache.cayenne.datasource.DriverDataSource getConnection
+INFO: +++ Connecting: SUCCESS.
+Aug 16, 2016 5:26:53 PM org.apache.cayenne.log.CommonsJdbcEventLogger log
+INFO: Detected and installed adapter: org.apache.cayenne.dba.mysql.MySQLAdapter
+Aug 16, 2016 5:26:53 PM org.apache.cayenne.datasource.DriverDataSource logConnect
+INFO: Connecting to 'jdbc:mysql://127.0.0.1:3306/test' as 'root'
+Aug 16, 2016 5:26:53 PM org.apache.cayenne.datasource.DriverDataSource getConnection
+INFO: +++ Connecting: SUCCESS.
+Aug 16, 2016 5:26:53 PM org.apache.cayenne.access.DbLoader load
+INFO: Schema loading...
+Aug 16, 2016 5:26:53 PM org.apache.cayenne.datasource.DriverDataSource logConnect
+INFO: Connecting to 'jdbc:mysql://127.0.0.1:3306/test' as 'root'
+Aug 16, 2016 5:26:53 PM org.apache.cayenne.datasource.DriverDataSource getConnection
+INFO: +++ Connecting: SUCCESS.
+Aug 16, 2016 5:26:53 PM org.apache.cayenne.log.CommonsJdbcEventLogger log
+INFO: Detected and installed adapter: org.apache.cayenne.dba.mysql.MySQLAdapter
+[INFO]   Table: test.customer
+[INFO]   Table: test.order
+[INFO]     Db Relationship : toOne  (order.customer_id, customer.id)
+[INFO]     Db Relationship : toMany (customer.id, order.customer_id)
+[INFO]
+[INFO] Detected changes: No changes to import.
+[INFO]
+[INFO] --- maven-cayenne-plugin:4.0.M3:cgen (ormsync) @ MySQLTest ---
+[INFO] Generating superclass file: **/MySQLTest/src/main/java/org/apache/cayenne/shopping/auto/_Customer.java
+[INFO] Generating superclass file: **/MySQLTest/src/main/java/org/apache/cayenne/shopping/auto/_Order.java
+[INFO]</screen>
         <para>
             As you could see, cdbimport task didn't detect any changes. Whenever you change anything in \u201cobj-attribute\u201d xml element 
             it will not reflect anything on the database side. But your changes will be reflected in auto generated java classes
@@ -142,16 +134,14 @@
         <para>
             SQL
         </para>
-        <programlisting language="sql">
-            CREATE TABLE `ordered_product` (
-            `customer_order_id` INT(11) NOT NULL,
-            `product_id` INT(11) DEFAULT NULL,
-            `quantity` SMALLINT(6) DEFAULT NULL,
-            PRIMARY KEY (`customer_order_id`),
-            KEY `fk_product_references_idx` (`product_id`),
-            CONSTRAINT `fk_order_references` FOREIGN KEY (`customer_order_id`) REFERENCES `order` (`id`) 
-            ON DELETE CASCADE ON UPDATE CASCADE);
-        </programlisting>
+        <programlisting language="sql">CREATE TABLE `ordered_product` (
+`customer_order_id` INT(11) NOT NULL,
+`product_id` INT(11) DEFAULT NULL,
+`quantity` SMALLINT(6) DEFAULT NULL,
+PRIMARY KEY (`customer_order_id`),
+KEY `fk_product_references_idx` (`product_id`),
+CONSTRAINT `fk_order_references` FOREIGN KEY (`customer_order_id`) REFERENCES `order` (`id`)
+ON DELETE CASCADE ON UPDATE CASCADE);</programlisting>
         <para>
             <inlinemediaobject>
                 <imageobject>
@@ -163,56 +153,54 @@
             After running the reverse engineering task again as described in the previous examples, the new output will 
             show a few actual DB operations:
         </para>
-        <programlisting>
-            [INFO] Scanning for projects...
-            [INFO]
-            [INFO] ------------------------------------------------------------------------
-            [INFO] Building MySQLTest 0.0.1-SNAPSHOT
-            [INFO] ------------------------------------------------------------------------
-            [INFO]
-            [INFO] --- maven-cayenne-plugin:4.0.M3:cdbimport (ormsync) @ MySQLTest ---
-            Aug 16, 2016 5:43:52 PM org.apache.cayenne.datasource.DriverDataSource logConnect
-            INFO: Connecting to 'jdbc:mysql://127.0.0.1:3306/test' as 'root'
-            Aug 16, 2016 5:43:52 PM org.apache.cayenne.datasource.DriverDataSource getConnection
-            INFO: +++ Connecting: SUCCESS.
-            Aug 16, 2016 5:43:52 PM org.apache.cayenne.log.CommonsJdbcEventLogger log
-            INFO: Detected and installed adapter: org.apache.cayenne.dba.mysql.MySQLAdapter
-            Aug 16, 2016 5:43:52 PM org.apache.cayenne.datasource.DriverDataSource logConnect
-            INFO: Connecting to 'jdbc:mysql://127.0.0.1:3306/test' as 'root'
-            Aug 16, 2016 5:43:52 PM org.apache.cayenne.datasource.DriverDataSource getConnection
-            INFO: +++ Connecting: SUCCESS.
-            Aug 16, 2016 5:43:52 PM org.apache.cayenne.access.DbLoader load
-            INFO: Schema loading...
-            Aug 16, 2016 5:43:52 PM org.apache.cayenne.datasource.DriverDataSource logConnect
-            INFO: Connecting to 'jdbc:mysql://127.0.0.1:3306/test' as 'root'
-            Aug 16, 2016 5:43:52 PM org.apache.cayenne.datasource.DriverDataSource getConnection
-            INFO: +++ Connecting: SUCCESS.
-            Aug 16, 2016 5:43:52 PM org.apache.cayenne.log.CommonsJdbcEventLogger log
-            INFO: Detected and installed adapter: org.apache.cayenne.dba.mysql.MySQLAdapter
-            [INFO]   Table: test.customer
-            [INFO]   Table: test.order
-            [INFO]   Table: test.ordered_product
-            [INFO]     Db Relationship : toOne  (ordered_product.customer_order_id, order.id)
-            [INFO]     Db Relationship : toOne  (order.id, ordered_product.customer_order_id)
-            [INFO]     Db Relationship : toOne  (order.customer_id, customer.id)
-            [INFO]     Db Relationship : toMany (customer.id, order.customer_id)
-            [INFO]
-            [INFO] Detected changes:
-            [INFO]     Add Relationship     customerOrder order->ordered_product.customer_order_id
-            [INFO]     Create Table         ordered_product
-            [INFO]
-            Aug 16, 2016 5:43:52 PM org.apache.cayenne.util.EntityMergeSupport addMissingRelationships
-            WARNING: Can't find ObjEntity for ordered_product
-            Aug 16, 2016 5:43:52 PM org.apache.cayenne.util.EntityMergeSupport addMissingRelationships
-            WARNING: Db Relationship (Db Relationship : toOne  (order.id, ordered_product.customer_order_id)) will have GUESSED Obj Relationship reflection.
-            [INFO] Migration Complete Successfully.
-            [INFO]
-            [INFO] --- maven-cayenne-plugin:4.0.M3:cgen (ormsync) @ MySQLTest ---
-            [INFO] Generating superclass file: **/MySQLTest/src/main/java/org/apache/cayenne/shopping/auto/_Customer.java
-            [INFO] Generating superclass file: **/MySQLTest/src/main/java/org/apache/cayenne/shopping/auto/_Order.java
-            [INFO] Generating superclass file: **/MySQLTest/src/main/java/org/apache/cayenne/shopping/auto/_OrderedProduct.java
-            [INFO] Generating class file: **/MySQLTest/src/main/java/org/apache/cayenne/shopping/OrderedProduct.java
-            [INFO]
-        </programlisting>
+        <screen>[INFO] Scanning for projects...
+[INFO]
+[INFO] ------------------------------------------------------------------------
+[INFO] Building MySQLTest 0.0.1-SNAPSHOT
+[INFO] ------------------------------------------------------------------------
+[INFO]
+[INFO] --- maven-cayenne-plugin:4.0.M3:cdbimport (ormsync) @ MySQLTest ---
+Aug 16, 2016 5:43:52 PM org.apache.cayenne.datasource.DriverDataSource logConnect
+INFO: Connecting to 'jdbc:mysql://127.0.0.1:3306/test' as 'root'
+Aug 16, 2016 5:43:52 PM org.apache.cayenne.datasource.DriverDataSource getConnection
+INFO: +++ Connecting: SUCCESS.
+Aug 16, 2016 5:43:52 PM org.apache.cayenne.log.CommonsJdbcEventLogger log
+INFO: Detected and installed adapter: org.apache.cayenne.dba.mysql.MySQLAdapter
+Aug 16, 2016 5:43:52 PM org.apache.cayenne.datasource.DriverDataSource logConnect
+INFO: Connecting to 'jdbc:mysql://127.0.0.1:3306/test' as 'root'
+Aug 16, 2016 5:43:52 PM org.apache.cayenne.datasource.DriverDataSource getConnection
+INFO: +++ Connecting: SUCCESS.
+Aug 16, 2016 5:43:52 PM org.apache.cayenne.access.DbLoader load
+INFO: Schema loading...
+Aug 16, 2016 5:43:52 PM org.apache.cayenne.datasource.DriverDataSource logConnect
+INFO: Connecting to 'jdbc:mysql://127.0.0.1:3306/test' as 'root'
+Aug 16, 2016 5:43:52 PM org.apache.cayenne.datasource.DriverDataSource getConnection
+INFO: +++ Connecting: SUCCESS.
+Aug 16, 2016 5:43:52 PM org.apache.cayenne.log.CommonsJdbcEventLogger log
+INFO: Detected and installed adapter: org.apache.cayenne.dba.mysql.MySQLAdapter
+[INFO]   Table: test.customer
+[INFO]   Table: test.order
+[INFO]   Table: test.ordered_product
+[INFO]     Db Relationship : toOne  (ordered_product.customer_order_id, order.id)
+[INFO]     Db Relationship : toOne  (order.id, ordered_product.customer_order_id)
+[INFO]     Db Relationship : toOne  (order.customer_id, customer.id)
+[INFO]     Db Relationship : toMany (customer.id, order.customer_id)
+[INFO]
+[INFO] Detected changes:
+[INFO]     Add Relationship     customerOrder order->ordered_product.customer_order_id
+[INFO]     Create Table         ordered_product
+[INFO]
+Aug 16, 2016 5:43:52 PM org.apache.cayenne.util.EntityMergeSupport addMissingRelationships
+WARNING: Can't find ObjEntity for ordered_product
+Aug 16, 2016 5:43:52 PM org.apache.cayenne.util.EntityMergeSupport addMissingRelationships
+WARNING: Db Relationship (Db Relationship : toOne  (order.id, ordered_product.customer_order_id)) will have GUESSED Obj Relationship reflection.
+[INFO] Migration Complete Successfully.
+[INFO]
+[INFO] --- maven-cayenne-plugin:4.0.M3:cgen (ormsync) @ MySQLTest ---
+[INFO] Generating superclass file: **/MySQLTest/src/main/java/org/apache/cayenne/shopping/auto/_Customer.java
+[INFO] Generating superclass file: **/MySQLTest/src/main/java/org/apache/cayenne/shopping/auto/_Order.java
+[INFO] Generating superclass file: **/MySQLTest/src/main/java/org/apache/cayenne/shopping/auto/_OrderedProduct.java
+[INFO] Generating class file: **/MySQLTest/src/main/java/org/apache/cayenne/shopping/OrderedProduct.java
+[INFO]</screen>
     </section>
 </chapter>

http://git-wip-us.apache.org/repos/asf/cayenne/blob/34be65a0/docs/docbook/getting-started-rop/src/docbkx/index.xml
----------------------------------------------------------------------
diff --git a/docs/docbook/getting-started-rop/src/docbkx/index.xml b/docs/docbook/getting-started-rop/src/docbkx/index.xml
index a83a43e..c6814f4 100644
--- a/docs/docbook/getting-started-rop/src/docbkx/index.xml
+++ b/docs/docbook/getting-started-rop/src/docbkx/index.xml
@@ -19,7 +19,7 @@
     <info>
         <title>Getting Started with Cayenne ROP (Remote Object Persistence)</title>
         <copyright>
-            <year>2011-2014</year>
+            <year>2011-<?dbtimestamp format="Y"?></year>
             <holder>Apache Software Foundation and individual authors</holder>
         </copyright>
         <legalnotice>

http://git-wip-us.apache.org/repos/asf/cayenne/blob/34be65a0/docs/docbook/getting-started/src/docbkx/index.xml
----------------------------------------------------------------------
diff --git a/docs/docbook/getting-started/src/docbkx/index.xml b/docs/docbook/getting-started/src/docbkx/index.xml
index b8df6da..7e84a36 100644
--- a/docs/docbook/getting-started/src/docbkx/index.xml
+++ b/docs/docbook/getting-started/src/docbkx/index.xml
@@ -19,7 +19,7 @@
     <bookinfo>
         <title>Getting Started with Cayenne</title>
         <copyright>
-            <year>2011-2014</year>
+            <year>2011-<?dbtimestamp format="Y"?></year>
             <holder>Apache Software Foundation and individual authors</holder>
         </copyright>
         <legalnotice>

http://git-wip-us.apache.org/repos/asf/cayenne/blob/34be65a0/docs/docbook/pom.xml
----------------------------------------------------------------------
diff --git a/docs/docbook/pom.xml b/docs/docbook/pom.xml
index 6d3bf9e..78fa9c7 100644
--- a/docs/docbook/pom.xml
+++ b/docs/docbook/pom.xml
@@ -55,7 +55,7 @@
 				<plugin>
 					<groupId>com.agilejava.docbkx</groupId>
 					<artifactId>docbkx-maven-plugin</artifactId>
-					<version>2.0.14</version>
+					<version>2.0.17</version>
 					<dependencies>
 						<dependency>
 							<groupId>org.docbook</groupId>
@@ -102,6 +102,11 @@
 							<htmlCustomization>${project.stylesheetdir}/stylesheets/html.xsl</htmlCustomization>
 							<chunkedOutput>true</chunkedOutput>
 							<postProcess>
+								<move todir="${basedir}/target/site/index">
+									<fileset dir="${basedir}/target/site/">
+										<include name="*.html"/>
+									</fileset>
+								</move>
 								<copy todir="${basedir}/target/site/index/css">
 									<fileset dir="${project.stylesheetdir}/css" />
 								</copy>

http://git-wip-us.apache.org/repos/asf/cayenne/blob/34be65a0/docs/docbook/upgrade-guide/src/docbkx/index.xml
----------------------------------------------------------------------
diff --git a/docs/docbook/upgrade-guide/src/docbkx/index.xml b/docs/docbook/upgrade-guide/src/docbkx/index.xml
index 439474a..91b0609 100644
--- a/docs/docbook/upgrade-guide/src/docbkx/index.xml
+++ b/docs/docbook/upgrade-guide/src/docbkx/index.xml
@@ -4,7 +4,7 @@
     <info>
         <title>Cayenne 4.0 New Features and Upgrade Guide</title>
         <copyright>
-            <year>2011-2014</year>
+            <year>2011-<?dbtimestamp format="Y"?></year>
             <holder>Apache Software Foundation and individual authors</holder>
         </copyright>
         <legalnotice>