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

[03/14] cayenne git commit: Switch documentation from Docbook to Asciidoctor format

http://git-wip-us.apache.org/repos/asf/cayenne/blob/df1324e4/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
deleted file mode 100644
index c8dfdb7..0000000
--- a/docs/docbook/cayenne-guide/src/docbkx/starting-cayenne.xml
+++ /dev/null
@@ -1,157 +0,0 @@
-<?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 xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink"
-    version="5.0" xml:id="starting-cayenne">
-    <title>Starting Cayenne</title>
-    <section xml:id="starting-serverruntime">
-        <title>Starting and Stopping ServerRuntime</title>
-        <para>In runtime Cayenne is accessed via
-                <code>org.apache.cayenne.configuration.server.ServerRuntime</code>. ServerRuntime is
-            created by calling a convenient builder:
-            <programlisting language="java">ServerRuntime runtime = ServerRuntime.builder()
-                .addConfig("com/example/cayenne-project.xml")
-                .build();</programlisting></para>
-        <para>The parameter you pass to the builder is a location of the main project file. Location
-            is a '/'-separated path (same path separator is used on UNIX and Windows) that is
-            resolved relative to the application classpath. The project file can be placed in the
-            root package or in a subpackage (e.g. in the code above it is in "com/example"
-            subpackage).</para>
-        <para>ServerRuntime encapsulates a single Cayenne stack. Most applications will just have
-            one ServerRuntime using it to create as many ObjectContexts as needed, access the
-            Dependency Injection (DI) container and work with other Cayenne features. Internally
-            ServerRuntime is just a thin wrapper around the DI container. Detailed features of the
-            container are discussed in <link linkend="customizing-cayenne-runtime">"Customizing Cayenne Runtime"</link> chapter. Here we'll just show
-            an example of how an application might turn on external transactions:<programlisting language="java">Module extensions = binder ->
-                ServerModule.contributeProperties(binder).put(Constants.SERVER_EXTERNAL_TX_PROPERTY, "true");
-ServerRuntime runtime = ServerRuntime.builder()
-                .addConfig("com/example/cayenne-project.xml")
-                .addModule(extensions)
-                .build();</programlisting></para>
-        <para>It is a good idea to shut down the runtime when it is no longer needed, usually before the
-            application itself is shutdown: <programlisting language="java">runtime.shutdown();</programlisting>When
-            a runtime object has the same scope as the application, this may not be always
-            necessary, however in some cases it is essential, and is generally considered a good
-            practice. E.g. in a web container hot redeploy of a webapp will cause resource leaks and
-            eventual OutOfMemoryError if the application fails to shutdown CayenneRuntime.</para>
-    </section>
-    <section>
-        <title>Merging Multiple Projects</title>
-        <para>ServerRuntime requires at least one mapping project to run. But it can also take multiple
-            projects and merge them together in a single configuration. This way different parts of
-            a database can be mapped independently from each other (even by different software
-            providers), and combined in runtime when assembling an application. Doing it is as easy
-            as passing multiple project locations to ServerRuntime builder:</para><programlisting language="java">ServerRuntime runtime = ServerRuntime.builder()
-        .addConfig("com/example/cayenne-project.xml")
-        .addConfig("org/foo/cayenne-library1.xml")
-        .addConfig("org/foo/cayenne-library2.xml")
-        .build();</programlisting>
-        <para>When the projects are merged, the following rules are applied:<itemizedlist>
-                <listitem>
-                    <para>The order of projects matters during merge. If there are two conflicting
-                        metadata objects belonging to two projects, an object from the <emphasis
-                            role="italic">last</emphasis> project takes precedence over the object
-                        from the first one. This makes possible to override pieces of metadata. This
-                        is also similar to how DI modules are merged in Cayenne.</para>
-                </listitem>
-                <listitem>
-                    <para>Runtime DataDomain name is set to the name of the last project in the
-                        list.</para>
-                </listitem>
-                <listitem>
-                    <para>Runtime DataDomain properties are the same as the properties of the last
-                        project in the list. I.e. <emphasis role="italic">properties are not
-                            merged</emphasis> to avoid invalid combinations and unexpected runtime
-                        behavior.</para>
-                </listitem>
-                <listitem>
-                    <para>If there are two or more DataMaps with the same name, only one DataMap is
-                        used in the merged project, the rest are discarded. Same precedence rules
-                        apply - DataMap from the project with the highest index in the project list
-                        overrides all other DataMaps with the same name.</para>
-                </listitem>
-                <listitem>
-                    <para>If there are two or more DataNodes with the same name, only one DataNodes
-                        is used in the merged project, the rest are discarded. DataNode coming from
-                        project with the highest index in the project list is chosen per precedence
-                        rule above.</para>
-                </listitem>
-                <listitem>
-                    <para>There is a notion of "default" DataNode. After the merge if any DataMaps
-                        are not explicitly linked to DataNodes, their queries will be executed via a
-                        default DataNode. This makes it possible to build mapping "libraries" that
-                        are only associated with a specific database in runtime. If there's only one
-                        DataNode in the merged project, it will be automatically chosen as default.
-                        A possible way to explicitly designate a specific node as default is to
-                        override <code>DataDomainProvider.createAndInitDataDomain()</code>.</para>
-                </listitem>
-            </itemizedlist></para>
-    </section>
-    <section xml:id="webapps">
-        <title>Web Applications</title>
-        <para>Web applications can use a variety of mechanisms to configure and start the "services"
-            they need, Cayenne being one of such services. Configuration can be done within standard
-            Servlet specification objects like Servlets, Filters, or ServletContextListeners, or can
-            use Spring, JEE CDI, etc. This is a user's architectural choice and Cayenne is agnostic
-            to it and will happily work in any environment. As described above, all that is needed
-            is to create an instance of ServerRuntime somewhere and provide the application code
-            with means to access it. And shut it down when the application ends to avoid container
-            leaks.</para>
-        <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 language="xml">&lt;web-app>
-    ...
-    &lt;filter>
-        &lt;filter-name>cayenne-project&lt;/filter-name>
-        &lt;filter-class>org.apache.cayenne.configuration.web.CayenneFilter&lt;/filter-class>
-    &lt;/filter>
-     &lt;filter-mapping>
-        &lt;filter-name>cayenne-project&lt;/filter-name>
-        &lt;url-pattern>/*&lt;/url-pattern>
-     &lt;/filter-mapping>
-    ...
- &lt;/web-app>       </programlisting></para>
-        <para>When started by the web container, it creates a instance of ServerRuntime and stores
-            it in the ServletContext. Note that the name of Cayenne XML project file is derived from
-            the "filter-name". In the example above CayenneFilter will look for an XML file
-            "cayenne-project.xml". This can be overridden with "configuration-location" init
-            parameter.</para>
-        <para>When the application runs, all HTTP requests matching the filter url-pattern will have
-            access to a session-scoped ObjectContext like
-            this:<programlisting language="java">ObjectContext context = BaseContext.getThreadObjectContext();</programlisting>Of
-            course the ObjectContext scope, and other behavior of the Cayenne runtime can be
-            customized via dependency injection. For this another filter init parameter called
-            "extra-modules" is used. "extra-modules" is a comma or space-separated list of class
-            names, with each class implementing Module interface. These optional custom modules are
-            loaded after the the standard ones, which allows users to override all standard
-            definitions.</para>
-        <para>For those interested in the DI container contents of the runtime created by CayenneFilter,
-            it is the same ServerRuntime as would've been created by other means, but with an extra
-                <code>org.apache.cayenne.configuration.web.WebModule</code> module that provides
-                <code>org.apache.cayenne.configuration.web.RequestHandler</code> service. This is
-            the service to override in the custom modules if you need to provide a different
-            ObjectContext scope, etc.</para>
-        <para>
-            <note>
-                <para>You should not think of CayenneFilter as the only way to start and use Cayenne in a web
-                    application. In fact CayenneFilter is entirely optional. Use it if you don't
-                    have any special design for application service management. If you do, simply
-                    integrate Cayenne into that design.</para>
-            </note>
-        </para>
-    </section>
-</chapter>

http://git-wip-us.apache.org/repos/asf/cayenne/blob/df1324e4/docs/docbook/cayenne-guide/src/images/.gitignore
----------------------------------------------------------------------
diff --git a/docs/docbook/cayenne-guide/src/images/.gitignore b/docs/docbook/cayenne-guide/src/images/.gitignore
deleted file mode 100644
index e69de29..0000000

http://git-wip-us.apache.org/repos/asf/cayenne/blob/df1324e4/docs/docbook/cayenne-guide/src/images/ext-crypto-obj-entity.png
----------------------------------------------------------------------
diff --git a/docs/docbook/cayenne-guide/src/images/ext-crypto-obj-entity.png b/docs/docbook/cayenne-guide/src/images/ext-crypto-obj-entity.png
deleted file mode 100644
index 2d8c32a..0000000
Binary files a/docs/docbook/cayenne-guide/src/images/ext-crypto-obj-entity.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cayenne/blob/df1324e4/docs/docbook/cayenne-guide/src/images/ext-dbcp-setup.png
----------------------------------------------------------------------
diff --git a/docs/docbook/cayenne-guide/src/images/ext-dbcp-setup.png b/docs/docbook/cayenne-guide/src/images/ext-dbcp-setup.png
deleted file mode 100644
index f681b9d..0000000
Binary files a/docs/docbook/cayenne-guide/src/images/ext-dbcp-setup.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cayenne/blob/df1324e4/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
deleted file mode 100644
index 79ada1c..0000000
Binary files a/docs/docbook/cayenne-guide/src/images/re-modeler-datasource-select.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cayenne/blob/df1324e4/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
deleted file mode 100644
index 8b09d07..0000000
Binary files a/docs/docbook/cayenne-guide/src/images/re-modeler-reverseengineering-dialog.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cayenne/blob/df1324e4/docs/docbook/cayenne-guide/src/images/remote-object-persistence.jpg
----------------------------------------------------------------------
diff --git a/docs/docbook/cayenne-guide/src/images/remote-object-persistence.jpg b/docs/docbook/cayenne-guide/src/images/remote-object-persistence.jpg
deleted file mode 100644
index 43f820d..0000000
Binary files a/docs/docbook/cayenne-guide/src/images/remote-object-persistence.jpg and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cayenne/blob/df1324e4/docs/docbook/docbook-stylesheets/pom.xml
----------------------------------------------------------------------
diff --git a/docs/docbook/docbook-stylesheets/pom.xml b/docs/docbook/docbook-stylesheets/pom.xml
deleted file mode 100644
index 1c8ab1c..0000000
--- a/docs/docbook/docbook-stylesheets/pom.xml
+++ /dev/null
@@ -1,45 +0,0 @@
-<?xml version="1.0"?>
-<!--
-    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.   
--->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-
-    <parent>
-        <groupId>org.apache.cayenne.docs</groupId>
-        <artifactId>cayenne-docbook</artifactId>
-        <version>4.1.M2-SNAPSHOT</version>
-    </parent>
-
-    <artifactId>docbook-stylesheets</artifactId>
-    <name>docbook-stylesheets: Docbook - Cayenne Stylesheets</name>
-
-    <properties>
-        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-    </properties>
-
-    <build>
-        <resources>
-            <resource>
-                <directory>src/main/resources</directory>
-                <filtering>true</filtering>
-            </resource>
-        </resources>
-    </build>
-
-</project>

http://git-wip-us.apache.org/repos/asf/cayenne/blob/df1324e4/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
deleted file mode 100644
index c6e8ad2..0000000
--- a/docs/docbook/docbook-stylesheets/src/main/resources/css/cayenne-doc.css
+++ /dev/null
@@ -1,148 +0,0 @@
-@IMPORT url("highlight.css");
-
-html {
-    padding:       0pt;
-    margin:        0pt;
-}
-
-body, td {
-    margin-left:   10%;
-    margin-right:  10%;
-    font-family:   "Lucida Grande","Trebuchet MS",Verdana,sans-serif;
-    font-size: small;
-}
-
-div {
-    margin:        0pt;
-}
-
-p {
-    text-align:    justify;
-}
-
-hr {
-    border:        1px solid gray;
-    background:    gray;
-}
-
-h1, h2, h3, h4 {
-    font-family: "Trebuchet MS","Lucida Grande",Verdana,sans-serif;
-    font-weight: normal;
-    line-height: normal;
-    margin: 1em 0 0.5em;
-}
-
-h2 {
-    color: #660000;
-    font-size: 170%;
-    padding: 0;
-}
-
-h3 {
-    border-bottom: 1px solid #EAEAEA;
-    color: #CC4400;
-    font-size: 135%;
-    padding-bottom: 3px;
-}
-
-h4 {
-    color: #AAAA99;
-    font-size: 130%;
-}
-
-pre {
-    line-height:   1.0;
-    color:         black;
-
-    -moz-tab-size: 4;
-    -o-tab-size:   4;
-    tab-size:      4;
-}
-
-pre.programlisting {
-    font-size:     10pt;
-    padding:       7pt 3pt;
-    border:        1pt solid black;
-    background:    #F9F9F6;
-    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;
-    text-align:    center;
-}
-
-table[frame=void] {
-    display:       table;
-    width:         100%;
-    border:        1px black solid;
-    border-collapse: collapse;
-    border-spacing: 0;
-}
-
-table[frame=void] td {
-    padding-left:  7px;
-    padding-right: 7px;
-    border:        1px black solid;
-}
-
-table[frame=void] th {
-    padding-left:  7px;
-    padding-right: 7px;
-    border:        1px black solid;
-}
-
-.sidebar {
-    float: right;
-    margin: 10px 0 10px 30px;
-    padding: 10px 20px 20px 20px;
-    width: 33%;
-    border: 1px solid black;
-    background-color: #F4F4F4;
-    font-size: 14px;
-}
-
-.code {
-    font-family: Courier New,monospace;
-}
-
-.mediaobject {
-    padding-top: 30px;
-    padding-bottom: 30px;
-}
-
-.legalnotice {
-    font-size: 12px;
-    font-style: italic;
-}
-
-p.releaseinfo {
-    font-size: 100%;
-    font-weight: bold;
-    padding-top: 10px;
-}
-
-p.pubdate {
-    font-size: 120%;
-    font-weight: bold;
-}
-
-span.productname {
-    font-size: 200%;
-    font-weight: bold;
-}
-
-th.versioninfo {
-    font-size: 10px;
-    font-weight: normal;
-    text-align: left;
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cayenne/blob/df1324e4/docs/docbook/docbook-stylesheets/src/main/resources/css/highlight.css
----------------------------------------------------------------------
diff --git a/docs/docbook/docbook-stylesheets/src/main/resources/css/highlight.css b/docs/docbook/docbook-stylesheets/src/main/resources/css/highlight.css
deleted file mode 100644
index f6a057d..0000000
--- a/docs/docbook/docbook-stylesheets/src/main/resources/css/highlight.css
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
-   code highlight CSS resemblign the Eclipse IDE default color schema
-   @author Costin Leau
-*/
-
-.hl-keyword {
-    color: #7F0055;
-    font-weight: bold;
-}
-
-.hl-comment {
-    color: #3F5F5F;
-    font-style: italic;
-}
-
-.hl-multiline-comment {
-    color: #3F5FBF;
-    font-style: italic;
-}
-
-.hl-tag {
-    color: #3F7F7F;
-}
-
-.hl-attribute {
-    color: #7F007F;
-}
-
-.hl-value {
-    color: #2A00FF;
-}
-
-.hl-string {
-    color: #2A00FF !important;
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cayenne/blob/df1324e4/docs/docbook/docbook-stylesheets/src/main/resources/stylesheets/common-customizations.xsl
----------------------------------------------------------------------
diff --git a/docs/docbook/docbook-stylesheets/src/main/resources/stylesheets/common-customizations.xsl b/docs/docbook/docbook-stylesheets/src/main/resources/stylesheets/common-customizations.xsl
deleted file mode 100644
index d51510d..0000000
--- a/docs/docbook/docbook-stylesheets/src/main/resources/stylesheets/common-customizations.xsl
+++ /dev/null
@@ -1,32 +0,0 @@
-<?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.   
--->
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
-
-	<!-- The next line is needed to work with maven injecting the docbook stylesheets -->
-	<!---->
-	<!-- <xsl:import href="urn:docbkx:stylesheet/highlight.xsl"/> -->
-
-	<xsl:param name="keep.relative.image.uris" select="1"/>
-	<xsl:param name="toc.section.depth">1</xsl:param>
-
-	<!-- disable TOC for each part -->
-	<xsl:template name="generate.part.toc" />
-
-</xsl:stylesheet>

http://git-wip-us.apache.org/repos/asf/cayenne/blob/df1324e4/docs/docbook/docbook-stylesheets/src/main/resources/stylesheets/highlight.xsl
----------------------------------------------------------------------
diff --git a/docs/docbook/docbook-stylesheets/src/main/resources/stylesheets/highlight.xsl b/docs/docbook/docbook-stylesheets/src/main/resources/stylesheets/highlight.xsl
deleted file mode 100644
index e25baf0..0000000
--- a/docs/docbook/docbook-stylesheets/src/main/resources/stylesheets/highlight.xsl
+++ /dev/null
@@ -1,104 +0,0 @@
-<?xml version="1.0" encoding="ASCII"?>
-<!--
-    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.
--->
-<!--This file was created automatically by html2xhtml-->
-<!--from the HTML stylesheets.-->
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:d="http://docbook.org/ns/docbook"
-                xmlns:xslthl="http://xslthl.sf.net" xmlns="http://www.w3.org/1999/xhtml" exclude-result-prefixes="xslthl d" version="1.0">
-
-    <xsl:import href="urn:docbkx:stylesheet/highlight.xsl"/>
-    <!-- ********************************************************************
-   $Id: highlight.xsl 8911 2010-09-28 17:02:06Z abdelazer $
-   ********************************************************************
-
-   This file is part of the XSL DocBook Stylesheet distribution.
-   See ../README or http://docbook.sf.net/release/xsl/current/ for
-   and other information.
-
-
-
-   ******************************************************************** -->
-    <!-- <xsl:import href="urn:/highlighting/common.xsl"/> -->
-    <xsl:template match="xslthl:keyword" mode="xslthl">
-        <span class="hl-keyword">
-            <xsl:apply-templates mode="xslthl"/>
-        </span>
-    </xsl:template>
-    <xsl:template match="xslthl:string" mode="xslthl">
-        <span class="hl-string">
-            <xsl:apply-templates mode="xslthl"/>
-        </span>
-    </xsl:template>
-    <xsl:template match="xslthl:comment" mode="xslthl">
-        <span class="hl-comment">
-            <xsl:apply-templates mode="xslthl"/>
-        </span>
-    </xsl:template>
-    <xsl:template match="xslthl:directive" mode="xslthl">
-        <span class="hl-directive">
-            <xsl:apply-templates mode="xslthl"/>
-        </span>
-    </xsl:template>
-    <xsl:template match="xslthl:tag" mode="xslthl">
-        <span class="hl-tag">
-            <xsl:apply-templates mode="xslthl"/>
-        </span>
-    </xsl:template>
-    <xsl:template match="xslthl:attribute" mode="xslthl">
-        <span class="hl-attribute">
-            <xsl:apply-templates mode="xslthl"/>
-        </span>
-    </xsl:template>
-    <xsl:template match="xslthl:value" mode="xslthl">
-        <span class="hl-value">
-            <xsl:apply-templates mode="xslthl"/>
-        </span>
-    </xsl:template>
-    <xsl:template match="xslthl:html" mode="xslthl">
-        <strong>
-            <span>
-                <xsl:apply-templates mode="xslthl"/>
-            </span>
-        </strong>
-    </xsl:template>
-    <xsl:template match="xslthl:xslt" mode="xslthl">
-        <span>
-            <xsl:apply-templates mode="xslthl"/>
-        </span>
-    </xsl:template>
-    <!-- Not emitted since XSLTHL 2.0 -->
-    <xsl:template match="xslthl:section" mode="xslthl">
-        <span>
-            <xsl:apply-templates mode="xslthl"/>
-        </span>
-    </xsl:template>
-    <xsl:template match="xslthl:number" mode="xslthl">
-        <span class="hl-number">
-            <xsl:apply-templates mode="xslthl"/>
-        </span>
-    </xsl:template>
-    <xsl:template match="xslthl:annotation" mode="xslthl">
-        <span class="hl-annotation">
-            <xsl:apply-templates mode="xslthl"/>
-        </span>
-    </xsl:template>
-    <!-- Not sure which element will be in final XSLTHL 2.0 -->
-    <xsl:template match="xslthl:doccomment|xslthl:doctype" mode="xslthl">
-        <strong class="hl-tag">
-            <xsl:apply-templates mode="xslthl"/>
-        </strong>
-    </xsl:template>
-</xsl:stylesheet>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cayenne/blob/df1324e4/docs/docbook/docbook-stylesheets/src/main/resources/stylesheets/html.xsl
----------------------------------------------------------------------
diff --git a/docs/docbook/docbook-stylesheets/src/main/resources/stylesheets/html.xsl b/docs/docbook/docbook-stylesheets/src/main/resources/stylesheets/html.xsl
deleted file mode 100644
index 11b6d4f..0000000
--- a/docs/docbook/docbook-stylesheets/src/main/resources/stylesheets/html.xsl
+++ /dev/null
@@ -1,244 +0,0 @@
-<?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.
--->
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-                version="1.0" xmlns:d="http://docbook.org/ns/docbook">
-
-
-    <xsl:import href="urn:docbkx:stylesheet"/>
-    <xsl:import href="highlight.xsl"/>
-    <xsl:include href="common-customizations.xsl"/>
-
-    <!--<xsl:param name="highlight.source" select="1"/>-->
-    <xsl:param name="html.stylesheet" select="'css/cayenne-doc.css'"/>
-    <xsl:param name="chunker.output.encoding">UTF-8</xsl:param>
-
-    <!-- Only chapters start a new page -->
-    <xsl:param name="chunk.section.depth">0</xsl:param>
-
-    <!-- Don't add any embedded styles -->
-    <xsl:param name="css.decoration">0</xsl:param>
-
-    <xsl:param name="ignore.image.scaling">1</xsl:param>
-
-    <xsl:param name="use.id.as.filename">1</xsl:param>
-
-    <xsl:param name="navig.showtitles">1</xsl:param>
-
-    <!--
-        BODY > HEAD Customization
-        Customized template for generate meta tags with cayenne version in head of
-        page with documentation
-    -->
-    <xsl:template name="head.content">
-        <xsl:param name="node" select="."/>
-        <xsl:param name="title">
-            <xsl:apply-templates select="$node" mode="object.title.markup.textonly"/>
-        </xsl:param>
-
-        <title>
-            <xsl:copy-of select="$title"/>
-        </title>
-
-        <xsl:if test="$html.base != ''">
-            <base href="{$html.base}"/>
-        </xsl:if>
-
-        <!-- Insert links to CSS files or insert literal style elements -->
-        <xsl:call-template name="generate.css"/>
-
-        <xsl:if test="$html.stylesheet != ''">
-            <xsl:call-template name="output.html.stylesheets">
-                <xsl:with-param name="stylesheets" select="normalize-space($html.stylesheet)"/>
-            </xsl:call-template>
-        </xsl:if>
-
-        <xsl:if test="$link.mailto.url != ''">
-            <link rev="made" href="{$link.mailto.url}"/>
-        </xsl:if>
-
-        <meta name="keywords" content="Cayenne ${cayenne.version.major} documentation"/>
-        <meta name="description" content="User documentation for Apache Cayenne version ${cayenne.version.major}"/>
-
-        <xsl:if test="$generate.meta.abstract != 0">
-            <xsl:variable name="info" select="(d:articleinfo
-                                      |d:bookinfo
-                                      |d:prefaceinfo
-                                      |d:chapterinfo
-                                      |d:appendixinfo
-                                      |d:sectioninfo
-                                      |d:sect1info
-                                      |d:sect2info
-                                      |d:sect3info
-                                      |d:sect4info
-                                      |d:sect5info
-                                      |d:referenceinfo
-                                      |d:refentryinfo
-                                      |d:partinfo
-                                      |d:info
-                                      |d:docinfo)[1]"/>
-            <xsl:if test="$info and $info/d:abstract">
-                <meta name="description">
-                    <xsl:attribute name="content">
-                        <xsl:for-each select="$info/d:abstract[1]/*">
-                            <xsl:value-of select="normalize-space(.)"/>
-                            <xsl:if test="position() &lt; last()">
-                                <xsl:text> </xsl:text>
-                            </xsl:if>
-                        </xsl:for-each>
-                    </xsl:attribute>
-                </meta>
-            </xsl:if>
-        </xsl:if>
-
-        <xsl:if test="($draft.mode = 'yes' or
-                ($draft.mode = 'maybe' and
-                ancestor-or-self::*[@status][1]/@status = 'draft'))
-                and $draft.watermark.image != ''">
-            <style type="text/css"><xsl:text>
-body { background-image: url('</xsl:text>
-                <xsl:value-of select="$draft.watermark.image"/><xsl:text>');
-       background-repeat: no-repeat;
-       background-position: top left;
-       /* The following properties make the watermark "fixed" on the page. */
-       /* I think that's just a bit too distracting for the reader... */
-       /* background-attachment: fixed; */
-       /* background-position: center center; */
-     }</xsl:text>
-            </style>
-        </xsl:if>
-        <xsl:apply-templates select="." mode="head.keywords.content"/>
-    </xsl:template>
-
-    <!-- GoogleAnalytics script for web publishing -->
-    <xsl:template name="user.head.content">
-        <script type="text/javascript">
-  var _gaq = _gaq || [];
-  _gaq.push(['_setAccount', 'UA-7036673-1']);
-  _gaq.push(['_trackPageview']);
-  (function() {
-    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
-    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
-    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
-  })();
-        </script>
-    </xsl:template>
-
-    <!--
-        TOP NAVIGATION
-    -->
-    <xsl:template name="header.navigation">
-        <xsl:param name="prev" select="/d:foo"/>
-        <xsl:param name="next" select="/d:foo"/>
-        <xsl:param name="nav.context"/>
-
-        <xsl:variable name="home" select="/*[1]"/>
-        <xsl:variable name="up" select="parent::*"/>
-
-        <xsl:variable name="row1" select="$navig.showtitles != 0"/>
-        <xsl:variable name="row2" select="count($prev) &gt; 0
-                                    or (count($up) &gt; 0
-                                        and generate-id($up) != generate-id($home)
-                                        and $navig.showtitles != 0)
-                                    or count($next) &gt; 0"/>
-
-        <xsl:if test="$suppress.navigation = '0' and $suppress.header.navigation = '0'">
-            <div class="navheader">
-                <xsl:if test="$row1 or $row2">
-                    <table width="100%" summary="Navigation header">
-                      
-                        <!-- Add Apache Cayenne version info -->
-                        <xsl:if test="$row1">
-                            <tr>
-                                <th class="versioninfo">v.${cayenne.version.major} (${pom.version})</th>
-                                <th align="center">
-                                    <xsl:apply-templates select="." mode="object.title.markup"/>
-                                </th>
-                                <th></th>
-                            </tr>
-                        </xsl:if>
-
-                        <xsl:if test="$row2">
-
-                            <tr>
-                                <td width="20%" align="{$direction.align.start}">
-                                    <xsl:if test="count($prev)>0">
-                                        <a accesskey="p">
-                                            <xsl:attribute name="href">
-                                                <xsl:call-template name="href.target">
-                                                    <xsl:with-param name="object" select="$prev"/>
-                                                </xsl:call-template>
-                                            </xsl:attribute>
-                                            <xsl:call-template name="navig.content">
-                                                <xsl:with-param name="direction" select="'prev'"/>
-                                            </xsl:call-template>
-                                        </a>
-                                    </xsl:if>
-                                    <xsl:text>&#160;</xsl:text>
-                                </td>
-
-                                <!-- Make parent caption as link -->
-                                <th width="60%" align="center">
-                                    <xsl:choose>
-                                        <xsl:when test="count($up) > 0
-                                  and generate-id($up) != generate-id($home)
-                                  and $navig.showtitles != 0">
-                                            <a accesskey="u">
-                                                <xsl:attribute name="href">
-                                                    <xsl:call-template name="href.target">
-                                                        <xsl:with-param name="object" select="$up"/>
-                                                    </xsl:call-template>
-                                                </xsl:attribute>
-                                                <xsl:apply-templates select="$up" mode="object.title.markup"/>
-                                            </a>
-                                        </xsl:when>
-                                        <xsl:otherwise>&#160;</xsl:otherwise>
-                                    </xsl:choose>
-                                </th>
-
-
-                                <td width="20%" align="{$direction.align.end}">
-                                    <xsl:text>&#160;</xsl:text>
-                                    <xsl:if test="count($next)>0">
-                                        <a accesskey="n">
-                                            <xsl:attribute name="href">
-                                                <xsl:call-template name="href.target">
-                                                    <xsl:with-param name="object" select="$next"/>
-                                                </xsl:call-template>
-                                            </xsl:attribute>
-                                            <xsl:call-template name="navig.content">
-                                                <xsl:with-param name="direction" select="'next'"/>
-                                            </xsl:call-template>
-                                        </a>
-                                    </xsl:if>
-                                </td>
-                            </tr>
-
-                        </xsl:if>
-
-                    </table>
-                </xsl:if>
-                <xsl:if test="$header.rule != 0">
-                    <hr/>
-                </xsl:if>
-            </div>
-        </xsl:if>
-    </xsl:template>
-
-</xsl:stylesheet>

http://git-wip-us.apache.org/repos/asf/cayenne/blob/df1324e4/docs/docbook/docbook-stylesheets/src/main/resources/stylesheets/pdf.xsl
----------------------------------------------------------------------
diff --git a/docs/docbook/docbook-stylesheets/src/main/resources/stylesheets/pdf.xsl b/docs/docbook/docbook-stylesheets/src/main/resources/stylesheets/pdf.xsl
deleted file mode 100644
index f716411..0000000
--- a/docs/docbook/docbook-stylesheets/src/main/resources/stylesheets/pdf.xsl
+++ /dev/null
@@ -1,505 +0,0 @@
-<?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.
--->
-<!--
-    This is the XSL FO (PDF) stylesheet for the Cayenne documentation.
--->
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-                xmlns:fo="http://www.w3.org/1999/XSL/Format"
-                version="1.0">
-
-    <xsl:import href="urn:docbkx:stylesheet"/>
-    <xsl:include href="common-customizations.xsl"/>
-
-    <xsl:template name="border">
-        <xsl:param name="side" select="'start'"/>
-
-        <xsl:attribute name="border-{$side}-width">
-            <xsl:value-of select="$table.cell.border.thickness"/>
-        </xsl:attribute>
-        <xsl:attribute name="border-{$side}-style">
-            <xsl:value-of select="$table.cell.border.style"/>
-        </xsl:attribute>
-        <xsl:attribute name="border-{$side}-color">
-            <xsl:value-of select="$table.cell.border.color"/>
-        </xsl:attribute>
-        <xsl:attribute name="my-attr">
-            <xsl:value-of select="'1'"/>
-        </xsl:attribute>
-    </xsl:template>
-
-    <!-- don't indent the body text -->
-    <xsl:param name="body.start.indent">0pt</xsl:param>
-
-    <!-- print headers and footers mirrored so double sided printing works -->
-    <!--<xsl:param name="fop1.extensions" select="1"/>-->
-    <xsl:param name="double.sided" select="0"/>
-
-    <xsl:param name="admon.graphics" select="0"/>
-    <xsl:param name="admon.graphics.extension">.png</xsl:param>
-    <xsl:param name="admon.graphics.path">stylesheets/docbook-xsl-ns/images/</xsl:param>
-    <xsl:param name="admon.textlabel" select="1"/>
-
-    <xsl:param name="callout.graphics" select="1"/>
-    <xsl:param name="callout.graphics.extension">.png</xsl:param>
-    <xsl:param name="callout.graphics.path">stylesheets/docbook-xsl-ns/images/callouts/</xsl:param>
-
-    <xsl:param name="footer.rule">0</xsl:param>
-
-    <!-- Separation between glossary terms and descriptions when glossaries are presented using lists. -->
-    <xsl:param name="glossterm.separation">2em</xsl:param>
-
-    <!-- This parameter specifies the width reserved for glossary terms when a list presentation is used.  -->
-    <xsl:param name="glossterm.width">10em</xsl:param>
-
-    <!--  Specifies the longest term in variablelists. In variablelists, the listitem is indented to leave room for the term elements. The indent may be computed if it is not specified with a termlength attribute on the variablelist element. The computation counts characters in the term elements in the list to find the longest term. However, some terms are very long and would produce extreme indents. This parameter lets you set a maximum character count. Any terms longer than the maximum would line wrap. The default value is 24. The character counts are converted to physical widths by multiplying by 0.50em. There is some variability in how many characters fit in the space since some characters are wider than others. -->
-    <xsl:param name="variablelist.max.termlength">18</xsl:param>
-
-    <!-- Custom font settings - preferred truetype font -->
-    <xsl:param name="title.font.family">Lucinda Grande,sans-serif</xsl:param>
-    <xsl:param name="body.font.family">Times,serif</xsl:param>
-    <xsl:param name="sans.font.family">Lucinda Grande,sans-serif</xsl:param>
-    <xsl:param name="dingbat.font.family">Lucinda Grande,serif</xsl:param>
-    <xsl:param name="monospace.font.family">monospace</xsl:param>
-
-    <!-- Specify the default text alignment. The default text alignment is used for most body text. -->
-    <xsl:param name="alignment">justify</xsl:param>
-
-    <!--  Specifies the default point size for body text. The body font size is specified in two parameters (body.font.master and body.font.size) so that math can be performed on the font size by XSLT. -->
-    <xsl:param name="body.font.master">11</xsl:param>
-
-    <xsl:param name="hyphenate">true</xsl:param>
-
-    <!-- "normal" is 1.6. This value is multiplied by the font size -->
-    <xsl:param name="line-height">1.5</xsl:param>
-
-    <!--  Specify the spacing required between normal paragraphs. -->
-    <xsl:attribute-set name="normal.para.spacing">
-        <xsl:attribute name="space-before.optimum">0.8em</xsl:attribute>
-        <xsl:attribute name="space-before.minimum">0.6em</xsl:attribute>
-        <xsl:attribute name="space-before.maximum">1.0em</xsl:attribute>
-    </xsl:attribute-set>
-
-    <!--  Tables, examples, figures, and equations don't need to be forced onto onto one page without page breaks. -->
-    <xsl:attribute-set name="formal.object.properties">
-        <xsl:attribute name="keep-together.within-column">auto</xsl:attribute>
-    </xsl:attribute-set>
-
-    <!-- The body bottom margin is the distance from the last line of text in the page body to the bottom of the region-after. -->
-    <xsl:param name="body.margin.bottom">20mm</xsl:param>
-
-    <!-- The body top margin is the distance from the top of the region-before to the first line of text in the page body. -->
-    <xsl:param name="body.margin.top">20mm</xsl:param>
-
-    <!-- The top page margin is the distance from the physical top of the page to the top of the region-before. -->
-    <xsl:param name="page.margin.top">10mm</xsl:param>
-
-    <!-- The bottom page margin is the distance from the bottom of the region-after to the physical bottom of the page. -->
-    <xsl:param name="page.margin.bottom">10mm</xsl:param>
-
-    <!-- The inner page margin. The inner page margin is the distance from binding edge of the page to the first column of text. In the left-to-right, top-to-bottom writing direction, this is the left margin of recto pages. The inner and outer margins are usually the same unless the output is double-sided. -->
-    <xsl:param name="page.margin.inner">18mm</xsl:param>
-
-    <!-- The outer page margin. The outer page margin is the distance from non-binding edge of the page to the last column of text. In the left-to-right, top-to-bottom writing direction, this is the right margin of recto pages. The inner and outer margins are usually the same unless the output is double-sided. -->
-    <xsl:param name="page.margin.outer">18mm</xsl:param>
-
-    <!-- Make hyperlinks blue and don't display the underlying URL -->
-    <xsl:param name="ulink.show" select="0"/>
-
-    <xsl:attribute-set name="xref.properties">
-        <xsl:attribute name="color">blue</xsl:attribute>
-    </xsl:attribute-set>
-
-    <xsl:param name="img.src.path">../</xsl:param>
-
-    <!-- Prevent blank pages in output -->
-    <xsl:template name="book.titlepage.before.verso">
-    </xsl:template>
-    <xsl:template name="book.titlepage.verso">
-    </xsl:template>
-    <xsl:template name="book.titlepage.separator">
-    </xsl:template>
-
-    <!--###################################################
-                     Header
-   ################################################### -->
-
-    <!-- More space in the center header for long text -->
-    <xsl:attribute-set name="header.content.properties">
-        <xsl:attribute name="font-family">
-            <xsl:value-of select="$body.font.family"/>
-        </xsl:attribute>
-        <xsl:attribute name="margin-left">-5em</xsl:attribute>
-        <xsl:attribute name="margin-right">-5em</xsl:attribute>
-    </xsl:attribute-set>
-
-    <!--###################################################
-                     Custom Footer
-   ################################################### -->
-    <xsl:template name="footer.content">
-        <xsl:param name="pageclass" select="''"/>
-        <xsl:param name="sequence" select="''"/>
-        <xsl:param name="position" select="''"/>
-        <xsl:param name="gentext-key" select="''"/>
-        <xsl:variable name="Version">
-            <fo:inline min-width="150mm">v.${cayenne.version.major}</fo:inline>
-        </xsl:variable>
-        <xsl:choose>
-            <xsl:when test="$sequence='blank'">
-                <xsl:if test="$position = 'left'">
-                    <xsl:value-of select="$Version"/>
-                </xsl:if>
-            </xsl:when>
-            <!-- for single sided printing, print all page numbers on the right (of the page) -->
-            <xsl:when test="$double.sided = 0">
-                <xsl:choose>
-                    <xsl:when test="$position='left'">
-                        <xsl:value-of select="$Version"/>
-                    </xsl:when>
-                    <xsl:when test="$position='right'">
-                        <fo:page-number/>
-                    </xsl:when>
-                </xsl:choose>
-            </xsl:when>
-        </xsl:choose>
-    </xsl:template>
-
-    <!--###################################################
-                     Extensions
-        ################################################### -->
-
-    <!-- These extensions are required for table printing and other stuff -->
-    <xsl:param name="use.extensions">1</xsl:param>
-    <xsl:param name="tablecolumns.extension">1</xsl:param>
-    <xsl:param name="callout.extensions">1</xsl:param>
-    <!-- FOP provide only PDF Bookmarks at the moment -->
-    <xsl:param name="fop1.extensions">1</xsl:param>
-
-    <!-- ###################################################
-                     Table Of Contents
-         ################################################### -->
-
-    <!-- Generate the TOCs for named components only -->
-    <xsl:param name="generate.toc">
-        book toc
-    </xsl:param>
-
-    <!-- Show only Sections up to level 3 in the TOCs -->
-    <!--<xsl:param name="toc.section.depth">2</xsl:param>-->
-
-    <!-- Dot and Whitespace as separator in TOC between Label and Title-->
-    <xsl:param name="autotoc.label.separator" select="'.  '"/>
-
-
-    <!-- ###################################################
-                  Paper & Page Size
-         ################################################### -->
-
-    <!-- Paper type, no headers on blank pages, no double sided printing -->
-    <xsl:param name="paper.type" select="'A4'"/>
-    <!--<xsl:param name="double.sided">0</xsl:param>-->
-    <xsl:param name="headers.on.blank.pages">0</xsl:param>
-    <xsl:param name="footers.on.blank.pages">0</xsl:param>
-
-    <!-- Space between paper border and content (chaotic stuff, don't touch) -->
-    <!--<xsl:param name="page.margin.top">5mm</xsl:param>-->
-    <xsl:param name="region.before.extent">10mm</xsl:param>
-    <!--<xsl:param name="body.margin.top">10mm</xsl:param>-->
-
-    <!--<xsl:param name="body.margin.bottom">15mm</xsl:param>-->
-    <xsl:param name="region.after.extent">10mm</xsl:param>
-    <!--<xsl:param name="page.margin.bottom">0mm</xsl:param>-->
-
-    <!--<xsl:param name="page.margin.outer">18mm</xsl:param>-->
-    <!--<xsl:param name="page.margin.inner">18mm</xsl:param>-->
-
-    <!-- No intendation of Titles -->
-    <xsl:param name="title.margin.left">0pc</xsl:param>
-
-    <!-- ###################################################
-                  Fonts & Styles
-         ################################################### -->
-
-    <!-- Left aligned text and no hyphenation -->
-    <!--<xsl:param name="alignment">justify</xsl:param>-->
-    <!--<xsl:param name="hyphenate">false</xsl:param>-->
-
-    <!-- Default Font size -->
-    <!--<xsl:param name="body.font.master">11</xsl:param>-->
-    <xsl:param name="body.font.small">8</xsl:param>
-
-    <!-- ###################################################
-                  Tables
-         ################################################### -->
-
-    <!-- The table width should be adapted to the paper size -->
-    <xsl:param name="default.table.width">17.4cm</xsl:param>
-
-    <!-- Some padding inside tables -->
-    <xsl:attribute-set name="table.cell.padding">
-        <xsl:attribute name="padding-start">4pt</xsl:attribute>
-        <xsl:attribute name="padding-end">4pt</xsl:attribute>
-        <xsl:attribute name="padding-top">4pt</xsl:attribute>
-        <xsl:attribute name="padding-bottom">4pt</xsl:attribute>
-    </xsl:attribute-set>
-
-    <!-- Only hairlines as frame and cell borders in tables -->
-    <xsl:param name="default.table.frame">all</xsl:param>
-    <xsl:param name="default.table.rules">all</xsl:param>
-
-    <xsl:param name="table.frame.border.thickness">0.5pt</xsl:param>
-    <xsl:param name="table.frame.border.style">solid</xsl:param>
-    <xsl:param name="table.frame.border.color">black</xsl:param>
-    <xsl:param name="table.cell.border.thickness">0.5pt</xsl:param>
-    <xsl:param name="table.cell.border.color">black</xsl:param>
-    <xsl:param name="table.cell.border.style">solid</xsl:param>
-    <xsl:param name="border-start-style">solid</xsl:param>
-    <xsl:param name="border-end-style">solid</xsl:param>
-    <xsl:param name="border-top-style">solid</xsl:param>
-    <xsl:param name="border-bottom-style">solid</xsl:param>
-
-    <!--###################################################
-                        Labels
-   ################################################### -->
-
-    <!-- Label Chapters and Sections (numbering) -->
-    <xsl:param name="chapter.autolabel">1</xsl:param>
-    <xsl:param name="section.autolabel" select="1"/>
-    <xsl:param name="section.label.includes.component.label" select="1"/>
-
-    <!--###################################################
-                        Titles
-   ################################################### -->
-
-    <!-- Chapter title size -->
-    <xsl:attribute-set name="chapter.titlepage.recto.style">
-        <xsl:attribute name="text-align">left</xsl:attribute>
-        <xsl:attribute name="font-weight">bold</xsl:attribute>
-        <xsl:attribute name="font-size">
-            <xsl:value-of select="$body.font.master * 1.8"/>
-            <xsl:text>pt</xsl:text>
-        </xsl:attribute>
-    </xsl:attribute-set>
-
-    <!-- Why is the font-size for chapters hardcoded in the XSL FO templates?
-        Let's remove it, so this sucker can use our attribute-set only... -->
-    <xsl:template match="title" mode="chapter.titlepage.recto.auto.mode">
-        <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format"
-                  xsl:use-attribute-sets="chapter.titlepage.recto.style">
-            <xsl:call-template name="component.title">
-                <xsl:with-param name="node" select="ancestor-or-self::chapter[1]"/>
-            </xsl:call-template>
-        </fo:block>
-    </xsl:template>
-
-    <!-- Sections 1, 2 and 3 titles have a small bump factor and padding -->
-    <xsl:attribute-set name="section.title.level1.properties">
-        <xsl:attribute name="space-before.optimum">0.8em</xsl:attribute>
-        <xsl:attribute name="space-before.minimum">0.8em</xsl:attribute>
-        <xsl:attribute name="space-before.maximum">0.8em</xsl:attribute>
-        <xsl:attribute name="font-size">
-            <xsl:value-of select="$body.font.master * 1.5"/>
-            <xsl:text>pt</xsl:text>
-        </xsl:attribute>
-        <xsl:attribute name="space-after.optimum">0.1em</xsl:attribute>
-        <xsl:attribute name="space-after.minimum">0.1em</xsl:attribute>
-        <xsl:attribute name="space-after.maximum">0.1em</xsl:attribute>
-    </xsl:attribute-set>
-    <xsl:attribute-set name="section.title.level2.properties">
-        <xsl:attribute name="space-before.optimum">0.6em</xsl:attribute>
-        <xsl:attribute name="space-before.minimum">0.6em</xsl:attribute>
-        <xsl:attribute name="space-before.maximum">0.6em</xsl:attribute>
-        <xsl:attribute name="font-size">
-            <xsl:value-of select="$body.font.master * 1.25"/>
-            <xsl:text>pt</xsl:text>
-        </xsl:attribute>
-        <xsl:attribute name="space-after.optimum">0.1em</xsl:attribute>
-        <xsl:attribute name="space-after.minimum">0.1em</xsl:attribute>
-        <xsl:attribute name="space-after.maximum">0.1em</xsl:attribute>
-    </xsl:attribute-set>
-    <xsl:attribute-set name="section.title.level3.properties">
-        <xsl:attribute name="space-before.optimum">0.4em</xsl:attribute>
-        <xsl:attribute name="space-before.minimum">0.4em</xsl:attribute>
-        <xsl:attribute name="space-before.maximum">0.4em</xsl:attribute>
-        <xsl:attribute name="font-size">
-            <xsl:value-of select="$body.font.master * 1.0"/>
-            <xsl:text>pt</xsl:text>
-        </xsl:attribute>
-        <xsl:attribute name="space-after.optimum">0.1em</xsl:attribute>
-        <xsl:attribute name="space-after.minimum">0.1em</xsl:attribute>
-        <xsl:attribute name="space-after.maximum">0.1em</xsl:attribute>
-    </xsl:attribute-set>
-
-    <!-- Titles of formal objects (tables, examples, ...) -->
-    <xsl:attribute-set name="formal.title.properties" use-attribute-sets="normal.para.spacing">
-        <xsl:attribute name="font-weight">bold</xsl:attribute>
-        <xsl:attribute name="font-size">
-            <xsl:value-of select="$body.font.master"/>
-            <xsl:text>pt</xsl:text>
-        </xsl:attribute>
-        <xsl:attribute name="hyphenate">false</xsl:attribute>
-        <xsl:attribute name="space-after.minimum">0.4em</xsl:attribute>
-        <xsl:attribute name="space-after.optimum">0.6em</xsl:attribute>
-        <xsl:attribute name="space-after.maximum">0.8em</xsl:attribute>
-    </xsl:attribute-set>
-
-    <!--###################################################
-                     Programlistings
-   ################################################### -->
-
-    <!-- Verbatim text formatting (<code>) -->
-    <xsl:attribute-set name="monospace.properties">
-        <xsl:attribute name="font-size">
-            <xsl:value-of select="$body.font.small"/>
-            <xsl:text>pt</xsl:text>
-        </xsl:attribute>
-    </xsl:attribute-set>
-
-    <!-- Verbatim text formatting (programlistings) -->
-    <xsl:attribute-set name="monospace.verbatim.properties">
-        <xsl:attribute name="font-size">
-            <xsl:value-of select="$body.font.small"/>
-            <xsl:text>pt</xsl:text>
-        </xsl:attribute>
-    </xsl:attribute-set>
-
-    <xsl:attribute-set name="verbatim.properties">
-        <xsl:attribute name="space-before.minimum">0.9em</xsl:attribute>
-        <xsl:attribute name="space-before.optimum">0.9em</xsl:attribute>
-        <xsl:attribute name="space-before.maximum">0.9em</xsl:attribute>
-        <xsl:attribute name="border-color">#444444</xsl:attribute>
-        <xsl:attribute name="border-style">solid</xsl:attribute>
-        <xsl:attribute name="border-width">0.1pt</xsl:attribute>
-        <xsl:attribute name="padding-top">0.5em</xsl:attribute>
-        <xsl:attribute name="padding-left">0.5em</xsl:attribute>
-        <xsl:attribute name="padding-right">0.5em</xsl:attribute>
-        <xsl:attribute name="padding-bottom">0.5em</xsl:attribute>
-        <xsl:attribute name="margin-left">0.5em</xsl:attribute>
-        <xsl:attribute name="margin-right">0.5em</xsl:attribute>
-    </xsl:attribute-set>
-
-    <!-- Shade (background) programlistings -->
-    <xsl:param name="shade.verbatim">1</xsl:param>
-    <xsl:attribute-set name="shade.verbatim.style">
-        <xsl:attribute name="background-color">#F0F0F0</xsl:attribute>
-    </xsl:attribute-set>
-
-    <!--###################################################
-                        Callouts
-   ################################################### -->
-
-    <!-- Use images for callouts instead of (1) (2) (3) -->
-    <!--<xsl:param name="callout.graphics">0</xsl:param>-->
-    <!--<xsl:param name="callout.unicode">1</xsl:param>-->
-
-    <!-- Place callout marks at this column in annotated areas -->
-    <xsl:param name="callout.defaultcolumn">90</xsl:param>
-
-    <!--###################################################
-                      Admonitions
-   ################################################### -->
-
-    <!-- Use nice graphics for admonitions -->
-    <!--<xsl:param name="admon.graphics">'1'</xsl:param>-->
-    <!--  <xsl:param name="admon.graphics.path">&admon_gfx_path;</xsl:param> -->
-
-    <!--###################################################
-                         Misc
-   ################################################### -->
-
-    <!-- Placement of titles -->
-    <xsl:param name="formal.title.placement">
-        figure after
-        example before
-        equation before
-        table before
-        procedure before
-    </xsl:param>
-
-    <!-- Format Variable Lists as Blocks (prevents horizontal overflow) -->
-    <xsl:param name="variablelist.as.blocks">1</xsl:param>
-
-    <!-- The horrible list spacing problems -->
-    <xsl:attribute-set name="list.block.spacing">
-        <xsl:attribute name="space-before.optimum">0.8em</xsl:attribute>
-        <xsl:attribute name="space-before.minimum">0.8em</xsl:attribute>
-        <xsl:attribute name="space-before.maximum">0.8em</xsl:attribute>
-        <xsl:attribute name="space-after.optimum">0.1em</xsl:attribute>
-        <xsl:attribute name="space-after.minimum">0.1em</xsl:attribute>
-        <xsl:attribute name="space-after.maximum">0.1em</xsl:attribute>
-    </xsl:attribute-set>
-
-    <!--###################################################
-             colored and hyphenated links
-   ################################################### -->
-    <xsl:template match="ulink">
-        <fo:basic-link external-destination="{@url}"
-                       xsl:use-attribute-sets="xref.properties"
-                       text-decoration="underline"
-                       color="blue">
-            <xsl:choose>
-                <xsl:when test="count(child::node())=0">
-                    <xsl:value-of select="@url"/>
-                </xsl:when>
-                <xsl:otherwise>
-                    <xsl:apply-templates/>
-                </xsl:otherwise>
-            </xsl:choose>
-        </fo:basic-link>
-    </xsl:template>
-
-    <xsl:template name="table.frame">
-        <xsl:variable name="frame" select="'all'" />
-
-        <xsl:attribute name="border-start-style">
-            <xsl:value-of select="$table.frame.border.style"/>
-        </xsl:attribute>
-        <xsl:attribute name="border-end-style">
-            <xsl:value-of select="$table.frame.border.style"/>
-        </xsl:attribute>
-        <xsl:attribute name="border-top-style">
-            <xsl:value-of select="$table.frame.border.style"/>
-        </xsl:attribute>
-        <xsl:attribute name="border-bottom-style">
-            <xsl:value-of select="$table.frame.border.style"/>
-        </xsl:attribute>
-        <xsl:attribute name="border-start-width">
-            <xsl:value-of select="$table.frame.border.thickness"/>
-        </xsl:attribute>
-        <xsl:attribute name="border-end-width">
-            <xsl:value-of select="$table.frame.border.thickness"/>
-        </xsl:attribute>
-        <xsl:attribute name="border-top-width">
-            <xsl:value-of select="$table.frame.border.thickness"/>
-        </xsl:attribute>
-        <xsl:attribute name="border-bottom-width">
-            <xsl:value-of select="$table.frame.border.thickness"/>
-        </xsl:attribute>
-        <xsl:attribute name="border-start-color">
-            <xsl:value-of select="$table.frame.border.color"/>
-        </xsl:attribute>
-        <xsl:attribute name="border-end-color">
-            <xsl:value-of select="$table.frame.border.color"/>
-        </xsl:attribute>
-        <xsl:attribute name="border-top-color">
-            <xsl:value-of select="$table.frame.border.color"/>
-        </xsl:attribute>
-        <xsl:attribute name="border-bottom-color">
-            <xsl:value-of select="$table.frame.border.color"/>
-        </xsl:attribute>
-    </xsl:template>
-
-</xsl:stylesheet>

http://git-wip-us.apache.org/repos/asf/cayenne/blob/df1324e4/docs/docbook/getting-started-rop/pom.xml
----------------------------------------------------------------------
diff --git a/docs/docbook/getting-started-rop/pom.xml b/docs/docbook/getting-started-rop/pom.xml
deleted file mode 100644
index 4dcb99f..0000000
--- a/docs/docbook/getting-started-rop/pom.xml
+++ /dev/null
@@ -1,39 +0,0 @@
-<?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.   
--->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-	<parent>
-		<groupId>org.apache.cayenne.docs</groupId>
-		<artifactId>cayenne-docbook</artifactId>
-		<version>4.1.M2-SNAPSHOT</version>
-	</parent>
-	<modelVersion>4.0.0</modelVersion>
-	<artifactId>getting-started-rop</artifactId>
-	<packaging>jar</packaging>
-	<name>getting-started-rop: Docbook - Getting Started with Cayenne ROP</name>
-
-	<build>
-		<resources>
-			<resource>
-				<directory>target/site</directory>
-			</resource>
-		</resources>
-	</build>
-</project>

http://git-wip-us.apache.org/repos/asf/cayenne/blob/df1324e4/docs/docbook/getting-started-rop/src/docbkx/authentication.xml
----------------------------------------------------------------------
diff --git a/docs/docbook/getting-started-rop/src/docbkx/authentication.xml b/docs/docbook/getting-started-rop/src/docbkx/authentication.xml
deleted file mode 100644
index ebf4241..0000000
--- a/docs/docbook/getting-started-rop/src/docbkx/authentication.xml
+++ /dev/null
@@ -1,128 +0,0 @@
-<?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 xmlns="http://docbook.org/ns/docbook"
-    xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0">
-    <title>Adding BASIC Authentication</title>
-    <para>You probably don't want everybody in the world to connect to your service and access (and
-        update!) arbitrary data in the database. The first step in securing Cayenne service is
-        implementing client authentication. The easiest way to do it is to delegate the
-        authentication task to the web container that is running the service. HessianConnection used
-        in the previous chapter supports BASIC authentication on the client side, so we'll
-        demonstrate how to set it up here.</para>
-    <section xml:id="securing-rop-server-app">
-        <title>Securing ROP Server Application</title>
-        <para>Open web.xml file in the server project and setup security constraints with BASIC
-            authentication for the ROP service:</para>
-        <programlisting>&lt;security-constraint&gt;
-    &lt;web-resource-collection&gt;
-        &lt;web-resource-name&gt;CayenneService&lt;/web-resource-name&gt;
-        &lt;url-pattern&gt;/cayenne-service&lt;/url-pattern&gt;
-    &lt;/web-resource-collection&gt;
-    &lt;auth-constraint&gt;
-        &lt;role-name&gt;cayenne-service-user&lt;/role-name&gt;
-    &lt;/auth-constraint&gt;
-&lt;/security-constraint&gt;
-    
-&lt;login-config&gt;
-    &lt;auth-method&gt;BASIC&lt;/auth-method&gt;
-    &lt;realm-name&gt;Cayenne Realm&lt;/realm-name&gt;
-&lt;/login-config&gt;
-
-&lt;security-role&gt;
-    &lt;role-name&gt;cayenne-service-user&lt;/role-name&gt;
-&lt;/security-role&gt;</programlisting>
-    </section>
-    <section xml:id="configuring-jetty">
-        <title>Configuring Jetty for BASIC Authentication</title>
-        
-        <para>
-            <note>
-                <para>These instructions are specific to Jetty 6. Other
-                    containers (and versions of Jetty) will have different mechansims to achieve
-                    the same thing.</para>
-            </note>
-        </para>
-        <para>Open pom.xml in the server project and configure a "userRealm" for the Jetty
-            plugin:</para>
-        <programlisting>&lt;plugin&gt;
-    &lt;groupId&gt;org.mortbay.jetty&lt;/groupId&gt;
-        &lt;artifactId&gt;maven-jetty-plugin&lt;/artifactId&gt;
-        &lt;version&gt;6.1.22&lt;/version&gt;
-        &lt;!-- adding configuration below: --&gt;
-        &lt;configuration&gt;
-            &lt;userRealms&gt;
-                &lt;userRealm implementation="org.mortbay.jetty.security.HashUserRealm"&gt;
-                    &lt;!-- this name must match the realm-name in web.xml --&gt;
-                    &lt;name&gt;Cayenne Realm&lt;/name&gt;
-                    &lt;config&gt;realm.properties&lt;/config&gt;
-                &lt;/userRealm&gt;
-            &lt;/userRealms&gt;
-        &lt;/configuration&gt;
-    &lt;/plugin&gt;
-&lt;/plugins&gt;</programlisting>
-        <para>Now create a new file called {["realm.properties"}} <emphasis role="italic">at the
-                root of the server project</emphasis> and put user login/password in there:</para>
-        <programlisting>cayenne-user: secret,cayenne-service-user</programlisting>
-        <para>.</para>
-        <para>Now let's stop the server and start it again. Everything should start as before, but
-            if you go to <emphasis role="italic"
-                >http://localhost:8080/tutorial/cayenne-service</emphasis>, your browser should pop
-            up authentication dialog. Enter "<emphasis role="italic">cayenne-user/secret</emphasis>"
-            for user name / password, and you should see "<emphasis role="italic">Hessian Requires
-                POST</emphasis>" message. So the server is now secured.</para>
-    </section>
-    <section xml:id="running-client">
-        <title>Running Client with Basic Authentication</title>
-        <para>If you run the client without any changes, you'll get the following error:</para>
-        <programlisting language="java">Mar 01, 2016 7:25:50 PM org.apache.cayenne.rop.http.HttpROPConnector logConnect
-INFO: Connecting to [cayenne-user@http://localhost:8080/tutorial-rop-server/cayenne-service] - dedicated session.
-Mar 01, 2016 7:25:50 PM org.apache.cayenne.rop.HttpClientConnection connect
-INFO: Server returned HTTP response code: 401 for URL: http://localhost:8080/tutorial-rop-server/cayenne-service
-java.rmi.RemoteException: Server returned HTTP response code: 401 for URL: http://localhost:8080/tutorial-rop-server/cayenne-service
-	at org.apache.cayenne.rop.ProxyRemoteService.establishSession(ProxyRemoteService.java:45)
-	at org.apache.cayenne.rop.HttpClientConnection.connect(HttpClientConnection.java:85)
-	at org.apache.cayenne.rop.HttpClientConnection.getServerEventBridge(HttpClientConnection.java:68)
-	at org.apache.cayenne.remote.ClientChannel.setupRemoteChannelListener(ClientChannel.java:279)
-	at org.apache.cayenne.remote.ClientChannel.&lt;init>(ClientChannel.java:71)
-	at org.apache.cayenne.configuration.rop.client.ClientChannelProvider.get(ClientChannelProvider.java:48)
-	at org.apache.cayenne.configuration.rop.client.ClientChannelProvider.get(ClientChannelProvider.java:31)
-	at org.apache.cayenne.di.spi.CustomProvidersProvider.get(CustomProvidersProvider.java:39)
-	at org.apache.cayenne.di.spi.FieldInjectingProvider.get(FieldInjectingProvider.java:43)
-	at org.apache.cayenne.di.spi.DefaultScopeProvider.get(DefaultScopeProvider.java:50)
-	at org.apache.cayenne.di.spi.DefaultInjector.getInstance(DefaultInjector.java:139)
-	at org.apache.cayenne.di.spi.FieldInjectingProvider.value(FieldInjectingProvider.java:105)
-	at org.apache.cayenne.di.spi.FieldInjectingProvider.injectMember(FieldInjectingProvider.java:68)
-	at org.apache.cayenne.di.spi.FieldInjectingProvider.injectMembers(FieldInjectingProvider.java:59)
-	at org.apache.cayenne.di.spi.FieldInjectingProvider.get(FieldInjectingProvider.java:44)
-	at org.apache.cayenne.di.spi.DefaultScopeProvider.get(DefaultScopeProvider.java:50)
-	at org.apache.cayenne.di.spi.DefaultInjector.getInstance(DefaultInjector.java:134)
-	at org.apache.cayenne.configuration.CayenneRuntime.newContext(CayenneRuntime.java:134)
-	at org.apache.cayenne.tutorial.persistent.client.Main.main(Main.java:44)</programlisting>
-        <para>Which is exactly what you'd expect, as the client is not authenticating itself. So
-            change the line in Main.java where we obtained an ROP connection to this:</para>
-        <programlisting language="java">Map&lt;String,String> properties = new HashMap&lt;>();
-properties.put(Constants.ROP_SERVICE_URL_PROPERTY, "http://localhost:8080/tutorial/cayenne-service");
-properties.put(Constants.ROP_SERVICE_USERNAME_PROPERTY, "cayenne-user");
-properties.put(Constants.ROP_SERVICE_PASSWORD_PROPERTY, "secret");
-
-ClientRuntime runtime = new ClientRuntime(properties);</programlisting>
-        <para>Try running again, and everything should work as before. Obviously in production
-            environment, in addition to authentication you'll need to use HTTPS to access the server
-            to prevent third-party eavesdropping on your password and data.</para>
-        <para>Congratulations, you are done with the ROP tutorial!</para>
-    </section>
-</chapter>

http://git-wip-us.apache.org/repos/asf/cayenne/blob/df1324e4/docs/docbook/getting-started-rop/src/docbkx/client-code.xml
----------------------------------------------------------------------
diff --git a/docs/docbook/getting-started-rop/src/docbkx/client-code.xml b/docs/docbook/getting-started-rop/src/docbkx/client-code.xml
deleted file mode 100644
index 76dd9fd..0000000
--- a/docs/docbook/getting-started-rop/src/docbkx/client-code.xml
+++ /dev/null
@@ -1,159 +0,0 @@
-<?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 xmlns="http://docbook.org/ns/docbook"
-    xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0">
-    <title>Porting Existing Code to Connect to a Web Service Instead of a Database</title>
-    <section xml:id="starting-command-line-cliet">
-        <title>Starting Command Line Client</title>
-        <para>One of the benefits of ROP is that the client code is no different from the server
-            code - it uses the same ObjectContext interface for access, same query and commit API.
-            So the code below will be similar to the code presented in the first Cayenne
-                Getting Started Guide, although with a few ROP-specific parts required to bootstrap the
-            ObjectContext.</para>
-        <para>Let's start by creating an empty Main class with the standard main() method in the
-            client project:</para>
-        <programlisting language="java">package org.example.cayenne.persistent.client;
-
-public class Main {
-
-    public static void main(String[] args) {
-
-    }
-}</programlisting>
-        <para>Now the part that is actually different from regular Cayenne - establishing the server
-            connection and obtaining the ObjectContext:</para>
-        <programlisting language="java">Map&lt;String, String> properties = new HashMap&lt;>();
-properties.put(Constants.ROP_SERVICE_URL_PROPERTY, "http://localhost:8080/tutorial/cayenne-service");
-properties.put(Constants.ROP_SERVICE_USERNAME_PROPERTY, "cayenne-user");
-properties.put(Constants.ROP_SERVICE_PASSWORD_PROPERTY, "secret");
-
-ClientRuntime runtime = new ClientRuntime(properties);
-ObjectContext context = runtime.newContext(); </programlisting>
-        <para>Note that the "runtime" can be used to create as many peer ObjectContexts as needed
-            over the same connection, while ObjectContext is a kind of isolated "persistence
-            session", similar to the server-side context. A few more notes. Since we are using
-            HTTP(S) to communicate with ROP server, there's no need to explicitly close the
-            connection (or channel, or context).</para>
-        <para>So now let's do the same persistent operaions that we did in the first tutorial "Main"
-            class. Let's start by creating and saving some objects:</para>
-        <programlisting language="java">// creating new Artist
-Artist picasso = context.newObject(Artist.class);
-picasso.setName("Pablo Picasso");
-
-// Creating other objects
-Gallery metropolitan = context.newObject(Gallery.class);
-metropolitan.setName("Metropolitan Museum of Art");
-
-Painting girl = context.newObject(Painting.class);
-girl.setName("Girl Reading at a Table");
-
-Painting stein = context.newObject(Painting.class);
-stein.setName("Gertrude Stein");
-
-// connecting objects together via relationships
-picasso.addToPaintings(girl);
-picasso.addToPaintings(stein);
-
-girl.setGallery(metropolitan);
-stein.setGallery(metropolitan);
-
-// saving all the changes above
-context.commitChanges();</programlisting>
-        <para>Now let's select them back:</para>
-        <programlisting language="java">// ObjectSelect examples
-List&lt;Painting> paintings1 = ObjectSelect.query(Painting.class).select(context);
-
-List&lt;Painting> paintings2 = ObjectSelect.query(Painting.class)
-        .where(Painting.NAME.likeIgnoreCase("gi%")).select(context); </programlisting>
-        <para>Now, delete:</para>
-        <programlisting language="java">// Delete object example
-Artist picasso = ObjectSelect.query(Artist.class).where(Artist.NAME.eq("Pablo Picasso")).selectOne(context); 
-
-if (picasso != null) {
-    context.deleteObject(picasso);
-    context.commitChanges();
-}</programlisting>
-        <para>This code is exactly the same as in the first tutorial. So now let's try running the
-            client and see what happens. In Eclipse open main class and select "Run &gt; Run As &gt;
-            Java Application" from the menu (assuming the ROP server started in the previous step is
-            still running). You will some output in both server and client process consoles.
-            Client:</para>
-        <programlisting>INFO: Connecting to [http://localhost:8080/tutorial/cayenne-service] - dedicated session.
-INFO: === Connected, session: org.apache.cayenne.remote.RemoteSession@26544ec1[sessionId=17uub1h34r9x1] - took 111 ms.
-INFO: --- Message 0: Bootstrap
-INFO: === Message 0: Bootstrap done - took 58 ms.
-INFO: --- Message 1: flush-cascade-sync
-INFO: === Message 1: flush-cascade-sync done - took 1119 ms.
-INFO: --- Message 2: Query
-INFO: === Message 2: Query done - took 48 ms.
-INFO: --- Message 3: Query
-INFO: === Message 3: Query done - took 63 ms.
-INFO: --- Message 4: Query
-INFO: === Message 4: Query done - took 19 ms.
-INFO: --- Message 5: Query
-INFO: === Message 5: Query done - took 7 ms.
-INFO: --- Message 6: Query
-INFO: === Message 6: Query done - took 5 ms.
-INFO: --- Message 7: Query
-INFO: === Message 7: Query done - took 2 ms.
-INFO: --- Message 8: Query
-INFO: === Message 8: Query done - took 4 ms.
-INFO: --- Message 9: flush-cascade-sync
-INFO: === Message 9: flush-cascade-sync done - took 34 ms.</programlisting>
-        <para>As you see client prints no SQL statmenets, just a bunch of query and flush messages
-            sent to the server. The server side is more verbose, showing the actual client queries
-            executed against the database:</para>
-        <programlisting>...
-INFO: SELECT NEXT_ID FROM AUTO_PK_SUPPORT WHERE TABLE_NAME = ? FOR UPDATE [bind: 1:'ARTIST']
-INFO: SELECT NEXT_ID FROM AUTO_PK_SUPPORT WHERE TABLE_NAME = ? FOR UPDATE [bind: 1:'GALLERY']
-INFO: SELECT NEXT_ID FROM AUTO_PK_SUPPORT WHERE TABLE_NAME = ? FOR UPDATE [bind: 1:'PAINTING']
-INFO: INSERT INTO ARTIST (DATE_OF_BIRTH, ID, NAME) VALUES (?, ?, ?)
-INFO: [batch bind: 1->DATE_OF_BIRTH:NULL, 2->ID:200, 3->NAME:'Pablo Picasso']
-INFO: === updated 1 row.
-INFO: INSERT INTO GALLERY (ID, NAME) VALUES (?, ?)
-INFO: [batch bind: 1->ID:200, 2->NAME:'Metropolitan Museum of Art']
-INFO: === updated 1 row.
-INFO: INSERT INTO PAINTING (ARTIST_ID, GALLERY_ID, ID, NAME) VALUES (?, ?, ?, ?)
-INFO: [batch bind: 1->ARTIST_ID:200, 2->GALLERY_ID:200, 3->ID:200, 4->NAME:'Girl Reading at a Table']
-INFO: [batch bind: 1->ARTIST_ID:200, 2->GALLERY_ID:200, 3->ID:201, 4->NAME:'Gertrude Stein']
-INFO: === updated 2 rows.
-INFO: +++ transaction committed.
-INFO: --- transaction started.
-INFO: SELECT t0.GALLERY_ID, t0.NAME, t0.ARTIST_ID, t0.ID FROM PAINTING t0
-INFO: === returned 2 rows. - took 14 ms.
-INFO: +++ transaction committed.
-INFO: --- transaction started.
-INFO: SELECT t0.GALLERY_ID, t0.NAME, t0.ARTIST_ID, t0.ID FROM PAINTING t0 
-      WHERE UPPER(t0.NAME) LIKE UPPER(?) [bind: 1->NAME:'gi%']
-INFO: === returned 1 row. - took 10 ms.
-INFO: +++ transaction committed.
-INFO: --- transaction started.
-INFO: SELECT t0.DATE_OF_BIRTH, t0.NAME, t0.ID FROM ARTIST t0 WHERE t0.NAME = ? [bind: 1->NAME:'Pablo Picasso']
-INFO: === returned 1 row. - took 8 ms.
-INFO: +++ transaction committed.
-INFO: --- transaction started.
-INFO: DELETE FROM PAINTING WHERE ID = ?
-INFO: [batch bind: 1->ID:200]
-INFO: [batch bind: 1->ID:201]
-INFO: === updated 2 rows.
-INFO: DELETE FROM ARTIST WHERE ID = ?
-INFO: [batch bind: 1->ID:200]
-INFO: === updated 1 row.
-INFO: +++ transaction committed.</programlisting>
-        <para>You are done with the basic ROP client!</para>
-    </section>
-</chapter>