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 2019/11/05 13:27:56 UTC

[cayenne-website] branch asf-site updated: fix legacy docs

This is an automated email from the ASF dual-hosted git repository.

ntimofeev pushed a commit to branch asf-site
in repository https://gitbox.apache.org/repos/asf/cayenne-website.git


The following commit(s) were added to refs/heads/asf-site by this push:
     new 929ee41  fix legacy docs
929ee41 is described below

commit 929ee41bd11d14767636d97978466636036213a6
Author: Nikita Timofeev <st...@gmail.com>
AuthorDate: Tue Nov 5 16:27:49 2019 +0300

    fix legacy docs
---
 .DS_Store                                          |  Bin 0 -> 6148 bytes
 2014/09/cayenne-31-released.html                   |    2 +-
 2015/03/cayenne-40m2-released.html                 |   10 +-
 2016/02/cayenne-40m3-released.html                 |    2 +-
 2016/05/cayenne-311-released.html                  |    2 +-
 2016/12/cayenne-40M4-released.html                 |    2 +-
 2017/03/cayenne-40M5-released.html                 |    2 +-
 2017/06/cayenne-40B1-released.html                 |    2 +-
 2017/10/cayenne-40B2-released.html                 |    2 +-
 2017/10/cayenne-41m1-released.html                 |    2 +-
 2017/11/cayenne-312-released.html                  |    2 +-
 2018/04/cayenne-40rc1-released/index.html          |    2 +-
 2018/07/cayenne-313-released.html                  |    2 +-
 2018/07/cayenne-41m2-released.html                 |   30 +-
 2018/08/cayenne-40-final-released/index.html       |    3 +-
 2018/12/cayenne-401-released/index.html            |    3 +-
 2019/03/cayenne-41b1-released.html                 |    6 +-
 2019/05/cayenne-41b2-released/index.html           |    2 +-
 2019/10/cayenne-402-released/index.html            |    3 +-
 2019/10/cayenne-41rc1-released/index.html          |    6 +-
 2019/10/cayenne-41rc2-released/index.html          |    5 +-
 404.html                                           |    2 +-
 about/index.html                                   |    2 +-
 about/support/index.html                           |    3 +-
 categories/index.html                              |    2 +-
 collaboration/index.html                           |    2 +-
 contributors.html                                  |    2 +-
 database-support.html                              |    2 +-
 dev/building-cayenne.html                          |    4 +-
 dev/cms-guide.html                                 |    6 +-
 dev/code-repository.html                           |    4 +-
 dev/how_development_happens.html                   |    9 +-
 dev/index.html                                     |    2 +-
 dev/release-guide.html                             |   11 +-
 dev/running-unit-tests.html                        |   12 +-
 .../accessing-pk-and-fk-values.html}               |  121 +-
 docs/{4.0/index.html => 1.2/acknowledgments.html}  |   39 +-
 docs/{4.0/index.html => 1.2/ant-tasks.html}        |   61 +-
 .../index.html => 1.2/building-expressions.html}   |  201 +-
 .../index.html => 1.2/caching-lookup-tables.html}  |   47 +-
 .../index.html => 1.2/caching-query-results.html}  |  288 ++-
 docs/{3.1/index.html => 1.2/cayenne-contract.html} |  135 +-
 docs/{4.0/index.html => 1.2/cayenne-datamaps.html} |   41 +-
 .../cayenne-project-structure.html}                |   41 +-
 docs/{4.0/index.html => 1.2/cayenne-projects.html} |   60 +-
 .../cayenne-user-directory.html}                   |   65 +-
 .../cayennemodeler-and-eclipse.html}               |   41 +-
 .../cayennemodeler-flattened-relationships.html}   |   52 +-
 docs/{4.0/index.html => 1.2/cdataport.html}        |   99 +-
 docs/{index.html => 1.2/cdbgen.html}               |  130 +-
 docs/{4.1/index.html => 1.2/cdeploy.html}          |  135 +-
 docs/1.2/cgen.html                                 |  481 +++++
 docs/{4.0/index.html => 1.2/classpath.html}        |   45 +-
 .../index.html => 1.2/common-modeling-tasks.html}  |   41 +-
 .../configuring-caching-behavior.html}             |   67 +-
 .../configuring-deployment-settings.html}          |   43 +-
 .../index.html => 1.2/configuring-logging.html}    |  101 +-
 .../configuring-object-validation.html}            |   39 +-
 .../configuring-transactional-behavior.html}       |   41 +-
 ...converting-an-existing-business-framework.html} |   66 +-
 docs/{4.0/index.html => 1.2/create-datanode.html}  |   53 +-
 .../index.html => 1.2/create-new-project.html}     |   50 +-
 .../customizing-configuration.html}                |  100 +-
 .../index.html => 1.2/customizing-queries.html}    |  125 +-
 docs/{4.0/index.html => 1.2/customizing.html}      |   45 +-
 docs/{4.0/index.html => 1.2/data-rows.html}        |   78 +-
 docs/{4.0/index.html => 1.2/datachannel.html}      |   61 +-
 docs/{4.0/index.html => 1.2/datacontext.html}      |   43 +-
 .../index.html => 1.2/datacontextdelegate.html}    |   58 +-
 .../index.html => 1.2/datacontextfactory.html}     |   41 +-
 docs/{4.0/index.html => 1.2/datanode.html}         |   41 +-
 .../dataobject-state-management.html}              |  163 +-
 .../index.html => 1.2/dataobject-validation.html}  |   89 +-
 docs/{index.html => 1.2/dataobjects-example.html}  |  104 +-
 docs/{4.0/index.html => 1.2/dataobjects.html}      |   44 +-
 docs/{4.0/index.html => 1.2/dataobjectutils.html}  |   61 +-
 docs/{4.0/index.html => 1.2/datasource.html}       |   42 +-
 .../{4.0/index.html => 1.2/dataview-concepts.html} |   84 +-
 .../index.html => 1.2/dataviews-in-action.html}    |   90 +-
 docs/{4.0/index.html => 1.2/dataviews.html}        |   48 +-
 docs/{4.0/index.html => 1.2/dbadapter.html}        |   58 +-
 docs/{4.0/index.html => 1.2/delete-rules.html}     |   60 +-
 docs/{4.0/index.html => 1.2/deleting-objects.html} |   78 +-
 .../index.html => 1.2/deployment-with-ant.html}    |   47 +-
 docs/{4.0/index.html => 1.2/deployment.html}       |   52 +-
 docs/{4.0/index.html => 1.2/design.html}           |   52 +-
 .../index.html => 1.2/dvmodeler-gui-tool.html}     |   52 +-
 docs/{4.0/index.html => 1.2/entityresolver.html}   |   41 +-
 docs/{4.0/index.html => 1.2/event-package.html}    |   51 +-
 .../executing-a-stored-procedure.html}             |   98 +-
 .../expression-factory-utilities.html}             |  131 +-
 docs/{4.0/index.html => 1.2/expressions.html}      |   42 +-
 docs/{4.0/index.html => 1.2/extended-types.html}   |   59 +-
 .../flattened-relationships.html}                  |   40 +-
 .../index.html => 1.2/general-navigation.html}     |   88 +-
 .../index.html => 1.2/general-preferences.html}    |   41 +-
 .../generate-database-schema.html}                 |   47 +-
 .../index.html => 1.2/generate-java-classes.html}  |   61 +-
 .../generate-primary-key-support.html}             |   51 +-
 docs/{index.html => 1.2/generated-columns.html}    |   91 +-
 .../generic-persistent-class.html}                 |  113 +-
 .../index.html => 1.2/guide-to-11-features.html}   |  297 +--
 .../index.html => 1.2/guide-to-12-features.html}   |  318 +--
 .../index.html => 1.2/handling-inheritance.html}   |  250 +--
 .../index.html => 1.2/in-memory-evaluation.html}   |   91 +-
 docs/1.2/index.html                                |   25 +-
 docs/{4.0/index.html => 1.2/installation.html}     |   62 +-
 .../introduction-to-cayennemodeler.html}           |   55 +-
 docs/{4.0/index.html => 1.2/introduction.html}     |   56 +-
 .../iterating-through-data-rows.html}              |   90 +-
 .../jar-files-and-dependencies.html}               |   88 +-
 .../java-interface-to-an-existing-database.html}   |   50 +-
 docs/{4.0/index.html => 1.2/license.html}          |   94 +-
 .../{4.0/index.html => 1.2/local-datasources.html} |   43 +-
 .../many-to-many-relationships.html}               |   46 +-
 docs/{4.0/index.html => 1.2/modeler-guide.html}    |   57 +-
 .../modeling-database-layer.html}                  |   43 +-
 .../index.html => 1.2/modeling-inheritance.html}   |   86 +-
 .../index.html => 1.2/modeling-object-layer.html}  |   40 +-
 .../index.html => 1.2/modeling-objentities.html}   |   56 +-
 docs/1.2/{index.html => modeling-queries.html}     |   36 +-
 .../modeling-remote-persistence.html}              |   54 +-
 docs/{4.0/index.html => 1.2/modeling-tips.html}    |   50 +-
 .../moving-objects-between-contexts.html}          |   58 +-
 docs/{4.0/index.html => 1.2/namedquery.html}       |   50 +-
 docs/{index.html => 1.2/nested-datacontexts.html}  |   87 +-
 docs/{4.0/index.html => 1.2/new-system.html}       |   50 +-
 docs/{4.0/index.html => 1.2/null-handling.html}    |   48 +-
 docs/{index.html => 1.2/object-caching.html}       |  108 +-
 docs/{4.0/index.html => 1.2/objectcontext.html}    |   41 +-
 docs/{4.0/index.html => 1.2/objectidquery.html}    |   95 +-
 .../index.html => 1.2/obtaining-datacontext.html}  |  109 +-
 docs/{4.0/index.html => 1.2/orm-case-study.html}   |   53 +-
 .../{4.0/index.html => 1.2/paginated-queries.html} |   80 +-
 .../index.html => 1.2/parameterized-queries.html}  |  115 +-
 docs/{4.0/index.html => 1.2/path-expressions.html} |   69 +-
 .../index.html => 1.2/performance-tuning.html}     |   49 +-
 .../persistent-object-lifecycle.html}              |   48 +-
 .../{4.0/index.html => 1.2/preferences-panel.html} |   51 +-
 docs/{4.0/index.html => 1.2/prefetching.html}      |  157 +-
 .../index.html => 1.2/primary-key-generation.html} |  106 +-
 .../index.html => 1.2/qualifier-expressions.html}  |   55 +-
 .../queries-stored-in-datamap.html}                |   66 +-
 docs/{3.1/index.html => 1.2/queries.html}          |   65 +-
 docs/{4.0/index.html => 1.2/querychain.html}       |   49 +-
 docs/{4.0/index.html => 1.2/quick-start.html}      |   78 +-
 .../{4.0/index.html => 1.2/relationshipquery.html} |   45 +-
 docs/{4.0/index.html => 1.2/relationships.html}    |   80 +-
 ...mote-object-persistence-client-deployment.html} |   79 +-
 .../remote-object-persistence-coding-client.html}  |  107 +-
 .../remote-object-persistence-coding-server.html}  |   39 +-
 ...l => remote-object-persistence-comparison.html} |   36 +-
 .../remote-object-persistence-cws-deployment.html} |  144 +-
 .../remote-object-persistence-features.html}       |   54 +-
 .../remote-object-persistence-guide.html}          |   56 +-
 .../remote-object-persistence-installation.html}   |   57 +-
 .../remote-object-persistence-introduction.html}   |   52 +-
 .../remote-object-persistence-limitations.html}    |   51 +-
 .../remote-object-persistence-quick-start.html}    |   54 +-
 .../remote-object-persistence-security.html}       |   46 +-
 ...bject-persistence-tutorial-authentication.html} |  307 +--
 ...e-object-persistence-tutorial-client-code.html} |  299 +--
 ...bject-persistence-tutorial-client-project.html} |   92 +-
 .../remote-object-persistence-tutorial-setup.html} |   52 +-
 ...te-object-persistence-tutorial-webservice.html} |  123 +-
 .../reverse-engineer-database.html}                |   54 +-
 .../running-cayennemodeler.html}                   |   88 +-
 docs/{4.0/index.html => 1.2/running-queries.html}  |  104 +-
 .../index.html => 1.2/runtime-components.html}     |   66 +-
 docs/1.2/scripting-sqltemplate.html                |  474 +++++
 .../{4.0/index.html => 1.2/selecting-objects.html} |   69 +-
 .../selectquery-customization.html}                |   54 +-
 docs/{4.0/index.html => 1.2/selectquery.html}      |  104 +-
 .../setting-datamap-defaults.html}                 |   66 +-
 .../{4.0/index.html => 1.2/sqltemplate-query.html} |  101 +-
 .../standalone-applications.html}                  |   73 +-
 .../stored-procedures-and-transactions.html}       |   39 +-
 .../{4.0/index.html => 1.2/stored-procedures.html} |   40 +-
 .../index.html => 1.2/swing-applications.html}     |   46 +-
 .../index.html => 1.2/to-dep-pk-checkbox.html}     |   48 +-
 .../turning-off-context-synchronization.html}      |   57 +-
 .../index.html => 1.2/tutorial-datacontext.html}   |   92 +-
 .../index.html => 1.2/tutorial-dataobjects.html}   |  157 +-
 docs/{4.0/index.html => 1.2/tutorial-delete.html}  |   93 +-
 ...torial-generate-database-and-java-classes.html} |   80 +-
 .../index.html => 1.2/tutorial-mapping-query.html} |  103 +-
 .../tutorial-object-relational-mapping.html}       |   97 +-
 .../index.html => 1.2/tutorial-selectquery.html}   |  100 +-
 docs/{4.0/index.html => 1.2/tutorial-setup.html}   |   77 +-
 .../tutorial-starting-mapping-project.html}        |   85 +-
 docs/1.2/tutorial-webapp.html                      |  499 +++++
 .../understanding-transactions.html}               |  300 +--
 docs/{4.0/index.html => 1.2/upgrade.html}          |  141 +-
 .../index.html => 1.2/user-guide.html}             |  184 +-
 docs/{index.html => 1.2/using-jndi.html}           |  136 +-
 docs/{4.0/index.html => 1.2/using-orderings.html}  |   82 +-
 docs/{4.0/index.html => 1.2/web-applications.html} |  108 +-
 .../accessing-pk-and-fk-values.html}               |  116 +-
 docs/{4.0/index.html => 2.0/acknowledgments.html}  |   38 +-
 docs/{index.html => 2.0/ant-tasks.html}            |   75 +-
 .../bnf-for-expressionparser.html}                 |   76 +-
 .../index.html => 2.0/building-expressions.html}   |  204 +-
 .../index.html => 2.0/caching-lookup-tables.html}  |   47 +-
 .../index.html => 2.0/caching-query-results.html}  |  287 ++-
 docs/{3.1/index.html => 2.0/cayenne-contract.html} |  134 +-
 docs/{4.0/index.html => 2.0/cayenne-datamaps.html} |   41 +-
 .../cayenne-project-structure.html}                |   44 +-
 docs/{index.html => 2.0/cayenne-projects.html}     |   65 +-
 .../index.html => 2.0/cayenne-user-directory.html} |   58 +-
 .../cayennemodeler-and-eclipse.html}               |   41 +-
 .../cayennemodeler-flattened-relationships.html}   |   58 +-
 docs/{4.0/index.html => 2.0/cdataport.html}        |  102 +-
 docs/{4.0/index.html => 2.0/cdbgen.html}           |  127 +-
 docs/{4.1/index.html => 2.0/cdeploy.html}          |  137 +-
 docs/2.0/cgen.html                                 |  471 +++++
 docs/{4.0/index.html => 2.0/classpath.html}        |   45 +-
 .../index.html => 2.0/common-modeling-tasks.html}  |   52 +-
 .../configuring-caching-behavior.html}             |   73 +-
 .../configuring-deployment-settings.html}          |   50 +-
 .../index.html => 2.0/configuring-logging.html}    |  100 +-
 .../configuring-object-validation.html}            |   39 +-
 .../configuring-transactional-behavior.html}       |   41 +-
 ...converting-an-existing-business-framework.html} |   66 +-
 ....html => copy-of-bnf-for-expressionparser.html} |   34 +-
 docs/{index.html => 2.0/create-datanode.html}      |   59 +-
 .../index.html => 2.0/create-new-project.html}     |   50 +-
 .../customizing-configuration.html}                |   93 +-
 docs/{index.html => 2.0/customizing-queries.html}  |  130 +-
 docs/{4.0/index.html => 2.0/customizing.html}      |   45 +-
 docs/{index.html => 2.0/data-rows.html}            |   83 +-
 docs/{4.0/index.html => 2.0/datachannel.html}      |   60 +-
 docs/{index.html => 2.0/datacontext.html}          |   59 +-
 docs/{index.html => 2.0/datacontextdelegate.html}  |   64 +-
 .../index.html => 2.0/datacontextfactory.html}     |   40 +-
 docs/{4.0/index.html => 2.0/datanode.html}         |   40 +-
 .../dataobject-state-management.html}              |  162 +-
 .../index.html => 2.0/dataobject-validation.html}  |   89 +-
 .../index.html => 2.0/dataobjects-example.html}    |   97 +-
 docs/{index.html => 2.0/dataobjects.html}          |   63 +-
 docs/{index.html => 2.0/dataobjectutils.html}      |   70 +-
 docs/{4.0/index.html => 2.0/datasource.html}       |   40 +-
 .../{4.0/index.html => 2.0/dataview-concepts.html} |   84 +-
 .../index.html => 2.0/dataviews-in-action.html}    |   90 +-
 docs/{index.html => 2.0/dataviews.html}            |   62 +-
 docs/{index.html => 2.0/dbadapter.html}            |   63 +-
 .../index.html => 2.0/dbcpdatasourcefactory.html}  |  353 ++--
 docs/{index.html => 2.0/delete-rules.html}         |   66 +-
 docs/{4.0/index.html => 2.0/deleting-objects.html} |   80 +-
 .../index.html => 2.0/deployment-with-ant.html}    |   47 +-
 docs/{index.html => 2.0/deployment.html}           |   69 +-
 docs/{4.0/index.html => 2.0/design.html}           |   49 +-
 .../index.html => 2.0/dvmodeler-gui-tool.html}     |   51 +-
 docs/{4.0/index.html => 2.0/entityresolver.html}   |   40 +-
 docs/{index.html => 2.0/event-package.html}        |   57 +-
 .../executing-a-stored-procedure.html}             |  104 +-
 .../expression-factory-utilities.html}             |  142 +-
 docs/{4.0/index.html => 2.0/expressions.html}      |   50 +-
 docs/{index.html => 2.0/extended-types.html}       |   65 +-
 .../flattened-relationships.html}                  |   40 +-
 docs/{index.html => 2.0/general-navigation.html}   |   93 +-
 .../index.html => 2.0/general-preferences.html}    |   41 +-
 .../generate-database-schema.html}                 |   47 +-
 .../{index.html => 2.0/generate-java-classes.html} |   67 +-
 .../generate-primary-key-support.html}             |   57 +-
 .../{4.0/index.html => 2.0/generated-columns.html} |   85 +-
 .../generic-persistent-class.html}                 |  115 +-
 .../index.html => 2.0/guide-to-11-features.html}   |  302 +--
 .../index.html => 2.0/guide-to-12-features.html}   |  318 +--
 .../index.html => 2.0/handling-inheritance.html}   |  250 +--
 docs/{index.html => 2.0/in-memory-evaluation.html} |   97 +-
 docs/2.0/index.html                                |   25 +-
 docs/{index.html => 2.0/installation.html}         |   73 +-
 .../introduction-to-cayennemodeler.html}           |   69 +-
 docs/{index.html => 2.0/introduction.html}         |   60 +-
 .../iterating-through-data-rows.html}              |   95 +-
 .../jar-files-and-dependencies.html}               |   94 +-
 .../java-interface-to-an-existing-database.html}   |   50 +-
 docs/2.0/license.html                              |  495 +++++
 .../{4.0/index.html => 2.0/local-datasources.html} |   43 +-
 .../many-to-many-relationships.html}               |   46 +-
 docs/{4.0/index.html => 2.0/modeler-guide.html}    |   56 +-
 .../modeling-database-layer.html}                  |   48 +-
 docs/{index.html => 2.0/modeling-inheritance.html} |   92 +-
 .../index.html => 2.0/modeling-object-layer.html}  |   50 +-
 docs/{index.html => 2.0/modeling-objentities.html} |   61 +-
 docs/2.0/{index.html => modeling-queries.html}     |   36 +-
 .../modeling-remote-persistence.html}              |   54 +-
 docs/{4.0/index.html => 2.0/modeling-tips.html}    |   50 +-
 .../moving-objects-between-contexts.html}          |   64 +-
 docs/{4.0/index.html => 2.0/namedquery.html}       |   50 +-
 .../index.html => 2.0/nested-datacontexts.html}    |   81 +-
 docs/{4.0/index.html => 2.0/new-system.html}       |   50 +-
 docs/{4.0/index.html => 2.0/null-handling.html}    |   48 +-
 docs/{4.0/index.html => 2.0/object-caching.html}   |  102 +-
 docs/{4.0/index.html => 2.0/objectcontext.html}    |   40 +-
 docs/{index.html => 2.0/objectidquery.html}        |  101 +-
 .../{index.html => 2.0/obtaining-datacontext.html} |  118 +-
 docs/{index.html => 2.0/orm-case-study.html}       |   66 +-
 docs/{index.html => 2.0/paginated-queries.html}    |   85 +-
 .../index.html => 2.0/parameterized-queries.html}  |  114 +-
 docs/{index.html => 2.0/path-expressions.html}     |   75 +-
 docs/{index.html => 2.0/performance-tuning.html}   |   65 +-
 .../persistent-object-lifecycle.html}              |   47 +-
 docs/{index.html => 2.0/preferences-panel.html}    |   64 +-
 docs/{4.0/index.html => 2.0/prefetching.html}      |  163 +-
 .../index.html => 2.0/primary-key-generation.html} |  110 +-
 .../{index.html => 2.0/qualifier-expressions.html} |   61 +-
 .../queries-stored-in-datamap.html}                |   72 +-
 docs/{4.0/index.html => 2.0/queries.html}          |   82 +-
 docs/{4.0/index.html => 2.0/querychain.html}       |   49 +-
 docs/{index.html => 2.0/quick-start.html}          |   70 +-
 .../{4.0/index.html => 2.0/relationshipquery.html} |   45 +-
 docs/{index.html => 2.0/relationships.html}        |   87 +-
 ...mote-object-persistence-client-deployment.html} |   85 +-
 .../remote-object-persistence-coding-client.html}  |  101 +-
 .../remote-object-persistence-coding-server.html}  |   38 +-
 ...l => remote-object-persistence-comparison.html} |   36 +-
 .../remote-object-persistence-cws-deployment.html} |  143 +-
 .../remote-object-persistence-features.html}       |   54 +-
 .../remote-object-persistence-guide.html}          |   61 +-
 .../remote-object-persistence-installation.html}   |   63 +-
 .../remote-object-persistence-introduction.html}   |   58 +-
 .../remote-object-persistence-limitations.html}    |   51 +-
 .../remote-object-persistence-quick-start.html}    |   63 +-
 .../remote-object-persistence-security.html}       |   45 +-
 ...bject-persistence-tutorial-authentication.html} |  180 +-
 ...e-object-persistence-tutorial-client-code.html} |  172 +-
 ...bject-persistence-tutorial-client-project.html} |   98 +-
 .../remote-object-persistence-tutorial-setup.html} |   58 +-
 ...te-object-persistence-tutorial-webservice.html} |  122 +-
 .../reverse-engineer-database.html}                |   60 +-
 .../index.html => 2.0/running-cayennemodeler.html} |   81 +-
 docs/{index.html => 2.0/running-queries.html}      |  110 +-
 docs/{index.html => 2.0/runtime-components.html}   |   67 +-
 docs/2.0/scripting-sqltemplate.html                |  474 +++++
 docs/{index.html => 2.0/selecting-objects.html}    |   75 +-
 .../selectquery-customization.html}                |   59 +-
 docs/{index.html => 2.0/selectquery.html}          |  110 +-
 .../setting-datamap-defaults.html}                 |   72 +-
 .../{4.0/index.html => 2.0/sqltemplate-query.html} |  100 +-
 .../standalone-applications.html}                  |   78 +-
 .../stored-procedures-and-transactions.html}       |   39 +-
 .../{4.0/index.html => 2.0/stored-procedures.html} |   46 +-
 docs/{index.html => 2.0/swing-applications.html}   |   52 +-
 .../index.html => 2.0/to-dep-pk-checkbox.html}     |   48 +-
 .../turning-off-context-synchronization.html}      |   63 +-
 docs/{index.html => 2.0/tutorial-datacontext.html} |   97 +-
 .../index.html => 2.0/tutorial-dataobjects.html}   |  156 +-
 docs/{index.html => 2.0/tutorial-delete.html}      |   99 +-
 ...torial-generate-database-and-java-classes.html} |   80 +-
 .../index.html => 2.0/tutorial-mapping-query.html} |  103 +-
 .../tutorial-object-relational-mapping.html}       |   97 +-
 .../index.html => 2.0/tutorial-selectquery.html}   |  100 +-
 docs/{index.html => 2.0/tutorial-setup.html}       |   82 +-
 .../tutorial-starting-mapping-project.html}        |   79 +-
 docs/2.0/tutorial-webapp.html                      |  498 +++++
 .../understanding-transactions.html}               |  299 +--
 docs/{4.0/index.html => 2.0/upgrade.html}          |  159 +-
 .../index.html => 2.0/user-guide.html}             |  184 +-
 docs/{4.0/index.html => 2.0/using-jndi.html}       |  130 +-
 docs/{index.html => 2.0/using-orderings.html}      |   87 +-
 docs/{index.html => 2.0/web-applications.html}     |  113 +-
 .../accessing-pk-and-fk-values.html}               |  116 +-
 .../index.html => 3.0/advanced-sqltemplate.html}   |   83 +-
 docs/{3.1/index.html => 3.0/ant-tasks.html}        |   83 +-
 .../bnf-for-expressionparser.html}                 |   83 +-
 .../index.html => 3.0/building-expressions.html}   |  204 +-
 .../index.html => 3.0/caching-and-fresh-data.html} |   62 +-
 .../index.html => 3.0/caching-lookup-tables.html}  |   46 +-
 .../index.html => 3.0/caching-query-results.html}  |  128 +-
 .../{3.1/index.html => 3.0/cayenne-and-maven.html} |   54 +-
 docs/{3.1/index.html => 3.0/cayenne-contract.html} |  134 +-
 docs/{3.1/index.html => 3.0/cayenne-datamaps.html} |   40 +-
 docs/{3.1/index.html => 3.0/cayenne-guide.html}    |   59 +-
 .../cayenne-project-structure.html}                |   48 +-
 docs/{3.1/index.html => 3.0/cayenne-projects.html} |   58 +-
 .../index.html => 3.0/cayenne-user-directory.html} |   55 +-
 .../cayennemodeler-flattened-relationships.html}   |   53 +-
 docs/{3.1/index.html => 3.0/cdataport.html}        |   93 +-
 docs/{3.1/index.html => 3.0/cdbgen.html}           |  127 +-
 docs/{3.1/index.html => 3.0/cdbimport.html}        |  129 +-
 docs/{3.1/index.html => 3.0/cdeploy.html}          |  127 +-
 docs/3.0/cgen.html                                 |  474 +++++
 docs/{3.1/index.html => 3.0/classpath.html}        |   44 +-
 .../index.html => 3.0/common-modeling-tasks.html}  |   53 +-
 .../index.html => 3.0/comparing-dataobjects.html}  |   47 +-
 .../configuring-caching-behavior.html}             |   74 +-
 .../configuring-deployment-settings.html}          |   51 +-
 .../index.html => 3.0/configuring-logging.html}    |   54 +-
 .../configuring-object-validation.html}            |   38 +-
 .../configuring-transactional-behavior.html}       |   40 +-
 ...converting-an-existing-business-framework.html} |   65 +-
 docs/{3.1/index.html => 3.0/create-datanode.html}  |   52 +-
 .../index.html => 3.0/create-new-project.html}     |   49 +-
 .../custom-batchquerybuilder-factory.html}         |   66 +-
 docs/{3.1/index.html => 3.0/custom-dbadapter.html} |   75 +-
 .../custom-query-cache-provider.html}              |   58 +-
 docs/{3.1/index.html => 3.0/customization.html}    |   49 +-
 .../customizing-configuration.html}                |   97 +-
 .../index.html => 3.0/customizing-queries.html}    |  123 +-
 docs/{3.1/index.html => 3.0/data-rows.html}        |   77 +-
 docs/3.0/database-support.html                     |  701 +++++++
 docs/{3.1/index.html => 3.0/datachannel.html}      |   59 +-
 docs/{3.1/index.html => 3.0/datacontext.html}      |   54 +-
 .../index.html => 3.0/datacontextdelegate.html}    |   57 +-
 .../index.html => 3.0/datacontextfactory.html}     |   39 +-
 docs/{3.1/index.html => 3.0/datanode.html}         |   39 +-
 .../dataobject-state-management.html}              |  162 +-
 .../index.html => 3.0/dataobject-validation.html}  |   98 +-
 .../index.html => 3.0/dataobjects-example.html}    |   97 +-
 docs/{3.1/index.html => 3.0/dataobjects.html}      |   59 +-
 docs/{3.1/index.html => 3.0/dataobjectutils.html}  |   63 +-
 docs/{3.1/index.html => 3.0/datasource.html}       |   40 +-
 docs/{3.1/index.html => 3.0/dbadapter.html}        |   56 +-
 .../index.html => 3.0/dbcpdatasourcefactory.html}  |  229 ++-
 docs/{3.1/index.html => 3.0/delete-rules.html}     |   59 +-
 docs/{3.1/index.html => 3.0/deleting-objects.html} |   79 +-
 docs/{3.1/index.html => 3.0/deployment.html}       |   64 +-
 docs/{3.1/index.html => 3.0/design.html}           |   49 +-
 docs/{3.1/index.html => 3.0/ejbqlquery.html}       |   95 +-
 docs/{3.1/index.html => 3.0/entityresolver.html}   |   39 +-
 docs/{3.1/index.html => 3.0/event-package.html}    |   50 +-
 .../executing-a-stored-procedure.html}             |   97 +-
 .../expression-factory-utilities.html}             |  142 +-
 docs/{3.1/index.html => 3.0/expressions.html}      |   53 +-
 docs/{3.1/index.html => 3.0/extended-types.html}   |   62 +-
 .../flattened-relationships.html}                  |   56 +-
 .../index.html => 3.0/general-navigation.html}     |   88 +-
 .../index.html => 3.0/general-preferences.html}    |   40 +-
 .../generate-database-schema.html}                 |   46 +-
 .../index.html => 3.0/generate-java-classes.html}  |   60 +-
 .../generate-primary-key-support.html}             |   49 +-
 .../{3.1/index.html => 3.0/generated-columns.html} |   84 +-
 .../generic-persistent-class.html}                 |  126 +-
 .../index.html => 3.0/guide-to-11-features.html}   |  175 +-
 .../index.html => 3.0/guide-to-12-features.html}   |  191 +-
 docs/3.0/guide-to-30-features.html                 |  535 +++++
 .../index.html => 3.0/handling-inheritance.html}   |   92 +-
 .../index.html => 3.0/in-memory-evaluation.html}   |   90 +-
 docs/3.0/index.html                                |   25 +-
 .../individual-object-caching.html}                |   88 +-
 .../index.html => 3.0/inheritance-overview.html}   |  125 +-
 docs/{3.1/index.html => 3.0/installation.html}     |   71 +-
 .../introduction-to-cayennemodeler.html}           |   62 +-
 docs/{3.1/index.html => 3.0/introduction.html}     |   55 +-
 .../iterating-through-data-rows.html}              |   90 +-
 .../jar-files-and-dependencies.html}               |   79 +-
 .../java-interface-to-an-existing-database.html}   |   49 +-
 docs/3.0/license.html                              |  494 +++++
 .../index.html => 3.0/lifecycle-callbacks.html}    |  389 ++--
 .../{3.1/index.html => 3.0/local-datasources.html} |   42 +-
 .../many-to-many-relationships.html}               |   44 +-
 docs/{3.1/index.html => 3.0/maven2-cdbgen.html}    |  162 +-
 docs/{3.1/index.html => 3.0/maven2-cdbimport.html} |  171 +-
 docs/3.0/maven2-cgen.html                          |  483 +++++
 docs/{3.1/index.html => 3.0/maven2-modeler.html}   |   60 +-
 docs/{3.1/index.html => 3.0/maven2-plugins.html}   |  108 +-
 ...igrate-changes-between-model-and-database.html} |   70 +-
 docs/{3.1/index.html => 3.0/modeler-guide.html}    |   55 +-
 .../modeling-database-layer.html}                  |   49 +-
 .../index.html => 3.0/modeling-embeddables.html}   |   55 +-
 .../index.html => 3.0/modeling-enumerations.html}  |   64 +-
 .../index.html => 3.0/modeling-inheritance.html}   |  110 +-
 .../index.html => 3.0/modeling-object-layer.html}  |   53 +-
 .../index.html => 3.0/modeling-objentities.html}   |   54 +-
 docs/{3.1/index.html => 3.0/modeling-queries.html} |   38 +-
 .../modeling-remote-persistence.html}              |   53 +-
 .../modeling-single-table-inheritance.html}        |   68 +-
 docs/{3.1/index.html => 3.0/modeling-tips.html}    |   47 +-
 .../modeling-vertical-inheritance.html}            |   51 +-
 .../moving-objects-between-contexts.html}          |   57 +-
 docs/{3.1/index.html => 3.0/namedquery.html}       |   49 +-
 docs/{3.1/index.html => 3.0/nested-contexts.html}  |   88 +-
 docs/{3.1/index.html => 3.0/new-system.html}       |   49 +-
 docs/{3.1/index.html => 3.0/null-handling.html}    |   53 +-
 .../objectcontext-memory-management.html}          |   60 +-
 docs/{3.1/index.html => 3.0/objectcontext.html}    |   39 +-
 docs/{3.1/index.html => 3.0/objectidquery.html}    |   91 +-
 .../index.html => 3.0/obtaining-datacontext.html}  |  105 +-
 docs/{3.1/index.html => 3.0/orm-case-study.html}   |   61 +-
 docs/{3.1/index.html => 3.0/overview.html}         |   70 +-
 .../{3.1/index.html => 3.0/paginated-queries.html} |   79 +-
 .../index.html => 3.0/parameterized-queries.html}  |  116 +-
 docs/{3.1/index.html => 3.0/path-expressions.html} |   87 +-
 .../index.html => 3.0/performance-tuning.html}     |   59 +-
 .../persistent-object-lifecycle.html}              |   89 +-
 .../{3.1/index.html => 3.0/preferences-panel.html} |   58 +-
 docs/{3.1/index.html => 3.0/prefetching.html}      |  142 +-
 .../index.html => 3.0/primary-key-generation.html} |  112 +-
 .../index.html => 3.0/qualifier-expressions.html}  |   55 +-
 .../queries-stored-in-datamap.html}                |   65 +-
 docs/{3.1/index.html => 3.0/queries.html}          |   80 +-
 .../index.html => 3.0/query-result-caching.html}   |  142 +-
 docs/{3.1/index.html => 3.0/querychain.html}       |   48 +-
 .../{3.1/index.html => 3.0/relationshipquery.html} |   44 +-
 docs/{3.1/index.html => 3.0/relationships.html}    |  148 +-
 ...mote-object-persistence-client-deployment.html} |   78 +-
 .../remote-object-persistence-coding-client.html}  |  100 +-
 .../remote-object-persistence-coding-server.html}  |   54 +-
 .../remote-object-persistence-comparison.html}     |   44 +-
 .../remote-object-persistence-customization.html}  |   69 +-
 .../remote-object-persistence-cws-deployment.html} |  142 +-
 .../remote-object-persistence-features.html}       |   53 +-
 .../remote-object-persistence-guide.html}          |   55 +-
 .../remote-object-persistence-installation.html}   |   63 +-
 .../remote-object-persistence-introduction.html}   |   50 +-
 ...te-object-persistence-lifecycle-callbacks.html} |   39 +-
 .../remote-object-persistence-limitations.html}    |   47 +-
 .../remote-object-persistence-quick-start.html}    |   37 +-
 .../remote-object-persistence-security.html}       |   44 +-
 ...bject-persistence-tutorial-authentication.html} |  153 +-
 ...e-object-persistence-tutorial-client-code.html} |  198 +-
 ...bject-persistence-tutorial-client-project.html} |  114 +-
 ...object-persistence-tutorial-prerequisites.html} |   52 +-
 .../remote-object-persistence-tutorial-setup.html} |   37 +-
 ...te-object-persistence-tutorial-webservice.html} |  150 +-
 .../remote-object-persistence-tutorial.html}       |   50 +-
 .../reverse-engineer-database.html}                |   60 +-
 .../index.html => 3.0/running-cayennemodeler.html} |   53 +-
 docs/{3.1/index.html => 3.0/running-queries.html}  |  103 +-
 .../index.html => 3.0/runtime-components.html}     |   63 +-
 docs/3.0/scripting-sqltemplate.html                |  530 +++++
 .../{3.1/index.html => 3.0/selecting-objects.html} |   63 +-
 .../selectquery-customization.html}                |   52 +-
 docs/{3.1/index.html => 3.0/selectquery.html}      |  115 +-
 .../setting-datamap-defaults.html}                 |   65 +-
 .../index.html => 3.0/sqltemplate-basics.html}     |   98 +-
 .../{3.1/index.html => 3.0/sqltemplate-query.html} |   47 +-
 .../sqltemplate-result-mapping.html}               |  113 +-
 .../standalone-applications.html}                  |   74 +-
 .../stored-procedures-and-transactions.html}       |   38 +-
 .../{3.1/index.html => 3.0/stored-procedures.html} |   47 +-
 .../index.html => 3.0/to-dep-pk-checkbox.html}     |   47 +-
 .../turning-off-context-synchronization.html}      |   56 +-
 .../index.html => 3.0/tutorial-dataobjects.html}   |   37 +-
 docs/{3.1/index.html => 3.0/tutorial-delete.html}  |   97 +-
 ...torial-generate-database-and-java-classes.html} |   37 +-
 .../index.html => 3.0/tutorial-java-classes.html}  |   85 +-
 .../index.html => 3.0/tutorial-mapping-query.html} |   37 +-
 .../tutorial-object-relational-mapping.html}       |  102 +-
 .../index.html => 3.0/tutorial-objectcontext.html} |  122 +-
 .../tutorial-persistent-objects.html}              |  176 +-
 .../index.html => 3.0/tutorial-selectquery.html}   |  103 +-
 docs/{3.1/index.html => 3.0/tutorial-setup.html}   |   55 +-
 .../tutorial-starting-project.html}                |   97 +-
 docs/3.0/tutorial-webapp.html                      |  559 ++++++
 docs/{3.1/index.html => 3.0/tutorial.html}         |   64 +-
 .../understanding-transactions.html}               |  173 +-
 docs/{3.1/index.html => 3.0/upgrade.html}          |  236 ++-
 docs/{3.1/index.html => 3.0/using-jndi.html}       |   95 +-
 docs/{3.1/index.html => 3.0/using-orderings.html}  |  102 +-
 docs/{3.1/index.html => 3.0/web-applications.html} |  110 +-
 docs/3.1/cayenne-guide/index.html                  |    4 +-
 docs/3.1/getting-started-guide/index.html          |    4 +-
 docs/3.1/getting-started-rop/index.html            |    4 +-
 docs/3.1/index.html                                |    4 +-
 docs/3.1/upgrade-guide/index.html                  |    4 +-
 docs/4.0/cayenne-guide/index.html                  |    4 +-
 docs/4.0/getting-started-guide/index.html          |    4 +-
 docs/4.0/getting-started-rop/index.html            |    4 +-
 docs/4.0/index.html                                |    4 +-
 docs/4.0/upgrade-guide/index.html                  |    4 +-
 docs/4.1/cayenne-guide/index.html                  |    8 +-
 docs/4.1/getting-started-db-first/index.html       |    4 +-
 docs/4.1/getting-started-guide/index.html          |    4 +-
 docs/4.1/getting-started-rop/index.html            |    4 +-
 docs/4.1/index.html                                |    4 +-
 docs/4.1/upgrade-guide/index.html                  |    8 +-
 docs/index.html                                    |    4 +-
 download.html                                      |    2 +-
 download/index.html                                |    2 +-
 how-can-i-help.html                                |    2 +-
 img/cayenne-modeler-40rc1-a464d37d53.png           |  Bin 0 -> 54843 bytes
 img/favicon/android-chrome-192x192-c8e800d2b0.png  |  Bin 0 -> 1118 bytes
 img/favicon/android-chrome-512x512-f4a2f5a020.png  |  Bin 0 -> 3391 bytes
 img/favicon/mstile-144x144-5f1d044e49.png          |  Bin 0 -> 1144 bytes
 img/favicon/mstile-144x144-a94ba73eaf.png          |  Bin 0 -> 1047 bytes
 img/favicon/mstile-150x150-0fe674a907.png          |  Bin 0 -> 869 bytes
 img/favicon/mstile-150x150-13e731f590.png          |  Bin 0 -> 1043 bytes
 img/favicon/mstile-310x150-0d0c5a17af.png          |  Bin 0 -> 1141 bytes
 img/favicon/mstile-310x150-ff5e1a04ff.png          |  Bin 0 -> 861 bytes
 img/favicon/mstile-310x310-a40d63b59e.png          |  Bin 0 -> 1781 bytes
 img/favicon/mstile-310x310-b51c330c59.png          |  Bin 0 -> 2371 bytes
 img/favicon/mstile-70x70-6e391d6d5c.png            |  Bin 0 -> 650 bytes
 img/favicon/mstile-70x70-c524897489.png            |  Bin 0 -> 724 bytes
 img/logo_mono_full-b893724c6c.svg.png              |  Bin 0 -> 1468 bytes
 img/modeler-4-24b0368dc2.0-screen.png              |  Bin 0 -> 52711 bytes
 img/modeler-dbimport-58df3bd3e6.png                |  Bin 0 -> 74222 bytes
 img/modeler-screen-368bbb5de6.png                  |  Bin 0 -> 52415 bytes
 index.html                                         |    2 +-
 legacy-ant-build.html                              |    2 +-
 legacy-ant-unit-tests.html                         |    2 +-
 legacy-eclipse.html                                |    2 +-
 legacy/index.html                                  |    2 +-
 mailing-lists.html                                 |    4 +-
 news/index.html                                    |    2 +-
 privacy-policy.html                                |    2 +-
 release-guide-2.0.html                             |    2 +-
 schema/.DS_Store                                   |  Bin 0 -> 6148 bytes
 sitemap.xml                                        | 2123 +++++++++++++++++++-
 success-stories.html                               |   12 +-
 support.html                                       |    2 +-
 tags/index.html                                    |    2 +-
 thanks.html                                        |    3 +-
 why-cayenne.html                                   |    2 +-
 605 files changed, 37333 insertions(+), 13655 deletions(-)

diff --git a/.DS_Store b/.DS_Store
new file mode 100644
index 0000000..cff8ab3
Binary files /dev/null and b/.DS_Store differ
diff --git a/2014/09/cayenne-31-released.html b/2014/09/cayenne-31-released.html
index 88e7fba..7a6b9ff 100644
--- a/2014/09/cayenne-31-released.html
+++ b/2014/09/cayenne-31-released.html
@@ -273,7 +273,7 @@ In addition, Apache Cayenne&rsquo;s HTML documentation and tutorials have been c
     </div>
 </footer>
     
-<script>
+<script type="application/javascript">
 var doNotTrack = false;
 if (!doNotTrack) {
 	(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
diff --git a/2015/03/cayenne-40m2-released.html b/2015/03/cayenne-40m2-released.html
index d9a68dc..db93dc4 100644
--- a/2015/03/cayenne-40m2-released.html
+++ b/2015/03/cayenne-40m2-released.html
@@ -101,10 +101,10 @@
 
 <p>Cayenne now provides a set of new fluent query classes: ObjectSelect, SQLSelect, SelectById. More will be coming in the future releases. Here is a simple example of a query selecting a single object by a given criteria:</p>
 
-<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-java" data-lang="java">Artist a <span style="color:#f92672">=</span> ObjectSelect
-    <span style="color:#f92672">.</span><span style="color:#a6e22e">query</span><span style="color:#f92672">(</span>Artist<span style="color:#f92672">.</span><span style="color:#a6e22e">class</span><span style="color:#f92672">)</span>
-    <span style="color:#f92672">.</span><span style="color:#a6e22e">where</span><span style="color:#f92672">(</span>Artist<span style="color:#f92672">.</span><span style="color:#a6e22e">NAME</span><span style="color:#f92672">.</span><span style="color:#a6e22e">eq</span><span style="color:#f92672">(</span><span style="color:#e6db74">&#34;Picasso&#34;</span><span style="color:#f92672">))</span>
-    <span style="color:#f92672">.</span><span style="color:#a6e22e">selectOne</span><span style="color:#f92672">(</span>context<span style="color:#f92672">);</span></code></pre></div>
+<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-java" data-lang="java"><span style="color:#960050;background-color:#1e0010">Artist a </span><span style="color:#f92672">=</span> ObjectSelect
+    .<span style="color:#a6e22e">query</span>(Artist.<span style="color:#a6e22e">class</span>)
+    .<span style="color:#a6e22e">where</span>(Artist.<span style="color:#a6e22e">NAME</span>.<span style="color:#a6e22e">eq</span>(<span style="color:#e6db74">&#34;Picasso&#34;</span>))
+    .<span style="color:#a6e22e">selectOne</span>(context);</code></pre></div>
 
 <p>A related addition is positional bindings in Expression, SQLTemplate and the new query classes. Using the new API you&rsquo;ll avoid boilerplate in the most-commonly written Cayenne code, all this with full support for generics and type safety. The &ldquo;old&rdquo; style of bean-like queries (SelectQuery) is still supported.</p>
 
@@ -449,7 +449,7 @@ Module module = new Module() {
     </div>
 </footer>
     
-<script>
+<script type="application/javascript">
 var doNotTrack = false;
 if (!doNotTrack) {
 	(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
diff --git a/2016/02/cayenne-40m3-released.html b/2016/02/cayenne-40m3-released.html
index 21c3a9d..d635dd3 100644
--- a/2016/02/cayenne-40m3-released.html
+++ b/2016/02/cayenne-40m3-released.html
@@ -352,7 +352,7 @@ this.runtime = new ServerRuntime(&quot;cayenne-project.xml&quot;, java8Module);
     </div>
 </footer>
     
-<script>
+<script type="application/javascript">
 var doNotTrack = false;
 if (!doNotTrack) {
 	(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
diff --git a/2016/05/cayenne-311-released.html b/2016/05/cayenne-311-released.html
index d7ab332..8dc4fde 100644
--- a/2016/05/cayenne-311-released.html
+++ b/2016/05/cayenne-311-released.html
@@ -268,7 +268,7 @@ It can be downloaded from <a href="/download.html">here</a>.</p>
     </div>
 </footer>
     
-<script>
+<script type="application/javascript">
 var doNotTrack = false;
 if (!doNotTrack) {
 	(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
diff --git a/2016/12/cayenne-40M4-released.html b/2016/12/cayenne-40M4-released.html
index 4bf64dc..cf2ce96 100644
--- a/2016/12/cayenne-40M4-released.html
+++ b/2016/12/cayenne-40M4-released.html
@@ -409,7 +409,7 @@ int outParam = ProcedureCall.query(&quot;out_sp&quot;)
     </div>
 </footer>
     
-<script>
+<script type="application/javascript">
 var doNotTrack = false;
 if (!doNotTrack) {
 	(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
diff --git a/2017/03/cayenne-40M5-released.html b/2017/03/cayenne-40M5-released.html
index a45c72e..60053ac 100644
--- a/2017/03/cayenne-40M5-released.html
+++ b/2017/03/cayenne-40M5-released.html
@@ -359,7 +359,7 @@ we changed cdbimport plugin configuration to make it clearer and ready for futur
     </div>
 </footer>
     
-<script>
+<script type="application/javascript">
 var doNotTrack = false;
 if (!doNotTrack) {
 	(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
diff --git a/2017/06/cayenne-40B1-released.html b/2017/06/cayenne-40B1-released.html
index 7ad895f..9d56bf6 100644
--- a/2017/06/cayenne-40B1-released.html
+++ b/2017/06/cayenne-40B1-released.html
@@ -344,7 +344,7 @@ dependencies {
     </div>
 </footer>
     
-<script>
+<script type="application/javascript">
 var doNotTrack = false;
 if (!doNotTrack) {
 	(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
diff --git a/2017/10/cayenne-40B2-released.html b/2017/10/cayenne-40B2-released.html
index d673afa..f4deb0f 100644
--- a/2017/10/cayenne-40B2-released.html
+++ b/2017/10/cayenne-40B2-released.html
@@ -267,7 +267,7 @@ While API is frozen it includes only bug fixes and documentation updates.</p>
     </div>
 </footer>
     
-<script>
+<script type="application/javascript">
 var doNotTrack = false;
 if (!doNotTrack) {
 	(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
diff --git a/2017/10/cayenne-41m1-released.html b/2017/10/cayenne-41m1-released.html
index 20d5f7b..74f2ca2 100644
--- a/2017/10/cayenne-41m1-released.html
+++ b/2017/10/cayenne-41m1-released.html
@@ -303,7 +303,7 @@ Future milestones will add storing configuration for cdbimport and cgen.</li>
     </div>
 </footer>
     
-<script>
+<script type="application/javascript">
 var doNotTrack = false;
 if (!doNotTrack) {
 	(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
diff --git a/2017/11/cayenne-312-released.html b/2017/11/cayenne-312-released.html
index 3f29687..fe48e7e 100644
--- a/2017/11/cayenne-312-released.html
+++ b/2017/11/cayenne-312-released.html
@@ -260,7 +260,7 @@ It can be downloaded from <a href="/download.html">here</a>.</p>
     </div>
 </footer>
     
-<script>
+<script type="application/javascript">
 var doNotTrack = false;
 if (!doNotTrack) {
 	(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
diff --git a/2018/04/cayenne-40rc1-released/index.html b/2018/04/cayenne-40rc1-released/index.html
index f27224c..c2d8115 100644
--- a/2018/04/cayenne-40rc1-released/index.html
+++ b/2018/04/cayenne-40rc1-released/index.html
@@ -281,7 +281,7 @@
     </div>
 </footer>
     
-<script>
+<script type="application/javascript">
 var doNotTrack = false;
 if (!doNotTrack) {
 	(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
diff --git a/2018/07/cayenne-313-released.html b/2018/07/cayenne-313-released.html
index b08f9f3..4b56454 100644
--- a/2018/07/cayenne-313-released.html
+++ b/2018/07/cayenne-313-released.html
@@ -255,7 +255,7 @@ It can be downloaded from <a href="/download.html">here</a>.</p>
     </div>
 </footer>
     
-<script>
+<script type="application/javascript">
 var doNotTrack = false;
 if (!doNotTrack) {
 	(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
diff --git a/2018/07/cayenne-41m2-released.html b/2018/07/cayenne-41m2-released.html
index 838e2d6..513d15f 100644
--- a/2018/07/cayenne-41m2-released.html
+++ b/2018/07/cayenne-41m2-released.html
@@ -103,30 +103,29 @@ more over configuration is now saved so you can evolve it with your model and pe
 <img class="img-fluid" src="/img/modeler-cdbimport-829523ac21.png" alt="New reverse engineering UI"/>
 </p></p></li>
 
-<li><p>User controlled transaction propagation logic and isolation level.</p></li>
-</ol>
+<li><p>User controlled transaction propagation logic and isolation level.</p>
 
-<pre><code>    TransactionManager manager = runtime.getInjector().getInstance(TransactionManager.class);
-    TransactionDescriptor descriptor = new TransactionDescriptor(
-            Connection.TRANSACTION_SERIALIZABLE, // set transaction isolation to SERIALIZABLE 
-            TransactionPropagation.REQUIRES_NEW  // require new transaction for every operation
-    );
-    manager.performInTransaction(() -&gt; {
-        // perform some DB operations...
-        return null;
-    }, descriptor);
+<pre><code>TransactionManager manager = runtime.getInjector().getInstance(TransactionManager.class);
+TransactionDescriptor descriptor = new TransactionDescriptor(
+        Connection.TRANSACTION_SERIALIZABLE, // set transaction isolation to SERIALIZABLE 
+        TransactionPropagation.REQUIRES_NEW  // require new transaction for every operation
+);
+manager.performInTransaction(() -&gt; {
+    // perform some DB operations...
+    return null;
+}, descriptor);
     
-</code></pre>
+</code></pre></li>
+</ol>
 
 <p><strong>Important note</strong>: this release removes all code deprecated in Cayenne 4.0, so review and fix your code before update.</p>
 
 <p>Cayenne can be downloaded from <a href="/download.html">here</a>.</p>
 
-<p>
 <div class="pb-3"></div>
 <h2 class="text-center">A full list of changes in this release:</h2>
 
-<div class="pb-2"></div></p>
+<div class="pb-2"></div>
 
 <h4 id="changes-new-features">Changes/New Features:</h4>
 
@@ -158,7 +157,6 @@ more over configuration is now saved so you can evolve it with your model and pe
 <li><a href="https://issues.apache.org/jira/browse/CAY-2443">CAY-2443</a> Make SqlTemplate and SqlExec possible to return generated keys</li>
 </ul>
 
-
 <div class="pb-2"></div>
 
 <h4 id="bug-fixes">Bug Fixes:</h4>
@@ -341,7 +339,7 @@ more over configuration is now saved so you can evolve it with your model and pe
     </div>
 </footer>
     
-<script>
+<script type="application/javascript">
 var doNotTrack = false;
 if (!doNotTrack) {
 	(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
diff --git a/2018/08/cayenne-40-final-released/index.html b/2018/08/cayenne-40-final-released/index.html
index df4fc25..3047e9a 100644
--- a/2018/08/cayenne-40-final-released/index.html
+++ b/2018/08/cayenne-40-final-released/index.html
@@ -119,7 +119,6 @@ It is a really important milestone for the entire Cayenne community. Here are so
 
 <p>Cayenne can be downloaded from <a href="/download.html">here</a>.</p>
 
-
 <div class="pb-3"></div>
 
 <p>Here is bug fixes since the release candidate:</p>
@@ -286,7 +285,7 @@ It is a really important milestone for the entire Cayenne community. Here are so
     </div>
 </footer>
     
-<script>
+<script type="application/javascript">
 var doNotTrack = false;
 if (!doNotTrack) {
 	(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
diff --git a/2018/12/cayenne-401-released/index.html b/2018/12/cayenne-401-released/index.html
index 08c0b5c..b49f8bf 100644
--- a/2018/12/cayenne-401-released/index.html
+++ b/2018/12/cayenne-401-released/index.html
@@ -108,7 +108,6 @@ It can be downloaded from <a href="/download.html">here</a>.</p>
 <li><a href="https://issues.apache.org/jira/browse/CAY-2479">CAY-2479</a> Modeler: update cgen dialog</li>
 </ul>
 
-
 <div class="pb-3"></div>
 
 <h4 id="bug-fixes">Bug Fixes:</h4>
@@ -281,7 +280,7 @@ It can be downloaded from <a href="/download.html">here</a>.</p>
     </div>
 </footer>
     
-<script>
+<script type="application/javascript">
 var doNotTrack = false;
 if (!doNotTrack) {
 	(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
diff --git a/2019/03/cayenne-41b1-released.html b/2019/03/cayenne-41b1-released.html
index 5cf5ed2..56553db 100644
--- a/2019/03/cayenne-41b1-released.html
+++ b/2019/03/cayenne-41b1-released.html
@@ -107,11 +107,10 @@ The highlights of this release are:</p>
 
 <p>Cayenne can be downloaded from <a href="/download.html">here</a>.</p>
 
-<p>
 <div class="pb-3"></div>
 <h2 class="text-center">A full list of changes in this release:</h2>
 
-<div class="pb-2"></div></p>
+<div class="pb-2"></div>
 
 <h4 id="changes-new-features">Changes/New Features:</h4>
 
@@ -135,7 +134,6 @@ The highlights of this release are:</p>
 <li><a href="https://issues.apache.org/jira/browse/CAY-2517">CAY-2517</a> EventManager: optimization of adding listeners</li>
 </ul>
 
-
 <div class="pb-2"></div>
 
 <h4 id="bug-fixes">Bug Fixes:</h4>
@@ -325,7 +323,7 @@ The highlights of this release are:</p>
     </div>
 </footer>
     
-<script>
+<script type="application/javascript">
 var doNotTrack = false;
 if (!doNotTrack) {
 	(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
diff --git a/2019/05/cayenne-41b2-released/index.html b/2019/05/cayenne-41b2-released/index.html
index a874e11..9cd6bb6 100644
--- a/2019/05/cayenne-41b2-released/index.html
+++ b/2019/05/cayenne-41b2-released/index.html
@@ -262,7 +262,7 @@ It includes only bug fixes.</p>
     </div>
 </footer>
     
-<script>
+<script type="application/javascript">
 var doNotTrack = false;
 if (!doNotTrack) {
 	(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
diff --git a/2019/10/cayenne-402-released/index.html b/2019/10/cayenne-402-released/index.html
index 3dcad3d..04c32e3 100644
--- a/2019/10/cayenne-402-released/index.html
+++ b/2019/10/cayenne-402-released/index.html
@@ -105,7 +105,6 @@ It can be downloaded from <a href="/download.html">here</a>.</p>
 <li><a href="https://issues.apache.org/jira/browse/CAY-2570">CAY-2570</a> Use MySQL adapter for latest versions of MariaDB</li>
 </ul>
 
-
 <div class="pb-3"></div>
 
 <h4 id="bug-fixes">Bug Fixes:</h4>
@@ -275,7 +274,7 @@ It can be downloaded from <a href="/download.html">here</a>.</p>
     </div>
 </footer>
     
-<script>
+<script type="application/javascript">
 var doNotTrack = false;
 if (!doNotTrack) {
 	(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
diff --git a/2019/10/cayenne-41rc1-released/index.html b/2019/10/cayenne-41rc1-released/index.html
index 1cfa787..6e6ac5d 100644
--- a/2019/10/cayenne-41rc1-released/index.html
+++ b/2019/10/cayenne-41rc1-released/index.html
@@ -94,11 +94,10 @@
 <p>Apache Cayenne team is glad to announce release candidate of <em>Cayenne 4.1</em>.
 Cayenne can be downloaded from <a href="/download.html">here</a>.</p>
 
-<p>
 <div class="pb-3"></div>
 <h2 class="text-center">A full list of changes in this release:</h2>
 
-<div class="pb-2"></div></p>
+<div class="pb-2"></div>
 
 <h4 id="changes-new-features">Changes/New Features:</h4>
 
@@ -108,7 +107,6 @@ Cayenne can be downloaded from <a href="/download.html">here</a>.</p>
 <li><a href="https://issues.apache.org/jira/browse/CAY-2611">CAY-2611</a> Exclude system catalogs and schemas when run dbImport without config</li>
 </ul>
 
-
 <div class="pb-2"></div>
 
 <h4 id="bug-fixes">Bug Fixes:</h4>
@@ -290,7 +288,7 @@ Cayenne can be downloaded from <a href="/download.html">here</a>.</p>
     </div>
 </footer>
     
-<script>
+<script type="application/javascript">
 var doNotTrack = false;
 if (!doNotTrack) {
 	(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
diff --git a/2019/10/cayenne-41rc2-released/index.html b/2019/10/cayenne-41rc2-released/index.html
index 10cae11..36e8328 100644
--- a/2019/10/cayenne-41rc2-released/index.html
+++ b/2019/10/cayenne-41rc2-released/index.html
@@ -94,11 +94,10 @@
 <p>Apache Cayenne team is glad to announce release candidate 2 of <em>Cayenne 4.1</em>.
 Cayenne can be downloaded from <a href="/download.html">here</a>.</p>
 
-<p>
 <div class="pb-3"></div>
 <h2 class="text-center">A full list of changes in this release:</h2>
 
-<div class="pb-2"></div></p>
+<div class="pb-2"></div>
 
 <h4 id="bug-fixes">Bug Fixes:</h4>
 
@@ -256,7 +255,7 @@ Cayenne can be downloaded from <a href="/download.html">here</a>.</p>
     </div>
 </footer>
     
-<script>
+<script type="application/javascript">
 var doNotTrack = false;
 if (!doNotTrack) {
 	(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
diff --git a/404.html b/404.html
index 56d567c..d10db43 100644
--- a/404.html
+++ b/404.html
@@ -218,7 +218,7 @@
     </div>
 </footer>
     
-<script>
+<script type="application/javascript">
 var doNotTrack = false;
 if (!doNotTrack) {
 	(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
diff --git a/about/index.html b/about/index.html
index aa396e3..f93ddee 100644
--- a/about/index.html
+++ b/about/index.html
@@ -242,7 +242,7 @@ can help your project.</p>
     </div>
 </footer>
     
-<script>
+<script type="application/javascript">
 var doNotTrack = false;
 if (!doNotTrack) {
 	(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
diff --git a/about/support/index.html b/about/support/index.html
index 9abce36..00c3e3f 100644
--- a/about/support/index.html
+++ b/about/support/index.html
@@ -94,7 +94,6 @@ Subscription is required to post messages and participate in discussion, and of
 <li><a href="http://stackoverflow.com/questions/tagged/apache-cayenne">Stackoverflow</a> is another place to ask questions and search the existing knowledgebase of answers.</li>
 </ul>
 
-
 <div class="pb-3"></div>
 
 <h2 id="commercial-support-and-consulting">Commercial Support And Consulting</h2>
@@ -235,7 +234,7 @@ and training. The company employs Cayenne original authors and a number of commi
     </div>
 </footer>
     
-<script>
+<script type="application/javascript">
 var doNotTrack = false;
 if (!doNotTrack) {
 	(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
diff --git a/categories/index.html b/categories/index.html
index 0f4f77c..8ab267b 100644
--- a/categories/index.html
+++ b/categories/index.html
@@ -220,7 +220,7 @@
     </div>
 </footer>
     
-<script>
+<script type="application/javascript">
 var doNotTrack = false;
 if (!doNotTrack) {
 	(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
diff --git a/collaboration/index.html b/collaboration/index.html
index ca02222..f05c289 100644
--- a/collaboration/index.html
+++ b/collaboration/index.html
@@ -226,7 +226,7 @@ set of links to access Cayenne collaboration resources and information.</p>
     </div>
 </footer>
     
-<script>
+<script type="application/javascript">
 var doNotTrack = false;
 if (!doNotTrack) {
 	(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
diff --git a/contributors.html b/contributors.html
index 6bcb371..15e5887 100644
--- a/contributors.html
+++ b/contributors.html
@@ -387,7 +387,7 @@
     </div>
 </footer>
     
-<script>
+<script type="application/javascript">
 var doNotTrack = false;
 if (!doNotTrack) {
 	(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
diff --git a/database-support.html b/database-support.html
index 421f10c..75bfd3f 100644
--- a/database-support.html
+++ b/database-support.html
@@ -356,7 +356,7 @@ All databases below have custom Cayenne DbAdapters and are automatically recogni
     </div>
 </footer>
     
-<script>
+<script type="application/javascript">
 var doNotTrack = false;
 if (!doNotTrack) {
 	(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
diff --git a/dev/building-cayenne.html b/dev/building-cayenne.html
index 989ce33..ff5ce8f 100644
--- a/dev/building-cayenne.html
+++ b/dev/building-cayenne.html
@@ -96,7 +96,6 @@
 <li><a href="/dev/code-repository.html">Get the source code</a>.</li>
 </ul>
 
-
 <div class="pb-3"></div>
 
 <h2 id="recommended-maven-settings">Recommended Maven Settings</h2>
@@ -108,7 +107,6 @@ but these should probably work for everyone:</p>
 <pre><code>MAVEN_OPTS=&quot;-Djava.net.preferIPv4Stack=true -Xms512m&quot;
 </code></pre>
 
-
 <div class="pb-3"></div>
 
 <h2 id="building-with-maven">Building with Maven</h2>
@@ -301,7 +299,7 @@ of a given assembly (otherwise assembly profile won&rsquo;t produce anything).</
     </div>
 </footer>
     
-<script>
+<script type="application/javascript">
 var doNotTrack = false;
 if (!doNotTrack) {
 	(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
diff --git a/dev/cms-guide.html b/dev/cms-guide.html
index 8fac988..f85b595 100644
--- a/dev/cms-guide.html
+++ b/dev/cms-guide.html
@@ -94,7 +94,6 @@
 
 <p>Or from GitHub mirror (in read only mode): <a href="https://github.com/apache/cayenne-website.git">https://github.com/apache/cayenne-website.git</a></p>
 
-
 <div class="pb-3"></div>
 
 <h2 id="dev-mode">Dev mode</h2>
@@ -113,7 +112,6 @@ mvn
 <pre><code>mvn -Ddev.host=&quot;my.local&quot; -Ddev.port=&quot;8080&quot;
 </code></pre>
 
-
 <div class="pb-3"></div>
 
 <h2 id="publish">Publish</h2>
@@ -131,7 +129,6 @@ and push commit into <code>asf-site</code> branch that will be synced with actua
 <p><em>NOTE</em>: This process can be automated by Jenkins. It can run publish on every commit to <code>master</code>.
 But for now it is better to use manual publishing.</p>
 
-
 <div class="pb-3"></div>
 
 <h2 id="content-modifications">Content modifications</h2>
@@ -189,7 +186,6 @@ This automatically update <a href="/download/">download</a> page and <code>/doap
 
 <p>These scripts don&rsquo;t commit changes so you should commit them manually and publish the site as usual.</p>
 
-
 <div class="pb-3"></div>
 
 <h2 id="advanced">Advanced</h2>
@@ -384,7 +380,7 @@ are processed via Gulp tasks, and shouldn&rsquo;t be used directly, instead use
     </div>
 </footer>
     
-<script>
+<script type="application/javascript">
 var doNotTrack = false;
 if (!doNotTrack) {
 	(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
diff --git a/dev/code-repository.html b/dev/code-repository.html
index c250ceb..2e2d711 100644
--- a/dev/code-repository.html
+++ b/dev/code-repository.html
@@ -96,7 +96,6 @@
 
 <p>Feel free to clone, fork, star Cayenne there. And of course submit pull requests.</p>
 
-
 <div class="pb-3"></div>
 
 <h2 id="master-git-repository">Master Git Repository</h2>
@@ -106,7 +105,6 @@
 
 <p>It is publicly readable, but only committers have write access.</p>
 
-
 <div class="pb-3"></div>
 
 <h2 id="legacy-subversion-repository">Legacy Subversion Repository</h2>
@@ -268,7 +266,7 @@ in a read-only mode:<br />
     </div>
 </footer>
     
-<script>
+<script type="application/javascript">
 var doNotTrack = false;
 if (!doNotTrack) {
 	(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
diff --git a/dev/how_development_happens.html b/dev/how_development_happens.html
index d60c16a..e35bce7 100644
--- a/dev/how_development_happens.html
+++ b/dev/how_development_happens.html
@@ -106,7 +106,6 @@ For further details consult the official <a href="http://www.apache.org/foundati
 <p>In addition to the general Apache responsibilities, this is what is
 expected of everyone with privileges within the Cayenne project.</p>
 
-
 <div class="pb-3"></div>
 
 <h2 id="contribution">Contribution</h2>
@@ -117,8 +116,7 @@ Everyone here is a volunteer, so quantity of effort is not the most
 important factor. Help when you can, but let the rest of the community know
 if you will be out of action for an extended period.</p>
 
-
-<div class="pb-3"></div>
+<div class="pb-3"></div> 
 
 <h2 id="mailing-lists">Mailing lists</h2>
 
@@ -130,8 +128,7 @@ pleasant places to be for all users regardless of their English language
 skills or technical experience. When things might go off the rails, a
 gentle nudge back in the right direction is all that is needed.</p>
 
-
-<div class="pb-3"></div>
+<div class="pb-3"></div> 
 
 <h2 id="voting">Voting</h2>
 
@@ -285,7 +282,7 @@ are in the release pages of this site.</p>
     </div>
 </footer>
     
-<script>
+<script type="application/javascript">
 var doNotTrack = false;
 if (!doNotTrack) {
 	(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
diff --git a/dev/index.html b/dev/index.html
index d0641d0..dfb356a 100644
--- a/dev/index.html
+++ b/dev/index.html
@@ -250,7 +250,7 @@ information is probably of no use to you. Consult Cayenne user docs instead.</p>
     </div>
 </footer>
     
-<script>
+<script type="application/javascript">
 var doNotTrack = false;
 if (!doNotTrack) {
 	(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
diff --git a/dev/release-guide.html b/dev/release-guide.html
index 7cbc316..0133af8 100644
--- a/dev/release-guide.html
+++ b/dev/release-guide.html
@@ -95,7 +95,6 @@ that we are publishing both downloadable assemblies and Maven artifacts, so
 we have to build and publish things twice. Both forms of Cayenne release
 are also available for evaluation during the vote.</p>
 
-
 <div class="pb-3"></div>
 
 <h2 id="prerequisites">Prerequisites</h2>
@@ -110,7 +109,6 @@ for details.</li>
 <li>As Cayenne has modules which require Java 1.8, you should use Java 1.8 to perform the release.</li>
 </ul>
 
-
 <div class="pb-3"></div>
 
 <h2 id="preparing-sources">Preparing Sources</h2>
@@ -128,8 +126,8 @@ source. Then read the report and fix any issues.</p>
 </code></pre></li>
 </ul>
 
-
 <div class="pb-3"></div>
+    
 
 <h2 id="tagging-the-repo-and-releasing-maven-artifacts">Tagging the Repo and Releasing Maven Artifacts</h2>
 
@@ -150,7 +148,6 @@ be used by the people voting on Cayenne. It may look like this:
 <a href="https://repository.apache.org/content/repositories/orgapachecayenne-052/">https://repository.apache.org/content/repositories/orgapachecayenne-052/</a></p></li>
 </ul>
 
-
 <div class="pb-3"></div>
 
 <h2 id="releasing-downloadable-assemblies">Releasing Downloadable Assemblies</h2>
@@ -200,7 +197,6 @@ used for staging development releases: <a href="https://dist.apache.org/repos/di
 Use a separate folder for each release. For more info on this repository check <a href="http://apache.org/legal/release-policy.html#stage">the infrastructure docs</a>.</li>
 </ul>
 
-
 <div class="pb-3"></div>
 
 <h2 id="voting">Voting</h2>
@@ -230,7 +226,6 @@ the equivalent source).</li>
 </ul></li>
 </ul>
 
-
 <div class="pb-3"></div>
 
 <h2 id="publishing-the-release">Publishing the Release</h2>
@@ -246,7 +241,6 @@ select the staging repo and click &ldquo;Release&rdquo;.</p></li>
 </code></pre></li>
 </ul>
 
-
 <div class="pb-3"></div>
 
 <h2 id="after-the-release">After the release</h2>
@@ -278,7 +272,6 @@ add any new features</p></li>
 <li><p>Update <a href="http://en.wikipedia.org/wiki/Apache_Cayenne">http://en.wikipedia.org/wiki/Apache_Cayenne</a></p></li>
 </ul>
 
-
 <div class="pb-3"></div>
 
 <h2 id="reference">Reference:</h2>
@@ -441,7 +434,7 @@ add any new features</p></li>
     </div>
 </footer>
     
-<script>
+<script type="application/javascript">
 var doNotTrack = false;
 if (!doNotTrack) {
 	(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
diff --git a/dev/running-unit-tests.html b/dev/running-unit-tests.html
index 1f76be2..ed1dad0 100644
--- a/dev/running-unit-tests.html
+++ b/dev/running-unit-tests.html
@@ -96,8 +96,8 @@ you must first get Cayenne from Git, install JDK 1.8 and obtain the latest Maven
 
 <p>Maven <a href="/dev/building-cayenne.html">build prerequisites and recommended settings</a> apply here.</p>
 
-
-<div class="pb-2"></div>
+<div class="pb-2"></div>    
+    
 
 <h2 id="running-against-embedded-hsqldb">Running Against Embedded HSQLDB</h2>
 
@@ -113,7 +113,6 @@ $ mvn install
 $ mvn clean verify
 </code></pre>
 
-
 <div class="pb-3"></div>
 
 <h2 id="running-against-in-memory-database">Running Against In-memory Database</h2>
@@ -133,7 +132,6 @@ following databases that support in-memory mode:</p>
 <pre><code>$ mvn verify -DcayenneTestConnection=derby    
 </code></pre>
 
-
 <div class="pb-3"></div>
 
 <h2 id="running-against-database-in-docker">Running Against Database in Docker</h2>
@@ -154,14 +152,12 @@ The only thing you need is to install Docker.</p>
 <pre><code>$ mvn verify -DcayenneTestConnection=mysql-docker   
 </code></pre>
 
-
 <div class="pb-3"></div>
 
 <h2 id="running-against-a-specific-database">Running Against a Specific Database</h2>
 
 <p>Final option to run tests against any supported database is with manual configuration.</p>
 
-
 <div class="pb-1l2"></div>
 
 <h5 id="step-1-install-jdbc-driver-jars-in-a-local-maven-repo">Step 1. Install JDBC Driver Jars in a Local Maven Repo</h5>
@@ -195,8 +191,8 @@ the POM or the examples below.</p>
        -DartifactId=sybase-driver -Dversion=12 -Dpackaging=jar -DgeneratePom=true
 </code></pre>
 
-
 <div class="pb-3l2"></div>
+    
 
 <h5 id="step-2-run-tests-against-configured-data-source">Step 2. Run Tests Against Configured Data Source</h5>
 
@@ -425,7 +421,7 @@ the example above). Note that in this case you should still use
     </div>
 </footer>
     
-<script>
+<script type="application/javascript">
 var doNotTrack = false;
 if (!doNotTrack) {
 	(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
diff --git a/docs/index.html b/docs/1.2/accessing-pk-and-fk-values.html
similarity index 62%
copy from docs/index.html
copy to docs/1.2/accessing-pk-and-fk-values.html
index b579c6b..31e06e2 100644
--- a/docs/index.html
+++ b/docs/1.2/accessing-pk-and-fk-values.html
@@ -15,7 +15,7 @@
         <meta name="theme-color" content="#ffffff">
         <link rel="stylesheet" href="https://cayenne.apache.org/css/styles-e429186d1b.css"/>
         <script src="https://cayenne.apache.org/js/bundle-92aa692db7.js"></script>
-        <title>Documentation &middot; Apache Cayenne</title>
+        <title>Accessing PK and FK values &middot; Apache Cayenne</title>
     </head>
     <body data-spy="scroll" data-target=".toc-side" class="cd-head"> 
 <header class="page-header">
@@ -92,10 +92,10 @@
                     <ul class="nav" role="tablist">
                         <li class="nav-item dropdown mw-100">
                             <a class="nav-link dropdown-toggle text-truncate" data-toggle="dropdown" href="#" role="button" aria-haspopup="true" aria-expanded="false">
-                                Cayenne Version 4.1
+                                Cayenne Version 1.2
                             </a>
                             <div class="dropdown-menu">
-                                <a class="dropdown-item" href="/docs/4.1/getting-started-guide/">Version 4.1 (Release Candidate)</a><a class="dropdown-item" href="/docs/4.0/getting-started-guide/">Version 4.0 (Stable)</a><a class="dropdown-item" href="/docs/3.1/getting-started-guide/">Version 3.1 (Aging)</a><a class="dropdown-item" href="/docs/3.0/api/">Version 3.0 (Legacy)</a><a class="dropdown-item" href="/docs/2.0/api/">Version 2.0 (Legacy)</a><a class="dropdown-item" href="/docs/1.2/ [...]
+                                <a class="dropdown-item" href="/docs/4.1/getting-started-guide/">Version 4.1 (Release Candidate)</a><a class="dropdown-item" href="/docs/4.0/getting-started-guide/">Version 4.0 (Stable)</a><a class="dropdown-item" href="/docs/3.1/getting-started-guide/">Version 3.1 (Aging)</a><a class="dropdown-item" href="/docs/3.0/cayenne-guide.html">Version 3.0 (Legacy)</a><a class="dropdown-item" href="/docs/2.0/user-guide.html">Version 2.0 (Legacy)</a><a class="dropdo [...]
                             </div>
                         </li>
                     </ul>
@@ -111,51 +111,116 @@
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.1/getting-started-guide/">Getting Started</a>
+                            <a class="cd-toc-link" href="/docs/1.2/user-guide.html">User Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.1/cayenne-guide/">Cayenne Guide</a>
+                            <a class="cd-toc-link" href="/docs/1.2/modeler-guide.html">Modeler Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.1/getting-started-db-first/">Database First Tutorial</a>
+                            <a class="cd-toc-link" href="/docs/1.2/remote-object-persistence-guide.html">Remote Object Persistence Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
-                        
-                            <a class="cd-toc-link" href="/docs/4.1/getting-started-rop/">Getting Started ROP</a>
-                        
-                    </div>
-                    
-                    <div class="cd-toc-item">
-                        
-                            <a class="cd-toc-link" href="/docs/4.1/upgrade-guide/">Upgrade Guide</a>
-                        
-                    </div>
-                    
-                    <div class="cd-toc-item">
-                        <a class="cd-toc-link" href="/docs/4.1/api/">JavaDoc</a>
+                        <a class="cd-toc-link" href="/docs/1.2/api/">JavaDoc</a>
                     </div>
                 </div>
             </div>
             
             <div class="col-12 col-lg-8 col-xl-9  py-3 pl-lg-5  cd-content">
 
-                <article>
-                    <header>
-                        <h1>Documentation</h1>
-                    </header>
-                    <section>
-                        <p>Documentation, the JavaDoc API, examples and articles can all be found here.</p>
+            
+            <article>
+                <section>
+                    
+	
+
+<P>Normally it is not advisable to map primary and foreign key columns (PK and FK) as Java class properties (ObjAttributes). When reverse engineering of the database is done using CayenneModeler, produced mapping will reflect that - PKs and FKs will not be included in the Java class. However sometimes an application requires access to these values.</P>
+
+<DIV class="panelMacro"><TABLE class="infoMacro"><COLGROUP><COL width="24"><COL></COLGROUP><TR><TD valign="top"><img src="/docs/1.2/images/information.gif" width="16" height="16" align="absmiddle" alt="" border="0"></TD><TD>For generic and easy API to obtain an object primary key or to find an object from a known PK, skip to the next chapter on DataObjectUtils class.</TD></TR></TABLE></DIV>
+
+<P>Cayenne provides a generic way to do access primary and foreign keys by creating custom get* methods in the DataObject subclass. Lets take a Painting class as an example. The following code is generated by CayenneModeler:</P>
+
+<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent">
+<PRE class="code-java"><SPAN class="code-keyword">package</SPAN> org.objectstyle.art;
+
+<SPAN class="code-keyword">public</SPAN> class Painting <SPAN class="code-keyword">extends</SPAN> org.objectstyle.art.auto._Painting {
+
+}
+</PRE>
+</DIV></DIV>
+
+<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent">
+<PRE class="code-java"><SPAN class="code-keyword">package</SPAN> org.objectstyle.art.auto;
+
+/** <SPAN class="code-object">Class</SPAN> _Painting was generated by Cayenne.
+  * It is probably a good idea to avoid changing <SPAN class="code-keyword">this</SPAN> class manually, 
+  * since it may be overwritten next time code is regenerated. 
+  * If you need to make any customizations, please use subclass. 
+  */
+<SPAN class="code-keyword">public</SPAN> class _Painting <SPAN class="code-keyword">extends</SPAN> org.objectstyle.art.ArtDataObject {
+
+    <SPAN class="code-keyword">public</SPAN> <SPAN class="code-keyword">static</SPAN> <SPAN class="code-keyword">final</SPAN> <SPAN class="code-object">String</SPAN> ESTIMATED_PRICE_PROPERTY = <SPAN class="code-quote">&quot;estimatedPrice&quot;</SPAN>;
+    <SPAN class="code-keyword">public</SPAN> <SPAN class="code-keyword">static</SPAN> <SPAN class="code-keyword">final</SPAN> <SPAN class="code-object">String</SPAN> PAINTING_TITLE_PROPERTY = <SPAN class="code-quote">&quot;paintingTitle&quot;</SPAN>;
+    <SPAN class="code-keyword">public</SPAN> <SPAN class="code-keyword">static</SPAN> <SPAN class="code-keyword">final</SPAN> <SPAN class="code-object">String</SPAN> TO_ARTIST_PROPERTY = <SPAN class="code-quote">&quot;toArtist&quot;</SPAN>;
+    <SPAN class="code-keyword">public</SPAN> <SPAN class="code-keyword">static</SPAN> <SPAN class="code-keyword">final</SPAN> <SPAN class="code-object">String</SPAN> TO_GALLERY_PROPERTY = <SPAN class="code-quote">&quot;toGallery&quot;</SPAN>;
+    <SPAN class="code-keyword">public</SPAN> <SPAN class="code-keyword">static</SPAN> <SPAN class="code-keyword">final</SPAN> <SPAN class="code-object">String</SPAN> TO_PAINTING_INFO_PROPERTY = <SPAN class="code-quote">&quot;toPaintingInfo&quot;</SPAN>;
+
+    <SPAN class="code-keyword">public</SPAN> <SPAN class="code-keyword">static</SPAN> <SPAN class="code-keyword">final</SPAN> <SPAN class="code-object">String</SPAN> PAINTING_ID_PK_COLUMN = <SPAN class="code-quote">&quot;PAINTING_ID&quot;</SPAN>;
+
+    <SPAN class="code-keyword">public</SPAN> void setEstimatedPrice(java.math.BigDecimal estimatedPrice) {
+        writeProperty(<SPAN class="code-quote">&quot;estimatedPrice&quot;</SPAN>, estimatedPrice);
+    }
+    <SPAN class="code-keyword">public</SPAN> java.math.BigDecimal getEstimatedPrice() {
+        <SPAN class="code-keyword">return</SPAN> (java.math.BigDecimal)readProperty(<SPAN class="code-quote">&quot;estimatedPrice&quot;</SPAN>);
+    }
+    
+    
+    <SPAN class="code-keyword">public</SPAN> void setPaintingTitle(<SPAN class="code-object">String</SPAN> paintingTitle) {
+        writeProperty(<SPAN class="code-quote">&quot;paintingTitle&quot;</SPAN>, paintingTitle);
+    }
+    <SPAN class="code-keyword">public</SPAN> <SPAN class="code-object">String</SPAN> getPaintingTitle() {
+        <SPAN class="code-keyword">return</SPAN> (<SPAN class="code-object">String</SPAN>)readProperty(<SPAN class="code-quote">&quot;paintingTitle&quot;</SPAN>);
+    }
+...
+}
+</PRE>
+</DIV></DIV>
+
+<P>The following custom methods should be added to the Painting class to access the values of ARTIST_ID and PAINTING_ID:</P>
+
+<DIV class="panelMacro"><TABLE class="infoMacro"><COLGROUP><COL width="24"><COL></COLGROUP><TR><TD valign="top"><img src="/docs/1.2/images/information.gif" width="16" height="16" align="absmiddle" alt="" border="0"></TD><TD>If you perform class generation using Ant, you can customize class generation templates to generte these methods for you. Eventually CayenneModeler will support this too as optional functionality.</TD></TR></TABLE></DIV>
+
+<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent">
+<PRE class="code-java"><SPAN class="code-keyword">package</SPAN> org.objectstyle.art;
+
+<SPAN class="code-keyword">public</SPAN> class Painting <SPAN class="code-keyword">extends</SPAN> org.objectstyle.art.auto._Painting {
+   /** Read-only access to PK */
+   <SPAN class="code-keyword">public</SPAN> <SPAN class="code-object">Integer</SPAN> getPaintingId() {
+      <SPAN class="code-keyword">return</SPAN> (getObjectId() != <SPAN class="code-keyword">null</SPAN> &amp;&amp; !getObjectId().isTemporary()) 
+               ? (<SPAN class="code-object">Integer</SPAN>)getObjectId().getIdSnapshot().get(PAINTING_ID_PK_COLUMN) 
+               : <SPAN class="code-keyword">null</SPAN>;
+   }
+   
+   /** Read-only access to FK */
+   <SPAN class="code-keyword">public</SPAN> <SPAN class="code-object">Integer</SPAN> getArtistId() {
+      Artist artist = getArtist();
+      <SPAN class="code-keyword">return</SPAN> (artist != <SPAN class="code-keyword">null</SPAN>) 
+               ? (<SPAN class="code-object">Integer</SPAN>)artist.getObjectId().getIdSnapshot().get(Artist.ARTIST_ID_PK_COLUMN) 
+               : <SPAN class="code-keyword">null</SPAN>;
+   }
+}
+</PRE>
+</DIV></DIV>
 
-                    </section>
-                </article>
+                </section>
+            </article>
 
 	        </div>
 	    </div>
@@ -285,7 +350,7 @@
     </div>
 </footer>
     
-<script>
+<script type="application/javascript">
 var doNotTrack = false;
 if (!doNotTrack) {
 	(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
diff --git a/docs/4.0/index.html b/docs/1.2/acknowledgments.html
similarity index 90%
copy from docs/4.0/index.html
copy to docs/1.2/acknowledgments.html
index 2bbcbd2..43b3d53 100644
--- a/docs/4.0/index.html
+++ b/docs/1.2/acknowledgments.html
@@ -15,7 +15,7 @@
         <meta name="theme-color" content="#ffffff">
         <link rel="stylesheet" href="https://cayenne.apache.org/css/styles-e429186d1b.css"/>
         <script src="https://cayenne.apache.org/js/bundle-92aa692db7.js"></script>
-        <title>Apache Cayenne</title>
+        <title>Acknowledgments &middot; Apache Cayenne</title>
     </head>
     <body data-spy="scroll" data-target=".toc-side" class="cd-head"> 
 <header class="page-header">
@@ -92,10 +92,10 @@
                     <ul class="nav" role="tablist">
                         <li class="nav-item dropdown mw-100">
                             <a class="nav-link dropdown-toggle text-truncate" data-toggle="dropdown" href="#" role="button" aria-haspopup="true" aria-expanded="false">
-                                Cayenne Version 4.0
+                                Cayenne Version 1.2
                             </a>
                             <div class="dropdown-menu">
-                                <a class="dropdown-item" href="/docs/4.1/getting-started-guide/">Version 4.1 (Release Candidate)</a><a class="dropdown-item" href="/docs/4.0/getting-started-guide/">Version 4.0 (Stable)</a><a class="dropdown-item" href="/docs/3.1/getting-started-guide/">Version 3.1 (Aging)</a><a class="dropdown-item" href="/docs/3.0/api/">Version 3.0 (Legacy)</a><a class="dropdown-item" href="/docs/2.0/api/">Version 2.0 (Legacy)</a><a class="dropdown-item" href="/docs/1.2/ [...]
+                                <a class="dropdown-item" href="/docs/4.1/getting-started-guide/">Version 4.1 (Release Candidate)</a><a class="dropdown-item" href="/docs/4.0/getting-started-guide/">Version 4.0 (Stable)</a><a class="dropdown-item" href="/docs/3.1/getting-started-guide/">Version 3.1 (Aging)</a><a class="dropdown-item" href="/docs/3.0/cayenne-guide.html">Version 3.0 (Legacy)</a><a class="dropdown-item" href="/docs/2.0/user-guide.html">Version 2.0 (Legacy)</a><a class="dropdo [...]
                             </div>
                         </li>
                     </ul>
@@ -111,45 +111,40 @@
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/getting-started-guide/">Getting Started</a>
+                            <a class="cd-toc-link" href="/docs/1.2/user-guide.html">User Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/cayenne-guide/">Cayenne Guide</a>
+                            <a class="cd-toc-link" href="/docs/1.2/modeler-guide.html">Modeler Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/getting-started-rop/">Getting Started ROP</a>
+                            <a class="cd-toc-link" href="/docs/1.2/remote-object-persistence-guide.html">Remote Object Persistence Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
-                        
-                            <a class="cd-toc-link" href="/docs/4.0/upgrade-guide/">Upgrade Guide</a>
-                        
-                    </div>
-                    
-                    <div class="cd-toc-item">
-                        <a class="cd-toc-link" href="/docs/4.0/api/">JavaDoc</a>
+                        <a class="cd-toc-link" href="/docs/1.2/api/">JavaDoc</a>
                     </div>
                 </div>
             </div>
             
             <div class="col-12 col-lg-8 col-xl-9  py-3 pl-lg-5  cd-content">
 
-                <article>
-                    <header>
-                        <h1></h1>
-                    </header>
-                    <section>
-                        <p>Documentation, the JavaDoc API, examples and articles for Cayenne 4.0 can all be found here.</p>
+            
+            <article>
+                <section>
+                    
+	<P><BR>
+<BR>
+We would like to thank our dedicated team of <A href="http://objectstyle.org/cayenne/contributors.html" class="external-link" rel="nofollow">contributors</A> - for making this project possible, early adopters - for taking all the pain to help us make a usable product, other users - for providing feedback, comments, patches and bug reports.</P>
 
-                    </section>
-                </article>
+                </section>
+            </article>
 
 	        </div>
 	    </div>
@@ -279,7 +274,7 @@
     </div>
 </footer>
     
-<script>
+<script type="application/javascript">
 var doNotTrack = false;
 if (!doNotTrack) {
 	(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
diff --git a/docs/4.0/index.html b/docs/1.2/ant-tasks.html
similarity index 81%
copy from docs/4.0/index.html
copy to docs/1.2/ant-tasks.html
index 2bbcbd2..3245e11 100644
--- a/docs/4.0/index.html
+++ b/docs/1.2/ant-tasks.html
@@ -15,7 +15,7 @@
         <meta name="theme-color" content="#ffffff">
         <link rel="stylesheet" href="https://cayenne.apache.org/css/styles-e429186d1b.css"/>
         <script src="https://cayenne.apache.org/js/bundle-92aa692db7.js"></script>
-        <title>Apache Cayenne</title>
+        <title>Ant Tasks &middot; Apache Cayenne</title>
     </head>
     <body data-spy="scroll" data-target=".toc-side" class="cd-head"> 
 <header class="page-header">
@@ -92,10 +92,10 @@
                     <ul class="nav" role="tablist">
                         <li class="nav-item dropdown mw-100">
                             <a class="nav-link dropdown-toggle text-truncate" data-toggle="dropdown" href="#" role="button" aria-haspopup="true" aria-expanded="false">
-                                Cayenne Version 4.0
+                                Cayenne Version 1.2
                             </a>
                             <div class="dropdown-menu">
-                                <a class="dropdown-item" href="/docs/4.1/getting-started-guide/">Version 4.1 (Release Candidate)</a><a class="dropdown-item" href="/docs/4.0/getting-started-guide/">Version 4.0 (Stable)</a><a class="dropdown-item" href="/docs/3.1/getting-started-guide/">Version 3.1 (Aging)</a><a class="dropdown-item" href="/docs/3.0/api/">Version 3.0 (Legacy)</a><a class="dropdown-item" href="/docs/2.0/api/">Version 2.0 (Legacy)</a><a class="dropdown-item" href="/docs/1.2/ [...]
+                                <a class="dropdown-item" href="/docs/4.1/getting-started-guide/">Version 4.1 (Release Candidate)</a><a class="dropdown-item" href="/docs/4.0/getting-started-guide/">Version 4.0 (Stable)</a><a class="dropdown-item" href="/docs/3.1/getting-started-guide/">Version 3.1 (Aging)</a><a class="dropdown-item" href="/docs/3.0/cayenne-guide.html">Version 3.0 (Legacy)</a><a class="dropdown-item" href="/docs/2.0/user-guide.html">Version 2.0 (Legacy)</a><a class="dropdo [...]
                             </div>
                         </li>
                     </ul>
@@ -111,45 +111,62 @@
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/getting-started-guide/">Getting Started</a>
+                            <a class="cd-toc-link" href="/docs/1.2/user-guide.html">User Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/cayenne-guide/">Cayenne Guide</a>
+                            <a class="cd-toc-link" href="/docs/1.2/modeler-guide.html">Modeler Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/getting-started-rop/">Getting Started ROP</a>
+                            <a class="cd-toc-link" href="/docs/1.2/remote-object-persistence-guide.html">Remote Object Persistence Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
-                        
-                            <a class="cd-toc-link" href="/docs/4.0/upgrade-guide/">Upgrade Guide</a>
-                        
-                    </div>
-                    
-                    <div class="cd-toc-item">
-                        <a class="cd-toc-link" href="/docs/4.0/api/">JavaDoc</a>
+                        <a class="cd-toc-link" href="/docs/1.2/api/">JavaDoc</a>
                     </div>
                 </div>
             </div>
             
             <div class="col-12 col-lg-8 col-xl-9  py-3 pl-lg-5  cd-content">
 
-                <article>
-                    <header>
-                        <h1></h1>
-                    </header>
-                    <section>
-                        <p>Documentation, the JavaDoc API, examples and articles for Cayenne 4.0 can all be found here.</p>
+            
+            <article>
+                <section>
+                    
+	
+
+<P>Cayenne ships with Ant tasks that provide Ant frontend to a number of useful operations in Cayenne. The following tasks are included:</P>
+
+<UL>
+	<LI><B><A href="cgen.html" title="cgen">cgen</A></B> - Java class generator</LI>
+	<LI><B><A href="cdbgen.html" title="cdbgen">cdbgen</A></B> - Database schema generator</LI>
+	<LI><B><A href="cdeploy.html" title="cdeploy">cdeploy</A></B> - Deployment configurator</LI>
+	<LI><B><A href="cdataport.html" title="cdataport">cdataport</A></B> - Data porting tool.</LI>
+</UL>
+
+
+<H3><A name="AntTasks-ImportingCayenneTasksinbuild.xml"></A>Importing Cayenne Tasks in build.xml</H3>
+<P>Cayenne tasks above can be imported individually using Ant taskdef, as described in each task documentation page. However the users of Ant 1.6 and newer can take advantage of Antlib Ant feature. <A href="http://ant.apache.org/manual/CoreTypes/antlib.html" class="external-link" rel="nofollow">Antlib</A> allows 3rd party tasks and types to be defined easily. Cayenne has an embedded antlib.xml descriptor file in the package <TT>org.objectstyle.cayenne.tools</TT>. All of Cayenne's Ant tas [...]
+
+<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent">
+<PRE class="code-xml"><SPAN class="code-tag">&lt;typedef resource=<SPAN class="code-quote">&quot;org/objectstyle/cayenne/tools/antlib.xml&quot;</SPAN>&gt;</SPAN> 
+   <SPAN class="code-tag">&lt;classpath refid=<SPAN class="code-quote">&quot;classpath&quot;</SPAN>/&gt;</SPAN> 
+<SPAN class="code-tag">&lt;/typedef&gt;</SPAN>
+</PRE>
+</DIV></DIV>
+
+<P>When using the Antlib construct, omit the <TT>&lt;taskdef&gt;</TT> elements shown in the examples of each task, as the antlib.xml file defines all of the Cayenne Ant tasks. </P>
+
+
 
-                    </section>
-                </article>
+                </section>
+            </article>
 
 	        </div>
 	    </div>
@@ -279,7 +296,7 @@
     </div>
 </footer>
     
-<script>
+<script type="application/javascript">
 var doNotTrack = false;
 if (!doNotTrack) {
 	(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
diff --git a/docs/4.1/index.html b/docs/1.2/building-expressions.html
similarity index 51%
copy from docs/4.1/index.html
copy to docs/1.2/building-expressions.html
index 72a7dc5..7df445b 100644
--- a/docs/4.1/index.html
+++ b/docs/1.2/building-expressions.html
@@ -15,7 +15,7 @@
         <meta name="theme-color" content="#ffffff">
         <link rel="stylesheet" href="https://cayenne.apache.org/css/styles-e429186d1b.css"/>
         <script src="https://cayenne.apache.org/js/bundle-92aa692db7.js"></script>
-        <title>Apache Cayenne</title>
+        <title>Building Expressions &middot; Apache Cayenne</title>
     </head>
     <body data-spy="scroll" data-target=".toc-side" class="cd-head"> 
 <header class="page-header">
@@ -92,10 +92,10 @@
                     <ul class="nav" role="tablist">
                         <li class="nav-item dropdown mw-100">
                             <a class="nav-link dropdown-toggle text-truncate" data-toggle="dropdown" href="#" role="button" aria-haspopup="true" aria-expanded="false">
-                                Cayenne Version 4.1
+                                Cayenne Version 1.2
                             </a>
                             <div class="dropdown-menu">
-                                <a class="dropdown-item" href="/docs/4.1/getting-started-guide/">Version 4.1 (Release Candidate)</a><a class="dropdown-item" href="/docs/4.0/getting-started-guide/">Version 4.0 (Stable)</a><a class="dropdown-item" href="/docs/3.1/getting-started-guide/">Version 3.1 (Aging)</a><a class="dropdown-item" href="/docs/3.0/api/">Version 3.0 (Legacy)</a><a class="dropdown-item" href="/docs/2.0/api/">Version 2.0 (Legacy)</a><a class="dropdown-item" href="/docs/1.2/ [...]
+                                <a class="dropdown-item" href="/docs/4.1/getting-started-guide/">Version 4.1 (Release Candidate)</a><a class="dropdown-item" href="/docs/4.0/getting-started-guide/">Version 4.0 (Stable)</a><a class="dropdown-item" href="/docs/3.1/getting-started-guide/">Version 3.1 (Aging)</a><a class="dropdown-item" href="/docs/3.0/cayenne-guide.html">Version 3.0 (Legacy)</a><a class="dropdown-item" href="/docs/2.0/user-guide.html">Version 2.0 (Legacy)</a><a class="dropdo [...]
                             </div>
                         </li>
                     </ul>
@@ -111,51 +111,196 @@
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.1/getting-started-guide/">Getting Started</a>
+                            <a class="cd-toc-link" href="/docs/1.2/user-guide.html">User Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.1/cayenne-guide/">Cayenne Guide</a>
+                            <a class="cd-toc-link" href="/docs/1.2/modeler-guide.html">Modeler Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.1/getting-started-db-first/">Database First Tutorial</a>
+                            <a class="cd-toc-link" href="/docs/1.2/remote-object-persistence-guide.html">Remote Object Persistence Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
-                        
-                            <a class="cd-toc-link" href="/docs/4.1/getting-started-rop/">Getting Started ROP</a>
-                        
-                    </div>
-                    
-                    <div class="cd-toc-item">
-                        
-                            <a class="cd-toc-link" href="/docs/4.1/upgrade-guide/">Upgrade Guide</a>
-                        
-                    </div>
-                    
-                    <div class="cd-toc-item">
-                        <a class="cd-toc-link" href="/docs/4.1/api/">JavaDoc</a>
+                        <a class="cd-toc-link" href="/docs/1.2/api/">JavaDoc</a>
                     </div>
                 </div>
             </div>
             
             <div class="col-12 col-lg-8 col-xl-9  py-3 pl-lg-5  cd-content">
 
-                <article>
-                    <header>
-                        <h1></h1>
-                    </header>
-                    <section>
-                        <p>Documentation, the JavaDoc API, examples and articles for Cayenne 4.1 can all be found here.</p>
+            
+            <article>
+                <section>
+                    
+	
+
+<P>The Expression class (<TT>org.objectstyle.cayenne.exp.Expression</TT>) provides <TT>Expression.fromString(String)</TT> as a convenience method to create expressions of arbitrary complexity.  The structure of expressions is fairly intuitive, with the <A href="http://www.objectstyle.org/cayenne/1_2/grammar/ExpressionParser.html" class="external-link" rel="nofollow">formal grammar</A> showing the formal syntax and operators currently supported, but this topic is devoted to showing exampl [...]
+
+<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent">
+<PRE class="code-java">Expression e = Expression.fromString(<SPAN class="code-quote">&quot;paintingTitle like 'A%' and estimatedPrice &lt; 1000&quot;</SPAN>);
+</PRE>
+</DIV></DIV>
+
+<P>As you can see, the Expression class provides an easy way to specify the <TT>WHERE</TT> portion of a database query.</P>
+
+<H3><A name="BuildingExpressions-BinaryOperators"></A>Binary Operators</H3>
+
+<P>Expressions used as query qualifiers must use binary operators:</P>
+
+<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent">
+<PRE class="code-java"><SPAN class="code-comment">// valid qualifier
+</SPAN>Expression e1 = Expression.fromString(<SPAN class="code-quote">&quot;artistName like 'A%'&quot;</SPAN>);
+
+<SPAN class="code-comment">// INVALID QUALIFIER - <SPAN class="code-keyword">this</SPAN> will result in a SQL exception even
+</SPAN><SPAN class="code-comment">// though it is still a valid Cayenne expression
+</SPAN>Expression e2 = Expression.fromString(<SPAN class="code-quote">&quot;artistName&quot;</SPAN>);
+</PRE>
+</DIV></DIV>
+
+<H3><A name="BuildingExpressions-CharacterConstants"></A>Character Constants</H3>
+
+<P>Character constants should be enclosed in single or double quotes:</P>
+<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent">
+<PRE class="code-java"><SPAN class="code-comment">// e1 and e2 are equivalent
+</SPAN>Expression e1 = Expression.fromString(<SPAN class="code-quote">&quot;name = 'ABC'&quot;</SPAN>);
+Expression e2 = Expression.fromString(<SPAN class="code-quote">&quot;name = \&quot;</SPAN>ABC\&quot;&quot;);
+</PRE>
+</DIV></DIV>
+
+<H3><A name="BuildingExpressions-CaseSensitive"></A>Case Sensitive</H3>
+
+<P>Predefined expression operators are all case sensitive and are usually lowercase.  Complex words mostly follow the &quot;Java naming style&quot;:</P>
+<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent">
+<PRE class="code-java"><SPAN class="code-comment">// correct
+</SPAN>Expression e1 = Expression.fromString(<SPAN class="code-quote">&quot;artistName likeIgnoreCase 'A%'&quot;</SPAN>);
+
+<SPAN class="code-comment">// INCORRECT - will result in ParseException
+</SPAN>Expression e2 = Expression.fromString(<SPAN class="code-quote">&quot;artistName LIKEIGNORECASE 'A%'&quot;</SPAN>);
+</PRE>
+</DIV></DIV>
+
+<H3><A name="BuildingExpressions-Groupings"></A>Groupings</H3>
+
+<P>Grouping of operations is done with parenthesis:</P>
+<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent">
+<PRE class="code-java">Expression e1 = Expression.fromString(<SPAN class="code-quote">&quot;value = (estimatedPrice + 250.00) * 3&quot;</SPAN>);
+</PRE>
+</DIV></DIV>
+
+<H3><A name="BuildingExpressions-Prefixes"></A>Prefixes</H3>
+
+<P>Object expressions are unquoted strings, <B>optionally</B> prefixed by &quot;obj:&quot;.  Database expressions are unquoted strings, <B>always</B> prefixed with &quot;db:&quot;:</P>
+
+<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent">
+<PRE class="code-java"><SPAN class="code-comment">// object path
+</SPAN>Expression e1 = Expression.fromString(<SPAN class="code-quote">&quot;artistName = 'Salvador Dali'&quot;</SPAN>);
+
+<SPAN class="code-comment">// same object path
+</SPAN>Expression e2 = Expression.fromString(<SPAN class="code-quote">&quot;obj:artistName = 'Salvador Dali'&quot;</SPAN>);
+
+<SPAN class="code-comment">// database path, <SPAN class="code-quote">&quot;db:&quot;</SPAN> prefix is mandatory
+</SPAN>Expression e3 = Expression.fromString(<SPAN class="code-quote">&quot;db:ARTIST_NAME = 'Salvador Dali'&quot;</SPAN>);
+</PRE>
+</DIV></DIV>
+
+<P>Please note that &quot;obj:&quot; and &quot;db:&quot; are case sensitive.</P>
+
+
+<H3><A name="BuildingExpressions-NamedParameterExpressions"></A>Named Parameter Expressions</H3>
+
+<P>Expressions can have named parameters (names that start with &quot;$&quot;).  Parameterized expressions are an easy way to create reusable expression templates:</P>
+<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent">
+<PRE class="code-java"><SPAN class="code-keyword">final</SPAN> Expression template = Expression.fromString(<SPAN class="code-quote">&quot;artistName = $name&quot;</SPAN>);
+SelectQuery query;
+List values;
+...
+Map params = <SPAN class="code-keyword">new</SPAN> HashMap();
+params.put(<SPAN class="code-quote">&quot;name&quot;</SPAN>, <SPAN class="code-quote">&quot;Salvador Dali&quot;</SPAN>);
+query = <SPAN class="code-keyword">new</SPAN> SelectQuery(Artist.class, template.expWithParameters(params));
+values = dataContext.performQuery(query);
+...
+params.put(<SPAN class="code-quote">&quot;name&quot;</SPAN>, <SPAN class="code-quote">&quot;Monet&quot;</SPAN>);
+query = <SPAN class="code-keyword">new</SPAN> SelectQuery(Artist.class, template.expWithParameters(params));
+values = dataContext.performQuery(query);
+</PRE>
+</DIV></DIV>
+
+<P>To create a named parameterized expression with a LIKE clause, the wildcard(s) must be part of the values in the Map and not the expression string itself:</P>
+<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent">
+<PRE class="code-java"><SPAN class="code-keyword">final</SPAN> Expression template = Expression.fromString(<SPAN class="code-quote">&quot;artistName like $name&quot;</SPAN>);
+SelectQuery query;
+List values;
+...
+Map params = <SPAN class="code-keyword">new</SPAN> HashMap();
+params.put(<SPAN class="code-quote">&quot;name&quot;</SPAN>, <SPAN class="code-quote">&quot;Salvi%&quot;</SPAN>);
+query = <SPAN class="code-keyword">new</SPAN> SelectQuery(Artist.class, template.expWithParameters(params));
+values = dataContext.performQuery(query);
+...
+</PRE>
+</DIV></DIV>
+
+<H3><A name="BuildingExpressions-KeyPathExpressions"></A>Key Path Expressions</H3>
+
+<P>A very powerful feature of Cayenne's expressions are the ability to specify relationships in the expression string as a &quot;dotted&quot; key path.  Cayenne will automatically determine all the join information.  For example, if basing a query off the Painting:</P>
+
+<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent">
+<PRE class="code-java"><SPAN class="code-keyword">final</SPAN> Expression template = Expression.fromString(<SPAN class="code-quote">&quot;artist.artistName = $artist and gallery.galleryName = $gallery&quot;</SPAN>);
+SelectQuery query;
+List values;
+...
+Map params = <SPAN class="code-keyword">new</SPAN> HashMap();
+params.put(<SPAN class="code-quote">&quot;artist&quot;</SPAN>, <SPAN class="code-quote">&quot;Salvador Dali&quot;</SPAN>);
+params.put(<SPAN class="code-quote">&quot;gallery&quot;</SPAN>, <SPAN class="code-quote">&quot;Louvre&quot;</SPAN>);
+query = <SPAN class="code-keyword">new</SPAN> SelectQuery(Artist.class, template.expWithParameters(params));
+values = dataContext.performQuery(query);
+...
+</PRE>
+</DIV></DIV>
+
+<P>Note that the key path can contain multiple &quot;dots&quot; in the name &ndash; there is no predefined limit.  Also, the parameter doesn't have to be a String (or Number/etc), it can also be a Cayenne DataObject if you already have one in memory:</P>
+
+<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent">
+<PRE class="code-java"><SPAN class="code-keyword">final</SPAN> Expression template = Expression.fromString(<SPAN class="code-quote">&quot;artist.artistName = $artist and gallery = $gallery&quot;</SPAN>);
+SelectQuery query;
+List values;
+...
+Map params = <SPAN class="code-keyword">new</SPAN> HashMap();
+params.put(<SPAN class="code-quote">&quot;artist&quot;</SPAN>, <SPAN class="code-quote">&quot;Salvador Dali&quot;</SPAN>);
+params.put(<SPAN class="code-quote">&quot;gallery&quot;</SPAN>, gallery); <SPAN class="code-comment">// gallery = instance of Gallery
+</SPAN>query = <SPAN class="code-keyword">new</SPAN> SelectQuery(Artist.class, template.expWithParameters(params));
+values = dataContext.performQuery(query);
+...
+</PRE>
+</DIV></DIV>
+
+<H3><A name="BuildingExpressions-OptionalNamedParameterValues"></A>Optional Named Parameter Values</H3>
+
+<P>Cayenne by default automatically omits parts of an expression which have no matching value.  Using the expression from above:</P>
+
+<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent">
+<PRE class="code-java"><SPAN class="code-keyword">final</SPAN> Expression template = Expression.fromString(<SPAN class="code-quote">&quot;artist.artistName = $artist and gallery.galleryName = $gallery&quot;</SPAN>);
+SelectQuery query;
+List values;
+...
+Map params = <SPAN class="code-keyword">new</SPAN> HashMap();
+params.put(<SPAN class="code-quote">&quot;artist&quot;</SPAN>, <SPAN class="code-quote">&quot;Salvador Dali&quot;</SPAN>);
+query = <SPAN class="code-keyword">new</SPAN> SelectQuery(Artist.class, template.expWithParameters(params));
+values = dataContext.performQuery(query);
+...
+</PRE>
+</DIV></DIV>
+
+<P>Even though the specified expression has two named parameters, the &quot;gallery&quot; key has been omitted.  Cayenne will automatically translate the expression into <TT>&quot;artist.artistName = $artist&quot;</TT> (which becomes <TT>&quot;artist.artistName = 'Salvador Dali'&quot;</TT>).  This feature allows a restrictive search qualifier to be written and prompt the user for search criteria.  If the user leaves values out, the expression can automatically widen to be a less restrict [...]
 
-                    </section>
-                </article>
+                </section>
+            </article>
 
 	        </div>
 	    </div>
@@ -285,7 +430,7 @@
     </div>
 </footer>
     
-<script>
+<script type="application/javascript">
 var doNotTrack = false;
 if (!doNotTrack) {
 	(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
diff --git a/docs/4.0/index.html b/docs/1.2/caching-lookup-tables.html
similarity index 86%
copy from docs/4.0/index.html
copy to docs/1.2/caching-lookup-tables.html
index 2bbcbd2..7f90948 100644
--- a/docs/4.0/index.html
+++ b/docs/1.2/caching-lookup-tables.html
@@ -15,7 +15,7 @@
         <meta name="theme-color" content="#ffffff">
         <link rel="stylesheet" href="https://cayenne.apache.org/css/styles-e429186d1b.css"/>
         <script src="https://cayenne.apache.org/js/bundle-92aa692db7.js"></script>
-        <title>Apache Cayenne</title>
+        <title>Caching Lookup Tables &middot; Apache Cayenne</title>
     </head>
     <body data-spy="scroll" data-target=".toc-side" class="cd-head"> 
 <header class="page-header">
@@ -92,10 +92,10 @@
                     <ul class="nav" role="tablist">
                         <li class="nav-item dropdown mw-100">
                             <a class="nav-link dropdown-toggle text-truncate" data-toggle="dropdown" href="#" role="button" aria-haspopup="true" aria-expanded="false">
-                                Cayenne Version 4.0
+                                Cayenne Version 1.2
                             </a>
                             <div class="dropdown-menu">
-                                <a class="dropdown-item" href="/docs/4.1/getting-started-guide/">Version 4.1 (Release Candidate)</a><a class="dropdown-item" href="/docs/4.0/getting-started-guide/">Version 4.0 (Stable)</a><a class="dropdown-item" href="/docs/3.1/getting-started-guide/">Version 3.1 (Aging)</a><a class="dropdown-item" href="/docs/3.0/api/">Version 3.0 (Legacy)</a><a class="dropdown-item" href="/docs/2.0/api/">Version 2.0 (Legacy)</a><a class="dropdown-item" href="/docs/1.2/ [...]
+                                <a class="dropdown-item" href="/docs/4.1/getting-started-guide/">Version 4.1 (Release Candidate)</a><a class="dropdown-item" href="/docs/4.0/getting-started-guide/">Version 4.0 (Stable)</a><a class="dropdown-item" href="/docs/3.1/getting-started-guide/">Version 3.1 (Aging)</a><a class="dropdown-item" href="/docs/3.0/cayenne-guide.html">Version 3.0 (Legacy)</a><a class="dropdown-item" href="/docs/2.0/user-guide.html">Version 2.0 (Legacy)</a><a class="dropdo [...]
                             </div>
                         </li>
                     </ul>
@@ -111,45 +111,48 @@
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/getting-started-guide/">Getting Started</a>
+                            <a class="cd-toc-link" href="/docs/1.2/user-guide.html">User Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/cayenne-guide/">Cayenne Guide</a>
+                            <a class="cd-toc-link" href="/docs/1.2/modeler-guide.html">Modeler Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/getting-started-rop/">Getting Started ROP</a>
+                            <a class="cd-toc-link" href="/docs/1.2/remote-object-persistence-guide.html">Remote Object Persistence Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
-                        
-                            <a class="cd-toc-link" href="/docs/4.0/upgrade-guide/">Upgrade Guide</a>
-                        
-                    </div>
-                    
-                    <div class="cd-toc-item">
-                        <a class="cd-toc-link" href="/docs/4.0/api/">JavaDoc</a>
+                        <a class="cd-toc-link" href="/docs/1.2/api/">JavaDoc</a>
                     </div>
                 </div>
             </div>
             
             <div class="col-12 col-lg-8 col-xl-9  py-3 pl-lg-5  cd-content">
 
-                <article>
-                    <header>
-                        <h1></h1>
-                    </header>
-                    <section>
-                        <p>Documentation, the JavaDoc API, examples and articles for Cayenne 4.0 can all be found here.</p>
+            
+            <article>
+                <section>
+                    
+	
+
+<P>Query result caching feature can be used to implement caching of lookup tables. &quot;Lookup&quot; or &quot;configuration&quot; tables can be loosely defined as small tables that change rarely and mostly used in read-only fashion. Examples of such tables are COUNTRY, USER_TYPE, AREA_CODE, etc. Often data from such tables is displayed in a combo box or dropdown.</P>
+
+<P>For performance reasons it makes sense to store the lookup data in the shared cache. The following steps could be taken to create and use a shared query for a Country entity:</P>
+
+<UL>
+	<LI>Create a named SelectQuery in CayenneModeler. Call it something like &quot;AllCountries&quot;. Select a root to be Country ObjEntity, select shared caching and uncheck &quot;refresh&quot; checkbox.</LI>
+	<LI>Whenever a list of countries is needed, use a local DataContext to get it from cache - <TT>context.performQuery(&quot;AllCountries&quot;, false)</TT>.</LI>
+</UL>
+
 
-                    </section>
-                </article>
+                </section>
+            </article>
 
 	        </div>
 	    </div>
@@ -279,7 +282,7 @@
     </div>
 </footer>
     
-<script>
+<script type="application/javascript">
 var doNotTrack = false;
 if (!doNotTrack) {
 	(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
diff --git a/docs/4.1/upgrade-guide/index.html b/docs/1.2/caching-query-results.html
similarity index 56%
copy from docs/4.1/upgrade-guide/index.html
copy to docs/1.2/caching-query-results.html
index 736f551..25f461a 100644
--- a/docs/4.1/upgrade-guide/index.html
+++ b/docs/1.2/caching-query-results.html
@@ -15,7 +15,7 @@
         <meta name="theme-color" content="#ffffff">
         <link rel="stylesheet" href="https://cayenne.apache.org/css/styles-e429186d1b.css"/>
         <script src="https://cayenne.apache.org/js/bundle-92aa692db7.js"></script>
-        <title>Guide to 4.1 Features &middot; Apache Cayenne</title>
+        <title>Caching Query Results &middot; Apache Cayenne</title>
     </head>
     <body data-spy="scroll" data-target=".toc-side" class="cd-head"> 
 <header class="page-header">
@@ -92,10 +92,10 @@
                     <ul class="nav" role="tablist">
                         <li class="nav-item dropdown mw-100">
                             <a class="nav-link dropdown-toggle text-truncate" data-toggle="dropdown" href="#" role="button" aria-haspopup="true" aria-expanded="false">
-                                Cayenne Version 4.1
+                                Cayenne Version 1.2
                             </a>
                             <div class="dropdown-menu">
-                                <a class="dropdown-item" href="/docs/4.1/getting-started-guide/">Version 4.1 (Release Candidate)</a><a class="dropdown-item" href="/docs/4.0/getting-started-guide/">Version 4.0 (Stable)</a><a class="dropdown-item" href="/docs/3.1/getting-started-guide/">Version 3.1 (Aging)</a><a class="dropdown-item" href="/docs/3.0/api/">Version 3.0 (Legacy)</a><a class="dropdown-item" href="/docs/2.0/api/">Version 2.0 (Legacy)</a><a class="dropdown-item" href="/docs/1.2/ [...]
+                                <a class="dropdown-item" href="/docs/4.1/getting-started-guide/">Version 4.1 (Release Candidate)</a><a class="dropdown-item" href="/docs/4.0/getting-started-guide/">Version 4.0 (Stable)</a><a class="dropdown-item" href="/docs/3.1/getting-started-guide/">Version 3.1 (Aging)</a><a class="dropdown-item" href="/docs/3.0/cayenne-guide.html">Version 3.0 (Legacy)</a><a class="dropdown-item" href="/docs/2.0/user-guide.html">Version 2.0 (Legacy)</a><a class="dropdo [...]
                             </div>
                         </li>
                     </ul>
@@ -111,169 +111,163 @@
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.1/getting-started-guide/">Getting Started</a>
+                            <a class="cd-toc-link" href="/docs/1.2/user-guide.html">User Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.1/cayenne-guide/">Cayenne Guide</a>
+                            <a class="cd-toc-link" href="/docs/1.2/modeler-guide.html">Modeler Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.1/getting-started-db-first/">Database First Tutorial</a>
+                            <a class="cd-toc-link" href="/docs/1.2/remote-object-persistence-guide.html">Remote Object Persistence Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
-                        
-                            <a class="cd-toc-link" href="/docs/4.1/getting-started-rop/">Getting Started ROP</a>
-                        
-                    </div>
-                    
-                    <div class="cd-toc-item">
-                        
-                        <span class="cd-toc-link active">Upgrade Guide</span><div id="toc" class="toc toc-side"> 
- <div id="toctitle">
-  Table of Contents
- </div> 
- <ul class="sectlevel1 nav"> 
-  <li><a href="#java-version" class="nav-link">1. Java Version</a></li> 
-  <li><a href="#new-features" class="nav-link">2. New Features</a> 
-   <ul class="sectlevel2 nav"> 
-    <li><a href="#cayenne-core-is-dependency-free" class="nav-link">2.1. Cayenne Core is Dependency-Free</a></li> 
-    <li><a href="#field-based-data-objects" class="nav-link">2.2. Field-Based Data Objects</a></li> 
-    <li><a href="#extensible-project-xml-structure" class="nav-link">2.3. Extensible Project XML Structure</a></li> 
-   </ul> </li> 
-  <li><a href="#api-changes" class="nav-link">3. API Changes</a> 
-   <ul class="sectlevel2 nav"> 
-    <li><a href="#transaction-propagation-logic-and-isolation-level" class="nav-link">3.1. Transaction propagation logic and isolation level</a></li> 
-    <li><a href="#injectable-pkgenerator" class="nav-link">3.2. Injectable PkGenerator</a></li> 
-    <li><a href="#datachannelfilter-replaced-with-datachannelqueryfilter-and-datachannelsyncfilter" class="nav-link">3.3. DataChannelFilter replaced with DataChannelQueryFilter and DataChannelSyncFilter</a></li> 
-   </ul> </li> 
- </ul> 
-</div>
-                    </div>
-                    
-                    <div class="cd-toc-item">
-                        <a class="cd-toc-link" href="/docs/4.1/api/">JavaDoc</a>
+                        <a class="cd-toc-link" href="/docs/1.2/api/">JavaDoc</a>
                     </div>
                 </div>
             </div>
             
             <div class="col-12 col-lg-8 col-xl-9  py-3 pl-lg-5  cd-content">
 
-                <article>
-                    <header>
-                        <h1>Guide to 4.1 Features</h1>
-                    </header>
-                    <section>
-                        <div class="sect1"> 
- <h2 id="java-version"><a class="anchor" href="#java-version"></a>1. Java Version</h2> 
- <div class="sectionbody"> 
-  <div class="paragraph"> 
-   <p>Minimum required JDK version is 1.8 or newer. Cayenne 4.1 is fully tested with Java 1.8 and 11.</p> 
-  </div> 
- </div> 
-</div> 
-<div class="sect1"> 
- <h2 id="new-features"><a class="anchor" href="#new-features"></a>2. New Features</h2> 
- <div class="sectionbody"> 
-  <div class="sect2"> 
-   <h3 id="cayenne-core-is-dependency-free"><a class="anchor" href="#cayenne-core-is-dependency-free"></a>2.1. Cayenne Core is Dependency-Free</h3> 
-   <div class="paragraph"> 
-    <p>Cayenne now depends only on <code>slf4j-api</code> library. We removed <code>velocity</code>, <code>commons-lang</code> and <code>commons-collections</code> dependencies from the Cayenne core. Velocity templates replaced with a simplified (and also much faster) parser for the parts of the Velocity syntax essential for Cayenne.</p> 
-   </div> 
-   <div class="paragraph"> 
-    <p>This should be transparent in almost all case. See <code>UPGRADE.txt</code> for details.</p> 
-   </div> 
-  </div> 
-  <div class="sect2"> 
-   <h3 id="field-based-data-objects"><a class="anchor" href="#field-based-data-objects"></a>2.2. Field-Based Data Objects</h3> 
-   <div class="paragraph"> 
-    <p>Cayenne <strong>4.1</strong> generates field-based DataObjects by default. And it is HUGE for the app performance. The new objects are much faster to read and write and significantly reduce the overall app memory footprint and the corresponding GC pauses.</p> 
-   </div> 
-   <div class="paragraph"> 
-    <p>The new objects are mostly backwards-compatible with our “classic” map-based objects from the application standpoint. The main source of incompatibility is support for “dynamic” properties (i.e. persistent properties not known at compile time).</p> 
-   </div> 
-   <div class="paragraph"> 
-    <p>Field-based DataObjects are generated via new class templates. So to take advantage of this feature you should simply regenerate you model classes.</p> 
-   </div> 
-  </div> 
-  <div class="sect2"> 
-   <h3 id="extensible-project-xml-structure"><a class="anchor" href="#extensible-project-xml-structure"></a>2.3. Extensible Project XML Structure</h3> 
-   <div class="paragraph"> 
-    <p>Cayenne mapping project structure was modularized, allowing embedding of extensions with their own XML schemas. This enables support for comments for entities, attributes and relationships. Also Cayenne 4.1 have extensions for cdbimport and cgen, making OR modeling workflow experience so much smoother.</p> 
-   </div> 
-   <div class="imageblock" style="text-align: center"> 
-    <div class="content"> 
-     <img src="images/modeler-dbimport.png" alt="modeler dbimport"> 
-    </div> 
-   </div> 
-  </div> 
- </div> 
-</div> 
-<div class="sect1"> 
- <h2 id="api-changes"><a class="anchor" href="#api-changes"></a>3. API Changes</h2> 
- <div class="sectionbody"> 
-  <div class="sect2"> 
-   <h3 id="transaction-propagation-logic-and-isolation-level"><a class="anchor" href="#transaction-propagation-logic-and-isolation-level"></a>3.1. Transaction propagation logic and isolation level</h3> 
-   <div class="paragraph"> 
-    <p>New API allows to fully control transaction behavior where it’s needed.</p> 
-   </div> 
-   <div class="listingblock"> 
-    <div class="content"> 
-     <pre class="highlight"><code class="language-java java" data-lang="java">TransactionManager manager = runtime.getInjector().getInstance(TransactionManager.class);
-    TransactionDescriptor descriptor = new TransactionDescriptor(
-            Connection.TRANSACTION_SERIALIZABLE, // set transaction isolation to SERIALIZABLE
-            TransactionPropagation.REQUIRES_NEW  // require new transaction for every operation
-    );
-    manager.performInTransaction(() -&gt; {
-        // perform some DB operations...
-        return null;
-    }, descriptor);</code></pre> 
-    </div> 
-   </div> 
-  </div> 
-  <div class="sect2"> 
-   <h3 id="injectable-pkgenerator"><a class="anchor" href="#injectable-pkgenerator"></a>3.2. Injectable PkGenerator</h3> 
-   <div class="paragraph"> 
-    <p>All <code>PkGenerators</code> are now managed by DI so you can simply inject your own implementation.</p> 
-   </div> 
-   <div class="listingblock"> 
-    <div class="content"> 
-     <pre class="highlight"><code class="language-java java" data-lang="java">ServerModule.contributePkGenerators(binder)
-                .put(MySQLAdapter.class.getName(), CustomSQLPkGenerator.class);</code></pre> 
-    </div> 
-   </div> 
-  </div> 
-  <div class="sect2"> 
-   <h3 id="datachannelfilter-replaced-with-datachannelqueryfilter-and-datachannelsyncfilter"><a class="anchor" href="#datachannelfilter-replaced-with-datachannelqueryfilter-and-datachannelsyncfilter"></a>3.3. DataChannelFilter replaced with DataChannelQueryFilter and DataChannelSyncFilter</h3> 
-   <div class="paragraph"> 
-    <p><code>DataChannelFilter</code> is deprecated. Instead two separate filters are introduced.</p> 
-   </div> 
-   <div class="listingblock"> 
-    <div class="content"> 
-     <pre class="highlight"><code class="language-java java" data-lang="java">ServerModule.contributeDomainQueryFilters(binder).add((context, query, chain) -&gt; {
-    // do something with query
-    // ...
-    return chain.onQuery(context, query);
-});
-
-ServerModule.contributeDomainSyncFilters(binder).add((context, changes, syncType, chain) -&gt; {
-    // do something with changes
-    // ...
-    return chain.onSync(context, changes, syncType);
-});</code></pre> 
-    </div> 
-   </div> 
-  </div> 
- </div> 
-</div>
-                    </section>
-                </article>
+            
+            <article>
+                <section>
+                    
+	
+
+<P>Cayenne provides a way to cache query results, avoiding unneeded database trips for the frequently used queries. Caching policy is configured per query. Policy can be set via the API or in CayenneModeler.</P>
+
+<DIV class="panelMacro"><TABLE class="noteMacro"><COLGROUP><COL width="24"><COL></COLGROUP><TR><TD valign="top"><img src="/docs/1.2/images/warning.gif" width="16" height="16" align="absmiddle" alt="" border="0"></TD><TD><B>Upgrading to Cayenne 1.2 and Newer</B><BR><TT>org.objectstyle.cayenne.query.GenericSelectQuery</TT> interface that defined cache policy types is deprecated. Cache policies are now a part of the new <TT>org.objectstyle.cayenne.query.QueryMetadata</TT> interface.</TD></T [...]
+
+<P>The following cache policies are supported:</P>
+
+<DIV class="table-wrap">
+<TABLE class="confluenceTable"><TBODY>
+<TR>
+<TH class="confluenceTh">Policy</TH>
+<TH class="confluenceTh">Cache Scope</TH>
+<TH class="confluenceTh">Cache Behavior</TH>
+</TR>
+<TR>
+<TD class="confluenceTd"><EM>(default policy)</EM> <TT>QueryMetadata.NO_CACHE</TT> </TD>
+<TD class="confluenceTd">N/A</TD>
+<TD class="confluenceTd">Always fetch, never use cache, never save to cache</TD>
+</TR>
+<TR>
+<TD class="confluenceTd"><TT>QueryMetadata.LOCAL_CACHE</TT></TD>
+<TD class="confluenceTd">DataContext</TD>
+<TD class="confluenceTd">If result is previously cached, use it, otherwise do a fetch and store result in cache for future use</TD>
+</TR>
+<TR>
+<TD class="confluenceTd"><TT>QueryMetadata.LOCAL_CACHE_REFRESH</TT></TD>
+<TD class="confluenceTd">DataContext</TD>
+<TD class="confluenceTd">Never use cache, alwyas do a fetch and store result in cache for future use</TD>
+</TR>
+<TR>
+<TD class="confluenceTd"><TT>QueryMetadata.SHARED_CACHE</TT></TD>
+<TD class="confluenceTd">DataDomain (usually shared by all contexts in the same JVM)</TD>
+<TD class="confluenceTd">If result is previously cached, use it, otherwise do a fetch and store result in cache for future use</TD>
+</TR>
+<TR>
+<TD class="confluenceTd"><TT>QueryMetadata.SHARED_CACHE_REFRESH</TT></TD>
+<TD class="confluenceTd">DataDomain (usually shared by all contexts in the same JVM)</TD>
+<TD class="confluenceTd">Never use cache, alwyas do a fetch and store result in cache for future use</TD>
+</TR>
+</TBODY></TABLE>
+</DIV>
+
+
+<P>It is important to understand that caching of <B>result lists</B> is done independently from caching of <B>individual DataObjects and DataRows</B>. Therefore the API is different as well. Also cached results lists are not synchronized across VMs (even the shared cache).</P>
+
+
+<H3><A name="CachingQueryResults-APIforResultCaching"></A>API for Result Caching</H3>
+
+<P>Users must set two Query parameters to configure caching - query <B>name</B> that is used as a key to result cache and query <B>cache policy</B> (one of the policies above). Note that if two unrelated queries have the same name, they will hit the same cache entry. This is not a bug, this is a feature that should be taken into consideration when naming queries.</P>
+
+<P>Below we will create a query and set its caching policy to LOCAL_CACHE:</P>
+<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent">
+<PRE class="code-java">SelectQuery query = <SPAN class="code-keyword">new</SPAN> SelectQuery(Artist.class);
+
+<SPAN class="code-comment">// set query name that will be used as a unique key to perform result caching
+</SPAN>query.setName(<SPAN class="code-quote">&quot;MySelect&quot;</SPAN>);
+
+<SPAN class="code-comment">// set local cache policy, meaning the cache will be stored in the DataContext 
+</SPAN><SPAN class="code-comment">// and not shared between different contexts
+</SPAN>query.setCachePolicy(GenericSelectQuery.LOCAL_CACHE);
+
+DataContext context = ... <SPAN class="code-comment">// assume <SPAN class="code-keyword">this</SPAN> exists
+</SPAN>
+<SPAN class="code-comment">// there is probably no cache at <SPAN class="code-keyword">this</SPAN> point, so the query will hit the database
+</SPAN>List objects = context.performQuery(query);
+</PRE>
+</DIV></DIV>
+
+<P>Reruning the query in the same DataContext at a later time will be much faster as it will be hitting the cache:</P>
+
+<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent">
+<PRE class="code-java">List objects1 = context.performQuery(query);
+</PRE>
+</DIV></DIV>
+
+<P>Here we want to refresh the cache, but still keep caching the fresh result:</P>
+<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent">
+<PRE class="code-java">query.setCachePolicy(GenericSelectQuery.LOCAL_CACHE_REFRESH);
+
+List objects2 = context.performQuery(query);
+</PRE>
+</DIV></DIV>
+
+<P>The example above shows caching with <TT>SelectQuery</TT>, but it works exactly the same way for <TT>SQLTemplate</TT> and <TT>ProcedureQuery</TT>. Similarly <TT>SHARED_CACHE</TT> and <TT>SHARED_CACHE_REFRESH</TT> cache policies create cache shared by all DataDontexts that work with a given DataDomain. </P>
+
+
+<DIV class="panelMacro"><TABLE class="noteMacro"><COLGROUP><COL width="24"><COL></COLGROUP><TR><TD valign="top"><img src="/docs/1.2/images/warning.gif" width="16" height="16" align="absmiddle" alt="" border="0"></TD><TD><B>Upgrading to Cayenne 1.2 and Newer</B><BR>Cache refreshing API has changed in 1.2. Cayenne 1.1 relied on the use of <TT>SelectQuery.setRefreshingObjects(..)</TT> to determine whether to expire cached result lists. This is no longer the case (setting this flag only refr [...]
+
+
+<H3><A name="CachingQueryResults-QueriesMappedinCayenneModeler"></A>Queries Mapped in CayenneModeler</H3>
+
+<P>The easiest way to set up caching is by creating a named query in CayenneModeler with the appropriate caching type.</P>
+
+<P><SPAN class="image-wrap" style=""><img src="/docs/1.2/images/caching.jpg" style="border: 0px solid black"></SPAN></P>
+
+<P>Then it can be executed via DataContext:</P>
+
+<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent">
+<PRE class="code-java">List objects1 = context.performQuery(<SPAN class="code-quote">&quot;MyQuery&quot;</SPAN>, <SPAN class="code-keyword">false</SPAN>);
+</PRE>
+</DIV></DIV>
+
+<P>The second &quot;false&quot; parameter above indicated that if possible, cached result should be used. Now if we want to force refresh, it can be changed to true (for just this invocation - this does not affect the underlying saved query)</P>
+
+<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent">
+<PRE class="code-java">List objects2 = context.performQuery(<SPAN class="code-quote">&quot;MyQuery&quot;</SPAN>, <SPAN class="code-keyword">true</SPAN>);
+</PRE>
+</DIV></DIV>
+
+<P>Note that parameterized named queries will still work correctly with the cache. We've already mentioned that the users must ensure that two queries must have different names if they fetch logically different data. This is NOT the case with queries stored in the DataMap. If you run the same named query with different sets of parameters, Cayenne will internally generate unique cache keys for each distinct parameter set.</P>
+
+<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent">
+<PRE class="code-java">Map parameters = Collections.singletonMap(<SPAN class="code-quote">&quot;key&quot;</SPAN>, <SPAN class="code-quote">&quot;value1&quot;</SPAN>);
+List objects1 = context.performQuery(<SPAN class="code-quote">&quot;MyQuery&quot;</SPAN>, parameters, <SPAN class="code-keyword">false</SPAN>);
+</PRE>
+</DIV></DIV>
+
+<P>Now if we run the same query with a different set of parameters, Cayenne will do the right thing and create a separate entry in the cache:</P>
+<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent">
+<PRE class="code-java">Map parameters = Collections.singletonMap(<SPAN class="code-quote">&quot;key&quot;</SPAN>, <SPAN class="code-quote">&quot;value2&quot;</SPAN>);
+List objects2 = context.performQuery(<SPAN class="code-quote">&quot;MyQuery&quot;</SPAN>, parameters, <SPAN class="code-keyword">false</SPAN>);
+</PRE>
+</DIV></DIV>
+
+
+
+                </section>
+            </article>
 
 	        </div>
 	    </div>
@@ -403,7 +397,7 @@ ServerModule.contributeDomainSyncFilters(binder).add((context, changes, syncType
     </div>
 </footer>
     
-<script>
+<script type="application/javascript">
 var doNotTrack = false;
 if (!doNotTrack) {
 	(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
diff --git a/docs/3.1/index.html b/docs/1.2/cayenne-contract.html
similarity index 55%
copy from docs/3.1/index.html
copy to docs/1.2/cayenne-contract.html
index a689ce0..f3f8c6a 100644
--- a/docs/3.1/index.html
+++ b/docs/1.2/cayenne-contract.html
@@ -15,7 +15,7 @@
         <meta name="theme-color" content="#ffffff">
         <link rel="stylesheet" href="https://cayenne.apache.org/css/styles-e429186d1b.css"/>
         <script src="https://cayenne.apache.org/js/bundle-92aa692db7.js"></script>
-        <title>Apache Cayenne</title>
+        <title>Cayenne Contract &middot; Apache Cayenne</title>
     </head>
     <body data-spy="scroll" data-target=".toc-side" class="cd-head"> 
 <header class="page-header">
@@ -92,10 +92,10 @@
                     <ul class="nav" role="tablist">
                         <li class="nav-item dropdown mw-100">
                             <a class="nav-link dropdown-toggle text-truncate" data-toggle="dropdown" href="#" role="button" aria-haspopup="true" aria-expanded="false">
-                                Cayenne Version 3.1
+                                Cayenne Version 1.2
                             </a>
                             <div class="dropdown-menu">
-                                <a class="dropdown-item" href="/docs/4.1/getting-started-guide/">Version 4.1 (Release Candidate)</a><a class="dropdown-item" href="/docs/4.0/getting-started-guide/">Version 4.0 (Stable)</a><a class="dropdown-item" href="/docs/3.1/getting-started-guide/">Version 3.1 (Aging)</a><a class="dropdown-item" href="/docs/3.0/api/">Version 3.0 (Legacy)</a><a class="dropdown-item" href="/docs/2.0/api/">Version 2.0 (Legacy)</a><a class="dropdown-item" href="/docs/1.2/ [...]
+                                <a class="dropdown-item" href="/docs/4.1/getting-started-guide/">Version 4.1 (Release Candidate)</a><a class="dropdown-item" href="/docs/4.0/getting-started-guide/">Version 4.0 (Stable)</a><a class="dropdown-item" href="/docs/3.1/getting-started-guide/">Version 3.1 (Aging)</a><a class="dropdown-item" href="/docs/3.0/cayenne-guide.html">Version 3.0 (Legacy)</a><a class="dropdown-item" href="/docs/2.0/user-guide.html">Version 2.0 (Legacy)</a><a class="dropdo [...]
                             </div>
                         </li>
                     </ul>
@@ -111,45 +111,136 @@
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/3.1/getting-started-guide/">Getting Started</a>
+                            <a class="cd-toc-link" href="/docs/1.2/user-guide.html">User Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/3.1/cayenne-guide/">Cayenne Guide</a>
+                            <a class="cd-toc-link" href="/docs/1.2/modeler-guide.html">Modeler Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/3.1/getting-started-rop/">Getting Started ROP</a>
+                            <a class="cd-toc-link" href="/docs/1.2/remote-object-persistence-guide.html">Remote Object Persistence Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
-                        
-                            <a class="cd-toc-link" href="/docs/3.1/upgrade-guide/">Upgrade Guide</a>
-                        
-                    </div>
-                    
-                    <div class="cd-toc-item">
-                        <a class="cd-toc-link" href="/docs/3.1/api/">JavaDoc</a>
+                        <a class="cd-toc-link" href="/docs/1.2/api/">JavaDoc</a>
                     </div>
                 </div>
             </div>
             
             <div class="col-12 col-lg-8 col-xl-9  py-3 pl-lg-5  cd-content">
 
-                <article>
-                    <header>
-                        <h1></h1>
-                    </header>
-                    <section>
-                        <p>Documentation, the JavaDoc API, examples and articles for Cayenne 3.1 can all be found here.</p>
+            
+            <article>
+                <section>
+                    
+	
+<P>There is an implied contract between persistent objects and Cayenne runtime. Cayenne expects persistent objects to follow certain conventions, while itself providing management of the various aspects of a persistent object graph.</P>
+
+<H2><A name="CayenneContract-PersistentObjectRequirements"></A>Persistent Object Requirements</H2>
+
+<H3><A name="CayenneContract-PersistentInterfaces"></A>Persistent Interfaces</H3>
+
+<P>Cayenne can persist Java objects that implement <TT>org.objectstyle.cayenne.Persistent</TT> interface. The interface requires for an object to provide getters and setters for three bean properties: <TT>objectId</TT>, <A href="persistent-object-lifecycle.html" title="Persistent Object Lifecycle"><TT>persistenceState</TT></A> and <TT>objectContext</TT>:</P>
+
+<DIV class="code panel" style="border-width: 1px;"><DIV class="codeHeader panelHeader" style="border-bottom-width: 1px;"><B>Persistent.java</B></DIV><DIV class="codeContent panelContent">
+<PRE class="code-java"><SPAN class="code-keyword">public</SPAN> <SPAN class="code-keyword">interface</SPAN> Persistent <SPAN class="code-keyword">extends</SPAN> Serializable {
+    ObjectId getObjectId();
+
+    void setObjectId(ObjectId id);
+
+    <SPAN class="code-object">int</SPAN> getPersistenceState();
+
+    void setPersistenceState(<SPAN class="code-object">int</SPAN> state);
+
+    ObjectContext getObjectContext();
+
+    void setObjectContext(ObjectContext objectContext);
+}</PRE>
+</DIV></DIV>
+
+<P>Furthermore the most commonly used implementation of <A href="objectcontext.html" title="ObjectContext">ObjectContext</A> - <A href="datacontext.html" title="DataContext">DataContext</A> - requires a more complicated subinterface of Persistent - <TT>org.objectstyle.cayenne.DataObject</TT>, that specifies generic methods for property access. The easiest way to satisfy these requirements is by using class generation mechanism provided by Cayenne (using <A href="cgen.html" title="cgen">c [...]
+
+<P>It is worth noting that both requirements will likely become optional in the future releases, being substituted with reflection, bytecode enhancements and other such techniques. Still it is important to understand both benefits and shortcomings of the persistent interface requirement. </P>
+
+<P>The obvious (and only) shortcoming is that the users have to implement it, most often using a class generation template that relies on a framework superclass (such as <TT>org.objectstyle.cayenne.CayenneDataObject</TT>). This may somewhat limit the flexibility of the application design.</P>
+
+<P>In returns users (and Cayenne framework internally) get extra capabilities:</P>
+
+<UL>
+	<LI>Fast and consistent mechanism for the framework to inspect, cache, manipulate the objects.</LI>
+	<LI>Meaningless primary key doesn't have to be an object property.</LI>
+	<LI>An object always knows its context, and thus can access the database from its business logic methods without any external context.</LI>
+	<LI>An object always knows how its state compares to the state of the backing database row, and can implement logic based on that knowledge (e.g. objects that are modified, but not yet committed, can be shown in a different color in the user interface).</LI>
+	<LI>DataObject interface makes possible <A href="generic-persistent-class.html" title="Generic Persistent Class">generic persistent objects</A>, i.e. the same generic class can map to more than one entity, and persistent behavior can be defined dynamically in runtime.</LI>
+</UL>
+
+
+<H3><A name="CayenneContract-PropertyAccessors"></A>Property Accessors</H3>
+
+<P>Another convention, that is not required strictly speaking, but is almost always implemented by persistent objects is invoking a callback method on their enclosing context before reading or setting their properties. Intercepting property accessors enables lazy on-demand resolution of objects and their relationships and also automatic bidirectional relationships, as discussed below. As with Persistent interface, property interception code is usually created via class generation.</P>
+
+
+<H2><A name="CayenneContract-HandlingPersistentObjects"></A>Handling Persistent Objects</H2>
+
+<P>Cayenne part of the &quot;persistence contract&quot; is the services it provides, including persistence per se and persistence-related object graph management capabilities.</P>
+
+<H3><A name="CayenneContract-QueryCapabilities"></A>Query Capabilities</H3>
+
+<P>Queries can be executed, bringing back objects matching certain criteria. As a part of this procedure, persistent objects are created and inflated with database values.</P>
+
+<H3><A name="CayenneContract-SingleMethodCallCommitandRollback"></A>Single Method Call Commit and Rollback</H3>
+
+<P>Multiple persistent object changes can be committed with a single method call (and in a single transaction). Similarly, object graph changes made since last commit can be discarded with a single method call.</P>
+
+<H3><A name="CayenneContract-MultipleLevelsofCommitandRollbackNesting"></A>Multiple Levels of Commit and Rollback Nesting</H3>
+
+<P>Commit and rollback functionality can have <A href="nested-datacontexts.html" title="Nested DataContexts">multiple levels of nesting</A> (i.e. a context can rollback its changes without affecting the parent context; or commit its changes to parent without committing them all the way to the database). </P>
+
+<H3><A name="CayenneContract-Relationships"></A>Relationships</H3>
+
+<P>Relationship support - objects related to the previously fetched objects can be accessed via a simple method call. Cayenne will do whatever is necessary to resolve related objects at the right moment behind the scenes. </P>
+
+<P>Unless the user <A href="prefetching.html" title="Prefetching">specifies otherwise</A> in the query that fetched the initial objects, relationships are not fetched together with the objects. When a user requests a related object (or collection of objects), Cayenne ensures that the actual database query to read it is deferred as much as possible, so hopefully there won't be a need to do it at all. E.g. a to-many relationship is resolved only when a list is queried for its size, or a us [...]
+
+<H3><A name="CayenneContract-AutomaticBidirectionalRelationshipManagemenet"></A>Automatic Bi-directional Relationship Managemenet</H3>
+
+<P>If entity A has a relationship to entity B and entity B has a relationshop back to entity A, Cayenne would maintain consistency of the reverse relationship automatically. Consider this example of a many-to-one relationship, written in a form of a unit test:</P>
+
+<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent">
+<PRE class="code-java">A a1;
+B b1;
+B b2;
+
+a1.setB(b1);
+assertTrue(b1.getListOfA().contains(a1));
+
+a1.setB(b2);
+assertTrue(b2.getListOfA().contains(a1));
+assertFalse(b1.getListOfA().contains(a1));</PRE>
+</DIV></DIV>
+
+<P>This significantly simplifies coding and reduces possibility of errors in managing complex object graphs.</P>
+
+<H3><A name="CayenneContract-ContextInjection"></A>Context Injection</H3>
+
+<P>Cayenne framework injects all three properties defined in <TT>Persistent</TT> interface - <TT>objectId</TT>, <TT>persistenceState</TT> and <TT>objectContext</TT> - at the right moments in the lifecycle. It automatically maintans persistence state changes when an object undergoes state transformations.</P>
+
+<H3><A name="CayenneContract-Uniquing"></A>Uniquing</H3>
+
+<P>Cayenne ensures that each <A href="objectcontext.html" title="ObjectContext">ObjectContext</A> contains at most one instance of each <B>unique</B> persistent object. In other words if two separate independent queries fetched a row with the same primary key, the same object instance will be used in both results. This behavior (not supported by some other frameworks), is extremely important in maintaining consistency of the object graph.</P>
+
+<H3><A name="CayenneContract-LazyObjectResolution"></A>Lazy Object Resolution</H3>
+
+<P>One of the object states is HOLLOW, corresponding to unresolved objects that only have their PK known. Most often HOLLOW objects are returned from to-one relationships. Whenever such object is &quot;touched&quot; by the user (i.e. a  setter or a getter is invoked), Cayenne automatically infaltes it with the database values.</P>
 
-                    </section>
-                </article>
+                </section>
+            </article>
 
 	        </div>
 	    </div>
@@ -279,7 +370,7 @@
     </div>
 </footer>
     
-<script>
+<script type="application/javascript">
 var doNotTrack = false;
 if (!doNotTrack) {
 	(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
diff --git a/docs/4.0/index.html b/docs/1.2/cayenne-datamaps.html
similarity index 90%
copy from docs/4.0/index.html
copy to docs/1.2/cayenne-datamaps.html
index 2bbcbd2..9f1d527 100644
--- a/docs/4.0/index.html
+++ b/docs/1.2/cayenne-datamaps.html
@@ -15,7 +15,7 @@
         <meta name="theme-color" content="#ffffff">
         <link rel="stylesheet" href="https://cayenne.apache.org/css/styles-e429186d1b.css"/>
         <script src="https://cayenne.apache.org/js/bundle-92aa692db7.js"></script>
-        <title>Apache Cayenne</title>
+        <title>Cayenne DataMaps &middot; Apache Cayenne</title>
     </head>
     <body data-spy="scroll" data-target=".toc-side" class="cd-head"> 
 <header class="page-header">
@@ -92,10 +92,10 @@
                     <ul class="nav" role="tablist">
                         <li class="nav-item dropdown mw-100">
                             <a class="nav-link dropdown-toggle text-truncate" data-toggle="dropdown" href="#" role="button" aria-haspopup="true" aria-expanded="false">
-                                Cayenne Version 4.0
+                                Cayenne Version 1.2
                             </a>
                             <div class="dropdown-menu">
-                                <a class="dropdown-item" href="/docs/4.1/getting-started-guide/">Version 4.1 (Release Candidate)</a><a class="dropdown-item" href="/docs/4.0/getting-started-guide/">Version 4.0 (Stable)</a><a class="dropdown-item" href="/docs/3.1/getting-started-guide/">Version 3.1 (Aging)</a><a class="dropdown-item" href="/docs/3.0/api/">Version 3.0 (Legacy)</a><a class="dropdown-item" href="/docs/2.0/api/">Version 2.0 (Legacy)</a><a class="dropdown-item" href="/docs/1.2/ [...]
+                                <a class="dropdown-item" href="/docs/4.1/getting-started-guide/">Version 4.1 (Release Candidate)</a><a class="dropdown-item" href="/docs/4.0/getting-started-guide/">Version 4.0 (Stable)</a><a class="dropdown-item" href="/docs/3.1/getting-started-guide/">Version 3.1 (Aging)</a><a class="dropdown-item" href="/docs/3.0/cayenne-guide.html">Version 3.0 (Legacy)</a><a class="dropdown-item" href="/docs/2.0/user-guide.html">Version 2.0 (Legacy)</a><a class="dropdo [...]
                             </div>
                         </li>
                     </ul>
@@ -111,45 +111,42 @@
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/getting-started-guide/">Getting Started</a>
+                            <a class="cd-toc-link" href="/docs/1.2/user-guide.html">User Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/cayenne-guide/">Cayenne Guide</a>
+                            <a class="cd-toc-link" href="/docs/1.2/modeler-guide.html">Modeler Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/getting-started-rop/">Getting Started ROP</a>
+                            <a class="cd-toc-link" href="/docs/1.2/remote-object-persistence-guide.html">Remote Object Persistence Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
-                        
-                            <a class="cd-toc-link" href="/docs/4.0/upgrade-guide/">Upgrade Guide</a>
-                        
-                    </div>
-                    
-                    <div class="cd-toc-item">
-                        <a class="cd-toc-link" href="/docs/4.0/api/">JavaDoc</a>
+                        <a class="cd-toc-link" href="/docs/1.2/api/">JavaDoc</a>
                     </div>
                 </div>
             </div>
             
             <div class="col-12 col-lg-8 col-xl-9  py-3 pl-lg-5  cd-content">
 
-                <article>
-                    <header>
-                        <h1></h1>
-                    </header>
-                    <section>
-                        <p>Documentation, the JavaDoc API, examples and articles for Cayenne 4.0 can all be found here.</p>
+            
+            <article>
+                <section>
+                    
+	
+
+<P>TO BE DONE</P>
+
+<P><SPAN class="image-wrap" style=""><img src="/docs/1.2/images/entities.gif" style="border: 0px solid black"></SPAN></P>
 
-                    </section>
-                </article>
+                </section>
+            </article>
 
 	        </div>
 	    </div>
@@ -279,7 +276,7 @@
     </div>
 </footer>
     
-<script>
+<script type="application/javascript">
 var doNotTrack = false;
 if (!doNotTrack) {
 	(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
diff --git a/docs/4.0/index.html b/docs/1.2/cayenne-project-structure.html
similarity index 90%
copy from docs/4.0/index.html
copy to docs/1.2/cayenne-project-structure.html
index 2bbcbd2..9dfa3d6 100644
--- a/docs/4.0/index.html
+++ b/docs/1.2/cayenne-project-structure.html
@@ -15,7 +15,7 @@
         <meta name="theme-color" content="#ffffff">
         <link rel="stylesheet" href="https://cayenne.apache.org/css/styles-e429186d1b.css"/>
         <script src="https://cayenne.apache.org/js/bundle-92aa692db7.js"></script>
-        <title>Apache Cayenne</title>
+        <title>Cayenne Project Structure &middot; Apache Cayenne</title>
     </head>
     <body data-spy="scroll" data-target=".toc-side" class="cd-head"> 
 <header class="page-header">
@@ -92,10 +92,10 @@
                     <ul class="nav" role="tablist">
                         <li class="nav-item dropdown mw-100">
                             <a class="nav-link dropdown-toggle text-truncate" data-toggle="dropdown" href="#" role="button" aria-haspopup="true" aria-expanded="false">
-                                Cayenne Version 4.0
+                                Cayenne Version 1.2
                             </a>
                             <div class="dropdown-menu">
-                                <a class="dropdown-item" href="/docs/4.1/getting-started-guide/">Version 4.1 (Release Candidate)</a><a class="dropdown-item" href="/docs/4.0/getting-started-guide/">Version 4.0 (Stable)</a><a class="dropdown-item" href="/docs/3.1/getting-started-guide/">Version 3.1 (Aging)</a><a class="dropdown-item" href="/docs/3.0/api/">Version 3.0 (Legacy)</a><a class="dropdown-item" href="/docs/2.0/api/">Version 2.0 (Legacy)</a><a class="dropdown-item" href="/docs/1.2/ [...]
+                                <a class="dropdown-item" href="/docs/4.1/getting-started-guide/">Version 4.1 (Release Candidate)</a><a class="dropdown-item" href="/docs/4.0/getting-started-guide/">Version 4.0 (Stable)</a><a class="dropdown-item" href="/docs/3.1/getting-started-guide/">Version 3.1 (Aging)</a><a class="dropdown-item" href="/docs/3.0/cayenne-guide.html">Version 3.0 (Legacy)</a><a class="dropdown-item" href="/docs/2.0/user-guide.html">Version 2.0 (Legacy)</a><a class="dropdo [...]
                             </div>
                         </li>
                     </ul>
@@ -111,45 +111,42 @@
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/getting-started-guide/">Getting Started</a>
+                            <a class="cd-toc-link" href="/docs/1.2/user-guide.html">User Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/cayenne-guide/">Cayenne Guide</a>
+                            <a class="cd-toc-link" href="/docs/1.2/modeler-guide.html">Modeler Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/getting-started-rop/">Getting Started ROP</a>
+                            <a class="cd-toc-link" href="/docs/1.2/remote-object-persistence-guide.html">Remote Object Persistence Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
-                        
-                            <a class="cd-toc-link" href="/docs/4.0/upgrade-guide/">Upgrade Guide</a>
-                        
-                    </div>
-                    
-                    <div class="cd-toc-item">
-                        <a class="cd-toc-link" href="/docs/4.0/api/">JavaDoc</a>
+                        <a class="cd-toc-link" href="/docs/1.2/api/">JavaDoc</a>
                     </div>
                 </div>
             </div>
             
             <div class="col-12 col-lg-8 col-xl-9  py-3 pl-lg-5  cd-content">
 
-                <article>
-                    <header>
-                        <h1></h1>
-                    </header>
-                    <section>
-                        <p>Documentation, the JavaDoc API, examples and articles for Cayenne 4.0 can all be found here.</p>
+            
+            <article>
+                <section>
+                    
+	
+
+<P>This chapter shows what Cayenne projects are and how different parts of projects are organized.</P>
+
+
 
-                    </section>
-                </article>
+                </section>
+            </article>
 
 	        </div>
 	    </div>
@@ -279,7 +276,7 @@
     </div>
 </footer>
     
-<script>
+<script type="application/javascript">
 var doNotTrack = false;
 if (!doNotTrack) {
 	(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
diff --git a/docs/4.0/index.html b/docs/1.2/cayenne-projects.html
similarity index 74%
copy from docs/4.0/index.html
copy to docs/1.2/cayenne-projects.html
index 2bbcbd2..412ede0 100644
--- a/docs/4.0/index.html
+++ b/docs/1.2/cayenne-projects.html
@@ -15,7 +15,7 @@
         <meta name="theme-color" content="#ffffff">
         <link rel="stylesheet" href="https://cayenne.apache.org/css/styles-e429186d1b.css"/>
         <script src="https://cayenne.apache.org/js/bundle-92aa692db7.js"></script>
-        <title>Apache Cayenne</title>
+        <title>Cayenne Projects &middot; Apache Cayenne</title>
     </head>
     <body data-spy="scroll" data-target=".toc-side" class="cd-head"> 
 <header class="page-header">
@@ -92,10 +92,10 @@
                     <ul class="nav" role="tablist">
                         <li class="nav-item dropdown mw-100">
                             <a class="nav-link dropdown-toggle text-truncate" data-toggle="dropdown" href="#" role="button" aria-haspopup="true" aria-expanded="false">
-                                Cayenne Version 4.0
+                                Cayenne Version 1.2
                             </a>
                             <div class="dropdown-menu">
-                                <a class="dropdown-item" href="/docs/4.1/getting-started-guide/">Version 4.1 (Release Candidate)</a><a class="dropdown-item" href="/docs/4.0/getting-started-guide/">Version 4.0 (Stable)</a><a class="dropdown-item" href="/docs/3.1/getting-started-guide/">Version 3.1 (Aging)</a><a class="dropdown-item" href="/docs/3.0/api/">Version 3.0 (Legacy)</a><a class="dropdown-item" href="/docs/2.0/api/">Version 2.0 (Legacy)</a><a class="dropdown-item" href="/docs/1.2/ [...]
+                                <a class="dropdown-item" href="/docs/4.1/getting-started-guide/">Version 4.1 (Release Candidate)</a><a class="dropdown-item" href="/docs/4.0/getting-started-guide/">Version 4.0 (Stable)</a><a class="dropdown-item" href="/docs/3.1/getting-started-guide/">Version 3.1 (Aging)</a><a class="dropdown-item" href="/docs/3.0/cayenne-guide.html">Version 3.0 (Legacy)</a><a class="dropdown-item" href="/docs/2.0/user-guide.html">Version 2.0 (Legacy)</a><a class="dropdo [...]
                             </div>
                         </li>
                     </ul>
@@ -111,45 +111,61 @@
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/getting-started-guide/">Getting Started</a>
+                            <a class="cd-toc-link" href="/docs/1.2/user-guide.html">User Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/cayenne-guide/">Cayenne Guide</a>
+                            <a class="cd-toc-link" href="/docs/1.2/modeler-guide.html">Modeler Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/getting-started-rop/">Getting Started ROP</a>
+                            <a class="cd-toc-link" href="/docs/1.2/remote-object-persistence-guide.html">Remote Object Persistence Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
-                        
-                            <a class="cd-toc-link" href="/docs/4.0/upgrade-guide/">Upgrade Guide</a>
-                        
-                    </div>
-                    
-                    <div class="cd-toc-item">
-                        <a class="cd-toc-link" href="/docs/4.0/api/">JavaDoc</a>
+                        <a class="cd-toc-link" href="/docs/1.2/api/">JavaDoc</a>
                     </div>
                 </div>
             </div>
             
             <div class="col-12 col-lg-8 col-xl-9  py-3 pl-lg-5  cd-content">
 
-                <article>
-                    <header>
-                        <h1></h1>
-                    </header>
-                    <section>
-                        <p>Documentation, the JavaDoc API, examples and articles for Cayenne 4.0 can all be found here.</p>
+            
+            <article>
+                <section>
+                    
+	
+
+<H3><A name="CayenneProjects-CayenneProjects"></A>Cayenne Projects</H3>
+
+<P>Cayenne project is a set of XML configuration files needed for a Java application to work with Cayenne. It is editable by CayenneModeler. A project has roughly the following structure:</P>
+
+<P><SPAN class="image-wrap" style=""><img src="/docs/1.2/images/cayenne-project.gif" style="border: 0px solid black"></SPAN></P>
+
+<P>This structure is saved in the following set of files:</P>
+
+<UL class="alternate" type="square">
+	<LI><B>cayenne.xml file</B>: This is a main project file in each application. It should always be called <TT>cayenne.xml</TT>. It configures the layout of the data sources used by the application, breaking it by domains and nodes. It also links to other parts of Cayenne project described below. Nodes represent physical datasources. For each database JDBC URL there should be a single node configured. Domains represent virtual datasources that are a combination of one or more physical dat [...]
+</UL>
+
+
+<UL class="alternate" type="square">
+	<LI><B>DataMap file</B>: Used to instantiate <A href="http://www.objectstyle.org/cayenne/api/cayenne/org/objectstyle/cayenne/map/DataMap.html" class="external-link" rel="nofollow">DataMap</A> objects that desribe a database schema and map it to the Java classes in the Java application. XML structure of the DataMap file is described in this DTD file.</LI>
+</UL>
+
+
+<UL class="alternate" type="square">
+	<LI><B>DataSource file</B>: In a standalone Java application, Java code has no access to DataSource objects that are normally provided by deployment containers. Cayenne framework still needs a DataSource to connect to the database. Therefore Cayenne has a set of wrapper classes located in <A href="http://www.objectstyle.org/cayenne/api/cayenne/org/objectstyle/cayenne/conn/package-summary.html" class="external-link" rel="nofollow">org.objectstyle.cayenne.conn</A> package, to create DataS [...]
+</UL>
+
 
-                    </section>
-                </article>
+                </section>
+            </article>
 
 	        </div>
 	    </div>
@@ -279,7 +295,7 @@
     </div>
 </footer>
     
-<script>
+<script type="application/javascript">
 var doNotTrack = false;
 if (!doNotTrack) {
 	(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
diff --git a/docs/index.html b/docs/1.2/cayenne-user-directory.html
similarity index 77%
copy from docs/index.html
copy to docs/1.2/cayenne-user-directory.html
index b579c6b..0ea4eb5 100644
--- a/docs/index.html
+++ b/docs/1.2/cayenne-user-directory.html
@@ -15,7 +15,7 @@
         <meta name="theme-color" content="#ffffff">
         <link rel="stylesheet" href="https://cayenne.apache.org/css/styles-e429186d1b.css"/>
         <script src="https://cayenne.apache.org/js/bundle-92aa692db7.js"></script>
-        <title>Documentation &middot; Apache Cayenne</title>
+        <title>Cayenne User Directory &middot; Apache Cayenne</title>
     </head>
     <body data-spy="scroll" data-target=".toc-side" class="cd-head"> 
 <header class="page-header">
@@ -92,10 +92,10 @@
                     <ul class="nav" role="tablist">
                         <li class="nav-item dropdown mw-100">
                             <a class="nav-link dropdown-toggle text-truncate" data-toggle="dropdown" href="#" role="button" aria-haspopup="true" aria-expanded="false">
-                                Cayenne Version 4.1
+                                Cayenne Version 1.2
                             </a>
                             <div class="dropdown-menu">
-                                <a class="dropdown-item" href="/docs/4.1/getting-started-guide/">Version 4.1 (Release Candidate)</a><a class="dropdown-item" href="/docs/4.0/getting-started-guide/">Version 4.0 (Stable)</a><a class="dropdown-item" href="/docs/3.1/getting-started-guide/">Version 3.1 (Aging)</a><a class="dropdown-item" href="/docs/3.0/api/">Version 3.0 (Legacy)</a><a class="dropdown-item" href="/docs/2.0/api/">Version 2.0 (Legacy)</a><a class="dropdown-item" href="/docs/1.2/ [...]
+                                <a class="dropdown-item" href="/docs/4.1/getting-started-guide/">Version 4.1 (Release Candidate)</a><a class="dropdown-item" href="/docs/4.0/getting-started-guide/">Version 4.0 (Stable)</a><a class="dropdown-item" href="/docs/3.1/getting-started-guide/">Version 3.1 (Aging)</a><a class="dropdown-item" href="/docs/3.0/cayenne-guide.html">Version 3.0 (Legacy)</a><a class="dropdown-item" href="/docs/2.0/user-guide.html">Version 2.0 (Legacy)</a><a class="dropdo [...]
                             </div>
                         </li>
                     </ul>
@@ -111,51 +111,60 @@
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.1/getting-started-guide/">Getting Started</a>
+                            <a class="cd-toc-link" href="/docs/1.2/user-guide.html">User Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.1/cayenne-guide/">Cayenne Guide</a>
+                            <a class="cd-toc-link" href="/docs/1.2/modeler-guide.html">Modeler Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.1/getting-started-db-first/">Database First Tutorial</a>
+                            <a class="cd-toc-link" href="/docs/1.2/remote-object-persistence-guide.html">Remote Object Persistence Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
-                        
-                            <a class="cd-toc-link" href="/docs/4.1/getting-started-rop/">Getting Started ROP</a>
-                        
-                    </div>
-                    
-                    <div class="cd-toc-item">
-                        
-                            <a class="cd-toc-link" href="/docs/4.1/upgrade-guide/">Upgrade Guide</a>
-                        
-                    </div>
-                    
-                    <div class="cd-toc-item">
-                        <a class="cd-toc-link" href="/docs/4.1/api/">JavaDoc</a>
+                        <a class="cd-toc-link" href="/docs/1.2/api/">JavaDoc</a>
                     </div>
                 </div>
             </div>
             
             <div class="col-12 col-lg-8 col-xl-9  py-3 pl-lg-5  cd-content">
 
-                <article>
-                    <header>
-                        <h1>Documentation</h1>
-                    </header>
-                    <section>
-                        <p>Documentation, the JavaDoc API, examples and articles can all be found here.</p>
+            
+            <article>
+                <section>
+                    
+	
+
+<H3><A name="CayenneUserDirectory-CayenneUserDirectory"></A>Cayenne User Directory</H3>
+
+<P>Cayenne has a notion of Cayenne User Directory - a file system directory, one per each user account on a given machine, where Cayenne-related information is stored. While Cayenne runtime knows how to locate and access this directory, it never uses it or relies on its presence. The reason is that Cayenne is often deployed in J2EE containers and should avoid any assumptions about the underlying filesystem layout. CayenneModeler on the other hand uses it to store a number of things, like [...]
+
+<H3><A name="CayenneUserDirectory-CayenneUserDirectoryLocation"></A>Cayenne User Directory Location</H3>
+
+
+<P>Cayenne User Directory is a filesystem directory called &quot;.cayenne&quot; (notice the dot in front of the name, it makes it &quot;hidden&quot; on UNIX operating systems) that is a subdirectory of a user HOME directory. HOME directory is OS and machine dependent. For example on Windows this is something like &quot;C:\Documents and Settings\username\&quot;. Cayenne User Directory is created automatically when CayenneModeler is started on a user machine for the first time.</P>
+
+<H3><A name="CayenneUserDirectory-AccessingCayenneUserDirectoryProgrammatically"></A>Accessing Cayenne User Directory Programmatically</H3>
+
+
+<P>For those rare cases when you application needs to access Cayenne User Directory, you can take advantage of <A href="http://www.objectstyle.org/cayenne/api/cayenne/org/objectstyle/cayenne/project/CayenneUserDir.html" class="external-link" rel="nofollow">CayenneUserDir</A> class API, via a shared instance of CayenneUserDir.</P>
+
+<H3><A name="CayenneUserDirectory-InformationStoredinCayenneUserDirectory"></A>Information Stored in Cayenne User Directory</H3>
+
+<P><TT>prefs</TT>: preferences database subdirectory.<BR>
+<TT>modeler.preferences</TT>: this is an old modeler preferences file. It is still used by CayenneModeler, but will be completely replaced by the preferences database in the future releases.<BR>
+<TT>cayenne-log.properties</TT>: Log4J configuration file for the Modeler.<BR>
+<TT>modeler.log</TT>: CayenneModeler log file.<BR>
+<TT>modeler.classpath</TT>: (unused) an old CLASSPATH configuration file that is now migrated to the preferences database.</P>
 
-                    </section>
-                </article>
+                </section>
+            </article>
 
 	        </div>
 	    </div>
@@ -285,7 +294,7 @@
     </div>
 </footer>
     
-<script>
+<script type="application/javascript">
 var doNotTrack = false;
 if (!doNotTrack) {
 	(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
diff --git a/docs/4.0/index.html b/docs/1.2/cayennemodeler-and-eclipse.html
similarity index 87%
copy from docs/4.0/index.html
copy to docs/1.2/cayennemodeler-and-eclipse.html
index 2bbcbd2..1075b4e 100644
--- a/docs/4.0/index.html
+++ b/docs/1.2/cayennemodeler-and-eclipse.html
@@ -15,7 +15,7 @@
         <meta name="theme-color" content="#ffffff">
         <link rel="stylesheet" href="https://cayenne.apache.org/css/styles-e429186d1b.css"/>
         <script src="https://cayenne.apache.org/js/bundle-92aa692db7.js"></script>
-        <title>Apache Cayenne</title>
+        <title>CayenneModeler and Eclipse &middot; Apache Cayenne</title>
     </head>
     <body data-spy="scroll" data-target=".toc-side" class="cd-head"> 
 <header class="page-header">
@@ -92,10 +92,10 @@
                     <ul class="nav" role="tablist">
                         <li class="nav-item dropdown mw-100">
                             <a class="nav-link dropdown-toggle text-truncate" data-toggle="dropdown" href="#" role="button" aria-haspopup="true" aria-expanded="false">
-                                Cayenne Version 4.0
+                                Cayenne Version 1.2
                             </a>
                             <div class="dropdown-menu">
-                                <a class="dropdown-item" href="/docs/4.1/getting-started-guide/">Version 4.1 (Release Candidate)</a><a class="dropdown-item" href="/docs/4.0/getting-started-guide/">Version 4.0 (Stable)</a><a class="dropdown-item" href="/docs/3.1/getting-started-guide/">Version 3.1 (Aging)</a><a class="dropdown-item" href="/docs/3.0/api/">Version 3.0 (Legacy)</a><a class="dropdown-item" href="/docs/2.0/api/">Version 2.0 (Legacy)</a><a class="dropdown-item" href="/docs/1.2/ [...]
+                                <a class="dropdown-item" href="/docs/4.1/getting-started-guide/">Version 4.1 (Release Candidate)</a><a class="dropdown-item" href="/docs/4.0/getting-started-guide/">Version 4.0 (Stable)</a><a class="dropdown-item" href="/docs/3.1/getting-started-guide/">Version 3.1 (Aging)</a><a class="dropdown-item" href="/docs/3.0/cayenne-guide.html">Version 3.0 (Legacy)</a><a class="dropdown-item" href="/docs/2.0/user-guide.html">Version 2.0 (Legacy)</a><a class="dropdo [...]
                             </div>
                         </li>
                     </ul>
@@ -111,45 +111,42 @@
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/getting-started-guide/">Getting Started</a>
+                            <a class="cd-toc-link" href="/docs/1.2/user-guide.html">User Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/cayenne-guide/">Cayenne Guide</a>
+                            <a class="cd-toc-link" href="/docs/1.2/modeler-guide.html">Modeler Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/getting-started-rop/">Getting Started ROP</a>
+                            <a class="cd-toc-link" href="/docs/1.2/remote-object-persistence-guide.html">Remote Object Persistence Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
-                        
-                            <a class="cd-toc-link" href="/docs/4.0/upgrade-guide/">Upgrade Guide</a>
-                        
-                    </div>
-                    
-                    <div class="cd-toc-item">
-                        <a class="cd-toc-link" href="/docs/4.0/api/">JavaDoc</a>
+                        <a class="cd-toc-link" href="/docs/1.2/api/">JavaDoc</a>
                     </div>
                 </div>
             </div>
             
             <div class="col-12 col-lg-8 col-xl-9  py-3 pl-lg-5  cd-content">
 
-                <article>
-                    <header>
-                        <h1></h1>
-                    </header>
-                    <section>
-                        <p>Documentation, the JavaDoc API, examples and articles for Cayenne 4.0 can all be found here.</p>
+            
+            <article>
+                <section>
+                    
+	
+
+<P>If you use <A href="http://www.eclipse.org/" class="external-link" rel="nofollow">Eclipse IDE</A> for your Java development, it can be configured to launch CayenneModeler when clicking on &quot;cayenne.xml&quot; file in the project tree. Here is the instructions for Windows, other platforms should work in a similar fashion. </P>
+
+<P>In Eclipse Properties panel go to &quot;Workbench -&gt; File Associations&quot;. Add an association for &quot;cayenne.xml&quot; to open with &quot;external editor&quot;. Select &quot;modeler.bat&quot; file as an external editor. Caveat - CAYENNE_HOME variable must be either defined in the environment, or you may need to edit modeler.bat and set it right there, otherwise modeler will not start. </P>
 
-                    </section>
-                </article>
+                </section>
+            </article>
 
 	        </div>
 	    </div>
@@ -279,7 +276,7 @@
     </div>
 </footer>
     
-<script>
+<script type="application/javascript">
 var doNotTrack = false;
 if (!doNotTrack) {
 	(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
diff --git a/docs/4.0/index.html b/docs/1.2/cayennemodeler-flattened-relationships.html
similarity index 74%
copy from docs/4.0/index.html
copy to docs/1.2/cayennemodeler-flattened-relationships.html
index 2bbcbd2..2587d50 100644
--- a/docs/4.0/index.html
+++ b/docs/1.2/cayennemodeler-flattened-relationships.html
@@ -15,7 +15,7 @@
         <meta name="theme-color" content="#ffffff">
         <link rel="stylesheet" href="https://cayenne.apache.org/css/styles-e429186d1b.css"/>
         <script src="https://cayenne.apache.org/js/bundle-92aa692db7.js"></script>
-        <title>Apache Cayenne</title>
+        <title>CayenneModeler Flattened Relationships &middot; Apache Cayenne</title>
     </head>
     <body data-spy="scroll" data-target=".toc-side" class="cd-head"> 
 <header class="page-header">
@@ -92,10 +92,10 @@
                     <ul class="nav" role="tablist">
                         <li class="nav-item dropdown mw-100">
                             <a class="nav-link dropdown-toggle text-truncate" data-toggle="dropdown" href="#" role="button" aria-haspopup="true" aria-expanded="false">
-                                Cayenne Version 4.0
+                                Cayenne Version 1.2
                             </a>
                             <div class="dropdown-menu">
-                                <a class="dropdown-item" href="/docs/4.1/getting-started-guide/">Version 4.1 (Release Candidate)</a><a class="dropdown-item" href="/docs/4.0/getting-started-guide/">Version 4.0 (Stable)</a><a class="dropdown-item" href="/docs/3.1/getting-started-guide/">Version 3.1 (Aging)</a><a class="dropdown-item" href="/docs/3.0/api/">Version 3.0 (Legacy)</a><a class="dropdown-item" href="/docs/2.0/api/">Version 2.0 (Legacy)</a><a class="dropdown-item" href="/docs/1.2/ [...]
+                                <a class="dropdown-item" href="/docs/4.1/getting-started-guide/">Version 4.1 (Release Candidate)</a><a class="dropdown-item" href="/docs/4.0/getting-started-guide/">Version 4.0 (Stable)</a><a class="dropdown-item" href="/docs/3.1/getting-started-guide/">Version 3.1 (Aging)</a><a class="dropdown-item" href="/docs/3.0/cayenne-guide.html">Version 3.0 (Legacy)</a><a class="dropdown-item" href="/docs/2.0/user-guide.html">Version 2.0 (Legacy)</a><a class="dropdo [...]
                             </div>
                         </li>
                     </ul>
@@ -111,45 +111,53 @@
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/getting-started-guide/">Getting Started</a>
+                            <a class="cd-toc-link" href="/docs/1.2/user-guide.html">User Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/cayenne-guide/">Cayenne Guide</a>
+                            <a class="cd-toc-link" href="/docs/1.2/modeler-guide.html">Modeler Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/getting-started-rop/">Getting Started ROP</a>
+                            <a class="cd-toc-link" href="/docs/1.2/remote-object-persistence-guide.html">Remote Object Persistence Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
-                        
-                            <a class="cd-toc-link" href="/docs/4.0/upgrade-guide/">Upgrade Guide</a>
-                        
-                    </div>
-                    
-                    <div class="cd-toc-item">
-                        <a class="cd-toc-link" href="/docs/4.0/api/">JavaDoc</a>
+                        <a class="cd-toc-link" href="/docs/1.2/api/">JavaDoc</a>
                     </div>
                 </div>
             </div>
             
             <div class="col-12 col-lg-8 col-xl-9  py-3 pl-lg-5  cd-content">
 
-                <article>
-                    <header>
-                        <h1></h1>
-                    </header>
-                    <section>
-                        <p>Documentation, the JavaDoc API, examples and articles for Cayenne 4.0 can all be found here.</p>
+            
+            <article>
+                <section>
+                    
+	
+
+<H3><A name="CayenneModelerFlattenedRelationships-FlattenedRelationships"></A>Flattened Relationships</H3>
+
+<P><A href="http://objectstyle.org/cayenne/api/cayenne/org/objectstyle/cayenne/map/ObjRelationship.html" class="external-link" rel="nofollow">ObjRelationships</A> that map to more than a single <A href="http://objectstyle.org/cayenne/api/cayenne/org/objectstyle/cayenne/map/DbRelationship.html" class="external-link" rel="nofollow">DbRelationship</A> are called &quot;flattened&quot;.</P>
+
+<P>The most common case for using flattened relationships is modeling many-to-many relationships with a join table. E.g. ARTIST DbEntity has to-many relationship to ARTIST_EXHIBIT; ARTIST_EXHIBIT in turn has a to-one relationship to EXHIBIT DbEntity. We can create a single ObjRelationship from Artist ObjEntity to Exhibit ObjEntity that spawns two DbRelationships. This will be a to-many relationship. Lets say it is called &quot;exhibitArray&quot;. Generated class file for Artist would con [...]
+
+<P>Flattened relationships work across any combination of to-one and to-many DbRelationships. If all the relationships are to-one, then the resulting flattened relationship is also to-one. If there is at least one to-many, the result is to-many as well.</P>
+<DIV class="panelMacro"><TABLE class="noteMacro"><COLGROUP><COL width="24"><COL></COLGROUP><TR><TD valign="top"><img src="/docs/1.2/images/warning.gif" width="16" height="16" align="absmiddle" alt="" border="0"></TD><TD><B>Read-Only Note</B><BR>Most of flattened relationships are treated as read-only by Cayenne. Only one (the most commonly used) type is read/write. It is many-to-many (n:m) flattened relationships with a single join table.</TD></TR></TABLE></DIV>
+<P>To map an ObjRelationship to a chain of DbRelationships, select ObjRelationship table row and click &quot;Edit Relationship&quot; button in the bottom right. &quot;ObjRelationship Inspector&quot; dialog will appear.</P>
+
+<P><SPAN class="image-wrap" style=""><img src="/docs/1.2/images/objrelationship-path-selection.jpg" style="border: 0px solid black"></SPAN></P>
+
+<P>The dialog contains a DbRelationship table. Clicking on each row in this table will show valid choices of DbRelationships. Once you add a &quot;chain&quot; component, another row automatically opens below, so you can build a chain of arbitrary length.</P>
+<DIV class="panelMacro"><TABLE class="tipMacro"><COLGROUP><COL width="24"><COL></COLGROUP><TR><TD valign="top"><img src="/docs/1.2/images/check.gif" width="16" height="16" align="absmiddle" alt="" border="0"></TD><TD><B>Join Table Tip</B><BR>If you flatten across a join table and this join table was mapped to an ObjEntity (and a correspoding Java class), such ObjEntity can be deleted, as it is no longer needed. Underlying DbEntity must be preserved.</TD></TR></TABLE></DIV>
 
-                    </section>
-                </article>
+                </section>
+            </article>
 
 	        </div>
 	    </div>
@@ -279,7 +287,7 @@
     </div>
 </footer>
     
-<script>
+<script type="application/javascript">
 var doNotTrack = false;
 if (!doNotTrack) {
 	(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
diff --git a/docs/4.0/index.html b/docs/1.2/cdataport.html
similarity index 72%
copy from docs/4.0/index.html
copy to docs/1.2/cdataport.html
index 2bbcbd2..a86410e 100644
--- a/docs/4.0/index.html
+++ b/docs/1.2/cdataport.html
@@ -15,7 +15,7 @@
         <meta name="theme-color" content="#ffffff">
         <link rel="stylesheet" href="https://cayenne.apache.org/css/styles-e429186d1b.css"/>
         <script src="https://cayenne.apache.org/js/bundle-92aa692db7.js"></script>
-        <title>Apache Cayenne</title>
+        <title>cdataport &middot; Apache Cayenne</title>
     </head>
     <body data-spy="scroll" data-target=".toc-side" class="cd-head"> 
 <header class="page-header">
@@ -92,10 +92,10 @@
                     <ul class="nav" role="tablist">
                         <li class="nav-item dropdown mw-100">
                             <a class="nav-link dropdown-toggle text-truncate" data-toggle="dropdown" href="#" role="button" aria-haspopup="true" aria-expanded="false">
-                                Cayenne Version 4.0
+                                Cayenne Version 1.2
                             </a>
                             <div class="dropdown-menu">
-                                <a class="dropdown-item" href="/docs/4.1/getting-started-guide/">Version 4.1 (Release Candidate)</a><a class="dropdown-item" href="/docs/4.0/getting-started-guide/">Version 4.0 (Stable)</a><a class="dropdown-item" href="/docs/3.1/getting-started-guide/">Version 3.1 (Aging)</a><a class="dropdown-item" href="/docs/3.0/api/">Version 3.0 (Legacy)</a><a class="dropdown-item" href="/docs/2.0/api/">Version 2.0 (Legacy)</a><a class="dropdown-item" href="/docs/1.2/ [...]
+                                <a class="dropdown-item" href="/docs/4.1/getting-started-guide/">Version 4.1 (Release Candidate)</a><a class="dropdown-item" href="/docs/4.0/getting-started-guide/">Version 4.0 (Stable)</a><a class="dropdown-item" href="/docs/3.1/getting-started-guide/">Version 3.1 (Aging)</a><a class="dropdown-item" href="/docs/3.0/cayenne-guide.html">Version 3.0 (Legacy)</a><a class="dropdown-item" href="/docs/2.0/user-guide.html">Version 2.0 (Legacy)</a><a class="dropdo [...]
                             </div>
                         </li>
                     </ul>
@@ -111,45 +111,100 @@
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/getting-started-guide/">Getting Started</a>
+                            <a class="cd-toc-link" href="/docs/1.2/user-guide.html">User Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/cayenne-guide/">Cayenne Guide</a>
+                            <a class="cd-toc-link" href="/docs/1.2/modeler-guide.html">Modeler Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/getting-started-rop/">Getting Started ROP</a>
+                            <a class="cd-toc-link" href="/docs/1.2/remote-object-persistence-guide.html">Remote Object Persistence Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
-                        
-                            <a class="cd-toc-link" href="/docs/4.0/upgrade-guide/">Upgrade Guide</a>
-                        
-                    </div>
-                    
-                    <div class="cd-toc-item">
-                        <a class="cd-toc-link" href="/docs/4.0/api/">JavaDoc</a>
+                        <a class="cd-toc-link" href="/docs/1.2/api/">JavaDoc</a>
                     </div>
                 </div>
             </div>
             
             <div class="col-12 col-lg-8 col-xl-9  py-3 pl-lg-5  cd-content">
 
-                <article>
-                    <header>
-                        <h1></h1>
-                    </header>
-                    <section>
-                        <p>Documentation, the JavaDoc API, examples and articles for Cayenne 4.0 can all be found here.</p>
+            
+            <article>
+                <section>
+                    
+	
+
+<P>Sometimes it is necessary to recreate a database, copying data from another existing database. For instance, recreating development database instance from production data, etc. While most RDBMS provide data import/export tools, they normally require advanced DBA skills to use and are most often not portable across database engines. Cayenne will provide a lightweight ant task to do data porting between the databases with identical schema, using DataMap information.</P>
+
+<P><TT>cdataport</TT> is an Ant task that takes a Cayenne project (cayenne.xml) with at least one DataMap and two DataNodes and ports data from source DataNode to a destination DataNode. All DataMaps linked to either the source or the target DataNode will be considered for porting.</P>
+
+<H5><A name="cdataport-Parameters"></A>Parameters</H5>
+<DIV class="table-wrap">
+<TABLE class="confluenceTable"><TBODY>
+<TR>
+<TH class="confluenceTh">Attribute</TH>
+<TH class="confluenceTh">Description</TH>
+<TH class="confluenceTh">Required</TH>
+</TR>
+<TR>
+<TD class="confluenceTd">projectFile</TD>
+<TD class="confluenceTd">Location of Cayenne project file containing mapping.</TD>
+<TD class="confluenceTd">Yes</TD>
+</TR>
+<TR>
+<TD class="confluenceTd">maps</TD>
+<TD class="confluenceTd">A comma-separated list of DataMap names within the project, whoose entities data needs to be ported. If ommitted, all DataMaps in the project will be ported.</TD>
+<TD class="confluenceTd">No</TD>
+</TR>
+<TR>
+<TD class="confluenceTd">srcNode</TD>
+<TD class="confluenceTd">Source DataNode name.</TD>
+<TD class="confluenceTd">Yes</TD>
+</TR>
+<TR>
+<TD class="confluenceTd">destNode</TD>
+<TD class="confluenceTd">Destination DataNode name.</TD>
+<TD class="confluenceTd">Yes</TD>
+</TR>
+<TR>
+<TD class="confluenceTd">cleanDest</TD>
+<TD class="confluenceTd">If false, will skip deleting data from the destination tables. True is default.</TD>
+<TD class="confluenceTd">No</TD>
+</TR>
+<TR>
+<TD class="confluenceTd">includeTables</TD>
+<TD class="confluenceTd">Comma-separated list of tables to include in the port. If ommitted, all mapped DbEntities will be used. It is possible to use &quot;*&quot; to indicate name patterns.</TD>
+<TD class="confluenceTd">No</TD>
+</TR>
+<TR>
+<TD class="confluenceTd">excludeTables</TD>
+<TD class="confluenceTd">Comma-separated list of tables to exclude from the port. If ommitted, all mapped DbEntities will be used. It is possible to use &quot;*&quot; to indicate name patterns.</TD>
+<TD class="confluenceTd">No</TD>
+</TR>
+</TBODY></TABLE>
+</DIV>
+
+
+<H5><A name="cdataport-Examples"></A>Examples</H5>
+<P>Here is an example of using <TT>cdataport</TT> to port data using all source DataMaps, excluding DBEntities with name matching &quot;BILL_*&quot;:</P>
+
+<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent">
+<PRE class="code-xml"><SPAN class="code-tag">&lt;taskdef name=<SPAN class="code-quote">&quot;cdataport&quot;</SPAN> classname=<SPAN class="code-quote">&quot;org.objectstyle.cayenne.tools.DataPortTask&quot;</SPAN>&gt;</SPAN>
+     <SPAN class="code-tag">&lt;classpath refid=<SPAN class="code-quote">&quot;classpath&quot;</SPAN>/&gt;</SPAN>
+<SPAN class="code-tag">&lt;/taskdef&gt;</SPAN>
+<SPAN class="code-tag">&lt;cdataport projectFile=<SPAN class="code-quote">&quot;subdir/cayenne.xml&quot;</SPAN> srcNode=<SPAN class="code-quote">&quot;ProductionNode&quot;</SPAN> destNode=<SPAN class="code-quote">&quot;DevNode&quot;</SPAN> excludeTables=<SPAN class="code-quote">&quot;BILL_*&quot;</SPAN>/&gt;</SPAN>
+</PRE>
+</DIV></DIV>
 
-                    </section>
-                </article>
+                </section>
+            </article>
 
 	        </div>
 	    </div>
@@ -279,7 +334,7 @@
     </div>
 </footer>
     
-<script>
+<script type="application/javascript">
 var doNotTrack = false;
 if (!doNotTrack) {
 	(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
diff --git a/docs/index.html b/docs/1.2/cdbgen.html
similarity index 70%
copy from docs/index.html
copy to docs/1.2/cdbgen.html
index b579c6b..a57170f 100644
--- a/docs/index.html
+++ b/docs/1.2/cdbgen.html
@@ -15,7 +15,7 @@
         <meta name="theme-color" content="#ffffff">
         <link rel="stylesheet" href="https://cayenne.apache.org/css/styles-e429186d1b.css"/>
         <script src="https://cayenne.apache.org/js/bundle-92aa692db7.js"></script>
-        <title>Documentation &middot; Apache Cayenne</title>
+        <title>cdbgen &middot; Apache Cayenne</title>
     </head>
     <body data-spy="scroll" data-target=".toc-side" class="cd-head"> 
 <header class="page-header">
@@ -92,10 +92,10 @@
                     <ul class="nav" role="tablist">
                         <li class="nav-item dropdown mw-100">
                             <a class="nav-link dropdown-toggle text-truncate" data-toggle="dropdown" href="#" role="button" aria-haspopup="true" aria-expanded="false">
-                                Cayenne Version 4.1
+                                Cayenne Version 1.2
                             </a>
                             <div class="dropdown-menu">
-                                <a class="dropdown-item" href="/docs/4.1/getting-started-guide/">Version 4.1 (Release Candidate)</a><a class="dropdown-item" href="/docs/4.0/getting-started-guide/">Version 4.0 (Stable)</a><a class="dropdown-item" href="/docs/3.1/getting-started-guide/">Version 3.1 (Aging)</a><a class="dropdown-item" href="/docs/3.0/api/">Version 3.0 (Legacy)</a><a class="dropdown-item" href="/docs/2.0/api/">Version 2.0 (Legacy)</a><a class="dropdown-item" href="/docs/1.2/ [...]
+                                <a class="dropdown-item" href="/docs/4.1/getting-started-guide/">Version 4.1 (Release Candidate)</a><a class="dropdown-item" href="/docs/4.0/getting-started-guide/">Version 4.0 (Stable)</a><a class="dropdown-item" href="/docs/3.1/getting-started-guide/">Version 3.1 (Aging)</a><a class="dropdown-item" href="/docs/3.0/cayenne-guide.html">Version 3.0 (Legacy)</a><a class="dropdown-item" href="/docs/2.0/user-guide.html">Version 2.0 (Legacy)</a><a class="dropdo [...]
                             </div>
                         </li>
                     </ul>
@@ -111,51 +111,125 @@
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.1/getting-started-guide/">Getting Started</a>
+                            <a class="cd-toc-link" href="/docs/1.2/user-guide.html">User Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.1/cayenne-guide/">Cayenne Guide</a>
+                            <a class="cd-toc-link" href="/docs/1.2/modeler-guide.html">Modeler Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.1/getting-started-db-first/">Database First Tutorial</a>
+                            <a class="cd-toc-link" href="/docs/1.2/remote-object-persistence-guide.html">Remote Object Persistence Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
-                        
-                            <a class="cd-toc-link" href="/docs/4.1/getting-started-rop/">Getting Started ROP</a>
-                        
-                    </div>
-                    
-                    <div class="cd-toc-item">
-                        
-                            <a class="cd-toc-link" href="/docs/4.1/upgrade-guide/">Upgrade Guide</a>
-                        
-                    </div>
-                    
-                    <div class="cd-toc-item">
-                        <a class="cd-toc-link" href="/docs/4.1/api/">JavaDoc</a>
+                        <a class="cd-toc-link" href="/docs/1.2/api/">JavaDoc</a>
                     </div>
                 </div>
             </div>
             
             <div class="col-12 col-lg-8 col-xl-9  py-3 pl-lg-5  cd-content">
 
-                <article>
-                    <header>
-                        <h1>Documentation</h1>
-                    </header>
-                    <section>
-                        <p>Documentation, the JavaDoc API, examples and articles can all be found here.</p>
+            
+            <article>
+                <section>
+                    
+	
+
+<P><TT>cdbgen</TT> is an Ant task that uses Cayenne DataMap to drop and/or generate schema objects of a specified database.</P>
+
+<H3><A name="cdbgen-Parameters"></A>Parameters</H3>
+<DIV class="table-wrap">
+<TABLE class="confluenceTable"><TBODY>
+<TR>
+<TH class="confluenceTh">Attribute</TH>
+<TH class="confluenceTh">Description</TH>
+<TH class="confluenceTh">Required</TH>
+</TR>
+<TR>
+<TD class="confluenceTd">map</TD>
+<TD class="confluenceTd">DataMap XML file to use as a schema descriptor.</TD>
+<TD class="confluenceTd">Yes</TD>
+</TR>
+<TR>
+<TD class="confluenceTd">adapter</TD>
+<TD class="confluenceTd">Java class implementing org.objectstyle.cayenne.dba.DbAdapter. While this attribute is optional (a generic JdbcAdapter is used if not set), it is highly recommended to specify correct target adapter.</TD>
+<TD class="confluenceTd">No (but strongly recommended)</TD>
+</TR>
+<TR>
+<TD class="confluenceTd">driver</TD>
+<TD class="confluenceTd">A class of JDBC driver to use for the target database.</TD>
+<TD class="confluenceTd">Yes</TD>
+</TR>
+<TR>
+<TD class="confluenceTd">url</TD>
+<TD class="confluenceTd">JDBC connection URL of a target database.</TD>
+<TD class="confluenceTd">Yes</TD>
+</TR>
+<TR>
+<TD class="confluenceTd">username</TD>
+<TD class="confluenceTd">Database user name.</TD>
+<TD class="confluenceTd">No</TD>
+</TR>
+<TR>
+<TD class="confluenceTd">password</TD>
+<TD class="confluenceTd">Database user password.</TD>
+<TD class="confluenceTd">No</TD>
+</TR>
+<TR>
+<TD class="confluenceTd">droptables</TD>
+<TD class="confluenceTd">Defines whether cdbgen should drop the tables before attempting to create new ones. Default is &quot;No&quot;.</TD>
+<TD class="confluenceTd">No</TD>
+</TR>
+<TR>
+<TD class="confluenceTd">droppk</TD>
+<TD class="confluenceTd">Defines whether cdbgen should drop Cayenne primary key support objects. Default is &quot;No&quot;.</TD>
+<TD class="confluenceTd">No</TD>
+</TR>
+<TR>
+<TD class="confluenceTd">createtables</TD>
+<TD class="confluenceTd">Defines whether cdbgen should create new tables. Default is &quot;Yes&quot;.</TD>
+<TD class="confluenceTd">No</TD>
+</TR>
+<TR>
+<TD class="confluenceTd">createpk</TD>
+<TD class="confluenceTd">Defines whether cdbgen should create Cayenne-specific auto PK objects. Default is &quot;Yes&quot;.</TD>
+<TD class="confluenceTd">No</TD>
+</TR>
+<TR>
+<TD class="confluenceTd">createfk</TD>
+<TD class="confluenceTd">Defines whether cdbgen should create foreign key copnstraints. Default is &quot;Yes&quot;.</TD>
+<TD class="confluenceTd">No</TD>
+</TR>
+</TBODY></TABLE>
+</DIV>
+
+
+<DIV class="panelMacro"><TABLE class="noteMacro"><COLGROUP><COL width="24"><COL></COLGROUP><TR><TD valign="top"><img src="/docs/1.2/images/warning.gif" width="16" height="16" align="absmiddle" alt="" border="0"></TD><TD><B>Driver Classpath</B><BR>Support for &quot;classpath&quot; or &quot;classpathref&quot; attributes is pending. To work around this limitation, JDBC driver (and custom DbAdapter) classpath can be appended to the classpath used to load the task via &quot;taskdef&quot;.</TD [...]
+
+<H3><A name="cdbgen-Example"></A>Example</H3>
+<P>Here is an example of using <TT>cdbgen</TT> to create DB schema objects on a local HSQLDB.</P>
+
+<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent">
+<PRE class="code-xml"><SPAN class="code-tag">&lt;taskdef name=<SPAN class="code-quote">&quot;cdbgen&quot;</SPAN> classname=<SPAN class="code-quote">&quot;org.objectstyle.cayenne.tools.DbGeneratorTask&quot;</SPAN>&gt;</SPAN>
+    <SPAN class="code-tag">&lt;classpath refid=<SPAN class="code-quote">&quot;classpath&quot;</SPAN>/&gt;</SPAN>
+<SPAN class="code-tag">&lt;/taskdef&gt;</SPAN>
+
+&lt;cdbgen map=<SPAN class="code-quote">&quot;${context.dir}/WEB-INF/DefaultMap.map.xml&quot;</SPAN> 
+    adapter=<SPAN class="code-quote">&quot;org.objectstyle.cayenne.dba.hsqldb.HSQLDBAdapter&quot;</SPAN>
+    driver=<SPAN class="code-quote">&quot;org.hsqldb.jdbcDriver&quot;</SPAN> 
+    url=<SPAN class="code-quote">&quot;jdbc:hsqldb:hsql://localhost/bookmarker&quot;</SPAN> 
+    username=<SPAN class="code-quote">&quot;sa&quot;</SPAN>/&gt;
+</PRE>
+</DIV></DIV>
 
-                    </section>
-                </article>
+                </section>
+            </article>
 
 	        </div>
 	    </div>
@@ -285,7 +359,7 @@
     </div>
 </footer>
     
-<script>
+<script type="application/javascript">
 var doNotTrack = false;
 if (!doNotTrack) {
 	(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
diff --git a/docs/4.1/index.html b/docs/1.2/cdeploy.html
similarity index 69%
copy from docs/4.1/index.html
copy to docs/1.2/cdeploy.html
index 72a7dc5..e4eeffa 100644
--- a/docs/4.1/index.html
+++ b/docs/1.2/cdeploy.html
@@ -15,7 +15,7 @@
         <meta name="theme-color" content="#ffffff">
         <link rel="stylesheet" href="https://cayenne.apache.org/css/styles-e429186d1b.css"/>
         <script src="https://cayenne.apache.org/js/bundle-92aa692db7.js"></script>
-        <title>Apache Cayenne</title>
+        <title>cdeploy &middot; Apache Cayenne</title>
     </head>
     <body data-spy="scroll" data-target=".toc-side" class="cd-head"> 
 <header class="page-header">
@@ -92,10 +92,10 @@
                     <ul class="nav" role="tablist">
                         <li class="nav-item dropdown mw-100">
                             <a class="nav-link dropdown-toggle text-truncate" data-toggle="dropdown" href="#" role="button" aria-haspopup="true" aria-expanded="false">
-                                Cayenne Version 4.1
+                                Cayenne Version 1.2
                             </a>
                             <div class="dropdown-menu">
-                                <a class="dropdown-item" href="/docs/4.1/getting-started-guide/">Version 4.1 (Release Candidate)</a><a class="dropdown-item" href="/docs/4.0/getting-started-guide/">Version 4.0 (Stable)</a><a class="dropdown-item" href="/docs/3.1/getting-started-guide/">Version 3.1 (Aging)</a><a class="dropdown-item" href="/docs/3.0/api/">Version 3.0 (Legacy)</a><a class="dropdown-item" href="/docs/2.0/api/">Version 2.0 (Legacy)</a><a class="dropdown-item" href="/docs/1.2/ [...]
+                                <a class="dropdown-item" href="/docs/4.1/getting-started-guide/">Version 4.1 (Release Candidate)</a><a class="dropdown-item" href="/docs/4.0/getting-started-guide/">Version 4.0 (Stable)</a><a class="dropdown-item" href="/docs/3.1/getting-started-guide/">Version 3.1 (Aging)</a><a class="dropdown-item" href="/docs/3.0/cayenne-guide.html">Version 3.0 (Legacy)</a><a class="dropdown-item" href="/docs/2.0/user-guide.html">Version 2.0 (Legacy)</a><a class="dropdo [...]
                             </div>
                         </li>
                     </ul>
@@ -111,51 +111,130 @@
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.1/getting-started-guide/">Getting Started</a>
+                            <a class="cd-toc-link" href="/docs/1.2/user-guide.html">User Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.1/cayenne-guide/">Cayenne Guide</a>
+                            <a class="cd-toc-link" href="/docs/1.2/modeler-guide.html">Modeler Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.1/getting-started-db-first/">Database First Tutorial</a>
+                            <a class="cd-toc-link" href="/docs/1.2/remote-object-persistence-guide.html">Remote Object Persistence Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
-                        
-                            <a class="cd-toc-link" href="/docs/4.1/getting-started-rop/">Getting Started ROP</a>
-                        
-                    </div>
-                    
-                    <div class="cd-toc-item">
-                        
-                            <a class="cd-toc-link" href="/docs/4.1/upgrade-guide/">Upgrade Guide</a>
-                        
-                    </div>
-                    
-                    <div class="cd-toc-item">
-                        <a class="cd-toc-link" href="/docs/4.1/api/">JavaDoc</a>
+                        <a class="cd-toc-link" href="/docs/1.2/api/">JavaDoc</a>
                     </div>
                 </div>
             </div>
             
             <div class="col-12 col-lg-8 col-xl-9  py-3 pl-lg-5  cd-content">
 
-                <article>
-                    <header>
-                        <h1></h1>
-                    </header>
-                    <section>
-                        <p>Documentation, the JavaDoc API, examples and articles for Cayenne 4.1 can all be found here.</p>
+            
+            <article>
+                <section>
+                    
+	
+
+<P><TT>cdeploy</TT> is an Ant task that configures Cayenne connection information in existing jar files that contain Cayenne project information. It is useful for the automation of deployment of Cayenne-based frameworks in different environments.</P>
+
+<H3><A name="cdeploy-Parameters"></A>Parameters</H3>
+<DIV class="table-wrap">
+<TABLE class="confluenceTable"><TBODY>
+<TR>
+<TH class="confluenceTh">Attribute</TH>
+<TH class="confluenceTh">Description</TH>
+<TH class="confluenceTh">Required</TH>
+</TR>
+<TR>
+<TD class="confluenceTd">src</TD>
+<TD class="confluenceTd">Source jar file that contains Cayenne project files among other things.</TD>
+<TD class="confluenceTd">Yes</TD>
+</TR>
+<TR>
+<TD class="confluenceTd">dest</TD>
+<TD class="confluenceTd">Destination jar file that should be generated as a result of this task execution. If omitted, src is used.</TD>
+<TD class="confluenceTd">No</TD>
+</TR>
+<TR>
+<TD class="confluenceTd">altProjectFile</TD>
+<TD class="confluenceTd">An alternative location of cayenne.xml file. User can specify an arbitrary file. This file will be used as the main project file, replacing any existing cayenne.xml in the source jar. This gives the users an ultimate flexibility in configuring deployment libraries. For instance this feature can be used to deploy standalone DataMaps.</TD>
+<TD class="confluenceTd">No</TD>
+</TR>
+</TBODY></TABLE>
+</DIV>
+
+
+<H3><A name="cdeploy-NestedElements%3A"></A>Nested Elements:</H3>
+
+<H5><A name="cdeploy-node"></A>node</H5>
+<P>One or more nested &quot;node&quot; elements specify connection information for the named nodes. All nested nodes must exist in the project, or otherwise they will be ignored.<BR>
+Nested node Parameters:</P>
+<DIV class="table-wrap">
+<TABLE class="confluenceTable"><TBODY>
+<TR>
+<TH class="confluenceTh">Attribute</TH>
+<TH class="confluenceTh">Description</TH>
+<TH class="confluenceTh">Required</TH>
+</TR>
+<TR>
+<TD class="confluenceTd">name</TD>
+<TD class="confluenceTd">DataNode name</TD>
+<TD class="confluenceTd">Yes</TD>
+</TR>
+<TR>
+<TD class="confluenceTd">domain</TD>
+<TD class="confluenceTd">Parent DataDomain of this node. If omitted, project must have only a single domain (very common case).</TD>
+<TD class="confluenceTd">No</TD>
+</TR>
+<TR>
+<TD class="confluenceTd">adapter</TD>
+<TD class="confluenceTd">DataNode adapter.</TD>
+<TD class="confluenceTd">No</TD>
+</TR>
+<TR>
+<TD class="confluenceTd">dataSource</TD>
+<TD class="confluenceTd">DataSource name to use for this node.</TD>
+<TD class="confluenceTd">No</TD>
+</TR>
+<TR>
+<TD class="confluenceTd">driverFile</TD>
+<TD class="confluenceTd">File that contains driver information.</TD>
+<TD class="confluenceTd">No</TD>
+</TR>
+</TBODY></TABLE>
+</DIV>
+
+
+<P>&quot;dataSource&quot; and &quot;driverFile&quot; are mutually exclusive, but none of them are required.</P>
+
+<H3><A name="cdeploy-Examples"></A>Examples</H3>
+
+<P>Here is an example of using <TT>cdeploy</TT> to regenerate a jar file called &quot;business.jar&quot; with connection info located in &quot;alt.driver.xml&quot;:</P>
+
+<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent">
+<PRE class="code-xml"><SPAN class="code-tag">&lt;taskdef name=<SPAN class="code-quote">&quot;cdeploy&quot;</SPAN> classname=<SPAN class="code-quote">&quot;org.objectstyle.cayenne.tools.DeploymentConfigurator&quot;</SPAN>/&gt;</SPAN>
+<SPAN class="code-tag">&lt;cdeploy src=<SPAN class="code-quote">&quot;business.jar&quot;</SPAN>&gt;</SPAN>
+    <SPAN class="code-tag">&lt;node name=<SPAN class="code-quote">&quot;main-node&quot;</SPAN> driverFile=<SPAN class="code-quote">&quot;alt.driver.xml&quot;</SPAN>/&gt;</SPAN>
+<SPAN class="code-tag">&lt;/cdeploy&gt;</SPAN>
+</PRE>
+</DIV></DIV>
+
+<P>An example of using <TT>cdeploy</TT> to redeploy a 3rd party library that contains DataMaps, but may not contain cayenne.xml:</P>
+
+<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent">
+<PRE class="code-xml"><SPAN class="code-tag">&lt;taskdef name=<SPAN class="code-quote">&quot;cdeploy&quot;</SPAN> classname=<SPAN class="code-quote">&quot;org.objectstyle.cayenne.tools.DeploymentConfigurator&quot;</SPAN>/&gt;</SPAN>
+<SPAN class="code-tag">&lt;cdeploy src=<SPAN class="code-quote">&quot;business.jar&quot;</SPAN> altProjectFile=<SPAN class="code-quote">&quot;my-cayenne.xml&quot;</SPAN>/&gt;</SPAN>
+</PRE>
+</DIV></DIV>
 
-                    </section>
-                </article>
+                </section>
+            </article>
 
 	        </div>
 	    </div>
@@ -285,7 +364,7 @@
     </div>
 </footer>
     
-<script>
+<script type="application/javascript">
 var doNotTrack = false;
 if (!doNotTrack) {
 	(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
diff --git a/docs/1.2/cgen.html b/docs/1.2/cgen.html
new file mode 100644
index 0000000..1b07619
--- /dev/null
+++ b/docs/1.2/cgen.html
@@ -0,0 +1,481 @@
+<!DOCTYPE html>
+<html lang="en">
+    <head>
+        <meta charset="utf-8">
+        <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1.3">
+        <link rel="apple-touch-icon" sizes="180x180" href="/img/favicon/apple-touch-icon-04cb17e028.png">
+        <link rel="icon" type="image/png" sizes="32x32" href="/img/favicon/favicon-32x32-12431ee8eb.png">
+        <link rel="icon" type="image/png" sizes="16x16" href="/img/favicon/favicon-16x16-4f316e4d55.png">
+        <link rel="manifest" href="/img/favicon/manifest-65e6aaa49e.json">
+        <link rel="mask-icon" href="/img/favicon/safari-pinned-tab-558c1991b1.svg" color="#dc5656">
+        <link rel="shortcut icon" href="/img/favicon/favicon-6cef91375b.ico">
+        <meta name="msapplication-TileColor" content="#ffffff">
+        <meta name="msapplication-TileImage" content="/img/favicon/mstile-144x144-34e7696278.png">
+        <meta name="msapplication-config" content="/img/favicon/browserconfig-82ff158058.xml">
+        <meta name="theme-color" content="#ffffff">
+        <link rel="stylesheet" href="https://cayenne.apache.org/css/styles-e429186d1b.css"/>
+        <script src="https://cayenne.apache.org/js/bundle-92aa692db7.js"></script>
+        <title>cgen &middot; Apache Cayenne</title>
+    </head>
+    <body data-spy="scroll" data-target=".toc-side" class="cd-head"> 
+<header class="page-header">
+    <nav id="topbar" class="bg-dark" aria-label="breadcrumb" role="navigation">
+      <ul class="breadcrumb breadcrumb-sm breadcrumb-dark  container  mb-0">
+        <li class="breadcrumb-item dropdown">
+          <a class="dropdown-toggle  text-nowrap  pr-1" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
+            <img class="mw-15px  mr-1" src="/img/feather-641aa69d09.svg" />Apache Software Foundation</a>
+          <div class="dropdown-menu rounded-0" aria-labelledby="navbarDropdown">
+            <a class="dropdown-item" href="https://www.apache.org">Apache Homepage</a>
+            <a class="dropdown-item" href="https://www.apache.org/licenses/">License</a>
+            <a class="dropdown-item" href="https://www.apache.org/foundation/sponsorship.html">Sponsorship</a>
+            <a class="dropdown-item" href="https://www.apache.org/foundation/thanks.html">Thanks</a>
+            <a class="dropdown-item" href="https://www.apache.org/security/">Security</a>
+          </div>
+        </li>
+        
+      </ul>
+    </nav>
+    <nav class="navbar navbar-expand-lg navbar-dark bg-primary">
+      <div class="container">
+        <a class="navbar-brand" href="https://cayenne.apache.org/">
+           <img src="/img/logo_mono_full-d7a19eef61.svg" alt="Apache Cayenne" />
+        </a>
+        <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#mainMenu" aria-controls="mainMenu" aria-expanded="false" aria-label="Toggle navigation">
+          <span class="navbar-toggler-icon"></span>
+        </button>
+
+        <div class="collapse navbar-collapse" id="mainMenu">
+          <ul class="navbar-nav  mt-3 mt-lg-0 mr-auto">
+            
+            <li class="nav-item">
+              <a class="nav-link" href="/download/">DOWNLOAD</a>
+            </li>
+            
+            <li class="nav-item">
+              <a class="nav-link" href="/docs/4.0/getting-started-guide/">DOCUMENTATION</a>
+            </li>
+            
+            <li class="nav-item">
+              <a class="nav-link" href="/about/support/">SUPPORT</a>
+            </li>
+            
+          </ul>
+          <ul class="navbar-nav  flex-row justify-content-center  mt-2 mt-lg-0 mb-2 mb-lg-0 " id="social-links-menu">
+            <li class="nav-item  d-flex">
+              <a class="nav-link  d-flex justify-content-center align-items-center" href="https://github.com/apache/cayenne">
+                <img src="/img/icon_octocat_stars-c24dac94b8.svg" alt="GitHub" /><span class="stargazers_count  ml-1l2"></span></a>
+            </li>
+            <li class="nav-item  d-flex">
+              <a class="nav-link  d-flex justify-content-center align-items-center" href="https://twitter.com/ApacheCayenne">
+                <img src="/img/icon_twitter-220a129d14.svg" alt="Twitter" />
+              </a>
+            </li>
+          </ul>
+        </div>
+      </div>
+    </nav>
+</header>
+
+
+
+
+
+
+
+
+<main>
+    <div class="cd-top-sidebar  bb">
+        <div class="container">
+            <div class="row no-gutters">
+                
+                <div class="col-12 col-lg-4 col-xl-3  br  cd-sidebar1">
+                    <ul class="nav" role="tablist">
+                        <li class="nav-item dropdown mw-100">
+                            <a class="nav-link dropdown-toggle text-truncate" data-toggle="dropdown" href="#" role="button" aria-haspopup="true" aria-expanded="false">
+                                Cayenne Version 1.2
+                            </a>
+                            <div class="dropdown-menu">
+                                <a class="dropdown-item" href="/docs/4.1/getting-started-guide/">Version 4.1 (Release Candidate)</a><a class="dropdown-item" href="/docs/4.0/getting-started-guide/">Version 4.0 (Stable)</a><a class="dropdown-item" href="/docs/3.1/getting-started-guide/">Version 3.1 (Aging)</a><a class="dropdown-item" href="/docs/3.0/cayenne-guide.html">Version 3.0 (Legacy)</a><a class="dropdown-item" href="/docs/2.0/user-guide.html">Version 2.0 (Legacy)</a><a class="dropdo [...]
+                            </div>
+                        </li>
+                    </ul>
+                </div>
+                <div class="col-12 col-lg-8 col-xl-9">  </div>
+            </div>
+        </div>
+    </div>
+    <div class="container">
+        <div class="row no-gutters  ">
+            <div class="col-12 col-lg-4 col-xl-3  br  py-2  bg-gray-100  cd-sidebar">
+                <div class="tab-content" id="cd-docs-nav">
+                    
+                    <div class="cd-toc-item">
+                        
+                            <a class="cd-toc-link" href="/docs/1.2/user-guide.html">User Guide</a>
+                        
+                    </div>
+                    
+                    <div class="cd-toc-item">
+                        
+                            <a class="cd-toc-link" href="/docs/1.2/modeler-guide.html">Modeler Guide</a>
+                        
+                    </div>
+                    
+                    <div class="cd-toc-item">
+                        
+                            <a class="cd-toc-link" href="/docs/1.2/remote-object-persistence-guide.html">Remote Object Persistence Guide</a>
+                        
+                    </div>
+                    
+                    <div class="cd-toc-item">
+                        <a class="cd-toc-link" href="/docs/1.2/api/">JavaDoc</a>
+                    </div>
+                </div>
+            </div>
+            
+            <div class="col-12 col-lg-8 col-xl-9  py-3 pl-lg-5  cd-content">
+
+            
+            <article>
+                <section>
+                    
+	
+
+<P><TT>cgen</TT> is an Ant task that generates and maintains DataObjects source files based on Cayenne DataMap. If &quot;makepairs&quot; is set to &quot;true&quot; (default), this task will generate a pair of classes (superclass/subclass) for each ObjEntity in the DataMap. Superclasses should not be changed manually, since they are always overwritten. Subclasses are never overwritten and may be later customized by the user. If &quot;makepairs&quot; is set to &quot;false&quot;, a single c [...]
+
+<P>By creating custom templates, Cgen can also be used to generate other output (such as web pages, reports, specialized code templates) based on DataMap information.</P>
+
+<H3><A name="cgen-Parameters"></A>Parameters</H3>
+<DIV class="table-wrap">
+<TABLE class="confluenceTable"><TBODY>
+<TR>
+<TH class="confluenceTh">Attribute</TH>
+<TH class="confluenceTh">Description</TH>
+<TH class="confluenceTh">Required</TH>
+</TR>
+<TR>
+<TD class="confluenceTd">map</TD>
+<TD class="confluenceTd">DataMap XML file to use as a base for class generation.</TD>
+<TD class="confluenceTd">Yes</TD>
+</TR>
+<TR>
+<TD class="confluenceTd">additionalMaps</TD>
+<TD class="confluenceTd">Path to additional DataMap XML files to use for class generation.</TD>
+<TD class="confluenceTd">No</TD>
+</TR>
+<TR>
+<TD class="confluenceTd">destDir</TD>
+<TD class="confluenceTd">Destination directory for Java classes (ignoring their package names).</TD>
+<TD class="confluenceTd">Yes</TD>
+</TR>
+<TR>
+<TD class="confluenceTd">overwrite</TD>
+<TD class="confluenceTd">If set to &quot;true&quot;, will overwrite older versions of generated classes. Ignored unless makepairs is set to &quot;false&quot;.</TD>
+<TD class="confluenceTd">No</TD>
+</TR>
+<TR>
+<TD class="confluenceTd">makepairs</TD>
+<TD class="confluenceTd">If set to &quot;true&quot;, will generate subclass/superclass pairs, with all generated code included in superclass (default is &quot;true&quot;).</TD>
+<TD class="confluenceTd">No</TD>
+</TR>
+<TR>
+<TD class="confluenceTd">template</TD>
+<TD class="confluenceTd">Location of Velocity template file for Java class generation. If omitted, default template is used.</TD>
+<TD class="confluenceTd">No</TD>
+</TR>
+<TR>
+<TD class="confluenceTd">supertemplate</TD>
+<TD class="confluenceTd">Location of Velocity template file for Java superclass generation. Ignored unless &quot;makepairs&quot; set to &quot;true&quot;. If omitted, default template is used.</TD>
+<TD class="confluenceTd">No</TD>
+</TR>
+<TR>
+<TD class="confluenceTd">superpkg</TD>
+<TD class="confluenceTd">Java package name of generated superclasses. Ignored unless &quot;makepairs&quot; set to &quot;true&quot;. If omitted, each superclass will be assigned the same package as subclass. Note that having superclass in a different package would only make sense when &quot;usepkgpath&quot; is set to &quot;true&quot;. Otherwise classes from different packages will end up in the same directory.</TD>
+<TD class="confluenceTd">No</TD>
+</TR>
+<TR>
+<TD class="confluenceTd">usepkgpath</TD>
+<TD class="confluenceTd">If set to &quot;true&quot; (default), a directory tree will be generated in &quot;destDir&quot; corresponding to the class package structure, if set to &quot;false&quot;, classes will be generated in &quot;destDir&quot; ignoring their package.</TD>
+<TD class="confluenceTd">No</TD>
+</TR>
+<TR>
+<TD class="confluenceTd">encoding</TD>
+<TD class="confluenceTd">Specify generated file encoding if different from the default on current platform. Target encoding must be supported by the JVM running Ant build. Standard encodings supported by Java on all platforms are US-ASCII, ISO-8859-1, UTF-8, UTF-16BE, UTF-16LE, UTF-16. See Sun Java Docs for java.nio.charset.Charset for more information.</TD>
+<TD class="confluenceTd">No</TD>
+</TR>
+<TR>
+<TD class="confluenceTd">version</TD>
+<TD class="confluenceTd">Specifies template location and generator behavior. &quot;1.1&quot; is the old behavior, with templates located in &quot;dotemplates&quot; and &quot;classgen&quot; as the only velocity context attribute. &quot;1.2&quot; is the new behavior, with templates located in &quot;dotemplates/v1.2&quot; and &quot;objEntity&quot;, &quot;entityUtils&quot;, &quot;stringUtils&quot;, and &quot;importUtils&quot; in the velocity context. (Default is &quot;1.1&quot;)</TD>
+<TD class="confluenceTd">No</TD>
+</TR>
+<TR>
+<TD class="confluenceTd">excludeEntities</TD>
+<TD class="confluenceTd">Entities (expressed as a perl5 regex) to exclude from template generation. (Default is to include all entities in the DataMap)</TD>
+<TD class="confluenceTd">No</TD>
+</TR>
+<TR>
+<TD class="confluenceTd">includeEntities</TD>
+<TD class="confluenceTd">Entities (expressed as a perl5 regex) to include in template generation. (Default is to include all entities in the DataMap)</TD>
+<TD class="confluenceTd">No</TD>
+</TR>
+<TR>
+<TD class="confluenceTd">outputPattern</TD>
+<TD class="confluenceTd">Name of file for generated output. (Default is &quot;*.java&quot;)</TD>
+<TD class="confluenceTd">No</TD>
+</TR>
+<TR>
+<TD class="confluenceTd">mode</TD>
+<TD class="confluenceTd">Specifies generator iteration target. &quot;entity&quot; performs one iteration for each selected entity. &quot;datamap&quot; performs one iteration per datamap (This is always one iteration since cgen currently supports specifying one-and-only-one datamap). (Default is &quot;entity&quot;)</TD>
+<TD class="confluenceTd">No</TD>
+</TR>
+<TR>
+<TD class="confluenceTd">client</TD>
+<TD class="confluenceTd">Whether we are generating classes for the client tier in a <A href="remote-object-persistence-guide.html" title="Remote Object Persistence Guide">Remote Object Persistence</A> application. Default is &quot;false&quot;</TD>
+<TD class="confluenceTd">No</TD>
+</TR>
+</TBODY></TABLE>
+</DIV>
+
+
+<H3><A name="cgen-Parametersspecifiedasnestedelements"></A>Parameters specified as nested elements</H3>
+<DIV class="table-wrap">
+<TABLE class="confluenceTable"><TBODY>
+<TR>
+<TH class="confluenceTh">Attribute</TH>
+<TH class="confluenceTh">Description</TH>
+<TH class="confluenceTh">Required</TH>
+</TR>
+<TR>
+<TD class="confluenceTd">config</TD>
+<TD class="confluenceTd">CGen with version=&quot;1.2&quot; also supports <A href="http://vpp.sourceforge.net/" class="external-link" rel="nofollow">VPP</A> config nested elements for configuring the velocity template engine and adding objects to the velocity template. You can also reference a vppconfig element declared outside of the CGen task, but you'll need to insure that both <TT>vppconfig</TT> and <TT>cgen</TT> have been loaded with the same classloader by using the same ant taskdef [...]
+<TD class="confluenceTd">No</TD>
+</TR>
+</TBODY></TABLE>
+</DIV>
+
+
+<H3><A name="cgen-Examples"></A>Examples</H3>
+
+<P>Here is an example of using CGen to generate DataObject subclass/superclass pairs from DataMap located in &quot;src/datamap.xml&quot;. All generated subclasses and superclasses will be saved in the same directory &quot;src/java/dobj&quot; regardless of their package names:</P>
+<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent">
+<PRE class="code-xml"><SPAN class="code-tag">&lt;taskdef name=<SPAN class="code-quote">&quot;cgen&quot;</SPAN> classname=<SPAN class="code-quote">&quot;org.objectstyle.cayenne.tools.CayenneGenerator&quot;</SPAN>&gt;</SPAN>
+    <SPAN class="code-tag">&lt;classpath refid=<SPAN class="code-quote">&quot;classpath&quot;</SPAN>/&gt;</SPAN>
+<SPAN class="code-tag">&lt;/taskdef&gt;</SPAN>
+<SPAN class="code-tag">&lt;cgen map=<SPAN class="code-quote">&quot;src/datamap.xml&quot;</SPAN> destDir=<SPAN class="code-quote">&quot;src/java/dobj&quot;</SPAN> usepkgpath=<SPAN class="code-quote">&quot;false&quot;</SPAN>/&gt;</SPAN>
+</PRE>
+</DIV></DIV>
+<P>Here is an example of using CGen to generate html pages for all entities starting with &quot;Artist&quot; in the DataMap:</P>
+<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent">
+<PRE class="code-xml"><SPAN class="code-tag">&lt;taskdef name=<SPAN class="code-quote">&quot;cgen&quot;</SPAN> classname=<SPAN class="code-quote">&quot;org.objectstyle.cayenne.tools.CayenneGenerator&quot;</SPAN>&gt;</SPAN>
+    <SPAN class="code-tag">&lt;classpath refid=<SPAN class="code-quote">&quot;classpath&quot;</SPAN>/&gt;</SPAN>
+<SPAN class="code-tag">&lt;/taskdef&gt;</SPAN>
+&lt;cgen map=<SPAN class="code-quote">&quot;src/datamap.xml&quot;</SPAN> destDir=<SPAN class="code-quote">&quot;src/doc/web&quot;</SPAN> makepairs=<SPAN class="code-quote">&quot;false&quot;</SPAN> usepkgpath=<SPAN class="code-quote">&quot;false&quot;</SPAN>
+    template=<SPAN class="code-quote">&quot;EntityReport.vm&quot;</SPAN> includeEntities=<SPAN class="code-quote">&quot;Artist*&quot;</SPAN> outputPattern=<SPAN class="code-quote">&quot;*Report.html&quot;</SPAN>/&gt;
+</PRE>
+</DIV></DIV>
+
+<P>Here is an example of using CGen with a nested config element:</P>
+
+<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent">
+<PRE class="code-xml">&lt;typedef
+    resource=<SPAN class="code-quote">&quot;org/objectstyle/cayenne/tools/antlib.xml&quot;</SPAN>&gt;
+    <SPAN class="code-tag">&lt;classpath refid=<SPAN class="code-quote">&quot;aclasspath&quot;</SPAN>/&gt;</SPAN>
+<SPAN class="code-tag">&lt;/typedef&gt;</SPAN>
+
+&lt;cgen map=<SPAN class="code-quote">&quot;src/datamap.xml&quot;</SPAN>
+    destDir=<SPAN class="code-quote">&quot;src/doc/web&quot;</SPAN>
+    makepairs=<SPAN class="code-quote">&quot;false&quot;</SPAN>
+    usepkgpath=<SPAN class="code-quote">&quot;false&quot;</SPAN>
+    template=<SPAN class="code-quote">&quot;EntityReport.vm&quot;</SPAN>
+    includeEntities=<SPAN class="code-quote">&quot;Artist*&quot;</SPAN>
+    outputPattern=<SPAN class="code-quote">&quot;*Report.html&quot;</SPAN>&gt;
+    <SPAN class="code-tag">&lt;config&gt;</SPAN>
+        <SPAN class="code-tag">&lt;context&gt;</SPAN>
+            <SPAN class="code-tag">&lt;property key=<SPAN class="code-quote">&quot;myPropertyName&quot;</SPAN> value=<SPAN class="code-quote">&quot;myPropertyValue&quot;</SPAN> /&gt;</SPAN>
+            <SPAN class="code-tag">&lt;tool key=<SPAN class="code-quote">&quot;myToolName&quot;</SPAN> className=<SPAN class="code-quote">&quot;org.myDomain.MyTool&quot;</SPAN> /&gt;</SPAN>
+        <SPAN class="code-tag">&lt;/context&gt;</SPAN>
+    <SPAN class="code-tag">&lt;/config&gt;</SPAN>
+<SPAN class="code-tag">&lt;/cgen&gt;</SPAN>
+</PRE>
+</DIV></DIV>
+
+<P>Here is an example of using CGen with vppconfig:</P>
+
+<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent">
+<PRE class="code-xml">&lt;typedef
+    resource=<SPAN class="code-quote">&quot;org/objectstyle/cayenne/tools/antlib.xml&quot;</SPAN>&gt;
+    loaderref=<SPAN class="code-quote">&quot;aclasspathloader&quot;</SPAN>
+    <SPAN class="code-tag">&lt;classpath refid=<SPAN class="code-quote">&quot;aclasspath&quot;</SPAN>/&gt;</SPAN>
+<SPAN class="code-tag">&lt;/typedef&gt;</SPAN>
+
+&lt;typedef name=<SPAN class="code-quote">&quot;vppconfig&quot;</SPAN>
+    classname=<SPAN class="code-quote">&quot;foundrylogic.vpp.VPPConfig&quot;</SPAN>
+    loaderref=<SPAN class="code-quote">&quot;aclasspathloader&quot;</SPAN>&gt;
+    <SPAN class="code-tag">&lt;classpath refid=<SPAN class="code-quote">&quot;aclasspath&quot;</SPAN>/&gt;</SPAN>
+<SPAN class="code-tag">&lt;/typedef&gt;</SPAN>
+
+<SPAN class="code-tag">&lt;vppconfig id=<SPAN class="code-quote">&quot;myconfig&quot;</SPAN>&gt;</SPAN>
+    <SPAN class="code-tag">&lt;context&gt;</SPAN>
+        <SPAN class="code-tag">&lt;property key=<SPAN class="code-quote">&quot;myPropertyName&quot;</SPAN> value=<SPAN class="code-quote">&quot;myPropertyValue&quot;</SPAN> /&gt;</SPAN>
+        <SPAN class="code-tag">&lt;tool key=<SPAN class="code-quote">&quot;myToolName&quot;</SPAN> className=<SPAN class="code-quote">&quot;org.myDomain.MyTool&quot;</SPAN> /&gt;</SPAN>
+    <SPAN class="code-tag">&lt;/context&gt;</SPAN>
+<SPAN class="code-tag">&lt;/vppconfig&gt;</SPAN>
+
+&lt;cgen map=<SPAN class="code-quote">&quot;src/datamap.xml&quot;</SPAN>
+    destDir=<SPAN class="code-quote">&quot;src/doc/web&quot;</SPAN>
+    makepairs=<SPAN class="code-quote">&quot;false&quot;</SPAN>
+    usepkgpath=<SPAN class="code-quote">&quot;false&quot;</SPAN>
+    template=<SPAN class="code-quote">&quot;EntityReport.vm&quot;</SPAN>
+    includeEntities=<SPAN class="code-quote">&quot;Artist*&quot;</SPAN>
+    outputPattern=<SPAN class="code-quote">&quot;*Report.html&quot;</SPAN>&gt;
+    <SPAN class="code-tag">&lt;config refid=<SPAN class="code-quote">&quot;myconfig&quot;</SPAN> /&gt;</SPAN>
+<SPAN class="code-tag">&lt;/cgen&gt;</SPAN>
+</PRE>
+</DIV></DIV>
+
+                </section>
+            </article>
+
+	        </div>
+	    </div>
+	</div>
+</main>
+
+<footer class="bg-dark">
+    <div class="footer-nav container  text-center text-lg-left  pb-3">
+        <div class="row  pt-5 pb-3">
+            
+            <div class="col-sm-6 col-lg-3">
+                <h4>About</h4>
+                <ul class="list-unstyled">
+                    
+                    <li>
+                        <a href="/why-cayenne.html">Why Cayenne?</a>
+                    </li>
+                    
+                    <li>
+                        <a href="/download/">Download</a>
+                    </li>
+                    
+                    <li>
+                        <a href="/success-stories.html">Success Stories</a>
+                    </li>
+                    
+                    <li>
+                        <a href="/about/support/">Support</a>
+                    </li>
+                    
+                </ul>
+            </div>
+            
+            <div class="col-sm-6 col-lg-3">
+                <h4>Documentation</h4>
+                <ul class="list-unstyled">
+                    
+                    <li>
+                        <a href="/docs/4.0/getting-started-guide/">Getting Started (4.0)</a>
+                    </li>
+                    
+                    <li>
+                        <a href="/docs/4.1/getting-started-guide/">Getting Started (4.1)</a>
+                    </li>
+                    
+                    <li>
+                        <a href="/docs/4.0/cayenne-guide/">Cayenne Guide (4.0)</a>
+                    </li>
+                    
+                    <li>
+                        <a href="/docs/4.1/cayenne-guide/">Cayenne Guide (4.1)</a>
+                    </li>
+                    
+                    <li>
+                        <a href="/docs/4.1/getting-started-db-first/">Database First tutorial (4.1)</a>
+                    </li>
+                    
+                </ul>
+            </div>
+            
+            <div class="col-sm-6 col-lg-3">
+                <h4>Collaboration</h4>
+                <ul class="list-unstyled">
+                    
+                    <li>
+                        <a href="https://issues.apache.org/jira/browse/CAY">Bug/Feature Tracker</a>
+                    </li>
+                    
+                    <li>
+                        <a href="/mailing-lists.html">Mailing Lists</a>
+                    </li>
+                    
+                    <li>
+                        <a href="/dev/code-repository.html">Code Repository</a>
+                    </li>
+                    
+                    <li>
+                        <a href="/dev/">Developer Guide</a>
+                    </li>
+                    
+                    <li>
+                        <a href="/how-can-i-help.html">How can I help?</a>
+                    </li>
+                    
+                    <li>
+                        <a href="/contributors.html">Contributors</a>
+                    </li>
+                    
+                    <li>
+                        <a href="/thanks.html">Thanks</a>
+                    </li>
+                    
+                </ul>
+            </div>
+            
+            <div class="col-sm-6 col-lg-3">
+                <h4>News</h4>
+                <ul class="list-multiline-items list-unstyled  mb-0">
+                    
+                    <li>
+                        <time datetime="2019-10-29 14:00:00 &#43;0300 &#43;03" class="xsmall d-block">Oct 29, 2019</time>
+                        <a href="/2019/10/cayenne-41rc2-released/">Cayenne 4.1 Release Candidate 2 Released</a>
+                    </li>
+                    
+                    <li>
+                        <time datetime="2019-10-14 12:00:00 &#43;0300 &#43;03" class="xsmall d-block">Oct 14, 2019</time>
+                        <a href="/2019/10/cayenne-402-released/">Cayenne 4.0.2 Released</a>
+                    </li>
+                    
+                    <li>
+                        <time datetime="2019-10-08 14:00:00 &#43;0300 &#43;03" class="xsmall d-block">Oct 08, 2019</time>
+                        <a href="/2019/10/cayenne-41rc1-released/">Cayenne 4.1 Release Candidate 1 Released</a>
+                    </li>
+                    
+                </ul>
+                <a class="btn-link text-uppercase xsmall" href="https://cayenne.apache.org/news">
+                    More news
+                    <i class="fa fa-lg fa-long-arrow-right" aria-hidden="true"></i>
+                </a>
+            </div>
+        </div>
+        <hr class="mt-0 mb-3" />
+        <p class="copy xsmall text-center  mw-75 mx-auto mb-0">
+            Copyright © 2001-2019 Apache Software Foundation. Apache Cayenne, Cayenne, Apache, the Apache feather logo, and the Apache Cayenne project logo are trademarks of The Apache Software Foundation. <a href="https://cayenne.apache.org/privacy-policy.html">Privacy policy</a>.
+            <img class="d-block  mx-auto mt-2" src="/img/logo_mono-3302daa3cf.svg" alt="Apache Cayenne" />
+        </p>
+    </div>
+</footer>
+    
+<script type="application/javascript">
+var doNotTrack = false;
+if (!doNotTrack) {
+	(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+	(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+	m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+	})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+	ga('create', 'UA-7036673-1', 'auto');
+	
+	ga('send', 'pageview');
+}
+</script>
+
+    </body>
+</html>
diff --git a/docs/4.0/index.html b/docs/1.2/classpath.html
similarity index 85%
copy from docs/4.0/index.html
copy to docs/1.2/classpath.html
index 2bbcbd2..164f32a 100644
--- a/docs/4.0/index.html
+++ b/docs/1.2/classpath.html
@@ -15,7 +15,7 @@
         <meta name="theme-color" content="#ffffff">
         <link rel="stylesheet" href="https://cayenne.apache.org/css/styles-e429186d1b.css"/>
         <script src="https://cayenne.apache.org/js/bundle-92aa692db7.js"></script>
-        <title>Apache Cayenne</title>
+        <title>ClassPath &middot; Apache Cayenne</title>
     </head>
     <body data-spy="scroll" data-target=".toc-side" class="cd-head"> 
 <header class="page-header">
@@ -92,10 +92,10 @@
                     <ul class="nav" role="tablist">
                         <li class="nav-item dropdown mw-100">
                             <a class="nav-link dropdown-toggle text-truncate" data-toggle="dropdown" href="#" role="button" aria-haspopup="true" aria-expanded="false">
-                                Cayenne Version 4.0
+                                Cayenne Version 1.2
                             </a>
                             <div class="dropdown-menu">
-                                <a class="dropdown-item" href="/docs/4.1/getting-started-guide/">Version 4.1 (Release Candidate)</a><a class="dropdown-item" href="/docs/4.0/getting-started-guide/">Version 4.0 (Stable)</a><a class="dropdown-item" href="/docs/3.1/getting-started-guide/">Version 3.1 (Aging)</a><a class="dropdown-item" href="/docs/3.0/api/">Version 3.0 (Legacy)</a><a class="dropdown-item" href="/docs/2.0/api/">Version 2.0 (Legacy)</a><a class="dropdown-item" href="/docs/1.2/ [...]
+                                <a class="dropdown-item" href="/docs/4.1/getting-started-guide/">Version 4.1 (Release Candidate)</a><a class="dropdown-item" href="/docs/4.0/getting-started-guide/">Version 4.0 (Stable)</a><a class="dropdown-item" href="/docs/3.1/getting-started-guide/">Version 3.1 (Aging)</a><a class="dropdown-item" href="/docs/3.0/cayenne-guide.html">Version 3.0 (Legacy)</a><a class="dropdown-item" href="/docs/2.0/user-guide.html">Version 2.0 (Legacy)</a><a class="dropdo [...]
                             </div>
                         </li>
                     </ul>
@@ -111,45 +111,46 @@
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/getting-started-guide/">Getting Started</a>
+                            <a class="cd-toc-link" href="/docs/1.2/user-guide.html">User Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/cayenne-guide/">Cayenne Guide</a>
+                            <a class="cd-toc-link" href="/docs/1.2/modeler-guide.html">Modeler Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/getting-started-rop/">Getting Started ROP</a>
+                            <a class="cd-toc-link" href="/docs/1.2/remote-object-persistence-guide.html">Remote Object Persistence Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
-                        
-                            <a class="cd-toc-link" href="/docs/4.0/upgrade-guide/">Upgrade Guide</a>
-                        
-                    </div>
-                    
-                    <div class="cd-toc-item">
-                        <a class="cd-toc-link" href="/docs/4.0/api/">JavaDoc</a>
+                        <a class="cd-toc-link" href="/docs/1.2/api/">JavaDoc</a>
                     </div>
                 </div>
             </div>
             
             <div class="col-12 col-lg-8 col-xl-9  py-3 pl-lg-5  cd-content">
 
-                <article>
-                    <header>
-                        <h1></h1>
-                    </header>
-                    <section>
-                        <p>Documentation, the JavaDoc API, examples and articles for Cayenne 4.0 can all be found here.</p>
+            
+            <article>
+                <section>
+                    
+	
+
+<H3><A name="ClassPath-ClassPath"></A>ClassPath</H3>
+
+<P>ClassPath Preferences panel allows users to add or remove locations of the external class libraries (JAR, ZIP, or class directories). These external libraries will be used by CayenneModeler to load JDBC drivers, custom DB adapters, or any other Java resources that are not a part of the Modeler distribution itself.</P>
+
+<DIV class="panelMacro"><TABLE class="noteMacro"><COLGROUP><COL width="24"><COL></COLGROUP><TR><TD valign="top"><img src="/docs/1.2/images/warning.gif" width="16" height="16" align="absmiddle" alt="" border="0"></TD><TD><B>Modeler ClassNotFound Errors</B><BR>If you encounter any CLASSPATH-related errors during DB reverse engineering, DataSource configuration, etc., in most cases you simply need to go to Preferences ClassPath panel and add an entry pointing to a missing external library.< [...]
+
+<P><SPAN class="image-wrap" style=""><img src="/docs/1.2/images/prefs-classpath.jpg" style="border: 0px solid black"></SPAN></P>
 
-                    </section>
-                </article>
+                </section>
+            </article>
 
 	        </div>
 	    </div>
@@ -279,7 +280,7 @@
     </div>
 </footer>
     
-<script>
+<script type="application/javascript">
 var doNotTrack = false;
 if (!doNotTrack) {
 	(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
diff --git a/docs/4.0/index.html b/docs/1.2/common-modeling-tasks.html
similarity index 90%
copy from docs/4.0/index.html
copy to docs/1.2/common-modeling-tasks.html
index 2bbcbd2..ca8952f 100644
--- a/docs/4.0/index.html
+++ b/docs/1.2/common-modeling-tasks.html
@@ -15,7 +15,7 @@
         <meta name="theme-color" content="#ffffff">
         <link rel="stylesheet" href="https://cayenne.apache.org/css/styles-e429186d1b.css"/>
         <script src="https://cayenne.apache.org/js/bundle-92aa692db7.js"></script>
-        <title>Apache Cayenne</title>
+        <title>Common Modeling Tasks &middot; Apache Cayenne</title>
     </head>
     <body data-spy="scroll" data-target=".toc-side" class="cd-head"> 
 <header class="page-header">
@@ -92,10 +92,10 @@
                     <ul class="nav" role="tablist">
                         <li class="nav-item dropdown mw-100">
                             <a class="nav-link dropdown-toggle text-truncate" data-toggle="dropdown" href="#" role="button" aria-haspopup="true" aria-expanded="false">
-                                Cayenne Version 4.0
+                                Cayenne Version 1.2
                             </a>
                             <div class="dropdown-menu">
-                                <a class="dropdown-item" href="/docs/4.1/getting-started-guide/">Version 4.1 (Release Candidate)</a><a class="dropdown-item" href="/docs/4.0/getting-started-guide/">Version 4.0 (Stable)</a><a class="dropdown-item" href="/docs/3.1/getting-started-guide/">Version 3.1 (Aging)</a><a class="dropdown-item" href="/docs/3.0/api/">Version 3.0 (Legacy)</a><a class="dropdown-item" href="/docs/2.0/api/">Version 2.0 (Legacy)</a><a class="dropdown-item" href="/docs/1.2/ [...]
+                                <a class="dropdown-item" href="/docs/4.1/getting-started-guide/">Version 4.1 (Release Candidate)</a><a class="dropdown-item" href="/docs/4.0/getting-started-guide/">Version 4.0 (Stable)</a><a class="dropdown-item" href="/docs/3.1/getting-started-guide/">Version 3.1 (Aging)</a><a class="dropdown-item" href="/docs/3.0/cayenne-guide.html">Version 3.0 (Legacy)</a><a class="dropdown-item" href="/docs/2.0/user-guide.html">Version 2.0 (Legacy)</a><a class="dropdo [...]
                             </div>
                         </li>
                     </ul>
@@ -111,45 +111,42 @@
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/getting-started-guide/">Getting Started</a>
+                            <a class="cd-toc-link" href="/docs/1.2/user-guide.html">User Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/cayenne-guide/">Cayenne Guide</a>
+                            <a class="cd-toc-link" href="/docs/1.2/modeler-guide.html">Modeler Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/getting-started-rop/">Getting Started ROP</a>
+                            <a class="cd-toc-link" href="/docs/1.2/remote-object-persistence-guide.html">Remote Object Persistence Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
-                        
-                            <a class="cd-toc-link" href="/docs/4.0/upgrade-guide/">Upgrade Guide</a>
-                        
-                    </div>
-                    
-                    <div class="cd-toc-item">
-                        <a class="cd-toc-link" href="/docs/4.0/api/">JavaDoc</a>
+                        <a class="cd-toc-link" href="/docs/1.2/api/">JavaDoc</a>
                     </div>
                 </div>
             </div>
             
             <div class="col-12 col-lg-8 col-xl-9  py-3 pl-lg-5  cd-content">
 
-                <article>
-                    <header>
-                        <h1></h1>
-                    </header>
-                    <section>
-                        <p>Documentation, the JavaDoc API, examples and articles for Cayenne 4.0 can all be found here.</p>
+            
+            <article>
+                <section>
+                    
+	
+
+<P>This chapter describes a number of very common operations performed in CayenneModeler. All tasks assume that the Modeler has been started successfully, and, in most cases, that there is an open project.</P>
+
+
 
-                    </section>
-                </article>
+                </section>
+            </article>
 
 	        </div>
 	    </div>
@@ -279,7 +276,7 @@
     </div>
 </footer>
     
-<script>
+<script type="application/javascript">
 var doNotTrack = false;
 if (!doNotTrack) {
 	(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
diff --git a/docs/4.0/index.html b/docs/1.2/configuring-caching-behavior.html
similarity index 72%
copy from docs/4.0/index.html
copy to docs/1.2/configuring-caching-behavior.html
index 2bbcbd2..9a67bc0 100644
--- a/docs/4.0/index.html
+++ b/docs/1.2/configuring-caching-behavior.html
@@ -15,7 +15,7 @@
         <meta name="theme-color" content="#ffffff">
         <link rel="stylesheet" href="https://cayenne.apache.org/css/styles-e429186d1b.css"/>
         <script src="https://cayenne.apache.org/js/bundle-92aa692db7.js"></script>
-        <title>Apache Cayenne</title>
+        <title>Configuring Caching Behavior &middot; Apache Cayenne</title>
     </head>
     <body data-spy="scroll" data-target=".toc-side" class="cd-head"> 
 <header class="page-header">
@@ -92,10 +92,10 @@
                     <ul class="nav" role="tablist">
                         <li class="nav-item dropdown mw-100">
                             <a class="nav-link dropdown-toggle text-truncate" data-toggle="dropdown" href="#" role="button" aria-haspopup="true" aria-expanded="false">
-                                Cayenne Version 4.0
+                                Cayenne Version 1.2
                             </a>
                             <div class="dropdown-menu">
-                                <a class="dropdown-item" href="/docs/4.1/getting-started-guide/">Version 4.1 (Release Candidate)</a><a class="dropdown-item" href="/docs/4.0/getting-started-guide/">Version 4.0 (Stable)</a><a class="dropdown-item" href="/docs/3.1/getting-started-guide/">Version 3.1 (Aging)</a><a class="dropdown-item" href="/docs/3.0/api/">Version 3.0 (Legacy)</a><a class="dropdown-item" href="/docs/2.0/api/">Version 2.0 (Legacy)</a><a class="dropdown-item" href="/docs/1.2/ [...]
+                                <a class="dropdown-item" href="/docs/4.1/getting-started-guide/">Version 4.1 (Release Candidate)</a><a class="dropdown-item" href="/docs/4.0/getting-started-guide/">Version 4.0 (Stable)</a><a class="dropdown-item" href="/docs/3.1/getting-started-guide/">Version 3.1 (Aging)</a><a class="dropdown-item" href="/docs/3.0/cayenne-guide.html">Version 3.0 (Legacy)</a><a class="dropdown-item" href="/docs/2.0/user-guide.html">Version 2.0 (Legacy)</a><a class="dropdo [...]
                             </div>
                         </li>
                     </ul>
@@ -111,45 +111,68 @@
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/getting-started-guide/">Getting Started</a>
+                            <a class="cd-toc-link" href="/docs/1.2/user-guide.html">User Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/cayenne-guide/">Cayenne Guide</a>
+                            <a class="cd-toc-link" href="/docs/1.2/modeler-guide.html">Modeler Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/getting-started-rop/">Getting Started ROP</a>
+                            <a class="cd-toc-link" href="/docs/1.2/remote-object-persistence-guide.html">Remote Object Persistence Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
-                        
-                            <a class="cd-toc-link" href="/docs/4.0/upgrade-guide/">Upgrade Guide</a>
-                        
-                    </div>
-                    
-                    <div class="cd-toc-item">
-                        <a class="cd-toc-link" href="/docs/4.0/api/">JavaDoc</a>
+                        <a class="cd-toc-link" href="/docs/1.2/api/">JavaDoc</a>
                     </div>
                 </div>
             </div>
             
             <div class="col-12 col-lg-8 col-xl-9  py-3 pl-lg-5  cd-content">
 
-                <article>
-                    <header>
-                        <h1></h1>
-                    </header>
-                    <section>
-                        <p>Documentation, the JavaDoc API, examples and articles for Cayenne 4.0 can all be found here.</p>
+            
+            <article>
+                <section>
+                    
+	
+
+<P>Cayenne supports local and distributed caching of fetched data. The design of the caching feature is discussed in the User Guide. When a new DataDomain is created, it uses default caching settings - data is cached within JVM, but no remote synchronization is performed. User can change these settings depending on the target application deployment strategy.</P>
+
+<H3><A name="ConfiguringCachingBehavior-NoCacheSharingConfiguration"></A>No Cache Sharing Configuration</H3>
+
+
+<P>This type of configuration may result in somewhat faster commit operations, but is likely to lead to stale data when multiple users modify data in the same application. To disable any cache sharing uncheck &quot;Use Shared Cache&quot; checkbox. </P>
+
+<H3><A name="ConfiguringCachingBehavior-LocalVMCacheSharingConfiguration"></A>Local VM Cache Sharing Configuration</H3>
+
+
+<P>Default configuration for the new DataDomains. Ideal for applications that do not care about data being modified outside of the application. This configuration is acceptable for a lot of client-server and web applications.</P>
+
+<H3><A name="ConfiguringCachingBehavior-CrossVMCacheSharingConfiguration"></A>Cross-VM Cache Sharing Configuration</H3>
+
+
+<P>Configuration that allows to notify other applications about changes made by an application and to listen for such changes made by others. This type of configuration incurrs the most overhead, because it will constantly send and receive synchronization messages, but it is also the most powerful configuration. Cayenne currently supports the use of JMS and JavaGroups frameworks for synchronization, and also allows users to create their own transport mechanism. </P>
+
+<DIV class="panelMacro"><TABLE class="noteMacro"><COLGROUP><COL width="24"><COL></COLGROUP><TR><TD valign="top"><img src="/docs/1.2/images/warning.gif" width="16" height="16" align="absmiddle" alt="" border="0"></TD><TD>Cayenne distribution archive does not include JavaGroups or JMS libraries. Those must be downloaded and installed separately. However until deployment phase, Cayenne does not require those libraries to be installed.</TD></TR></TABLE></DIV>
+
+<P>To configure distributed cache sharing, check &quot;Remote Change Notifications&quot; checkbox, and click &quot;Configure&quot; button to select and configure the type of transport to use.</P>
+
+<DIV class="panelMacro"><TABLE class="tipMacro"><COLGROUP><COL width="24"><COL></COLGROUP><TR><TD valign="top"><img src="/docs/1.2/images/check.gif" width="16" height="16" align="absmiddle" alt="" border="0"></TD><TD>Synchronization is only done between remote DataDomains with the same name. Note that for JavaGroups configuration, a combination of multicast address and port must be unique for each DataDomain name.</TD></TR></TABLE></DIV>
+
+<H3><A name="ConfiguringCachingBehavior-ChoosingJavaGroupsoverJMS"></A>Choosing JavaGroups over JMS</H3>
+
+
+<P>JavaGroups is the most portable and flexible mechanism. At the minimum, JMS setup requires a JMS server running, and subjects for each of the DataDomains to be configured. JavaGroups is peer-to-peer library that is embedded into applications. Default configuration provided by CayenneModeler will work out of the box, provided that IP multicast is enabled on the network. </P>
+
+<P>The conclusion is that using JMS is probably most appropriate when deploying within J2EE containers that alreay support this service, while JavaGroups can be used in almost any environment.</P>
 
-                    </section>
-                </article>
+                </section>
+            </article>
 
 	        </div>
 	    </div>
@@ -279,7 +302,7 @@
     </div>
 </footer>
     
-<script>
+<script type="application/javascript">
 var doNotTrack = false;
 if (!doNotTrack) {
 	(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
diff --git a/docs/4.0/index.html b/docs/1.2/configuring-deployment-settings.html
similarity index 90%
copy from docs/4.0/index.html
copy to docs/1.2/configuring-deployment-settings.html
index 2bbcbd2..d6cfdfd 100644
--- a/docs/4.0/index.html
+++ b/docs/1.2/configuring-deployment-settings.html
@@ -15,7 +15,7 @@
         <meta name="theme-color" content="#ffffff">
         <link rel="stylesheet" href="https://cayenne.apache.org/css/styles-e429186d1b.css"/>
         <script src="https://cayenne.apache.org/js/bundle-92aa692db7.js"></script>
-        <title>Apache Cayenne</title>
+        <title>Configuring Deployment Settings &middot; Apache Cayenne</title>
     </head>
     <body data-spy="scroll" data-target=".toc-side" class="cd-head"> 
 <header class="page-header">
@@ -92,10 +92,10 @@
                     <ul class="nav" role="tablist">
                         <li class="nav-item dropdown mw-100">
                             <a class="nav-link dropdown-toggle text-truncate" data-toggle="dropdown" href="#" role="button" aria-haspopup="true" aria-expanded="false">
-                                Cayenne Version 4.0
+                                Cayenne Version 1.2
                             </a>
                             <div class="dropdown-menu">
-                                <a class="dropdown-item" href="/docs/4.1/getting-started-guide/">Version 4.1 (Release Candidate)</a><a class="dropdown-item" href="/docs/4.0/getting-started-guide/">Version 4.0 (Stable)</a><a class="dropdown-item" href="/docs/3.1/getting-started-guide/">Version 3.1 (Aging)</a><a class="dropdown-item" href="/docs/3.0/api/">Version 3.0 (Legacy)</a><a class="dropdown-item" href="/docs/2.0/api/">Version 2.0 (Legacy)</a><a class="dropdown-item" href="/docs/1.2/ [...]
+                                <a class="dropdown-item" href="/docs/4.1/getting-started-guide/">Version 4.1 (Release Candidate)</a><a class="dropdown-item" href="/docs/4.0/getting-started-guide/">Version 4.0 (Stable)</a><a class="dropdown-item" href="/docs/3.1/getting-started-guide/">Version 3.1 (Aging)</a><a class="dropdown-item" href="/docs/3.0/cayenne-guide.html">Version 3.0 (Legacy)</a><a class="dropdown-item" href="/docs/2.0/user-guide.html">Version 2.0 (Legacy)</a><a class="dropdo [...]
                             </div>
                         </li>
                     </ul>
@@ -111,45 +111,44 @@
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/getting-started-guide/">Getting Started</a>
+                            <a class="cd-toc-link" href="/docs/1.2/user-guide.html">User Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/cayenne-guide/">Cayenne Guide</a>
+                            <a class="cd-toc-link" href="/docs/1.2/modeler-guide.html">Modeler Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/getting-started-rop/">Getting Started ROP</a>
+                            <a class="cd-toc-link" href="/docs/1.2/remote-object-persistence-guide.html">Remote Object Persistence Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
-                        
-                            <a class="cd-toc-link" href="/docs/4.0/upgrade-guide/">Upgrade Guide</a>
-                        
-                    </div>
-                    
-                    <div class="cd-toc-item">
-                        <a class="cd-toc-link" href="/docs/4.0/api/">JavaDoc</a>
+                        <a class="cd-toc-link" href="/docs/1.2/api/">JavaDoc</a>
                     </div>
                 </div>
             </div>
             
             <div class="col-12 col-lg-8 col-xl-9  py-3 pl-lg-5  cd-content">
 
-                <article>
-                    <header>
-                        <h1></h1>
-                    </header>
-                    <section>
-                        <p>Documentation, the JavaDoc API, examples and articles for Cayenne 4.0 can all be found here.</p>
+            
+            <article>
+                <section>
+                    
+	
+
+<P>Cayenne project deployment settings, aside from <A href="create-datanode.html" title="Create DataNode">DataNode</A> configuration discussed elsewhere, are done using DataDomain panel. This chapter describes various supported settings.</P>
+
+<P><SPAN class="image-wrap" style=""><img src="/docs/1.2/images/data-domain.jpg" style="border: 0px solid black"></SPAN></P>
+
+
 
-                    </section>
-                </article>
+                </section>
+            </article>
 
 	        </div>
 	    </div>
@@ -279,7 +278,7 @@
     </div>
 </footer>
     
-<script>
+<script type="application/javascript">
 var doNotTrack = false;
 if (!doNotTrack) {
 	(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
diff --git a/docs/4.0/index.html b/docs/1.2/configuring-logging.html
similarity index 63%
copy from docs/4.0/index.html
copy to docs/1.2/configuring-logging.html
index 2bbcbd2..cdc202a 100644
--- a/docs/4.0/index.html
+++ b/docs/1.2/configuring-logging.html
@@ -15,7 +15,7 @@
         <meta name="theme-color" content="#ffffff">
         <link rel="stylesheet" href="https://cayenne.apache.org/css/styles-e429186d1b.css"/>
         <script src="https://cayenne.apache.org/js/bundle-92aa692db7.js"></script>
-        <title>Apache Cayenne</title>
+        <title>Configuring Logging &middot; Apache Cayenne</title>
     </head>
     <body data-spy="scroll" data-target=".toc-side" class="cd-head"> 
 <header class="page-header">
@@ -92,10 +92,10 @@
                     <ul class="nav" role="tablist">
                         <li class="nav-item dropdown mw-100">
                             <a class="nav-link dropdown-toggle text-truncate" data-toggle="dropdown" href="#" role="button" aria-haspopup="true" aria-expanded="false">
-                                Cayenne Version 4.0
+                                Cayenne Version 1.2
                             </a>
                             <div class="dropdown-menu">
-                                <a class="dropdown-item" href="/docs/4.1/getting-started-guide/">Version 4.1 (Release Candidate)</a><a class="dropdown-item" href="/docs/4.0/getting-started-guide/">Version 4.0 (Stable)</a><a class="dropdown-item" href="/docs/3.1/getting-started-guide/">Version 3.1 (Aging)</a><a class="dropdown-item" href="/docs/3.0/api/">Version 3.0 (Legacy)</a><a class="dropdown-item" href="/docs/2.0/api/">Version 2.0 (Legacy)</a><a class="dropdown-item" href="/docs/1.2/ [...]
+                                <a class="dropdown-item" href="/docs/4.1/getting-started-guide/">Version 4.1 (Release Candidate)</a><a class="dropdown-item" href="/docs/4.0/getting-started-guide/">Version 4.0 (Stable)</a><a class="dropdown-item" href="/docs/3.1/getting-started-guide/">Version 3.1 (Aging)</a><a class="dropdown-item" href="/docs/3.0/cayenne-guide.html">Version 3.0 (Legacy)</a><a class="dropdown-item" href="/docs/2.0/user-guide.html">Version 2.0 (Legacy)</a><a class="dropdo [...]
                             </div>
                         </li>
                     </ul>
@@ -111,45 +111,102 @@
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/getting-started-guide/">Getting Started</a>
+                            <a class="cd-toc-link" href="/docs/1.2/user-guide.html">User Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/cayenne-guide/">Cayenne Guide</a>
+                            <a class="cd-toc-link" href="/docs/1.2/modeler-guide.html">Modeler Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/getting-started-rop/">Getting Started ROP</a>
+                            <a class="cd-toc-link" href="/docs/1.2/remote-object-persistence-guide.html">Remote Object Persistence Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
-                        
-                            <a class="cd-toc-link" href="/docs/4.0/upgrade-guide/">Upgrade Guide</a>
-                        
-                    </div>
-                    
-                    <div class="cd-toc-item">
-                        <a class="cd-toc-link" href="/docs/4.0/api/">JavaDoc</a>
+                        <a class="cd-toc-link" href="/docs/1.2/api/">JavaDoc</a>
                     </div>
                 </div>
             </div>
             
             <div class="col-12 col-lg-8 col-xl-9  py-3 pl-lg-5  cd-content">
 
-                <article>
-                    <header>
-                        <h1></h1>
-                    </header>
-                    <section>
-                        <p>Documentation, the JavaDoc API, examples and articles for Cayenne 4.0 can all be found here.</p>
+            
+            <article>
+                <section>
+                    
+	
+<P>Cayenne logging is based on Log4J package from Jakarta Apache Project. This is the most powerful and flexible logging framework available in Java. Log4J configuration is normally done using a property file. Later in this chapter we explain how Cayenne loads configuration files and how to customize this process. Format of the entries in this file is described in the Log4j documentation. Here is a sample configuration file contents:</P>
+
+<DIV class="preformatted panel" style="border-width: 1px;"><DIV class="preformattedContent panelContent">
+<PRE># General Log4J stuff
+log4j.rootLogger=WARN, A1
+log4j.appender.A1=org.apache.log4j.ConsoleAppender
+log4j.appender.A1.layout=org.apache.log4j.PatternLayout
+log4j.appender.A1.layout.ConversionPattern=cayenne %-5p [%t %d{MM-dd HH:mm:ss}] %c{1}: %m%n
+
+# indiv. packages configuration - turning on the packages that we care about
+#log4j.logger.org.objectstyle.cayenne = INFO
+
+# This is the logger that controls SQL output
+# Setting the level to INFO or DEBUG will turn the logs on
+log4j.logger.org.objectstyle.cayenne.access.QueryLogger = INFO
+</PRE>
+</DIV></DIV>
+
+<DIV class="panelMacro"><TABLE class="infoMacro"><COLGROUP><COL width="24"><COL></COLGROUP><TR><TD valign="top"><img src="/docs/1.2/images/information.gif" width="16" height="16" align="absmiddle" alt="" border="0"></TD><TD><B>Users of Other Logging Frameworks</B><BR>If your application uses another package for its own logging purposes (like JDK 1.4 java.util.logging, or commons-logging from Jakarta), Cayenne Log4J-based logging will not interfere with your other logging configurations.< [...]
+
+<DIV class="panelMacro"><TABLE class="tipMacro"><COLGROUP><COL width="24"><COL></COLGROUP><TR><TD valign="top"><img src="/docs/1.2/images/check.gif" width="16" height="16" align="absmiddle" alt="" border="0"></TD><TD><B>Log4J Users</B><BR>If your application already uses Log4J, Cayenne will simply use your existing configuration.</TD></TR></TABLE></DIV>
+
+<H3><A name="ConfiguringLogging-EssentialLoggers"></A>Essential Loggers</H3>
+<P>SQL Tracing. Very important logging feature of Cayenne is tracing the execution of SQL statements. If configured appropriately, Cayenne will log opened connections, executed queries, and DDL statements. This is extremely important in understanding what is going on in the application, tracing bugs, etc. Logger that is responsible for SQL logging is &quot;org.objectstyle.cayenne.access.QueryLogger&quot;. Its default logging level is INFO, so the following lines in the configuration file [...]
+
+<DIV class="preformatted panel" style="border-width: 1px;"><DIV class="preformattedContent panelContent">
+<PRE># Turn SQL tracing on
+log4j.logger.org.objectstyle.cayenne.access.QueryLogger = INFO
+
+# Turn SQL tracing off, e.g. to increase performance
+log4j.logger.org.objectstyle.cayenne.access.QueryLogger = WARN
+</PRE>
+</DIV></DIV>
+
+<P>Tracing Configuration Loading. Cayenne XML files may contain errors, or maybe missing or inaccessible by the application; there maybe lots of other reasons why Cayenne fails to startup, from missing JDBC drivers to misspelled database URLs. To trace configuration loading process, you will need to turn on the following loggers:</P>
+
+<DIV class="preformatted panel" style="border-width: 1px;"><DIV class="preformattedContent panelContent">
+<PRE>log4j.logger.org.objectstyle.cayenne.conf = DEBUG
+log4j.logger.org.objectstyle.cayenne.util = DEBUG
+</PRE>
+</DIV></DIV>
+
+<H3><A name="ConfiguringLogging-DefaultConfiguration"></A>Default Configuration</H3>
+<P>Default behaviour of Cayenne is to look for a file called cayenne-log.properties, first in the directory $HOME/.cayenne/, then in the CLASSPATH (i.e. a file called .cayenne/cayenne-log.properties at the root of one of the locations accessible by the ClassLoader). $HOME is a system specific home directory of a user running the application. If you don't know what it is, try printing it from Java like this: System.out.println(System.getProperty(&quot;user.home&quot;)).</P>
+
+<P>If you don't explicitly create this file, Cayenne will use the one included in cayenne.jar (and therefore guaranteed to be in the CLASSPATH). This means - no special logging configuration is required, Cayenne will just work out of the box.</P>
+
+<H3><A name="ConfiguringLogging-CustomConfigurationFile"></A>Custom Configuration File</H3>
+<P>If you are not satisfied with the default location or default file name of the logging configuration, you can supply your own:</P>
+<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent">
+<PRE class="code-java">
+<SPAN class="code-comment">// Obtain the URL of the custom configuration file
+</SPAN>java.net.URL url = ....;
+
+<SPAN class="code-comment">// configure cayenne logging
+</SPAN><SPAN class="code-comment">// note that URL can be <SPAN class="code-keyword">null</SPAN>, resulting in <SPAN class="code-keyword">default</SPAN> settings
+</SPAN>org.objectstyle.cayenne.conf.Configuration.configureCommonLogging(url);
+</PRE>
+</DIV></DIV>
+<P>It is important to execute this code before any calls to Cayenne are made in the application, or otherwise it will have no effect on logging.</P>
+
+<H3><A name="ConfiguringLogging-ConfiguringLog4JoutsideofCayenne"></A>Configuring Log4J outside of Cayenne</H3>
+
+<P>Finally, if your application already uses Log4J and implements its own logic to configure logging, it would be undesirable for Cayenne to use its default behavior and override any application settings. Also it is convenient to use a single logging configuration file per application. Cayenne detects if Log4J has already been started and will stop any attempts to configure logging. This means that Log4J services must be configured prior to any calls to Cayenne. </P>
 
-                    </section>
-                </article>
+                </section>
+            </article>
 
 	        </div>
 	    </div>
@@ -279,7 +336,7 @@
     </div>
 </footer>
     
-<script>
+<script type="application/javascript">
 var doNotTrack = false;
 if (!doNotTrack) {
 	(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
diff --git a/docs/4.0/index.html b/docs/1.2/configuring-object-validation.html
similarity index 89%
copy from docs/4.0/index.html
copy to docs/1.2/configuring-object-validation.html
index 2bbcbd2..7222e06 100644
--- a/docs/4.0/index.html
+++ b/docs/1.2/configuring-object-validation.html
@@ -15,7 +15,7 @@
         <meta name="theme-color" content="#ffffff">
         <link rel="stylesheet" href="https://cayenne.apache.org/css/styles-e429186d1b.css"/>
         <script src="https://cayenne.apache.org/js/bundle-92aa692db7.js"></script>
-        <title>Apache Cayenne</title>
+        <title>Configuring Object Validation &middot; Apache Cayenne</title>
     </head>
     <body data-spy="scroll" data-target=".toc-side" class="cd-head"> 
 <header class="page-header">
@@ -92,10 +92,10 @@
                     <ul class="nav" role="tablist">
                         <li class="nav-item dropdown mw-100">
                             <a class="nav-link dropdown-toggle text-truncate" data-toggle="dropdown" href="#" role="button" aria-haspopup="true" aria-expanded="false">
-                                Cayenne Version 4.0
+                                Cayenne Version 1.2
                             </a>
                             <div class="dropdown-menu">
-                                <a class="dropdown-item" href="/docs/4.1/getting-started-guide/">Version 4.1 (Release Candidate)</a><a class="dropdown-item" href="/docs/4.0/getting-started-guide/">Version 4.0 (Stable)</a><a class="dropdown-item" href="/docs/3.1/getting-started-guide/">Version 3.1 (Aging)</a><a class="dropdown-item" href="/docs/3.0/api/">Version 3.0 (Legacy)</a><a class="dropdown-item" href="/docs/2.0/api/">Version 2.0 (Legacy)</a><a class="dropdown-item" href="/docs/1.2/ [...]
+                                <a class="dropdown-item" href="/docs/4.1/getting-started-guide/">Version 4.1 (Release Candidate)</a><a class="dropdown-item" href="/docs/4.0/getting-started-guide/">Version 4.0 (Stable)</a><a class="dropdown-item" href="/docs/3.1/getting-started-guide/">Version 3.1 (Aging)</a><a class="dropdown-item" href="/docs/3.0/cayenne-guide.html">Version 3.0 (Legacy)</a><a class="dropdown-item" href="/docs/2.0/user-guide.html">Version 2.0 (Legacy)</a><a class="dropdo [...]
                             </div>
                         </li>
                     </ul>
@@ -111,45 +111,40 @@
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/getting-started-guide/">Getting Started</a>
+                            <a class="cd-toc-link" href="/docs/1.2/user-guide.html">User Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/cayenne-guide/">Cayenne Guide</a>
+                            <a class="cd-toc-link" href="/docs/1.2/modeler-guide.html">Modeler Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/getting-started-rop/">Getting Started ROP</a>
+                            <a class="cd-toc-link" href="/docs/1.2/remote-object-persistence-guide.html">Remote Object Persistence Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
-                        
-                            <a class="cd-toc-link" href="/docs/4.0/upgrade-guide/">Upgrade Guide</a>
-                        
-                    </div>
-                    
-                    <div class="cd-toc-item">
-                        <a class="cd-toc-link" href="/docs/4.0/api/">JavaDoc</a>
+                        <a class="cd-toc-link" href="/docs/1.2/api/">JavaDoc</a>
                     </div>
                 </div>
             </div>
             
             <div class="col-12 col-lg-8 col-xl-9  py-3 pl-lg-5  cd-content">
 
-                <article>
-                    <header>
-                        <h1></h1>
-                    </header>
-                    <section>
-                        <p>Documentation, the JavaDoc API, examples and articles for Cayenne 4.0 can all be found here.</p>
+            
+            <article>
+                <section>
+                    
+	<P><BR>
+<BR>
+Each DataDomain can be configured to enable or disable DataObject pre-commit validation by (un)checking &quot;Child DataContexts Validate Objects&quot; checkbox. By default validation is enabled for all newly created DataDomains. More information on DataObject validation is provided in the <A href="dataobject-validation.html" title="DataObject Validation">user guide</A>.</P>
 
-                    </section>
-                </article>
+                </section>
+            </article>
 
 	        </div>
 	    </div>
@@ -279,7 +274,7 @@
     </div>
 </footer>
     
-<script>
+<script type="application/javascript">
 var doNotTrack = false;
 if (!doNotTrack) {
 	(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
diff --git a/docs/4.0/index.html b/docs/1.2/configuring-transactional-behavior.html
similarity index 89%
copy from docs/4.0/index.html
copy to docs/1.2/configuring-transactional-behavior.html
index 2bbcbd2..3734962 100644
--- a/docs/4.0/index.html
+++ b/docs/1.2/configuring-transactional-behavior.html
@@ -15,7 +15,7 @@
         <meta name="theme-color" content="#ffffff">
         <link rel="stylesheet" href="https://cayenne.apache.org/css/styles-e429186d1b.css"/>
         <script src="https://cayenne.apache.org/js/bundle-92aa692db7.js"></script>
-        <title>Apache Cayenne</title>
+        <title>Configuring Transactional Behavior &middot; Apache Cayenne</title>
     </head>
     <body data-spy="scroll" data-target=".toc-side" class="cd-head"> 
 <header class="page-header">
@@ -92,10 +92,10 @@
                     <ul class="nav" role="tablist">
                         <li class="nav-item dropdown mw-100">
                             <a class="nav-link dropdown-toggle text-truncate" data-toggle="dropdown" href="#" role="button" aria-haspopup="true" aria-expanded="false">
-                                Cayenne Version 4.0
+                                Cayenne Version 1.2
                             </a>
                             <div class="dropdown-menu">
-                                <a class="dropdown-item" href="/docs/4.1/getting-started-guide/">Version 4.1 (Release Candidate)</a><a class="dropdown-item" href="/docs/4.0/getting-started-guide/">Version 4.0 (Stable)</a><a class="dropdown-item" href="/docs/3.1/getting-started-guide/">Version 3.1 (Aging)</a><a class="dropdown-item" href="/docs/3.0/api/">Version 3.0 (Legacy)</a><a class="dropdown-item" href="/docs/2.0/api/">Version 2.0 (Legacy)</a><a class="dropdown-item" href="/docs/1.2/ [...]
+                                <a class="dropdown-item" href="/docs/4.1/getting-started-guide/">Version 4.1 (Release Candidate)</a><a class="dropdown-item" href="/docs/4.0/getting-started-guide/">Version 4.0 (Stable)</a><a class="dropdown-item" href="/docs/3.1/getting-started-guide/">Version 3.1 (Aging)</a><a class="dropdown-item" href="/docs/3.0/cayenne-guide.html">Version 3.0 (Legacy)</a><a class="dropdown-item" href="/docs/2.0/user-guide.html">Version 2.0 (Legacy)</a><a class="dropdo [...]
                             </div>
                         </li>
                     </ul>
@@ -111,45 +111,42 @@
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/getting-started-guide/">Getting Started</a>
+                            <a class="cd-toc-link" href="/docs/1.2/user-guide.html">User Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/cayenne-guide/">Cayenne Guide</a>
+                            <a class="cd-toc-link" href="/docs/1.2/modeler-guide.html">Modeler Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/getting-started-rop/">Getting Started ROP</a>
+                            <a class="cd-toc-link" href="/docs/1.2/remote-object-persistence-guide.html">Remote Object Persistence Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
-                        
-                            <a class="cd-toc-link" href="/docs/4.0/upgrade-guide/">Upgrade Guide</a>
-                        
-                    </div>
-                    
-                    <div class="cd-toc-item">
-                        <a class="cd-toc-link" href="/docs/4.0/api/">JavaDoc</a>
+                        <a class="cd-toc-link" href="/docs/1.2/api/">JavaDoc</a>
                     </div>
                 </div>
             </div>
             
             <div class="col-12 col-lg-8 col-xl-9  py-3 pl-lg-5  cd-content">
 
-                <article>
-                    <header>
-                        <h1></h1>
-                    </header>
-                    <section>
-                        <p>Documentation, the JavaDoc API, examples and articles for Cayenne 4.0 can all be found here.</p>
+            
+            <article>
+                <section>
+                    
+	
+
+<P>Each DataDomain can be configured to explicitly commit/rollback its transactions or to rely on deployment container to do that. This is done by checking or unchecking &quot;Container-Managed Transactions&quot; checkbox. </P>
+
+<P>By default &quot;Container-Managed Transactions&quot; is unchecked, letting Cayenne to handle its transactions. Check this checkbox when using Cayenne under container-managed transactions control, i.e. within EJB environment.</P>
 
-                    </section>
-                </article>
+                </section>
+            </article>
 
 	        </div>
 	    </div>
@@ -279,7 +276,7 @@
     </div>
 </footer>
     
-<script>
+<script type="application/javascript">
 var doNotTrack = false;
 if (!doNotTrack) {
 	(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
diff --git a/docs/3.1/index.html b/docs/1.2/converting-an-existing-business-framework.html
similarity index 78%
copy from docs/3.1/index.html
copy to docs/1.2/converting-an-existing-business-framework.html
index a689ce0..b6361a5 100644
--- a/docs/3.1/index.html
+++ b/docs/1.2/converting-an-existing-business-framework.html
@@ -15,7 +15,7 @@
         <meta name="theme-color" content="#ffffff">
         <link rel="stylesheet" href="https://cayenne.apache.org/css/styles-e429186d1b.css"/>
         <script src="https://cayenne.apache.org/js/bundle-92aa692db7.js"></script>
-        <title>Apache Cayenne</title>
+        <title>Converting an Existing Business Framework &middot; Apache Cayenne</title>
     </head>
     <body data-spy="scroll" data-target=".toc-side" class="cd-head"> 
 <header class="page-header">
@@ -92,10 +92,10 @@
                     <ul class="nav" role="tablist">
                         <li class="nav-item dropdown mw-100">
                             <a class="nav-link dropdown-toggle text-truncate" data-toggle="dropdown" href="#" role="button" aria-haspopup="true" aria-expanded="false">
-                                Cayenne Version 3.1
+                                Cayenne Version 1.2
                             </a>
                             <div class="dropdown-menu">
-                                <a class="dropdown-item" href="/docs/4.1/getting-started-guide/">Version 4.1 (Release Candidate)</a><a class="dropdown-item" href="/docs/4.0/getting-started-guide/">Version 4.0 (Stable)</a><a class="dropdown-item" href="/docs/3.1/getting-started-guide/">Version 3.1 (Aging)</a><a class="dropdown-item" href="/docs/3.0/api/">Version 3.0 (Legacy)</a><a class="dropdown-item" href="/docs/2.0/api/">Version 2.0 (Legacy)</a><a class="dropdown-item" href="/docs/1.2/ [...]
+                                <a class="dropdown-item" href="/docs/4.1/getting-started-guide/">Version 4.1 (Release Candidate)</a><a class="dropdown-item" href="/docs/4.0/getting-started-guide/">Version 4.0 (Stable)</a><a class="dropdown-item" href="/docs/3.1/getting-started-guide/">Version 3.1 (Aging)</a><a class="dropdown-item" href="/docs/3.0/cayenne-guide.html">Version 3.0 (Legacy)</a><a class="dropdown-item" href="/docs/2.0/user-guide.html">Version 2.0 (Legacy)</a><a class="dropdo [...]
                             </div>
                         </li>
                     </ul>
@@ -111,45 +111,67 @@
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/3.1/getting-started-guide/">Getting Started</a>
+                            <a class="cd-toc-link" href="/docs/1.2/user-guide.html">User Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/3.1/cayenne-guide/">Cayenne Guide</a>
+                            <a class="cd-toc-link" href="/docs/1.2/modeler-guide.html">Modeler Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/3.1/getting-started-rop/">Getting Started ROP</a>
+                            <a class="cd-toc-link" href="/docs/1.2/remote-object-persistence-guide.html">Remote Object Persistence Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
-                        
-                            <a class="cd-toc-link" href="/docs/3.1/upgrade-guide/">Upgrade Guide</a>
-                        
-                    </div>
-                    
-                    <div class="cd-toc-item">
-                        <a class="cd-toc-link" href="/docs/3.1/api/">JavaDoc</a>
+                        <a class="cd-toc-link" href="/docs/1.2/api/">JavaDoc</a>
                     </div>
                 </div>
             </div>
             
             <div class="col-12 col-lg-8 col-xl-9  py-3 pl-lg-5  cd-content">
 
-                <article>
-                    <header>
-                        <h1></h1>
-                    </header>
-                    <section>
-                        <p>Documentation, the JavaDoc API, examples and articles for Cayenne 3.1 can all be found here.</p>
+            
+            <article>
+                <section>
+                    
+	
+
+<H3><A name="ConvertinganExistingBusinessFramework-ConvertinganExistingBusinessFramework"></A>Converting an Existing Business Framework</H3>
+
+<P>If there is an existing data layer (e.g. DAO) that needs to be converted to Cayenne, currently most of the mapping tasks will have to be done manually using the Modeler.</P>
+
+<DIV class="panelMacro"><TABLE class="noteMacro"><COLGROUP><COL width="24"><COL></COLGROUP><TR><TD valign="top"><img src="/docs/1.2/images/warning.gif" width="16" height="16" align="absmiddle" alt="" border="0"></TD><TD><B>Note for EOF Users</B><BR>CayenneModeler provides import function for the EOModels. So most of the mapping conversions should be automatic.</TD></TR></TABLE></DIV>
+
+<P>In any case there is a good chance of reusing business methods already defined in a persistence framework. And definitely any existing database can be used as is. One possible approach to conversion is to follow these steps:</P>
+
+<UL>
+	<LI>Reverse engineer the database schema into a new Cayenne mapping project.</LI>
+	<LI>Update class names and packages match the names of the existing classes.</LI>
+	<LI>Run class generation using &quot;generation gap&quot; pattern (to create subclass/superclass pair for each entity). This would only create superclasses with set/get methods for persistent properties, without touching the existing classes.</LI>
+	<LI>Modify existing DAO classes to change the superclass to a corresponding generated one (e.g. &quot;Employee extends _Employee&quot;).</LI>
+	<LI>Remove any persistent properties with their setters and getters from the subclass.</LI>
+	<LI>Remove all the DAO-specific persistence code.</LI>
+	<LI>Rewrite any other &quot;business&quot; methods to use DataContext for data operations.</LI>
+</UL>
+
+
+<P>See the following topics explaining individual tasks involved:</P>
+
+<UL>
+	<LI><A href="create-new-project.html" title="Create New Project">Create New Project</A></LI>
+	<LI><A href="create-datanode.html" title="Create DataNode">Create DataNode</A></LI>
+	<LI><A href="reverse-engineer-database.html" title="Reverse Engineer Database">Create New DataMap by reverse engineering database</A></LI>
+	<LI><A href="generate-java-classes.html" title="Generate Java Classes">Generate Java Classes</A></LI>
+</UL>
+
 
-                    </section>
-                </article>
+                </section>
+            </article>
 
 	        </div>
 	    </div>
@@ -279,7 +301,7 @@
     </div>
 </footer>
     
-<script>
+<script type="application/javascript">
 var doNotTrack = false;
 if (!doNotTrack) {
 	(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
diff --git a/docs/4.0/index.html b/docs/1.2/create-datanode.html
similarity index 73%
copy from docs/4.0/index.html
copy to docs/1.2/create-datanode.html
index 2bbcbd2..9477173 100644
--- a/docs/4.0/index.html
+++ b/docs/1.2/create-datanode.html
@@ -15,7 +15,7 @@
         <meta name="theme-color" content="#ffffff">
         <link rel="stylesheet" href="https://cayenne.apache.org/css/styles-e429186d1b.css"/>
         <script src="https://cayenne.apache.org/js/bundle-92aa692db7.js"></script>
-        <title>Apache Cayenne</title>
+        <title>Create DataNode &middot; Apache Cayenne</title>
     </head>
     <body data-spy="scroll" data-target=".toc-side" class="cd-head"> 
 <header class="page-header">
@@ -92,10 +92,10 @@
                     <ul class="nav" role="tablist">
                         <li class="nav-item dropdown mw-100">
                             <a class="nav-link dropdown-toggle text-truncate" data-toggle="dropdown" href="#" role="button" aria-haspopup="true" aria-expanded="false">
-                                Cayenne Version 4.0
+                                Cayenne Version 1.2
                             </a>
                             <div class="dropdown-menu">
-                                <a class="dropdown-item" href="/docs/4.1/getting-started-guide/">Version 4.1 (Release Candidate)</a><a class="dropdown-item" href="/docs/4.0/getting-started-guide/">Version 4.0 (Stable)</a><a class="dropdown-item" href="/docs/3.1/getting-started-guide/">Version 3.1 (Aging)</a><a class="dropdown-item" href="/docs/3.0/api/">Version 3.0 (Legacy)</a><a class="dropdown-item" href="/docs/2.0/api/">Version 2.0 (Legacy)</a><a class="dropdown-item" href="/docs/1.2/ [...]
+                                <a class="dropdown-item" href="/docs/4.1/getting-started-guide/">Version 4.1 (Release Candidate)</a><a class="dropdown-item" href="/docs/4.0/getting-started-guide/">Version 4.0 (Stable)</a><a class="dropdown-item" href="/docs/3.1/getting-started-guide/">Version 3.1 (Aging)</a><a class="dropdown-item" href="/docs/3.0/cayenne-guide.html">Version 3.0 (Legacy)</a><a class="dropdown-item" href="/docs/2.0/user-guide.html">Version 2.0 (Legacy)</a><a class="dropdo [...]
                             </div>
                         </li>
                     </ul>
@@ -111,45 +111,54 @@
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/getting-started-guide/">Getting Started</a>
+                            <a class="cd-toc-link" href="/docs/1.2/user-guide.html">User Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/cayenne-guide/">Cayenne Guide</a>
+                            <a class="cd-toc-link" href="/docs/1.2/modeler-guide.html">Modeler Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/getting-started-rop/">Getting Started ROP</a>
+                            <a class="cd-toc-link" href="/docs/1.2/remote-object-persistence-guide.html">Remote Object Persistence Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
-                        
-                            <a class="cd-toc-link" href="/docs/4.0/upgrade-guide/">Upgrade Guide</a>
-                        
-                    </div>
-                    
-                    <div class="cd-toc-item">
-                        <a class="cd-toc-link" href="/docs/4.0/api/">JavaDoc</a>
+                        <a class="cd-toc-link" href="/docs/1.2/api/">JavaDoc</a>
                     </div>
                 </div>
             </div>
             
             <div class="col-12 col-lg-8 col-xl-9  py-3 pl-lg-5  cd-content">
 
-                <article>
-                    <header>
-                        <h1></h1>
-                    </header>
-                    <section>
-                        <p>Documentation, the JavaDoc API, examples and articles for Cayenne 4.0 can all be found here.</p>
+            
+            <article>
+                <section>
+                    
+	
+
+<H3><A name="CreateDataNode-CreateDataNode"></A>Create DataNode</H3>
+
+<P><B>Create DataNode.</B> DataNodes are created under parent DataDomains. To create a DataNode, select one of the DataDomains on the left-hand side, and then select &quot;<TT>Project -&gt; Create DataNode</TT>&quot; menu item or click on &quot;New DataNode&quot; icon. A new DataNode will be created under the selected domain. After the DataNode is created, you can assign it any name you want instead of the default &quot;[DomainName]Node&quot;.  </P>
+
+<P><SPAN class="image-wrap" style=""><img src="/docs/1.2/images/datanode.jpg" style="border: 0px solid black"></SPAN></P>
+
+<P><B>Configure DB Adapter.</B> As mentioned <A href="dbadapter.html" title="DbAdapter">in Cayenne User Guide</A>, RDBMS engines sometimes require special handling outside of standard JDBC scope. Cayenne abstracts it via database-specific adapters. An adapter must be selected from a &quot;DB adapter&quot; dropdown, regardless what type of DataSource factory (see below) is used . Standard adapters distributed with Cayenne (including a generic JDBCAdapter) are listed in the dropdown. If yo [...]
+
+<DIV class="panelMacro"><TABLE class="noteMacro"><COLGROUP><COL width="24"><COL></COLGROUP><TR><TD valign="top"><img src="/docs/1.2/images/warning.gif" width="16" height="16" align="absmiddle" alt="" border="0"></TD><TD><B>Hint</B><BR>If entering custom DbAdapter results in Modeler showing a warning, it is likely a CLASSPATH issue. In this case you will need to setup the location of compiled custom adapter classes in &quot;Tools &gt; Preferences &gt; ClassPath&quot;.</TD></TR></TABLE></DIV>
+
+<P><B>Select Local DataSource.</B> This is an optional, though recommended step. A &quot;Local DataSource&quot; dropdown allows to create an association between a DataNode and a <A href="local-datasources.html" title="Local DataSources">previously configured DataSources</A>. Such association is transparently stored as one of the preferences and does not affect your project XML files. This is a good way to separate database connection info stored in a given Cayenne project (i.e. deploymen [...]
+
+<P><B>Configure DataSource Factory.</B> Depending on how you plan to deploy your Cayenne project, make a selection from the &quot;DataSource Factory&quot; dropdown. Select JNDIDataSourceFactory if you plan to obtain DataSource via JNDI from deployment container. If you either have a standalone application or want Cayenne to handle connection pooling, select DriverDataSourceFactory (default). A custom factory can also be used. </P>
+
+<P><B>Configure DataSource Information (Driver factory only).</B> Depending on the type of DataSource Factory selected, bottom right area of the screen will change to show a form appropriate for a selected type of DataSource. It allows to enter JDBC information for DriverDataSourceFactory or JNDI name for JNDI. If custom DataSource Factory was selected, an optional string parameter can be entered (it can be anything that a custom DataSource factory understands).</P>
 
-                    </section>
-                </article>
+                </section>
+            </article>
 
 	        </div>
 	    </div>
@@ -279,7 +288,7 @@
     </div>
 </footer>
     
-<script>
+<script type="application/javascript">
 var doNotTrack = false;
 if (!doNotTrack) {
 	(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
diff --git a/docs/4.0/index.html b/docs/1.2/create-new-project.html
similarity index 87%
copy from docs/4.0/index.html
copy to docs/1.2/create-new-project.html
index 2bbcbd2..ca76054 100644
--- a/docs/4.0/index.html
+++ b/docs/1.2/create-new-project.html
@@ -15,7 +15,7 @@
         <meta name="theme-color" content="#ffffff">
         <link rel="stylesheet" href="https://cayenne.apache.org/css/styles-e429186d1b.css"/>
         <script src="https://cayenne.apache.org/js/bundle-92aa692db7.js"></script>
-        <title>Apache Cayenne</title>
+        <title>Create New Project &middot; Apache Cayenne</title>
     </head>
     <body data-spy="scroll" data-target=".toc-side" class="cd-head"> 
 <header class="page-header">
@@ -92,10 +92,10 @@
                     <ul class="nav" role="tablist">
                         <li class="nav-item dropdown mw-100">
                             <a class="nav-link dropdown-toggle text-truncate" data-toggle="dropdown" href="#" role="button" aria-haspopup="true" aria-expanded="false">
-                                Cayenne Version 4.0
+                                Cayenne Version 1.2
                             </a>
                             <div class="dropdown-menu">
-                                <a class="dropdown-item" href="/docs/4.1/getting-started-guide/">Version 4.1 (Release Candidate)</a><a class="dropdown-item" href="/docs/4.0/getting-started-guide/">Version 4.0 (Stable)</a><a class="dropdown-item" href="/docs/3.1/getting-started-guide/">Version 3.1 (Aging)</a><a class="dropdown-item" href="/docs/3.0/api/">Version 3.0 (Legacy)</a><a class="dropdown-item" href="/docs/2.0/api/">Version 2.0 (Legacy)</a><a class="dropdown-item" href="/docs/1.2/ [...]
+                                <a class="dropdown-item" href="/docs/4.1/getting-started-guide/">Version 4.1 (Release Candidate)</a><a class="dropdown-item" href="/docs/4.0/getting-started-guide/">Version 4.0 (Stable)</a><a class="dropdown-item" href="/docs/3.1/getting-started-guide/">Version 3.1 (Aging)</a><a class="dropdown-item" href="/docs/3.0/cayenne-guide.html">Version 3.0 (Legacy)</a><a class="dropdown-item" href="/docs/2.0/user-guide.html">Version 2.0 (Legacy)</a><a class="dropdo [...]
                             </div>
                         </li>
                     </ul>
@@ -111,45 +111,51 @@
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/getting-started-guide/">Getting Started</a>
+                            <a class="cd-toc-link" href="/docs/1.2/user-guide.html">User Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/cayenne-guide/">Cayenne Guide</a>
+                            <a class="cd-toc-link" href="/docs/1.2/modeler-guide.html">Modeler Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/getting-started-rop/">Getting Started ROP</a>
+                            <a class="cd-toc-link" href="/docs/1.2/remote-object-persistence-guide.html">Remote Object Persistence Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
-                        
-                            <a class="cd-toc-link" href="/docs/4.0/upgrade-guide/">Upgrade Guide</a>
-                        
-                    </div>
-                    
-                    <div class="cd-toc-item">
-                        <a class="cd-toc-link" href="/docs/4.0/api/">JavaDoc</a>
+                        <a class="cd-toc-link" href="/docs/1.2/api/">JavaDoc</a>
                     </div>
                 </div>
             </div>
             
             <div class="col-12 col-lg-8 col-xl-9  py-3 pl-lg-5  cd-content">
 
-                <article>
-                    <header>
-                        <h1></h1>
-                    </header>
-                    <section>
-                        <p>Documentation, the JavaDoc API, examples and articles for Cayenne 4.0 can all be found here.</p>
+            
+            <article>
+                <section>
+                    
+	
+
+<H3><A name="CreateNewProject-CreateNewProject"></A>Create New Project</H3>
+
+
+<P>Start New Project. Select &quot;<TT>File &gt; New Project</TT>&quot; menu item (or click &quot;<TT>New Project</TT>&quot; toolbar button):</P>
+
+<P><SPAN class="image-wrap" style=""><img src="/docs/1.2/images/new-project.jpg" style="border: 0px solid black"></SPAN></P>
+
+<P>A new project is created with a single empty DataDomain: </P>
+
+<P><SPAN class="image-wrap" style=""><img src="/docs/1.2/images/new-project-done.jpg" style="border: 0px solid black"></SPAN></P>
+
+<P>When you click on &quot;UntitledDomain&quot;, this opens an editor for this domain and also activates two new actions: &quot;<TT>Create DataNode</TT>&quot; and &quot;<TT>Create DataMap</TT>&quot;. </P>
 
-                    </section>
-                </article>
+                </section>
+            </article>
 
 	        </div>
 	    </div>
@@ -279,7 +285,7 @@
     </div>
 </footer>
     
-<script>
+<script type="application/javascript">
 var doNotTrack = false;
 if (!doNotTrack) {
 	(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
diff --git a/docs/index.html b/docs/1.2/customizing-configuration.html
similarity index 67%
copy from docs/index.html
copy to docs/1.2/customizing-configuration.html
index b579c6b..6412332 100644
--- a/docs/index.html
+++ b/docs/1.2/customizing-configuration.html
@@ -15,7 +15,7 @@
         <meta name="theme-color" content="#ffffff">
         <link rel="stylesheet" href="https://cayenne.apache.org/css/styles-e429186d1b.css"/>
         <script src="https://cayenne.apache.org/js/bundle-92aa692db7.js"></script>
-        <title>Documentation &middot; Apache Cayenne</title>
+        <title>Customizing Configuration &middot; Apache Cayenne</title>
     </head>
     <body data-spy="scroll" data-target=".toc-side" class="cd-head"> 
 <header class="page-header">
@@ -92,10 +92,10 @@
                     <ul class="nav" role="tablist">
                         <li class="nav-item dropdown mw-100">
                             <a class="nav-link dropdown-toggle text-truncate" data-toggle="dropdown" href="#" role="button" aria-haspopup="true" aria-expanded="false">
-                                Cayenne Version 4.1
+                                Cayenne Version 1.2
                             </a>
                             <div class="dropdown-menu">
-                                <a class="dropdown-item" href="/docs/4.1/getting-started-guide/">Version 4.1 (Release Candidate)</a><a class="dropdown-item" href="/docs/4.0/getting-started-guide/">Version 4.0 (Stable)</a><a class="dropdown-item" href="/docs/3.1/getting-started-guide/">Version 3.1 (Aging)</a><a class="dropdown-item" href="/docs/3.0/api/">Version 3.0 (Legacy)</a><a class="dropdown-item" href="/docs/2.0/api/">Version 2.0 (Legacy)</a><a class="dropdown-item" href="/docs/1.2/ [...]
+                                <a class="dropdown-item" href="/docs/4.1/getting-started-guide/">Version 4.1 (Release Candidate)</a><a class="dropdown-item" href="/docs/4.0/getting-started-guide/">Version 4.0 (Stable)</a><a class="dropdown-item" href="/docs/3.1/getting-started-guide/">Version 3.1 (Aging)</a><a class="dropdown-item" href="/docs/3.0/cayenne-guide.html">Version 3.0 (Legacy)</a><a class="dropdown-item" href="/docs/2.0/user-guide.html">Version 2.0 (Legacy)</a><a class="dropdo [...]
                             </div>
                         </li>
                     </ul>
@@ -111,51 +111,95 @@
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.1/getting-started-guide/">Getting Started</a>
+                            <a class="cd-toc-link" href="/docs/1.2/user-guide.html">User Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.1/cayenne-guide/">Cayenne Guide</a>
+                            <a class="cd-toc-link" href="/docs/1.2/modeler-guide.html">Modeler Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.1/getting-started-db-first/">Database First Tutorial</a>
+                            <a class="cd-toc-link" href="/docs/1.2/remote-object-persistence-guide.html">Remote Object Persistence Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
-                        
-                            <a class="cd-toc-link" href="/docs/4.1/getting-started-rop/">Getting Started ROP</a>
-                        
-                    </div>
-                    
-                    <div class="cd-toc-item">
-                        
-                            <a class="cd-toc-link" href="/docs/4.1/upgrade-guide/">Upgrade Guide</a>
-                        
-                    </div>
-                    
-                    <div class="cd-toc-item">
-                        <a class="cd-toc-link" href="/docs/4.1/api/">JavaDoc</a>
+                        <a class="cd-toc-link" href="/docs/1.2/api/">JavaDoc</a>
                     </div>
                 </div>
             </div>
             
             <div class="col-12 col-lg-8 col-xl-9  py-3 pl-lg-5  cd-content">
 
-                <article>
-                    <header>
-                        <h1>Documentation</h1>
-                    </header>
-                    <section>
-                        <p>Documentation, the JavaDoc API, examples and articles can all be found here.</p>
+            
+            <article>
+                <section>
+                    
+	
+
+<P>A user can create her own subclass of Configuration and use it instead of the classes provided by Cayenne. Custom subclasses are usually created to load configuration files from non-standard locations, to automatically configure Cayenne during certain events that happen in deployment containers, etc. Cayenne provides a few implementations of Configuration discussed later in this chapter.</P>
+
+<P>To ensure that Cayenne uses the correct Configuration class, it must be initialized properly before any calls to Configuration are made:</P>
+<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent">
+<PRE class="code-java"><SPAN class="code-keyword">import</SPAN> org.objectstyle.cayenne.conf.Configuration
+...
+<SPAN class="code-object">Class</SPAN> myConfigSubclass = my.<SPAN class="code-keyword">package</SPAN>.ConfigSubclass.class;
+Configuration.initializeSharedConfiguration(myConfigSubclass);
+</PRE>
+</DIV></DIV>
+<P>After this code is executed, any subsequent calls to <TT>Configuration.getSharedConfiguration()</TT> will return an instance of the custom class instead of <TT>DefaultConfiguration</TT>.</P>
+
+<P>Another useful feature is the customization of the resource lookup strategy implemented by the existing classes. Currently, both <TT>DefaultConfiguration</TT> and <TT>FileConfiguration</TT> offer the possibility to add additional paths which will be searched for resources.</P>
+
+<H3><A name="CustomizingConfiguration-DefaultConfiguration"></A>DefaultConfiguration</H3>
+
+<P><TT>DefaultConfiguration</TT> uses the application's class path for locating configuration files; this works for both &quot;expanded&quot; class paths and JAR files. &quot;Out of the box&quot; only resources on the top level of the class path are found; very often it is convenient to have a subdirectory ('package') with configuration files. There are two ways to make Configuration find these files:</P>
+<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent">
+<PRE class="code-java"><SPAN class="code-keyword">import</SPAN> org.objectstyle.cayenne.conf.DefaultConfiguration;
+...
+DefaultConfiguration conf = <SPAN class="code-keyword">new</SPAN> DefaultConfiguration();			
+conf.addClassPath(<SPAN class="code-quote">&quot;my/<SPAN class="code-keyword">package</SPAN>/conf&quot;</SPAN>);
+Configuration.initializeSharedConfiguration(conf);
+</PRE>
+</DIV></DIV>
+<P>Alternatively you can place an empty subclass of DefaultConfiguration into your package and use that class directly:</P>
+<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent">
+<PRE class="code-java"><SPAN class="code-keyword">import</SPAN> my.<SPAN class="code-keyword">package</SPAN>.conf.MyPackageConfiguration;
+...
+Configuration.initializeSharedConfiguration(<SPAN class="code-keyword">new</SPAN> MyPackageConfiguration());
+</PRE>
+</DIV></DIV>
+
+<H3><A name="CustomizingConfiguration-FileConfiguration"></A>FileConfiguration</H3>
+
+<P><TT>FileConfiguration</TT> uses the regular file system to load its files, and works very silimar to <TT>DefaultConfiguration</TT>:</P>
+<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent">
+<PRE class="code-java"><SPAN class="code-keyword">import</SPAN> org.objectstyle.cayenne.conf.FileConfiguration;
+...
+<SPAN class="code-object">String</SPAN> fileName = <SPAN class="code-quote">&quot;/some/path/to/my-cayenne.xml&quot;</SPAN>;
+FileConfiguration conf = <SPAN class="code-keyword">new</SPAN> FileConfiguration(<SPAN class="code-keyword">new</SPAN> File(fileName));
+Configuration.initializeSharedConfiguration(conf);
+</PRE>
+</DIV></DIV>
+<P>The fileName argument can be absolute or relative to the application's working directory, and is checked for accessibility. A more flexible lookup can be done by using the name without any path and adding search paths:</P>
+<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent">
+<PRE class="code-java"><SPAN class="code-keyword">import</SPAN> org.objectstyle.cayenne.conf.FileConfiguration;
+...
+FileConfiguration conf = <SPAN class="code-keyword">new</SPAN> FileConfiguration(<SPAN class="code-quote">&quot;my-cayenne.xml&quot;</SPAN>);
+conf.addFilesystemPath(<SPAN class="code-quote">&quot;a/relative/path&quot;</SPAN>);
+conf.addFilesystemPath(<SPAN class="code-quote">&quot;/another/absolute/path&quot;</SPAN>);
+conf.addFilesystemPath(<SPAN class="code-keyword">new</SPAN> File(<SPAN class="code-quote">&quot;/some/path/that/must/exist/&quot;</SPAN>));
+Configuration.initializeSharedConfiguration(conf);
+</PRE>
+</DIV></DIV>
+<P>The difference between the String and File arguments is that the latter are checked for existence. Both variants can be absolute or relative, and are evaluated in the order in which they are added to the Configuration.</P>
 
-                    </section>
-                </article>
+                </section>
+            </article>
 
 	        </div>
 	    </div>
@@ -285,7 +329,7 @@
     </div>
 </footer>
     
-<script>
+<script type="application/javascript">
 var doNotTrack = false;
 if (!doNotTrack) {
 	(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
diff --git a/docs/4.0/index.html b/docs/1.2/customizing-queries.html
similarity index 65%
copy from docs/4.0/index.html
copy to docs/1.2/customizing-queries.html
index 2bbcbd2..a4487ba 100644
--- a/docs/4.0/index.html
+++ b/docs/1.2/customizing-queries.html
@@ -15,7 +15,7 @@
         <meta name="theme-color" content="#ffffff">
         <link rel="stylesheet" href="https://cayenne.apache.org/css/styles-e429186d1b.css"/>
         <script src="https://cayenne.apache.org/js/bundle-92aa692db7.js"></script>
-        <title>Apache Cayenne</title>
+        <title>Customizing Queries &middot; Apache Cayenne</title>
     </head>
     <body data-spy="scroll" data-target=".toc-side" class="cd-head"> 
 <header class="page-header">
@@ -92,10 +92,10 @@
                     <ul class="nav" role="tablist">
                         <li class="nav-item dropdown mw-100">
                             <a class="nav-link dropdown-toggle text-truncate" data-toggle="dropdown" href="#" role="button" aria-haspopup="true" aria-expanded="false">
-                                Cayenne Version 4.0
+                                Cayenne Version 1.2
                             </a>
                             <div class="dropdown-menu">
-                                <a class="dropdown-item" href="/docs/4.1/getting-started-guide/">Version 4.1 (Release Candidate)</a><a class="dropdown-item" href="/docs/4.0/getting-started-guide/">Version 4.0 (Stable)</a><a class="dropdown-item" href="/docs/3.1/getting-started-guide/">Version 3.1 (Aging)</a><a class="dropdown-item" href="/docs/3.0/api/">Version 3.0 (Legacy)</a><a class="dropdown-item" href="/docs/2.0/api/">Version 2.0 (Legacy)</a><a class="dropdown-item" href="/docs/1.2/ [...]
+                                <a class="dropdown-item" href="/docs/4.1/getting-started-guide/">Version 4.1 (Release Candidate)</a><a class="dropdown-item" href="/docs/4.0/getting-started-guide/">Version 4.0 (Stable)</a><a class="dropdown-item" href="/docs/3.1/getting-started-guide/">Version 3.1 (Aging)</a><a class="dropdown-item" href="/docs/3.0/cayenne-guide.html">Version 3.0 (Legacy)</a><a class="dropdown-item" href="/docs/2.0/user-guide.html">Version 2.0 (Legacy)</a><a class="dropdo [...]
                             </div>
                         </li>
                     </ul>
@@ -111,45 +111,126 @@
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/getting-started-guide/">Getting Started</a>
+                            <a class="cd-toc-link" href="/docs/1.2/user-guide.html">User Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/cayenne-guide/">Cayenne Guide</a>
+                            <a class="cd-toc-link" href="/docs/1.2/modeler-guide.html">Modeler Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/getting-started-rop/">Getting Started ROP</a>
+                            <a class="cd-toc-link" href="/docs/1.2/remote-object-persistence-guide.html">Remote Object Persistence Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
-                        
-                            <a class="cd-toc-link" href="/docs/4.0/upgrade-guide/">Upgrade Guide</a>
-                        
-                    </div>
-                    
-                    <div class="cd-toc-item">
-                        <a class="cd-toc-link" href="/docs/4.0/api/">JavaDoc</a>
+                        <a class="cd-toc-link" href="/docs/1.2/api/">JavaDoc</a>
                     </div>
                 </div>
             </div>
             
             <div class="col-12 col-lg-8 col-xl-9  py-3 pl-lg-5  cd-content">
 
-                <article>
-                    <header>
-                        <h1></h1>
-                    </header>
-                    <section>
-                        <p>Documentation, the JavaDoc API, examples and articles for Cayenne 4.0 can all be found here.</p>
+            
+            <article>
+                <section>
+                    
+	
+
+<P>Any object that implements <TT>org.objectstyle.cayenne.query.Query</TT> interface can be executed with a DataContext. </P>
+
+<H3><A name="CustomizingQueries-UnderstandingQueryInterface"></A>Understanding Query Interface</H3>
+
+<P>The interface defines the following methods (ommitting irrelevant deprecated ones):</P>
+
+<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent">
+<PRE class="code-java"><SPAN class="code-keyword">public</SPAN> <SPAN class="code-keyword">interface</SPAN> Query <SPAN class="code-keyword">extends</SPAN> Serializable {
+
+    <SPAN class="code-object">String</SPAN> getName();
+
+    QueryMetadata getMetaData(EntityResolver resolver);
+
+    void route(QueryRouter router, EntityResolver resolver, Query substitutedQuery);
+
+    SQLAction createSQLAction(SQLActionVisitor visitor);
+}</PRE>
+</DIV></DIV>
+
+<UL>
+	<LI><TT>getName</TT> returns a symbolic name of the query. The name may be used as a key to find queries stored in the DataMap. Some query implementors reuse the name as a QueryMetadata cache key. Generally the name can be null.</LI>
+</UL>
+
+
+<UL>
+	<LI><TT>getMetaData</TT> is called at various stages of the execution by Cayenne access stack to retrieve query parameters. <TT>EntityResolver</TT> instance is passed to this method, meaning that the query doesn't need to store direct references to Cayenne mapping objects and can resolve them at runtime.</LI>
+</UL>
+
+
+<UL>
+	<LI><TT>route</TT> is invoked when Cayenne decides which DataNode (database) to use when running a query. Routing decision is made by the Query istelf by calling <TT>QueryRouter.route(..)</TT>. This is an important extension point. For instance all Cayenne &quot;indirect&quot; queries implement this method to create (or somehow resolve) one or more substitute queries and route them instead of self.</LI>
+</UL>
+
+
+<UL>
+	<LI><TT>createSQLAction</TT> allows to fully customize Query execution at the JDBC level. In the simplest case an implementor calls one of the methods on <TT>SQLActionVisitor</TT> to return a standard action for a specific type of query. However it can provide its own <TT>SQLAction</TT> that accesses the database in some special way.</LI>
+</UL>
+
+
+<H3><A name="CustomizingQueries-IndirectQueries"></A>Indirect Queries</H3>
+
+<P>One customization strategy is an &quot;indirect&quot; query that encapsulates some user-defined operation and in runtime resolves to one or more standard Cayenne queries. Indirect queries can be created from scratch or by extending <TT>org.objectstyle.cayenne.query.IndirectQuery</TT>. As an example lets implement a &quot;CountQuery&quot; query that returns a number of rows in a given table:</P>
+
+<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent">
+<PRE class="code-java"><SPAN class="code-keyword">public</SPAN> class CountQuery <SPAN class="code-keyword">extends</SPAN> IndirectQuery {
+	<SPAN class="code-keyword">protected</SPAN> <SPAN class="code-object">Class</SPAN> objectClass;
+
+	<SPAN class="code-keyword">public</SPAN> CountQuery(<SPAN class="code-object">Class</SPAN> objectClass) {
+		<SPAN class="code-keyword">this</SPAN>.objectClass = objectClass;
+	}
+
+	<SPAN class="code-keyword">protected</SPAN> Query createReplacementQuery(EntityResolver resolver) {
+		DbEntity entity = resolver.lookupDbEntity(objectClass);
+
+		<SPAN class="code-keyword">if</SPAN> (entity == <SPAN class="code-keyword">null</SPAN>) {
+			<SPAN class="code-keyword">throw</SPAN> <SPAN class="code-keyword">new</SPAN> CayenneRuntimeException(
+					<SPAN class="code-quote">&quot;No entity is mapped <SPAN class="code-keyword">for</SPAN> java class: &quot;</SPAN>
+							+ objectClass.getName());
+		}
+
+		<SPAN class="code-object">String</SPAN> sql = <SPAN class="code-quote">&quot;SELECT #result('count(*)' '<SPAN class="code-object">int</SPAN>' 'C') FROM &quot;</SPAN>
+				+ entity.getName();
+		SQLTemplate replacement = <SPAN class="code-keyword">new</SPAN> SQLTemplate(entity, sql);
+		replacement.setFetchingDataRows(<SPAN class="code-keyword">true</SPAN>);
+		<SPAN class="code-keyword">return</SPAN> replacement;
+	}
+}</PRE>
+</DIV></DIV>
+
+<P>Now you can run the query like that:</P>
+
+<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent">
+<PRE class="code-java">CountQuery query = <SPAN class="code-keyword">new</SPAN> CountQuery(Artist.class);
+DataContext context = DataContext.createDataContext();
+
+Map row = (Map) context.performQuery(query).get(0);
+<SPAN class="code-object">System</SPAN>.out.println(<SPAN class="code-quote">&quot;Count: &quot;</SPAN> + row.get(<SPAN class="code-quote">&quot;C&quot;</SPAN>));</PRE>
+</DIV></DIV>
+
+
+<P>For other real-life examples of indirect queries take a look at the source code of the following Cayenne queries: <A href="querychain.html" title="QueryChain">QueryChain</A>, <A href="objectidquery.html" title="ObjectIdQuery">ObjectIdQuery</A>, <A href="relationshipquery.html" title="RelationshipQuery">RelationshipQuery</A>, <A href="namedquery.html" title="NamedQuery">NamedQuery</A>. </P>
+
+
+<H3><A name="CustomizingQueries-SubclassingStandardQueries"></A>Subclassing Standard Queries</H3>
+
+<P>All standard queries can be subclassed, overriding some of their methods. For instance overriding <TT>route</TT> and/or <TT>createSQLAction</TT> would allow to implement custom callbacks at different points of query lifecycle.</P>
+
 
-                    </section>
-                </article>
+                </section>
+            </article>
 
 	        </div>
 	    </div>
@@ -279,7 +360,7 @@
     </div>
 </footer>
     
-<script>
+<script type="application/javascript">
 var doNotTrack = false;
 if (!doNotTrack) {
 	(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
diff --git a/docs/4.0/index.html b/docs/1.2/customizing.html
similarity index 90%
copy from docs/4.0/index.html
copy to docs/1.2/customizing.html
index 2bbcbd2..d967d33 100644
--- a/docs/4.0/index.html
+++ b/docs/1.2/customizing.html
@@ -15,7 +15,7 @@
         <meta name="theme-color" content="#ffffff">
         <link rel="stylesheet" href="https://cayenne.apache.org/css/styles-e429186d1b.css"/>
         <script src="https://cayenne.apache.org/js/bundle-92aa692db7.js"></script>
-        <title>Apache Cayenne</title>
+        <title>Customizing &middot; Apache Cayenne</title>
     </head>
     <body data-spy="scroll" data-target=".toc-side" class="cd-head"> 
 <header class="page-header">
@@ -92,10 +92,10 @@
                     <ul class="nav" role="tablist">
                         <li class="nav-item dropdown mw-100">
                             <a class="nav-link dropdown-toggle text-truncate" data-toggle="dropdown" href="#" role="button" aria-haspopup="true" aria-expanded="false">
-                                Cayenne Version 4.0
+                                Cayenne Version 1.2
                             </a>
                             <div class="dropdown-menu">
-                                <a class="dropdown-item" href="/docs/4.1/getting-started-guide/">Version 4.1 (Release Candidate)</a><a class="dropdown-item" href="/docs/4.0/getting-started-guide/">Version 4.0 (Stable)</a><a class="dropdown-item" href="/docs/3.1/getting-started-guide/">Version 3.1 (Aging)</a><a class="dropdown-item" href="/docs/3.0/api/">Version 3.0 (Legacy)</a><a class="dropdown-item" href="/docs/2.0/api/">Version 2.0 (Legacy)</a><a class="dropdown-item" href="/docs/1.2/ [...]
+                                <a class="dropdown-item" href="/docs/4.1/getting-started-guide/">Version 4.1 (Release Candidate)</a><a class="dropdown-item" href="/docs/4.0/getting-started-guide/">Version 4.0 (Stable)</a><a class="dropdown-item" href="/docs/3.1/getting-started-guide/">Version 3.1 (Aging)</a><a class="dropdown-item" href="/docs/3.0/cayenne-guide.html">Version 3.0 (Legacy)</a><a class="dropdown-item" href="/docs/2.0/user-guide.html">Version 2.0 (Legacy)</a><a class="dropdo [...]
                             </div>
                         </li>
                     </ul>
@@ -111,45 +111,46 @@
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/getting-started-guide/">Getting Started</a>
+                            <a class="cd-toc-link" href="/docs/1.2/user-guide.html">User Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/cayenne-guide/">Cayenne Guide</a>
+                            <a class="cd-toc-link" href="/docs/1.2/modeler-guide.html">Modeler Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/getting-started-rop/">Getting Started ROP</a>
+                            <a class="cd-toc-link" href="/docs/1.2/remote-object-persistence-guide.html">Remote Object Persistence Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
-                        
-                            <a class="cd-toc-link" href="/docs/4.0/upgrade-guide/">Upgrade Guide</a>
-                        
-                    </div>
-                    
-                    <div class="cd-toc-item">
-                        <a class="cd-toc-link" href="/docs/4.0/api/">JavaDoc</a>
+                        <a class="cd-toc-link" href="/docs/1.2/api/">JavaDoc</a>
                     </div>
                 </div>
             </div>
             
             <div class="col-12 col-lg-8 col-xl-9  py-3 pl-lg-5  cd-content">
 
-                <article>
-                    <header>
-                        <h1></h1>
-                    </header>
-                    <section>
-                        <p>Documentation, the JavaDoc API, examples and articles for Cayenne 4.0 can all be found here.</p>
+            
+            <article>
+                <section>
+                    
+	
+
+<P>Here we will discuss a few Cayenne customization techniques:</P>
+
+<UL>
+	<LI><A href="extended-types.html" title="Extended Types">Extended Types</A></LI>
+</UL>
+
+
 
-                    </section>
-                </article>
+                </section>
+            </article>
 
 	        </div>
 	    </div>
@@ -279,7 +280,7 @@
     </div>
 </footer>
     
-<script>
+<script type="application/javascript">
 var doNotTrack = false;
 if (!doNotTrack) {
 	(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
diff --git a/docs/4.0/index.html b/docs/1.2/data-rows.html
similarity index 79%
copy from docs/4.0/index.html
copy to docs/1.2/data-rows.html
index 2bbcbd2..d15be35 100644
--- a/docs/4.0/index.html
+++ b/docs/1.2/data-rows.html
@@ -15,7 +15,7 @@
         <meta name="theme-color" content="#ffffff">
         <link rel="stylesheet" href="https://cayenne.apache.org/css/styles-e429186d1b.css"/>
         <script src="https://cayenne.apache.org/js/bundle-92aa692db7.js"></script>
-        <title>Apache Cayenne</title>
+        <title>Data Rows &middot; Apache Cayenne</title>
     </head>
     <body data-spy="scroll" data-target=".toc-side" class="cd-head"> 
 <header class="page-header">
@@ -92,10 +92,10 @@
                     <ul class="nav" role="tablist">
                         <li class="nav-item dropdown mw-100">
                             <a class="nav-link dropdown-toggle text-truncate" data-toggle="dropdown" href="#" role="button" aria-haspopup="true" aria-expanded="false">
-                                Cayenne Version 4.0
+                                Cayenne Version 1.2
                             </a>
                             <div class="dropdown-menu">
-                                <a class="dropdown-item" href="/docs/4.1/getting-started-guide/">Version 4.1 (Release Candidate)</a><a class="dropdown-item" href="/docs/4.0/getting-started-guide/">Version 4.0 (Stable)</a><a class="dropdown-item" href="/docs/3.1/getting-started-guide/">Version 3.1 (Aging)</a><a class="dropdown-item" href="/docs/3.0/api/">Version 3.0 (Legacy)</a><a class="dropdown-item" href="/docs/2.0/api/">Version 2.0 (Legacy)</a><a class="dropdown-item" href="/docs/1.2/ [...]
+                                <a class="dropdown-item" href="/docs/4.1/getting-started-guide/">Version 4.1 (Release Candidate)</a><a class="dropdown-item" href="/docs/4.0/getting-started-guide/">Version 4.0 (Stable)</a><a class="dropdown-item" href="/docs/3.1/getting-started-guide/">Version 3.1 (Aging)</a><a class="dropdown-item" href="/docs/3.0/cayenne-guide.html">Version 3.0 (Legacy)</a><a class="dropdown-item" href="/docs/2.0/user-guide.html">Version 2.0 (Legacy)</a><a class="dropdo [...]
                             </div>
                         </li>
                     </ul>
@@ -111,45 +111,79 @@
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/getting-started-guide/">Getting Started</a>
+                            <a class="cd-toc-link" href="/docs/1.2/user-guide.html">User Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/cayenne-guide/">Cayenne Guide</a>
+                            <a class="cd-toc-link" href="/docs/1.2/modeler-guide.html">Modeler Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/getting-started-rop/">Getting Started ROP</a>
+                            <a class="cd-toc-link" href="/docs/1.2/remote-object-persistence-guide.html">Remote Object Persistence Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
-                        
-                            <a class="cd-toc-link" href="/docs/4.0/upgrade-guide/">Upgrade Guide</a>
-                        
-                    </div>
-                    
-                    <div class="cd-toc-item">
-                        <a class="cd-toc-link" href="/docs/4.0/api/">JavaDoc</a>
+                        <a class="cd-toc-link" href="/docs/1.2/api/">JavaDoc</a>
                     </div>
                 </div>
             </div>
             
             <div class="col-12 col-lg-8 col-xl-9  py-3 pl-lg-5  cd-content">
 
-                <article>
-                    <header>
-                        <h1></h1>
-                    </header>
-                    <section>
-                        <p>Documentation, the JavaDoc API, examples and articles for Cayenne 4.0 can all be found here.</p>
+            
+            <article>
+                <section>
+                    
+	
+
+<P>DataObjects creation and registering with DataContext is an expensive operation. There are cases when only a few objects are really used, but the application still has to fetch a lot of objects. For instance when a user performs a search, result may contain thousands of records, but user will only check 2-3 of them. Cayenne allows programmers to explicitly disable objects creation for such cases. Results will be returned in the form of java.util.Map's. In Cayenne such maps are called  [...]
+
+<P>Benefits of Data Rows:</P>
+
+<UL>
+	<LI>Fetch speed increase. Our tests show 2x to 5x performance increase.</LI>
+	<LI>Using regular Cayenne query API.</LI>
+	<LI>Using same DataMaps.</LI>
+	<LI>Easy to convert to DataObjects.</LI>
+</UL>
+
+
+<P>Data rows don't have all the object-oriented features of DataObjects. In particular, data rows don't support relationships. It is easy to create a DataObject from a row though. See examples below.</P>
+
+<P>Data rows example:</P>
+
+<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent">
+<PRE class="code-java"><SPAN class="code-keyword">import</SPAN> java.util.List;
+<SPAN class="code-keyword">import</SPAN> java.util.Map;
+<SPAN class="code-keyword">import</SPAN> org.objectstyle.cayenne.access.DataContext;
+<SPAN class="code-keyword">import</SPAN> org.objectstyle.cayenne.query.SelectQuery;
+<SPAN class="code-keyword">import</SPAN> org.objectstyle.art.Artist;
+...
+DataContext ctxt;
+
+<SPAN class="code-comment">// create a query returning data rows
+</SPAN>SelectQuery q = <SPAN class="code-keyword">new</SPAN> SelectQuery(Artist.class);
+q.setFetchingDataRows(<SPAN class="code-keyword">true</SPAN>);
+
+List artistRows = ctxt.performQuery(q);
+
+<SPAN class="code-comment">// since query was configured to <SPAN class="code-keyword">return</SPAN> data rows,
+</SPAN><SPAN class="code-comment">// result list elements are java.util.Map's
+</SPAN>Map row = (Map)artistRows.get(0);
+
+<SPAN class="code-comment">// convert row to an artist
+</SPAN>Artist artist = (Artist)ctxt.objectFromDataRow(<SPAN class="code-quote">&quot;Artist&quot;</SPAN>, row);
+...
+</PRE>
+</DIV></DIV>
 
-                    </section>
-                </article>
+                </section>
+            </article>
 
 	        </div>
 	    </div>
@@ -279,7 +313,7 @@
     </div>
 </footer>
     
-<script>
+<script type="application/javascript">
 var doNotTrack = false;
 if (!doNotTrack) {
 	(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
diff --git a/docs/4.0/index.html b/docs/1.2/datachannel.html
similarity index 84%
copy from docs/4.0/index.html
copy to docs/1.2/datachannel.html
index 2bbcbd2..d3bfc4b 100644
--- a/docs/4.0/index.html
+++ b/docs/1.2/datachannel.html
@@ -15,7 +15,7 @@
         <meta name="theme-color" content="#ffffff">
         <link rel="stylesheet" href="https://cayenne.apache.org/css/styles-e429186d1b.css"/>
         <script src="https://cayenne.apache.org/js/bundle-92aa692db7.js"></script>
-        <title>Apache Cayenne</title>
+        <title>DataChannel &middot; Apache Cayenne</title>
     </head>
     <body data-spy="scroll" data-target=".toc-side" class="cd-head"> 
 <header class="page-header">
@@ -92,10 +92,10 @@
                     <ul class="nav" role="tablist">
                         <li class="nav-item dropdown mw-100">
                             <a class="nav-link dropdown-toggle text-truncate" data-toggle="dropdown" href="#" role="button" aria-haspopup="true" aria-expanded="false">
-                                Cayenne Version 4.0
+                                Cayenne Version 1.2
                             </a>
                             <div class="dropdown-menu">
-                                <a class="dropdown-item" href="/docs/4.1/getting-started-guide/">Version 4.1 (Release Candidate)</a><a class="dropdown-item" href="/docs/4.0/getting-started-guide/">Version 4.0 (Stable)</a><a class="dropdown-item" href="/docs/3.1/getting-started-guide/">Version 3.1 (Aging)</a><a class="dropdown-item" href="/docs/3.0/api/">Version 3.0 (Legacy)</a><a class="dropdown-item" href="/docs/2.0/api/">Version 2.0 (Legacy)</a><a class="dropdown-item" href="/docs/1.2/ [...]
+                                <a class="dropdown-item" href="/docs/4.1/getting-started-guide/">Version 4.1 (Release Candidate)</a><a class="dropdown-item" href="/docs/4.0/getting-started-guide/">Version 4.0 (Stable)</a><a class="dropdown-item" href="/docs/3.1/getting-started-guide/">Version 3.1 (Aging)</a><a class="dropdown-item" href="/docs/3.0/cayenne-guide.html">Version 3.0 (Legacy)</a><a class="dropdown-item" href="/docs/2.0/user-guide.html">Version 2.0 (Legacy)</a><a class="dropdo [...]
                             </div>
                         </li>
                     </ul>
@@ -111,45 +111,62 @@
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/getting-started-guide/">Getting Started</a>
+                            <a class="cd-toc-link" href="/docs/1.2/user-guide.html">User Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/cayenne-guide/">Cayenne Guide</a>
+                            <a class="cd-toc-link" href="/docs/1.2/modeler-guide.html">Modeler Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/getting-started-rop/">Getting Started ROP</a>
+                            <a class="cd-toc-link" href="/docs/1.2/remote-object-persistence-guide.html">Remote Object Persistence Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
-                        
-                            <a class="cd-toc-link" href="/docs/4.0/upgrade-guide/">Upgrade Guide</a>
-                        
-                    </div>
-                    
-                    <div class="cd-toc-item">
-                        <a class="cd-toc-link" href="/docs/4.0/api/">JavaDoc</a>
+                        <a class="cd-toc-link" href="/docs/1.2/api/">JavaDoc</a>
                     </div>
                 </div>
             </div>
             
             <div class="col-12 col-lg-8 col-xl-9  py-3 pl-lg-5  cd-content">
 
-                <article>
-                    <header>
-                        <h1></h1>
-                    </header>
-                    <section>
-                        <p>Documentation, the JavaDoc API, examples and articles for Cayenne 4.0 can all be found here.</p>
+            
+            <article>
+                <section>
+                    
+	
+
+<P><TT>&quot;org.objectstyle.cayenne.DataChannel&quot;</TT> is an abstraction of Cayenne persistence stack. It is very simple - it defines only 4 methods, two for actually performing persistent operations, one to access metadata, and one - to access EventManager:</P>
+
+<DIV class="code panel" style="border-width: 1px;"><DIV class="codeHeader panelHeader" style="border-bottom-width: 1px;"><B>DataChannel.java</B></DIV><DIV class="codeContent panelContent">
+<PRE class="code-java"><SPAN class="code-keyword">public</SPAN> <SPAN class="code-keyword">interface</SPAN> DataChannel {
+
+    QueryResponse onQuery(ObjectContext originatingContext, Query query);
+
+    GraphDiff onSync(ObjectContext originatingContext, GraphDiff changes, <SPAN class="code-object">int</SPAN> syncType);
+
+    EventManager getEventManager();
+
+    EntityResolver getEntityResolver();
+}</PRE>
+</DIV></DIV>
+
+<P>DataChannel is rarely used by the application directly. Instead ObjectContexts use it internally as an abstract persistent store. There are few kinds of DataChannels in Cayenne:</P>
+
+<UL>
+	<LI>DataDomain (the most commonly used DataChannel) connects to one or more databases via DataNodes.</LI>
+	<LI>DataContext can serve as a DataChannel for other DataContexts</LI>
+	<LI>ClientChannel is a DataChannel that connects to a remote Cayenne service.</LI>
+</UL>
+
 
-                    </section>
-                </article>
+                </section>
+            </article>
 
 	        </div>
 	    </div>
@@ -279,7 +296,7 @@
     </div>
 </footer>
     
-<script>
+<script type="application/javascript">
 var doNotTrack = false;
 if (!doNotTrack) {
 	(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
diff --git a/docs/4.0/index.html b/docs/1.2/datacontext.html
similarity index 87%
copy from docs/4.0/index.html
copy to docs/1.2/datacontext.html
index 2bbcbd2..59a237e 100644
--- a/docs/4.0/index.html
+++ b/docs/1.2/datacontext.html
@@ -15,7 +15,7 @@
         <meta name="theme-color" content="#ffffff">
         <link rel="stylesheet" href="https://cayenne.apache.org/css/styles-e429186d1b.css"/>
         <script src="https://cayenne.apache.org/js/bundle-92aa692db7.js"></script>
-        <title>Apache Cayenne</title>
+        <title>DataContext &middot; Apache Cayenne</title>
     </head>
     <body data-spy="scroll" data-target=".toc-side" class="cd-head"> 
 <header class="page-header">
@@ -92,10 +92,10 @@
                     <ul class="nav" role="tablist">
                         <li class="nav-item dropdown mw-100">
                             <a class="nav-link dropdown-toggle text-truncate" data-toggle="dropdown" href="#" role="button" aria-haspopup="true" aria-expanded="false">
-                                Cayenne Version 4.0
+                                Cayenne Version 1.2
                             </a>
                             <div class="dropdown-menu">
-                                <a class="dropdown-item" href="/docs/4.1/getting-started-guide/">Version 4.1 (Release Candidate)</a><a class="dropdown-item" href="/docs/4.0/getting-started-guide/">Version 4.0 (Stable)</a><a class="dropdown-item" href="/docs/3.1/getting-started-guide/">Version 3.1 (Aging)</a><a class="dropdown-item" href="/docs/3.0/api/">Version 3.0 (Legacy)</a><a class="dropdown-item" href="/docs/2.0/api/">Version 2.0 (Legacy)</a><a class="dropdown-item" href="/docs/1.2/ [...]
+                                <a class="dropdown-item" href="/docs/4.1/getting-started-guide/">Version 4.1 (Release Candidate)</a><a class="dropdown-item" href="/docs/4.0/getting-started-guide/">Version 4.0 (Stable)</a><a class="dropdown-item" href="/docs/3.1/getting-started-guide/">Version 3.1 (Aging)</a><a class="dropdown-item" href="/docs/3.0/cayenne-guide.html">Version 3.0 (Legacy)</a><a class="dropdown-item" href="/docs/2.0/user-guide.html">Version 2.0 (Legacy)</a><a class="dropdo [...]
                             </div>
                         </li>
                     </ul>
@@ -111,45 +111,44 @@
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/getting-started-guide/">Getting Started</a>
+                            <a class="cd-toc-link" href="/docs/1.2/user-guide.html">User Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/cayenne-guide/">Cayenne Guide</a>
+                            <a class="cd-toc-link" href="/docs/1.2/modeler-guide.html">Modeler Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/getting-started-rop/">Getting Started ROP</a>
+                            <a class="cd-toc-link" href="/docs/1.2/remote-object-persistence-guide.html">Remote Object Persistence Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
-                        
-                            <a class="cd-toc-link" href="/docs/4.0/upgrade-guide/">Upgrade Guide</a>
-                        
-                    </div>
-                    
-                    <div class="cd-toc-item">
-                        <a class="cd-toc-link" href="/docs/4.0/api/">JavaDoc</a>
+                        <a class="cd-toc-link" href="/docs/1.2/api/">JavaDoc</a>
                     </div>
                 </div>
             </div>
             
             <div class="col-12 col-lg-8 col-xl-9  py-3 pl-lg-5  cd-content">
 
-                <article>
-                    <header>
-                        <h1></h1>
-                    </header>
-                    <section>
-                        <p>Documentation, the JavaDoc API, examples and articles for Cayenne 4.0 can all be found here.</p>
+            
+            <article>
+                <section>
+                    
+	
+
+<P>In most applications <A href="http://objectstyle.org/cayenne/api/cayenne/org/objectstyle/cayenne/access/DataContext.html" class="external-link" rel="nofollow">DataContext</A> is the main user access point to all Cayenne functionality. It provides query execution facilities as well as object state management functions. Applications rarely directly deal with access or mapping objects beyond DataContext.</P>
+
+<P>One of the important features of DataContext is that it isolates changes made in a user session from other users. With this in mind, DataContext normally has a session scope. &quot;Session&quot; can have different meanings in different types of applications. Good example is an HttpSession in a web application. Each one of HttpSessions will normally need a single instance of DataContext.</P>
+
+
 
-                    </section>
-                </article>
+                </section>
+            </article>
 
 	        </div>
 	    </div>
@@ -279,7 +278,7 @@
     </div>
 </footer>
     
-<script>
+<script type="application/javascript">
 var doNotTrack = false;
 if (!doNotTrack) {
 	(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
diff --git a/docs/4.0/index.html b/docs/1.2/datacontextdelegate.html
similarity index 81%
copy from docs/4.0/index.html
copy to docs/1.2/datacontextdelegate.html
index 2bbcbd2..270a02b 100644
--- a/docs/4.0/index.html
+++ b/docs/1.2/datacontextdelegate.html
@@ -15,7 +15,7 @@
         <meta name="theme-color" content="#ffffff">
         <link rel="stylesheet" href="https://cayenne.apache.org/css/styles-e429186d1b.css"/>
         <script src="https://cayenne.apache.org/js/bundle-92aa692db7.js"></script>
-        <title>Apache Cayenne</title>
+        <title>DataContextDelegate &middot; Apache Cayenne</title>
     </head>
     <body data-spy="scroll" data-target=".toc-side" class="cd-head"> 
 <header class="page-header">
@@ -92,10 +92,10 @@
                     <ul class="nav" role="tablist">
                         <li class="nav-item dropdown mw-100">
                             <a class="nav-link dropdown-toggle text-truncate" data-toggle="dropdown" href="#" role="button" aria-haspopup="true" aria-expanded="false">
-                                Cayenne Version 4.0
+                                Cayenne Version 1.2
                             </a>
                             <div class="dropdown-menu">
-                                <a class="dropdown-item" href="/docs/4.1/getting-started-guide/">Version 4.1 (Release Candidate)</a><a class="dropdown-item" href="/docs/4.0/getting-started-guide/">Version 4.0 (Stable)</a><a class="dropdown-item" href="/docs/3.1/getting-started-guide/">Version 3.1 (Aging)</a><a class="dropdown-item" href="/docs/3.0/api/">Version 3.0 (Legacy)</a><a class="dropdown-item" href="/docs/2.0/api/">Version 2.0 (Legacy)</a><a class="dropdown-item" href="/docs/1.2/ [...]
+                                <a class="dropdown-item" href="/docs/4.1/getting-started-guide/">Version 4.1 (Release Candidate)</a><a class="dropdown-item" href="/docs/4.0/getting-started-guide/">Version 4.0 (Stable)</a><a class="dropdown-item" href="/docs/3.1/getting-started-guide/">Version 3.1 (Aging)</a><a class="dropdown-item" href="/docs/3.0/cayenne-guide.html">Version 3.0 (Legacy)</a><a class="dropdown-item" href="/docs/2.0/user-guide.html">Version 2.0 (Legacy)</a><a class="dropdo [...]
                             </div>
                         </li>
                     </ul>
@@ -111,45 +111,59 @@
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/getting-started-guide/">Getting Started</a>
+                            <a class="cd-toc-link" href="/docs/1.2/user-guide.html">User Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/cayenne-guide/">Cayenne Guide</a>
+                            <a class="cd-toc-link" href="/docs/1.2/modeler-guide.html">Modeler Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/getting-started-rop/">Getting Started ROP</a>
+                            <a class="cd-toc-link" href="/docs/1.2/remote-object-persistence-guide.html">Remote Object Persistence Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
-                        
-                            <a class="cd-toc-link" href="/docs/4.0/upgrade-guide/">Upgrade Guide</a>
-                        
-                    </div>
-                    
-                    <div class="cd-toc-item">
-                        <a class="cd-toc-link" href="/docs/4.0/api/">JavaDoc</a>
+                        <a class="cd-toc-link" href="/docs/1.2/api/">JavaDoc</a>
                     </div>
                 </div>
             </div>
             
             <div class="col-12 col-lg-8 col-xl-9  py-3 pl-lg-5  cd-content">
 
-                <article>
-                    <header>
-                        <h1></h1>
-                    </header>
-                    <section>
-                        <p>Documentation, the JavaDoc API, examples and articles for Cayenne 4.0 can all be found here.</p>
+            
+            <article>
+                <section>
+                    
+	
+
+<P>DataContext supports runtime customization via a DataContextDelegate interface. A user can assign a custom delegate instance to a DataContext by calling DataContext.setDelegate(..). Delegate is optional, and if it is not set, DataContext would go on with its default behavior. If a delegate is set, DataContext consults with it at some critical points in the normal flow execution. A delegate can modify the flow, abort an operation, modify objects participating in an operation, or perfor [...]
+
+<P>DataContextDelegate currently has two groups of methods - method to filter select queries, and methods to react to external updates of the ObjectStore:</P>
+
+<UL>
+	<LI><TT>public Query willPerformQuery(DataContext context, Query query)</TT></LI>
+</UL>
+
+
+<P>Called from DataContext.performQuery(...) before running any select query, including prefetch queries. Implementation has a choice to modify an original query, replace it with alternative one, or return NULL, blocking query execution alltogether.</P>
+
+<UL>
+	<LI><TT>public boolean shouldMergeChanges(DataObject object, DataRow snapshotInStore)</TT><BR>
+  <TT>public boolean shouldProcessDelete(DataObject object)</TT><BR>
+  <TT>public void finishedMergeChanges(DataObject object)</TT><BR>
+  <TT>public void finishedProcessDelete(DataObject object)</TT></LI>
+</UL>
+
+
+<P>These methods are called by the ObjectStore whenever it performs an update of its state triggered by external events. Default ObjectStore behavior is to merge all changes to the existing objects, and change deleted objects state to TRANSIENT, removing them from the store. Delegate has an option to abort standard processing by returning &quot;false&quot; from &quot;should*&quot; methods.</P>
 
-                    </section>
-                </article>
+                </section>
+            </article>
 
 	        </div>
 	    </div>
@@ -279,7 +293,7 @@
     </div>
 </footer>
     
-<script>
+<script type="application/javascript">
 var doNotTrack = false;
 if (!doNotTrack) {
 	(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
diff --git a/docs/4.0/index.html b/docs/1.2/datacontextfactory.html
similarity index 88%
copy from docs/4.0/index.html
copy to docs/1.2/datacontextfactory.html
index 2bbcbd2..96e1a66 100644
--- a/docs/4.0/index.html
+++ b/docs/1.2/datacontextfactory.html
@@ -15,7 +15,7 @@
         <meta name="theme-color" content="#ffffff">
         <link rel="stylesheet" href="https://cayenne.apache.org/css/styles-e429186d1b.css"/>
         <script src="https://cayenne.apache.org/js/bundle-92aa692db7.js"></script>
-        <title>Apache Cayenne</title>
+        <title>DataContextFactory &middot; Apache Cayenne</title>
     </head>
     <body data-spy="scroll" data-target=".toc-side" class="cd-head"> 
 <header class="page-header">
@@ -92,10 +92,10 @@
                     <ul class="nav" role="tablist">
                         <li class="nav-item dropdown mw-100">
                             <a class="nav-link dropdown-toggle text-truncate" data-toggle="dropdown" href="#" role="button" aria-haspopup="true" aria-expanded="false">
-                                Cayenne Version 4.0
+                                Cayenne Version 1.2
                             </a>
                             <div class="dropdown-menu">
-                                <a class="dropdown-item" href="/docs/4.1/getting-started-guide/">Version 4.1 (Release Candidate)</a><a class="dropdown-item" href="/docs/4.0/getting-started-guide/">Version 4.0 (Stable)</a><a class="dropdown-item" href="/docs/3.1/getting-started-guide/">Version 3.1 (Aging)</a><a class="dropdown-item" href="/docs/3.0/api/">Version 3.0 (Legacy)</a><a class="dropdown-item" href="/docs/2.0/api/">Version 2.0 (Legacy)</a><a class="dropdown-item" href="/docs/1.2/ [...]
+                                <a class="dropdown-item" href="/docs/4.1/getting-started-guide/">Version 4.1 (Release Candidate)</a><a class="dropdown-item" href="/docs/4.0/getting-started-guide/">Version 4.0 (Stable)</a><a class="dropdown-item" href="/docs/3.1/getting-started-guide/">Version 3.1 (Aging)</a><a class="dropdown-item" href="/docs/3.0/cayenne-guide.html">Version 3.0 (Legacy)</a><a class="dropdown-item" href="/docs/2.0/user-guide.html">Version 2.0 (Legacy)</a><a class="dropdo [...]
                             </div>
                         </li>
                     </ul>
@@ -111,45 +111,42 @@
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/getting-started-guide/">Getting Started</a>
+                            <a class="cd-toc-link" href="/docs/1.2/user-guide.html">User Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/cayenne-guide/">Cayenne Guide</a>
+                            <a class="cd-toc-link" href="/docs/1.2/modeler-guide.html">Modeler Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/getting-started-rop/">Getting Started ROP</a>
+                            <a class="cd-toc-link" href="/docs/1.2/remote-object-persistence-guide.html">Remote Object Persistence Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
-                        
-                            <a class="cd-toc-link" href="/docs/4.0/upgrade-guide/">Upgrade Guide</a>
-                        
-                    </div>
-                    
-                    <div class="cd-toc-item">
-                        <a class="cd-toc-link" href="/docs/4.0/api/">JavaDoc</a>
+                        <a class="cd-toc-link" href="/docs/1.2/api/">JavaDoc</a>
                     </div>
                 </div>
             </div>
             
             <div class="col-12 col-lg-8 col-xl-9  py-3 pl-lg-5  cd-content">
 
-                <article>
-                    <header>
-                        <h1></h1>
-                    </header>
-                    <section>
-                        <p>Documentation, the JavaDoc API, examples and articles for Cayenne 4.0 can all be found here.</p>
+            
+            <article>
+                <section>
+                    
+	
+
+<P>To customize how the DataContext is built, an <EM>optional</EM> DataContextFactory can be registered with DataDomain in the Modeler. The class name you enter must implement <TT>org.objectstyle.cayenne.access.DataContextFactory</TT> interface. If a factory is entered, Cayenne will use it in <A href="obtaining-datacontext.html" title="Obtaining DataContext">all places</A> where the DataContext is created. A single factory instance is reused for the life of the DataDomain.</P>
+
+<P><SPAN class="image-wrap" style=""><img src="/docs/1.2/images/datacontextfactory.jpg" style="border: 0px solid black"></SPAN></P>
 
-                    </section>
-                </article>
+                </section>
+            </article>
 
 	        </div>
 	    </div>
@@ -279,7 +276,7 @@
     </div>
 </footer>
     
-<script>
+<script type="application/javascript">
 var doNotTrack = false;
 if (!doNotTrack) {
 	(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
diff --git a/docs/4.0/index.html b/docs/1.2/datanode.html
similarity index 89%
copy from docs/4.0/index.html
copy to docs/1.2/datanode.html
index 2bbcbd2..dea8617 100644
--- a/docs/4.0/index.html
+++ b/docs/1.2/datanode.html
@@ -15,7 +15,7 @@
         <meta name="theme-color" content="#ffffff">
         <link rel="stylesheet" href="https://cayenne.apache.org/css/styles-e429186d1b.css"/>
         <script src="https://cayenne.apache.org/js/bundle-92aa692db7.js"></script>
-        <title>Apache Cayenne</title>
+        <title>DataNode &middot; Apache Cayenne</title>
     </head>
     <body data-spy="scroll" data-target=".toc-side" class="cd-head"> 
 <header class="page-header">
@@ -92,10 +92,10 @@
                     <ul class="nav" role="tablist">
                         <li class="nav-item dropdown mw-100">
                             <a class="nav-link dropdown-toggle text-truncate" data-toggle="dropdown" href="#" role="button" aria-haspopup="true" aria-expanded="false">
-                                Cayenne Version 4.0
+                                Cayenne Version 1.2
                             </a>
                             <div class="dropdown-menu">
-                                <a class="dropdown-item" href="/docs/4.1/getting-started-guide/">Version 4.1 (Release Candidate)</a><a class="dropdown-item" href="/docs/4.0/getting-started-guide/">Version 4.0 (Stable)</a><a class="dropdown-item" href="/docs/3.1/getting-started-guide/">Version 3.1 (Aging)</a><a class="dropdown-item" href="/docs/3.0/api/">Version 3.0 (Legacy)</a><a class="dropdown-item" href="/docs/2.0/api/">Version 2.0 (Legacy)</a><a class="dropdown-item" href="/docs/1.2/ [...]
+                                <a class="dropdown-item" href="/docs/4.1/getting-started-guide/">Version 4.1 (Release Candidate)</a><a class="dropdown-item" href="/docs/4.0/getting-started-guide/">Version 4.0 (Stable)</a><a class="dropdown-item" href="/docs/3.1/getting-started-guide/">Version 3.1 (Aging)</a><a class="dropdown-item" href="/docs/3.0/cayenne-guide.html">Version 3.0 (Legacy)</a><a class="dropdown-item" href="/docs/2.0/user-guide.html">Version 2.0 (Legacy)</a><a class="dropdo [...]
                             </div>
                         </li>
                     </ul>
@@ -111,45 +111,42 @@
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/getting-started-guide/">Getting Started</a>
+                            <a class="cd-toc-link" href="/docs/1.2/user-guide.html">User Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/cayenne-guide/">Cayenne Guide</a>
+                            <a class="cd-toc-link" href="/docs/1.2/modeler-guide.html">Modeler Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/getting-started-rop/">Getting Started ROP</a>
+                            <a class="cd-toc-link" href="/docs/1.2/remote-object-persistence-guide.html">Remote Object Persistence Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
-                        
-                            <a class="cd-toc-link" href="/docs/4.0/upgrade-guide/">Upgrade Guide</a>
-                        
-                    </div>
-                    
-                    <div class="cd-toc-item">
-                        <a class="cd-toc-link" href="/docs/4.0/api/">JavaDoc</a>
+                        <a class="cd-toc-link" href="/docs/1.2/api/">JavaDoc</a>
                     </div>
                 </div>
             </div>
             
             <div class="col-12 col-lg-8 col-xl-9  py-3 pl-lg-5  cd-content">
 
-                <article>
-                    <header>
-                        <h1></h1>
-                    </header>
-                    <section>
-                        <p>Documentation, the JavaDoc API, examples and articles for Cayenne 4.0 can all be found here.</p>
+            
+            <article>
+                <section>
+                    
+	
+
+<P>DataNode is a Cayenne &quot;driver&quot; for a single physical data source, such as a relational database. In fact currently DataNode only handles JDBC sources (so maybe it should be renamed to JdbcDataNode?). </P>
+
+<P>DataNode doesn't do much work on its own, instead delegating most tasks to <TT>&quot;org.objectstyle.cayenne.action.SQLAction&quot;</TT> instances returned by <A href="dbadapter.html" title="DbAdapter">DbAdapter</A>.</P>
 
-                    </section>
-                </article>
+                </section>
+            </article>
 
 	        </div>
 	    </div>
@@ -279,7 +276,7 @@
     </div>
 </footer>
     
-<script>
+<script type="application/javascript">
 var doNotTrack = false;
 if (!doNotTrack) {
 	(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
diff --git a/docs/4.0/index.html b/docs/1.2/dataobject-state-management.html
similarity index 59%
copy from docs/4.0/index.html
copy to docs/1.2/dataobject-state-management.html
index 2bbcbd2..1fe97f8 100644
--- a/docs/4.0/index.html
+++ b/docs/1.2/dataobject-state-management.html
@@ -15,7 +15,7 @@
         <meta name="theme-color" content="#ffffff">
         <link rel="stylesheet" href="https://cayenne.apache.org/css/styles-e429186d1b.css"/>
         <script src="https://cayenne.apache.org/js/bundle-92aa692db7.js"></script>
-        <title>Apache Cayenne</title>
+        <title>DataObject State Management &middot; Apache Cayenne</title>
     </head>
     <body data-spy="scroll" data-target=".toc-side" class="cd-head"> 
 <header class="page-header">
@@ -92,10 +92,10 @@
                     <ul class="nav" role="tablist">
                         <li class="nav-item dropdown mw-100">
                             <a class="nav-link dropdown-toggle text-truncate" data-toggle="dropdown" href="#" role="button" aria-haspopup="true" aria-expanded="false">
-                                Cayenne Version 4.0
+                                Cayenne Version 1.2
                             </a>
                             <div class="dropdown-menu">
-                                <a class="dropdown-item" href="/docs/4.1/getting-started-guide/">Version 4.1 (Release Candidate)</a><a class="dropdown-item" href="/docs/4.0/getting-started-guide/">Version 4.0 (Stable)</a><a class="dropdown-item" href="/docs/3.1/getting-started-guide/">Version 3.1 (Aging)</a><a class="dropdown-item" href="/docs/3.0/api/">Version 3.0 (Legacy)</a><a class="dropdown-item" href="/docs/2.0/api/">Version 2.0 (Legacy)</a><a class="dropdown-item" href="/docs/1.2/ [...]
+                                <a class="dropdown-item" href="/docs/4.1/getting-started-guide/">Version 4.1 (Release Candidate)</a><a class="dropdown-item" href="/docs/4.0/getting-started-guide/">Version 4.0 (Stable)</a><a class="dropdown-item" href="/docs/3.1/getting-started-guide/">Version 3.1 (Aging)</a><a class="dropdown-item" href="/docs/3.0/cayenne-guide.html">Version 3.0 (Legacy)</a><a class="dropdown-item" href="/docs/2.0/user-guide.html">Version 2.0 (Legacy)</a><a class="dropdo [...]
                             </div>
                         </li>
                     </ul>
@@ -111,45 +111,164 @@
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/getting-started-guide/">Getting Started</a>
+                            <a class="cd-toc-link" href="/docs/1.2/user-guide.html">User Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/cayenne-guide/">Cayenne Guide</a>
+                            <a class="cd-toc-link" href="/docs/1.2/modeler-guide.html">Modeler Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/getting-started-rop/">Getting Started ROP</a>
+                            <a class="cd-toc-link" href="/docs/1.2/remote-object-persistence-guide.html">Remote Object Persistence Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
-                        
-                            <a class="cd-toc-link" href="/docs/4.0/upgrade-guide/">Upgrade Guide</a>
-                        
-                    </div>
-                    
-                    <div class="cd-toc-item">
-                        <a class="cd-toc-link" href="/docs/4.0/api/">JavaDoc</a>
+                        <a class="cd-toc-link" href="/docs/1.2/api/">JavaDoc</a>
                     </div>
                 </div>
             </div>
             
             <div class="col-12 col-lg-8 col-xl-9  py-3 pl-lg-5  cd-content">
 
-                <article>
-                    <header>
-                        <h1></h1>
-                    </header>
-                    <section>
-                        <p>Documentation, the JavaDoc API, examples and articles for Cayenne 4.0 can all be found here.</p>
+            
+            <article>
+                <section>
+                    
+	
+
+<P>Arguably the second most important function of DataContext (first is performing queries) is keeping track of changes made to the registered DataObjects. &quot;Registered&quot; is a keyword here - registering an object with DataContext is what gives this object its persistent qualities.</P>
+
+<H3><A name="DataObjectStateManagement-HowtoRegisteraDataObject"></A>How to Register a DataObject</H3>
+
+<P>Behind the scenes &quot;registering an object&quot; results in storing this object in a map using its ObjectId as a key, setting &quot;dataContext&quot; property of a DataObject to the current DataContext, and taking a snapshot of all persistent properties to be able to track later modifications. Objects can become &quot;registered&quot; in two ways:</P>
+
+<UL>
+	<LI>automatically when they are fetched via query API</LI>
+	<LI>explicitly for the newly created objects</LI>
+</UL>
+
+
+<P>Whenever a selecting query is executed by a DataContext, all fetched objects are automatically registered with this DataContext. On the other hand, newly created objects must be registered explicitly:</P>
+
+<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent">
+<PRE class="code-java"><SPAN class="code-keyword">import</SPAN> org.objectstyle.cayenne.access.DataContext;
+...
+DataContext context; <SPAN class="code-comment">// assume <SPAN class="code-keyword">this</SPAN> exists
+</SPAN>
+Artist artist = <SPAN class="code-keyword">new</SPAN> Artist();
+context.registerNewObject(artist);
+
+<SPAN class="code-comment">// after the line above is executed, artist object acquired <SPAN class="code-quote">&quot;persistent&quot;</SPAN> behavior
+</SPAN><SPAN class="code-comment">// and is said to be <SPAN class="code-quote">&quot;managed&quot;</SPAN> by DataContext</SPAN></PRE>
+</DIV></DIV>
+
+<P>This code can be simplified - object creation and registrations steps can be combined in one method call:</P>
+
+<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent">
+<PRE class="code-java"><SPAN class="code-keyword">import</SPAN> org.objectstyle.cayenne.access.DataContext;
+...
+DataContext context; <SPAN class="code-comment">// assume <SPAN class="code-keyword">this</SPAN> exists
+</SPAN>
+Artist artist = (Artist) context.newObject(Artist.class);</PRE>
+</DIV></DIV>
+
+<P>This method relies on the presence of a no-argument constructor in the DataObject class.</P>
+
+<H3><A name="DataObjectStateManagement-CheckingtheStateofRegisteredDataObjects"></A>Checking the State of Registered DataObjects</H3>
+
+<P>State transitions of DataObjects from persistence point of view are discussed in the &quot;Design&quot; chapter. State of each individual object is described by an integer constant obtained via a call to DataObject.getPeristenceState(). Allowed states are defined as static variables in PersistenceState class.</P>
+
+<P>When a new object is inserted to the DataContext as described above, it becomes &quot;NEW&quot;:</P>
+
+<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent">
+<PRE class="code-java"><SPAN class="code-keyword">import</SPAN> org.objectstyle.cayenne.access.DataContext;
+...
+DataContext context; <SPAN class="code-comment">// assume <SPAN class="code-keyword">this</SPAN> exists
+</SPAN>
+<SPAN class="code-comment">// artist will become PersistenceState.NEW
+</SPAN>Artist artist = (Artist) context.newObject(Artist.class);</PRE>
+</DIV></DIV>
+
+<P>When a DataContext is committed, such object becomes &quot;COMMITTED&quot;:</P>
+
+<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent">
+<PRE class="code-java"><SPAN class="code-comment">// artist will become PersistenceState.COMMITTED
+</SPAN>context.commitChanges();</PRE>
+</DIV></DIV>
+
+<P>When any of the attributes or relationships of the fetched or committed object are changed, such an object becomes MODIFIED:</P>
+
+<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent">
+<PRE class="code-java"><SPAN class="code-comment">// <SPAN class="code-keyword">this</SPAN> will change the object state to PersistenceState.MODIFIED
+</SPAN>artist.setName(<SPAN class="code-quote">&quot;NewName&quot;</SPAN>);</PRE>
+</DIV></DIV>
+
+<P>When a fetched or committed object is explicitly deleted from the DataContext, object becomes DELETED:</P>
+
+<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent">
+<PRE class="code-java"><SPAN class="code-comment">// <SPAN class="code-keyword">this</SPAN> will change the object state to PersistenceState.DELETED
+</SPAN>context.deleteObject(artist);</PRE>
+</DIV></DIV>
+
+<P>DataContext is said to have changes if it has one or more registered objects in a state PersistenceState.MODIFIED, PersistenceState.NEW or PersistenceState.DELETED. DataContext provides the following method to check if it has any changed objects:</P>
+
+<UL>
+	<LI><TT>public boolean hasChanges()</TT></LI>
+</UL>
+
+
+<P>There is also a way to obtain a list of changed objects in each one of the above states:</P>
+
+<UL>
+	<LI><TT>public java.util.Collection newObjects()</TT></LI>
+	<LI><TT>public java.util.Collection deletedObjects()</TT></LI>
+	<LI><TT>public java.util.Collection modifiedObjects()</TT></LI>
+</UL>
+
+
+<H3><A name="DataObjectStateManagement-SavingAllUncommittedDataObjects"></A>Saving All Uncommitted DataObjects</H3>
+
+<P>All of the uncommitted objects (&quot;uncommitted&quot; means &quot;new&quot;, &quot;modified&quot; or &quot;deleted&quot;) are saved (&quot;committed&quot;) to the database with a single method call on the DataContext:</P>
+
+<UL>
+	<LI><TT>public void commitChanges()</TT></LI>
+</UL>
+
+
+<P>Method commitChanges takes care of building correct SQL statements, generating primary keys and transactional behaviour. It roughly follows this scenario:</P>
+
+<UL>
+	<LI>Checks if there are any changed objects (also detecting &quot;phantom&quot; modifications, e.g. if an object property was &quot;updated&quot; with the equivalent value).</LI>
+	<LI>Validates &quot;dirty&quot; objects (for more information on validation see <A href="dataobject-validation.html" title="DataObject Validation">this page</A>).</LI>
+	<LI>Generates primary keys for any NEW objects that require autogenerated key.</LI>
+	<LI>Builds any needed INSERT, UPDATE, DELETE queries.</LI>
+	<LI>Starts the database transaction.</LI>
+	<LI>Runs the queries.</LI>
+	<LI>Commits transaction.</LI>
+	<LI>Changes all committed objects state to PersistenceState.COMMITTED.</LI>
+	<LI>Updates internally stored snapshots of the recently saved objects.</LI>
+</UL>
+
+
+
+<H3><A name="DataObjectStateManagement-UndoingAllUncommittedChanges"></A>Undoing All Uncommitted Changes</H3>
+
+<P>There is a way for the DataContext to undo all uncommitted changes:</P>
+
+<UL>
+	<LI><TT>public void rollbackChanges()</TT></LI>
+</UL>
+
+
+<P>This will restore the persistence state and the values of all registered objects to the values that objects had when they were fetched or the last commitChanges was executed. This effectively restores previously committed state of the object graph. Note that any NEW objects are unregistered from the context.</P>
 
-                    </section>
-                </article>
+                </section>
+            </article>
 
 	        </div>
 	    </div>
@@ -279,7 +398,7 @@
     </div>
 </footer>
     
-<script>
+<script type="application/javascript">
 var doNotTrack = false;
 if (!doNotTrack) {
 	(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
diff --git a/docs/4.0/index.html b/docs/1.2/dataobject-validation.html
similarity index 67%
copy from docs/4.0/index.html
copy to docs/1.2/dataobject-validation.html
index 2bbcbd2..b73721f 100644
--- a/docs/4.0/index.html
+++ b/docs/1.2/dataobject-validation.html
@@ -15,7 +15,7 @@
         <meta name="theme-color" content="#ffffff">
         <link rel="stylesheet" href="https://cayenne.apache.org/css/styles-e429186d1b.css"/>
         <script src="https://cayenne.apache.org/js/bundle-92aa692db7.js"></script>
-        <title>Apache Cayenne</title>
+        <title>DataObject Validation &middot; Apache Cayenne</title>
     </head>
     <body data-spy="scroll" data-target=".toc-side" class="cd-head"> 
 <header class="page-header">
@@ -92,10 +92,10 @@
                     <ul class="nav" role="tablist">
                         <li class="nav-item dropdown mw-100">
                             <a class="nav-link dropdown-toggle text-truncate" data-toggle="dropdown" href="#" role="button" aria-haspopup="true" aria-expanded="false">
-                                Cayenne Version 4.0
+                                Cayenne Version 1.2
                             </a>
                             <div class="dropdown-menu">
-                                <a class="dropdown-item" href="/docs/4.1/getting-started-guide/">Version 4.1 (Release Candidate)</a><a class="dropdown-item" href="/docs/4.0/getting-started-guide/">Version 4.0 (Stable)</a><a class="dropdown-item" href="/docs/3.1/getting-started-guide/">Version 3.1 (Aging)</a><a class="dropdown-item" href="/docs/3.0/api/">Version 3.0 (Legacy)</a><a class="dropdown-item" href="/docs/2.0/api/">Version 2.0 (Legacy)</a><a class="dropdown-item" href="/docs/1.2/ [...]
+                                <a class="dropdown-item" href="/docs/4.1/getting-started-guide/">Version 4.1 (Release Candidate)</a><a class="dropdown-item" href="/docs/4.0/getting-started-guide/">Version 4.0 (Stable)</a><a class="dropdown-item" href="/docs/3.1/getting-started-guide/">Version 3.1 (Aging)</a><a class="dropdown-item" href="/docs/3.0/cayenne-guide.html">Version 3.0 (Legacy)</a><a class="dropdown-item" href="/docs/2.0/user-guide.html">Version 2.0 (Legacy)</a><a class="dropdo [...]
                             </div>
                         </li>
                     </ul>
@@ -111,45 +111,90 @@
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/getting-started-guide/">Getting Started</a>
+                            <a class="cd-toc-link" href="/docs/1.2/user-guide.html">User Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/cayenne-guide/">Cayenne Guide</a>
+                            <a class="cd-toc-link" href="/docs/1.2/modeler-guide.html">Modeler Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/getting-started-rop/">Getting Started ROP</a>
+                            <a class="cd-toc-link" href="/docs/1.2/remote-object-persistence-guide.html">Remote Object Persistence Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
-                        
-                            <a class="cd-toc-link" href="/docs/4.0/upgrade-guide/">Upgrade Guide</a>
-                        
-                    </div>
-                    
-                    <div class="cd-toc-item">
-                        <a class="cd-toc-link" href="/docs/4.0/api/">JavaDoc</a>
+                        <a class="cd-toc-link" href="/docs/1.2/api/">JavaDoc</a>
                     </div>
                 </div>
             </div>
             
             <div class="col-12 col-lg-8 col-xl-9  py-3 pl-lg-5  cd-content">
 
-                <article>
-                    <header>
-                        <h1></h1>
-                    </header>
-                    <section>
-                        <p>Documentation, the JavaDoc API, examples and articles for Cayenne 4.0 can all be found here.</p>
+            
+            <article>
+                <section>
+                    
+	
+
+<P>DataObject implements a set of methods to validate its state. DataContext calls these methods before performing a commit. If validation fails, commit is aborted with ValidationException. There are a few clear benefits of validating DataObjects at the application level before committing them to the database:</P>
+
+<UL>
+	<LI>Cayenne can leverage ORM metadata (DataMap) to check for many standard error conditions.</LI>
+	<LI>Custom validation can be easily integrated into the business objects by overriding standard validation methods.</LI>
+	<LI>Validation failures can be tracked down to the individual objects and their properties, allowing creation of user-friendly, internationalized validation messages.</LI>
+	<LI>Relying on database validation for things like mandatory properties, etc., would result in errors that are meaningless or extremely hard to decode in the application context.</LI>
+	<LI>Application validation partially addresses shortcomings of databases that do not support real transactions (e.g. MySQL). Validation would trap the whole class of errors that would otherwise result in failure halfway through the commit, leaving database in inconsistent state.</LI>
+	<LI>Automating of the business objects validation takes away some burden from the UI that now has fewer things to track.</LI>
+</UL>
+
+
+
+<H3><A name="DataObjectValidation-ValidationAPI"></A>Validation API</H3>
+<P>Each DataObject participating in commit operation (i.e. those in state NEW, DELETED or MODIFIED , in other words &quot;non-committed&quot;) will be validated by DataContext's ObjectStore during commit processing. Depending on the non-committed object state, ObjectStore calls one of the methods described below (description of method behavior is provided for CayenneDataObject implementation):</P>
+
+<UL>
+	<LI>public void <B>validateForInsert</B>(ValidationResult validationResult)<BR>
+      public void <B>validateForUpdate</B>(ValidationResult validationResult)<BR>
+      Implementation internally calls <TT>validateForSave(..)</TT>. When overriding, in most cases developers should invoke &quot;super&quot;.</LI>
+	<LI>public void <B>validateForDelete</B>(ValidationResult validationResult)<BR>
+      This method does nothing by default and exists merely for overriding.</LI>
+	<LI>protected void <B>validateForSave</B>(ValidationResult validationResult)<BR>
+      This method only exists in CayenneDataObject (and not in DataObject). It is invoked internally from <TT>validateForInsert(..)</TT> and <TT>validateForUpdate(..)</TT>, performing some generic validation based on the DataMap information. This includes checking for nulls and for values that exceed their database size limitations. When overriding this method to include custom validation, developers should call &quot;super&quot; in most cases.</LI>
+</UL>
+
+
+<P>Custom validation method implementation would normally append any failures to the provided ValidationResult instance. After validating all non-committed objects, DataContext (or rather its ObjectStore) will check if the ValidationResult is not empty, and throw an exception if there is at least one failure. Typical custom validation method would look like that:</P>
+
+<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent">
+<PRE class="code-java"><SPAN class="code-keyword">public</SPAN> class Painting <SPAN class="code-keyword">extends</SPAN> _Painting {
+   ...
+   <SPAN class="code-keyword">protected</SPAN> void validateForSave(ValidationResult validationResult) {
+      <SPAN class="code-keyword">super</SPAN>.validateForSave(validationResult);
+     
+      <SPAN class="code-comment">// check business rules
+</SPAN>      <SPAN class="code-keyword">if</SPAN>(getEstimatedPrice().doubleValue() &lt;= 0.0) {
+         validationResult.addFailure(
+                <SPAN class="code-keyword">this</SPAN>, <SPAN class="code-comment">// source object of the failure
+</SPAN>                Painting.ESTIMATED_PRICE_PROPERTY, <SPAN class="code-comment">// failed property name
+</SPAN>                <SPAN class="code-quote">&quot;Painting price must be greater than zero.&quot;</SPAN>)); <SPAN class="code-comment">// error message  
+</SPAN>      }
+   }
+   ...
+}
+</PRE>
+</DIV></DIV>
+
+
+<H3><A name="DataObjectValidation-TurningValidationOn%2FOff"></A>Turning Validation On/Off</H3>
+<P>Whether DataContext performs validation at all depends on the value of its property <TT>validatingObjectsOnCommit</TT>. Calling <TT>isValidatingObjectsOnCommit()</TT> returns currently configured value. Default value (usually &quot;true&quot;) is propagated from the parent DataDomain when DataContext is created. This default value can be configured using CayenneModeler as described in <A href="configuring-object-validation.html" title="Configuring Object Validation">Configuring Object [...]
 
-                    </section>
-                </article>
+                </section>
+            </article>
 
 	        </div>
 	    </div>
@@ -279,7 +324,7 @@
     </div>
 </footer>
     
-<script>
+<script type="application/javascript">
 var doNotTrack = false;
 if (!doNotTrack) {
 	(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
diff --git a/docs/index.html b/docs/1.2/dataobjects-example.html
similarity index 70%
copy from docs/index.html
copy to docs/1.2/dataobjects-example.html
index b579c6b..836780d 100644
--- a/docs/index.html
+++ b/docs/1.2/dataobjects-example.html
@@ -15,7 +15,7 @@
         <meta name="theme-color" content="#ffffff">
         <link rel="stylesheet" href="https://cayenne.apache.org/css/styles-e429186d1b.css"/>
         <script src="https://cayenne.apache.org/js/bundle-92aa692db7.js"></script>
-        <title>Documentation &middot; Apache Cayenne</title>
+        <title>DataObjects Example &middot; Apache Cayenne</title>
     </head>
     <body data-spy="scroll" data-target=".toc-side" class="cd-head"> 
 <header class="page-header">
@@ -92,10 +92,10 @@
                     <ul class="nav" role="tablist">
                         <li class="nav-item dropdown mw-100">
                             <a class="nav-link dropdown-toggle text-truncate" data-toggle="dropdown" href="#" role="button" aria-haspopup="true" aria-expanded="false">
-                                Cayenne Version 4.1
+                                Cayenne Version 1.2
                             </a>
                             <div class="dropdown-menu">
-                                <a class="dropdown-item" href="/docs/4.1/getting-started-guide/">Version 4.1 (Release Candidate)</a><a class="dropdown-item" href="/docs/4.0/getting-started-guide/">Version 4.0 (Stable)</a><a class="dropdown-item" href="/docs/3.1/getting-started-guide/">Version 3.1 (Aging)</a><a class="dropdown-item" href="/docs/3.0/api/">Version 3.0 (Legacy)</a><a class="dropdown-item" href="/docs/2.0/api/">Version 2.0 (Legacy)</a><a class="dropdown-item" href="/docs/1.2/ [...]
+                                <a class="dropdown-item" href="/docs/4.1/getting-started-guide/">Version 4.1 (Release Candidate)</a><a class="dropdown-item" href="/docs/4.0/getting-started-guide/">Version 4.0 (Stable)</a><a class="dropdown-item" href="/docs/3.1/getting-started-guide/">Version 3.1 (Aging)</a><a class="dropdown-item" href="/docs/3.0/cayenne-guide.html">Version 3.0 (Legacy)</a><a class="dropdown-item" href="/docs/2.0/user-guide.html">Version 2.0 (Legacy)</a><a class="dropdo [...]
                             </div>
                         </li>
                     </ul>
@@ -111,51 +111,99 @@
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.1/getting-started-guide/">Getting Started</a>
+                            <a class="cd-toc-link" href="/docs/1.2/user-guide.html">User Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.1/cayenne-guide/">Cayenne Guide</a>
+                            <a class="cd-toc-link" href="/docs/1.2/modeler-guide.html">Modeler Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.1/getting-started-db-first/">Database First Tutorial</a>
+                            <a class="cd-toc-link" href="/docs/1.2/remote-object-persistence-guide.html">Remote Object Persistence Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
-                        
-                            <a class="cd-toc-link" href="/docs/4.1/getting-started-rop/">Getting Started ROP</a>
-                        
-                    </div>
-                    
-                    <div class="cd-toc-item">
-                        
-                            <a class="cd-toc-link" href="/docs/4.1/upgrade-guide/">Upgrade Guide</a>
-                        
-                    </div>
-                    
-                    <div class="cd-toc-item">
-                        <a class="cd-toc-link" href="/docs/4.1/api/">JavaDoc</a>
+                        <a class="cd-toc-link" href="/docs/1.2/api/">JavaDoc</a>
                     </div>
                 </div>
             </div>
             
             <div class="col-12 col-lg-8 col-xl-9  py-3 pl-lg-5  cd-content">
 
-                <article>
-                    <header>
-                        <h1>Documentation</h1>
-                    </header>
-                    <section>
-                        <p>Documentation, the JavaDoc API, examples and articles can all be found here.</p>
+            
+            <article>
+                <section>
+                    
+	
+
+<P>As discussed in <A href="dataobjects.html" title="DataObjects">DataContext</A> chapter, any changes made to the DataObjects via &quot;set*&quot; methods are synchronized with the database by calling <TT>DataContext.commitChanges</TT>. Here is an example showing how the <TT>Painting</TT> object is fetched, modified and saved back. The following modifications are performed: the price of the first retrieved painting is doubled, a new painting is added that belongs to the same artist as t [...]
+<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent">
+<PRE class="code-java"><SPAN class="code-keyword">import</SPAN> java.math.BigDecimal;
+<SPAN class="code-keyword">import</SPAN> java.util.List;
+<SPAN class="code-keyword">import</SPAN> org.objectstyle.cayenne.access.DataContext;
+<SPAN class="code-keyword">import</SPAN> org.objectstyle.cayenne.query.SelectQuery;
+<SPAN class="code-keyword">import</SPAN> org.objectstyle.cayenne.exp.Expression;
+<SPAN class="code-keyword">import</SPAN> org.objectstyle.cayenne.exp.ExpressionFactory;
+<SPAN class="code-keyword">import</SPAN> org.objectstyle.art.Painting;
+<SPAN class="code-keyword">import</SPAN> org.objectstyle.art.Artist;
+...
+
+<SPAN class="code-comment">// assume <SPAN class="code-keyword">this</SPAN> exists and initialized
+</SPAN>DataContext ctxt;
+...
+Expression e =
+  ExpressionFactory.greaterExp(<SPAN class="code-quote">&quot;estimatedPrice&quot;</SPAN>,
+                        <SPAN class="code-keyword">new</SPAN> BigDecimal(100000.0));
+SelectQuery q = <SPAN class="code-keyword">new</SPAN> SelectQuery(Painting.class, e);
+List realExpensiveArt = ctxt.performQuery(q);
+
+<SPAN class="code-keyword">if</SPAN>(realExpensiveArt.size() &gt; 0) {
+  Painting firstPainting = (Painting)realExpensiveArt.get(0);
+
+  <SPAN class="code-comment">// <SPAN class="code-object">double</SPAN> the price
+</SPAN>  <SPAN class="code-object">double</SPAN> oldPrice = firstPainting.getEstimatedPrice().doubleValue();
+  firstPainting.setEstimatedPrice(<SPAN class="code-keyword">new</SPAN> BigDecimal(oldPrice * 2.00));
+
+  <SPAN class="code-comment">// create <SPAN class="code-keyword">new</SPAN> painting and register it with DataContext
+</SPAN>  <SPAN class="code-comment">// <SPAN class="code-quote">&quot;Painting&quot;</SPAN> string is a name of ObjEntity in the DataMap
+</SPAN>  Painting newPainting = (Painting)ctxt.newObject(Painting.class);
+  newPainting.setPaintingTitle(<SPAN class="code-quote">&quot;Sunset as it is&quot;</SPAN>);
+
+  <SPAN class="code-comment">// price it as unreasonable as other paintings
+</SPAN>  newPainting.setEstimatedPrice(<SPAN class="code-keyword">new</SPAN> BigDecimal(5000000.0));
+
+  <SPAN class="code-comment">// get artist via relationship
+</SPAN>  Artist artist = firstPainting.getToArtist();
+
+  <SPAN class="code-comment">// assign <SPAN class="code-keyword">new</SPAN> painting to an artist
+</SPAN>  artist.addToPaintingArray(newPainting);
+
+  <SPAN class="code-comment">// save all the changes we've made so far
+</SPAN>  ctxt.commitChanges();
+}
+...
+</PRE>
+</DIV></DIV>
+<P>If SQL tracing is turned on, and depending on the preexisting data in the database, the following SQL statements might be printed to console during the commit phase:</P>
+<DIV class="preformatted panel" style="border-width: 1px;"><DIV class="preformattedContent panelContent">
+<PRE>[main 12-22 15:50:19] QueryLogger: --- will run 2 queries.
+[main 12-22 15:50:19] QueryLogger: INSERT INTO PAINTING (PAINTING_ID, PAINTING_TITLE, ESTIMATED_PRICE,
+ ARTIST_ID) VALUES (?, ?, ?, ?) [params: 200, 'Sunset as it is', 5000000, 10]
+[main 12-22 15:50:19] QueryLogger: === updated 1 row.
+[main 12-22 15:50:19] QueryLogger: UPDATE PAINTING SET ESTIMATED_PRICE = ? WHERE PAINTING_ID = ? 
+ [params: 2000000, 34]
+[main 12-22 15:50:19] QueryLogger: === updated 1 row.
+[main 12-22 15:50:19] QueryLogger: +++ transaction committed.
+</PRE>
+</DIV></DIV>
 
-                    </section>
-                </article>
+                </section>
+            </article>
 
 	        </div>
 	    </div>
@@ -285,7 +333,7 @@
     </div>
 </footer>
     
-<script>
+<script type="application/javascript">
 var doNotTrack = false;
 if (!doNotTrack) {
 	(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
diff --git a/docs/4.0/index.html b/docs/1.2/dataobjects.html
similarity index 84%
copy from docs/4.0/index.html
copy to docs/1.2/dataobjects.html
index 2bbcbd2..136fb8d 100644
--- a/docs/4.0/index.html
+++ b/docs/1.2/dataobjects.html
@@ -15,7 +15,7 @@
         <meta name="theme-color" content="#ffffff">
         <link rel="stylesheet" href="https://cayenne.apache.org/css/styles-e429186d1b.css"/>
         <script src="https://cayenne.apache.org/js/bundle-92aa692db7.js"></script>
-        <title>Apache Cayenne</title>
+        <title>DataObjects &middot; Apache Cayenne</title>
     </head>
     <body data-spy="scroll" data-target=".toc-side" class="cd-head"> 
 <header class="page-header">
@@ -92,10 +92,10 @@
                     <ul class="nav" role="tablist">
                         <li class="nav-item dropdown mw-100">
                             <a class="nav-link dropdown-toggle text-truncate" data-toggle="dropdown" href="#" role="button" aria-haspopup="true" aria-expanded="false">
-                                Cayenne Version 4.0
+                                Cayenne Version 1.2
                             </a>
                             <div class="dropdown-menu">
-                                <a class="dropdown-item" href="/docs/4.1/getting-started-guide/">Version 4.1 (Release Candidate)</a><a class="dropdown-item" href="/docs/4.0/getting-started-guide/">Version 4.0 (Stable)</a><a class="dropdown-item" href="/docs/3.1/getting-started-guide/">Version 3.1 (Aging)</a><a class="dropdown-item" href="/docs/3.0/api/">Version 3.0 (Legacy)</a><a class="dropdown-item" href="/docs/2.0/api/">Version 2.0 (Legacy)</a><a class="dropdown-item" href="/docs/1.2/ [...]
+                                <a class="dropdown-item" href="/docs/4.1/getting-started-guide/">Version 4.1 (Release Candidate)</a><a class="dropdown-item" href="/docs/4.0/getting-started-guide/">Version 4.0 (Stable)</a><a class="dropdown-item" href="/docs/3.1/getting-started-guide/">Version 3.1 (Aging)</a><a class="dropdown-item" href="/docs/3.0/cayenne-guide.html">Version 3.0 (Legacy)</a><a class="dropdown-item" href="/docs/2.0/user-guide.html">Version 2.0 (Legacy)</a><a class="dropdo [...]
                             </div>
                         </li>
                     </ul>
@@ -111,45 +111,45 @@
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/getting-started-guide/">Getting Started</a>
+                            <a class="cd-toc-link" href="/docs/1.2/user-guide.html">User Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/cayenne-guide/">Cayenne Guide</a>
+                            <a class="cd-toc-link" href="/docs/1.2/modeler-guide.html">Modeler Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/getting-started-rop/">Getting Started ROP</a>
+                            <a class="cd-toc-link" href="/docs/1.2/remote-object-persistence-guide.html">Remote Object Persistence Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
-                        
-                            <a class="cd-toc-link" href="/docs/4.0/upgrade-guide/">Upgrade Guide</a>
-                        
-                    </div>
-                    
-                    <div class="cd-toc-item">
-                        <a class="cd-toc-link" href="/docs/4.0/api/">JavaDoc</a>
+                        <a class="cd-toc-link" href="/docs/1.2/api/">JavaDoc</a>
                     </div>
                 </div>
             </div>
             
             <div class="col-12 col-lg-8 col-xl-9  py-3 pl-lg-5  cd-content">
 
-                <article>
-                    <header>
-                        <h1></h1>
-                    </header>
-                    <section>
-                        <p>Documentation, the JavaDoc API, examples and articles for Cayenne 4.0 can all be found here.</p>
+            
+            <article>
+                <section>
+                    
+	
+<P><A href="http://cayenne.apache.org/doc12/api/cayenne/org/objectstyle/cayenne/DataObject.html" class="external-link" rel="nofollow">DataObjects</A> (Cayenne persistent objects) are composed of attributes and relationships. Attributes are the simplest object properties (as in &quot;java bean properties&quot;) that can be stored in the columns in the database. Those are usually string, numeric, binary or date values. Another type of properties is relationships. They represent related Dat [...]
+
+<P>Queries discussed in the previous chapter are used to obtain the initial sets of DataObjects. After that a graph of persistent objects is navigated and modified via relationship methods, thus hiding the underlying relational storage complexity and giving application a nice object view of the relevant subset of the database data.</P>
+
+<P>Examples of working with attributes and relationships are given later in this chapter.</P>
+
+
 
-                    </section>
-                </article>
+                </section>
+            </article>
 
 	        </div>
 	    </div>
@@ -279,7 +279,7 @@
     </div>
 </footer>
     
-<script>
+<script type="application/javascript">
 var doNotTrack = false;
 if (!doNotTrack) {
 	(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
diff --git a/docs/4.0/index.html b/docs/1.2/dataobjectutils.html
similarity index 77%
copy from docs/4.0/index.html
copy to docs/1.2/dataobjectutils.html
index 2bbcbd2..e13f207 100644
--- a/docs/4.0/index.html
+++ b/docs/1.2/dataobjectutils.html
@@ -15,7 +15,7 @@
         <meta name="theme-color" content="#ffffff">
         <link rel="stylesheet" href="https://cayenne.apache.org/css/styles-e429186d1b.css"/>
         <script src="https://cayenne.apache.org/js/bundle-92aa692db7.js"></script>
-        <title>Apache Cayenne</title>
+        <title>DataObjectUtils &middot; Apache Cayenne</title>
     </head>
     <body data-spy="scroll" data-target=".toc-side" class="cd-head"> 
 <header class="page-header">
@@ -92,10 +92,10 @@
                     <ul class="nav" role="tablist">
                         <li class="nav-item dropdown mw-100">
                             <a class="nav-link dropdown-toggle text-truncate" data-toggle="dropdown" href="#" role="button" aria-haspopup="true" aria-expanded="false">
-                                Cayenne Version 4.0
+                                Cayenne Version 1.2
                             </a>
                             <div class="dropdown-menu">
-                                <a class="dropdown-item" href="/docs/4.1/getting-started-guide/">Version 4.1 (Release Candidate)</a><a class="dropdown-item" href="/docs/4.0/getting-started-guide/">Version 4.0 (Stable)</a><a class="dropdown-item" href="/docs/3.1/getting-started-guide/">Version 3.1 (Aging)</a><a class="dropdown-item" href="/docs/3.0/api/">Version 3.0 (Legacy)</a><a class="dropdown-item" href="/docs/2.0/api/">Version 2.0 (Legacy)</a><a class="dropdown-item" href="/docs/1.2/ [...]
+                                <a class="dropdown-item" href="/docs/4.1/getting-started-guide/">Version 4.1 (Release Candidate)</a><a class="dropdown-item" href="/docs/4.0/getting-started-guide/">Version 4.0 (Stable)</a><a class="dropdown-item" href="/docs/3.1/getting-started-guide/">Version 3.1 (Aging)</a><a class="dropdown-item" href="/docs/3.0/cayenne-guide.html">Version 3.0 (Legacy)</a><a class="dropdown-item" href="/docs/2.0/user-guide.html">Version 2.0 (Legacy)</a><a class="dropdo [...]
                             </div>
                         </li>
                     </ul>
@@ -111,45 +111,62 @@
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/getting-started-guide/">Getting Started</a>
+                            <a class="cd-toc-link" href="/docs/1.2/user-guide.html">User Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/cayenne-guide/">Cayenne Guide</a>
+                            <a class="cd-toc-link" href="/docs/1.2/modeler-guide.html">Modeler Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/getting-started-rop/">Getting Started ROP</a>
+                            <a class="cd-toc-link" href="/docs/1.2/remote-object-persistence-guide.html">Remote Object Persistence Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
-                        
-                            <a class="cd-toc-link" href="/docs/4.0/upgrade-guide/">Upgrade Guide</a>
-                        
-                    </div>
-                    
-                    <div class="cd-toc-item">
-                        <a class="cd-toc-link" href="/docs/4.0/api/">JavaDoc</a>
+                        <a class="cd-toc-link" href="/docs/1.2/api/">JavaDoc</a>
                     </div>
                 </div>
             </div>
             
             <div class="col-12 col-lg-8 col-xl-9  py-3 pl-lg-5  cd-content">
 
-                <article>
-                    <header>
-                        <h1></h1>
-                    </header>
-                    <section>
-                        <p>Documentation, the JavaDoc API, examples and articles for Cayenne 4.0 can all be found here.</p>
+            
+            <article>
+                <section>
+                    
+	
+
+<P>DataObjectUtils class provides an important and easy to use facility to obtain a primary key value from a DataObject and to locate a DataObject in the database for a known primary key. Both operations work in a generic fashion and do not require primary key to be an object property.</P>
+<DIV class="panelMacro"><TABLE class="warningMacro"><COLGROUP><COL width="24"><COL></COLGROUP><TR><TD valign="top"><img src="/docs/1.2/images/forbidden.gif" width="16" height="16" align="absmiddle" alt="" border="0"></TD><TD><B>Security Warning</B><BR>DataObjectUtils make it very easy to use a primary key value as a universal &quot;code&quot; for an object in web forms and URLs. This opens a potential security hole in the interface. If application code is not careful enough, a malicious  [...]
+<P>DataObjectUtils API is really straightforward and self-explanatory. It supports the most common case of a single column integer primary key, but also a more generic case of an arbitrary PK (that can also be compound, i.e. consist of more than one column). Here is an example:</P>
+
+<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent">
+<PRE class="code-java"><SPAN class="code-comment">// obtain PK to build a bookmarkable artist page URL
+</SPAN>Artist artist = ...;
+<SPAN class="code-object">int</SPAN> artistID = DataObjectUtils.intPKForObject(artist);
+<SPAN class="code-object">String</SPAN> artistURL = <SPAN class="code-quote">&quot;http:<SPAN class="code-comment">//www.example.org/catalogapp/artists?a=&quot;</SPAN> + artistID;</SPAN>
+</PRE>
+</DIV></DIV>
+
+<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent">
+<PRE class="code-java"><SPAN class="code-comment">// find an artist from URL parameters
+</SPAN>HttpServletRequest request = ...;
+DataContext context = ...;
+<SPAN class="code-object">String</SPAN> idString = request.getParameter(<SPAN class="code-quote">&quot;a&quot;</SPAN>);
+
+<SPAN class="code-keyword">if</SPAN>(idString != <SPAN class="code-keyword">null</SPAN>) {
+  Artist artist = DataObjectUtils.objectForPK(context, Artist.class, <SPAN class="code-object">Integer</SPAN>.parseInt(idString));
+}
+</PRE>
+</DIV></DIV>
 
-                    </section>
-                </article>
+                </section>
+            </article>
 
 	        </div>
 	    </div>
@@ -279,7 +296,7 @@
     </div>
 </footer>
     
-<script>
+<script type="application/javascript">
 var doNotTrack = false;
 if (!doNotTrack) {
 	(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
diff --git a/docs/4.0/index.html b/docs/1.2/datasource.html
similarity index 84%
copy from docs/4.0/index.html
copy to docs/1.2/datasource.html
index 2bbcbd2..3da2a1a 100644
--- a/docs/4.0/index.html
+++ b/docs/1.2/datasource.html
@@ -15,7 +15,7 @@
         <meta name="theme-color" content="#ffffff">
         <link rel="stylesheet" href="https://cayenne.apache.org/css/styles-e429186d1b.css"/>
         <script src="https://cayenne.apache.org/js/bundle-92aa692db7.js"></script>
-        <title>Apache Cayenne</title>
+        <title>DataSource &middot; Apache Cayenne</title>
     </head>
     <body data-spy="scroll" data-target=".toc-side" class="cd-head"> 
 <header class="page-header">
@@ -92,10 +92,10 @@
                     <ul class="nav" role="tablist">
                         <li class="nav-item dropdown mw-100">
                             <a class="nav-link dropdown-toggle text-truncate" data-toggle="dropdown" href="#" role="button" aria-haspopup="true" aria-expanded="false">
-                                Cayenne Version 4.0
+                                Cayenne Version 1.2
                             </a>
                             <div class="dropdown-menu">
-                                <a class="dropdown-item" href="/docs/4.1/getting-started-guide/">Version 4.1 (Release Candidate)</a><a class="dropdown-item" href="/docs/4.0/getting-started-guide/">Version 4.0 (Stable)</a><a class="dropdown-item" href="/docs/3.1/getting-started-guide/">Version 3.1 (Aging)</a><a class="dropdown-item" href="/docs/3.0/api/">Version 3.0 (Legacy)</a><a class="dropdown-item" href="/docs/2.0/api/">Version 2.0 (Legacy)</a><a class="dropdown-item" href="/docs/1.2/ [...]
+                                <a class="dropdown-item" href="/docs/4.1/getting-started-guide/">Version 4.1 (Release Candidate)</a><a class="dropdown-item" href="/docs/4.0/getting-started-guide/">Version 4.0 (Stable)</a><a class="dropdown-item" href="/docs/3.1/getting-started-guide/">Version 3.1 (Aging)</a><a class="dropdown-item" href="/docs/3.0/cayenne-guide.html">Version 3.0 (Legacy)</a><a class="dropdown-item" href="/docs/2.0/user-guide.html">Version 2.0 (Legacy)</a><a class="dropdo [...]
                             </div>
                         </li>
                     </ul>
@@ -111,45 +111,43 @@
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/getting-started-guide/">Getting Started</a>
+                            <a class="cd-toc-link" href="/docs/1.2/user-guide.html">User Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/cayenne-guide/">Cayenne Guide</a>
+                            <a class="cd-toc-link" href="/docs/1.2/modeler-guide.html">Modeler Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/getting-started-rop/">Getting Started ROP</a>
+                            <a class="cd-toc-link" href="/docs/1.2/remote-object-persistence-guide.html">Remote Object Persistence Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
-                        
-                            <a class="cd-toc-link" href="/docs/4.0/upgrade-guide/">Upgrade Guide</a>
-                        
-                    </div>
-                    
-                    <div class="cd-toc-item">
-                        <a class="cd-toc-link" href="/docs/4.0/api/">JavaDoc</a>
+                        <a class="cd-toc-link" href="/docs/1.2/api/">JavaDoc</a>
                     </div>
                 </div>
             </div>
             
             <div class="col-12 col-lg-8 col-xl-9  py-3 pl-lg-5  cd-content">
 
-                <article>
-                    <header>
-                        <h1></h1>
-                    </header>
-                    <section>
-                        <p>Documentation, the JavaDoc API, examples and articles for Cayenne 4.0 can all be found here.</p>
+            
+            <article>
+                <section>
+                    
+	
+
+<P><A href="datanode.html" title="DataNode">DataNode</A> obtains connections via a <TT>javax.sql.DataSource</TT>. If an application is deployed in a J2EE container, DataSource is normally provided by container <A href="using-jndi.html" title="Using JNDI">via JNDI</A>. For standalone applications (or if you don't want to use JNDI) Cayenne provides its own DataSource that includes connection pooling features. Whenever you select <TT>org.objectstyle.cayenne.conf.DriverDataSourceFactory</TT> [...]
+
+<P>Cayenne DataSource implementation is located in the <TT>org.objectstyle.cayenne.conn</TT> package and is fully independent from the rest of the framework. Since Cayenne DataSource is chosen automatically, users rarely need to know more details. One notable exception are applications requiring users to interactively <A href="../CAY/setting-database-connection.html" title="Setting Database Connection">enter database login information</A>. In this case you can write your own DataSource w [...]
+
 
-                    </section>
-                </article>
+                </section>
+            </article>
 
 	        </div>
 	    </div>
@@ -279,7 +277,7 @@
     </div>
 </footer>
     
-<script>
+<script type="application/javascript">
 var doNotTrack = false;
 if (!doNotTrack) {
 	(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
diff --git a/docs/4.0/index.html b/docs/1.2/dataview-concepts.html
similarity index 58%
copy from docs/4.0/index.html
copy to docs/1.2/dataview-concepts.html
index 2bbcbd2..b99c638 100644
--- a/docs/4.0/index.html
+++ b/docs/1.2/dataview-concepts.html
@@ -15,7 +15,7 @@
         <meta name="theme-color" content="#ffffff">
         <link rel="stylesheet" href="https://cayenne.apache.org/css/styles-e429186d1b.css"/>
         <script src="https://cayenne.apache.org/js/bundle-92aa692db7.js"></script>
-        <title>Apache Cayenne</title>
+        <title>DataView Concepts &middot; Apache Cayenne</title>
     </head>
     <body data-spy="scroll" data-target=".toc-side" class="cd-head"> 
 <header class="page-header">
@@ -92,10 +92,10 @@
                     <ul class="nav" role="tablist">
                         <li class="nav-item dropdown mw-100">
                             <a class="nav-link dropdown-toggle text-truncate" data-toggle="dropdown" href="#" role="button" aria-haspopup="true" aria-expanded="false">
-                                Cayenne Version 4.0
+                                Cayenne Version 1.2
                             </a>
                             <div class="dropdown-menu">
-                                <a class="dropdown-item" href="/docs/4.1/getting-started-guide/">Version 4.1 (Release Candidate)</a><a class="dropdown-item" href="/docs/4.0/getting-started-guide/">Version 4.0 (Stable)</a><a class="dropdown-item" href="/docs/3.1/getting-started-guide/">Version 3.1 (Aging)</a><a class="dropdown-item" href="/docs/3.0/api/">Version 3.0 (Legacy)</a><a class="dropdown-item" href="/docs/2.0/api/">Version 2.0 (Legacy)</a><a class="dropdown-item" href="/docs/1.2/ [...]
+                                <a class="dropdown-item" href="/docs/4.1/getting-started-guide/">Version 4.1 (Release Candidate)</a><a class="dropdown-item" href="/docs/4.0/getting-started-guide/">Version 4.0 (Stable)</a><a class="dropdown-item" href="/docs/3.1/getting-started-guide/">Version 3.1 (Aging)</a><a class="dropdown-item" href="/docs/3.0/cayenne-guide.html">Version 3.0 (Legacy)</a><a class="dropdown-item" href="/docs/2.0/user-guide.html">Version 2.0 (Legacy)</a><a class="dropdo [...]
                             </div>
                         </li>
                     </ul>
@@ -111,45 +111,85 @@
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/getting-started-guide/">Getting Started</a>
+                            <a class="cd-toc-link" href="/docs/1.2/user-guide.html">User Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/cayenne-guide/">Cayenne Guide</a>
+                            <a class="cd-toc-link" href="/docs/1.2/modeler-guide.html">Modeler Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/getting-started-rop/">Getting Started ROP</a>
+                            <a class="cd-toc-link" href="/docs/1.2/remote-object-persistence-guide.html">Remote Object Persistence Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
-                        
-                            <a class="cd-toc-link" href="/docs/4.0/upgrade-guide/">Upgrade Guide</a>
-                        
-                    </div>
-                    
-                    <div class="cd-toc-item">
-                        <a class="cd-toc-link" href="/docs/4.0/api/">JavaDoc</a>
+                        <a class="cd-toc-link" href="/docs/1.2/api/">JavaDoc</a>
                     </div>
                 </div>
             </div>
             
             <div class="col-12 col-lg-8 col-xl-9  py-3 pl-lg-5  cd-content">
 
-                <article>
-                    <header>
-                        <h1></h1>
-                    </header>
-                    <section>
-                        <p>Documentation, the JavaDoc API, examples and articles for Cayenne 4.0 can all be found here.</p>
+            
+            <article>
+                <section>
+                    
+	
+
+<H3><A name="DataViewConcepts-DataViewHierarchy"></A>DataView Hierarchy</H3>
+
+<P>The class diagram on the figure below captures the structure of Data Views and how they rely on the classes in the Cayenne subpackages. Single DataView object is the root of the hierarchy. It serves as a container for ObjEntityViews from one or more DataView configuration files. Just like entities in the DataMaps, ObjEntityViews can freely refer to each other whether they are defined in the same configuration file or different ones. The recommended practice is to store closely related [...]
+
+<P>The diagram also shows that DataView is associated with several classes such as EntityResolver, DataTypeSpec, FormatFactory. The instances of these classes participate in the process of loading actual Data View files.</P>
+
+<P>The main unit of any Data View is ObjEntityView. It always refers to an ObjEntity defined in one of the used DataMaps and defines various presentation rules for this entity. There can be several ObjEntityViews for an ObjEntity, each of them utilized by an application when appropriate. EntityResolver finds the corresponding ObjEntities by the names as the Data View is being loaded. Every ObjEntityView must have a name unique in the DataView context.</P>
+
+<P>ObjEntityViews contain fields called ObjEntityViewFields. They must be named uniquely within an ObjEntityView. The fields can be of two sorts. The regular &quot;nocalc&quot; fields reference ObjAttributes in the ObjEntity referred by the parent ObjEntityView. There may be several fields for a given ObjAttribute in the ObjEntityView. A field describes the following view parameters:</P>
+
+<UL>
+	<LI>How the related ObjAttribute should be rendered and edited.</LI>
+	<LI>The data type and the formats to use in the presentation layer.</LI>
+	<LI>The caption that is usually used to name a table column or to label an input control in a form.</LI>
+	<LI>Editability and visibility of the attribute</LI>
+	<LI>An order in which the fields appear as columns in a JTable or in a form with the preferred index.</LI>
+</UL>
+
+
+<P>The other type of ObjEntityViewFields is &quot;lookup&quot; fields. They point to the fields defined in other ObjEntityViews so the actual values to display, edit, or select from come from those referenced fields. Such a lookup field corresponds to an ObjRelationship with the ObjEntity referred by this its ObjEntityView as a source and the ObjEntity referred by the lookup ObjEntityView as a target instead of an ObjAttribute. Next the field identifies which lookup ObjEntityView and whi [...]
+<SPAN class="image-wrap" style=""><img src="/docs/1.2/images/format-factory.gif" style="border: 0px solid black"></SPAN></P>
+
+
+<H3><A name="DataViewConcepts-FieldDataTypes"></A>Field Data Types</H3>
+<P>Cayenne defines the mapping between several Java Class types and JDBC types. It is convenient to use and sufficient in many cases but there are all sorts of situations when one would like to define more specific data types to make use of, especially for the presentation purposes. In many cases when Integer is used as a flag you would like to map it to Boolean. Or you may have a Money type or Date type that holds only year, month, and day values, and so forth.</P>
+
+<P>ObjEntityViewFields address that by providing an easily extensible system of data types often used in the business applications. This system takes care of converting values back and forth between Cayenne data types and application specific data types. It relies on two classes DataTypeEnum and DataTypeSpec, both of them can be extended to define new types of any sorts. While the entire thing may seem redundant at the first glance, actually, it is a powerful concept that can save a lot  [...]
+
+<H3><A name="DataViewConcepts-FormatFactory"></A>FormatFactory</H3>
+<P>FormatFactory shown on the next figure provides the means to create instances of the edit and display formats used by ObjEntityViewFields. There are several formats defined in the java.text package. In addition the dataview library defines convenient MapFormat somewhat similar to java.text.ChoiceFormat. instead of formatting doubles by inclusion in range criterion as ChoiceFormat does it maps a set of objects of any type to string values. For example you can map Booleans to &quot;Sure [...]
+<SPAN class="image-wrap" style=""><img src="/docs/1.2/images/format-factory.gif" style="border: 0px solid black"></SPAN></P>
+
+
+<H3><A name="DataViewConcepts-CellRenderersandCellEditors"></A>CellRenderers and CellEditors</H3>
+<P>The following figure presents the utility class CellRenderers and several ready-to-use cell renderers for different types of ObjEntityViewFields. They are used in JTables, JLists, and JComboBoxes. The methods defined in the CellRenderers class will save your time when configuring a JTable to render values of the types available for use with ObjEntityViewFields<BR>
+<SPAN class="image-wrap" style=""><img src="/docs/1.2/images/cell-renderers.gif" style="border: 0px solid black"></SPAN></P>
+
+<P>The purpose of CellEditors is the same as that of CellRenderers. The editors are used when there is a need to edit data in JTables and such.<BR>
+<SPAN class="image-wrap" style=""><img src="/docs/1.2/images/cell-editors1.gif" style="border: 0px solid black"></SPAN></P>
+
+<P>The convenient notion of DataObjectList is defined in the library. It is a specialized container to store Cayenne DataObjects (usually of the same type). It fires events when modified and DOTableModel, DOListModel, DOComboBoxModel wrap it and being configured with an ObjEntityView / Field are handy to provide access to these data objects with JTables, JLists, and JComboBoxes. In fact, they make the visual components data aware.<BR>
+<SPAN class="image-wrap" style=""><img src="/docs/1.2/images/domodels.gif" style="border: 0px solid black"></SPAN></P>
+
+
+<H3><A name="DataViewConcepts-MiscellaneousFeatures"></A>Miscellaneous Features</H3>
+<P>One more useful feature is a centralized EventDispatcher within the DataView class. It is used by the fields to fire the events whenever their values are changed. Thus the ObjAttribute/ObjRelationship modifications can be easily propagated to all the listening components. </P>
 
-                    </section>
-                </article>
+                </section>
+            </article>
 
 	        </div>
 	    </div>
@@ -279,7 +319,7 @@
     </div>
 </footer>
     
-<script>
+<script type="application/javascript">
 var doNotTrack = false;
 if (!doNotTrack) {
 	(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
diff --git a/docs/4.0/index.html b/docs/1.2/dataviews-in-action.html
similarity index 71%
copy from docs/4.0/index.html
copy to docs/1.2/dataviews-in-action.html
index 2bbcbd2..b8f6f50 100644
--- a/docs/4.0/index.html
+++ b/docs/1.2/dataviews-in-action.html
@@ -15,7 +15,7 @@
         <meta name="theme-color" content="#ffffff">
         <link rel="stylesheet" href="https://cayenne.apache.org/css/styles-e429186d1b.css"/>
         <script src="https://cayenne.apache.org/js/bundle-92aa692db7.js"></script>
-        <title>Apache Cayenne</title>
+        <title>DataViews in Action &middot; Apache Cayenne</title>
     </head>
     <body data-spy="scroll" data-target=".toc-side" class="cd-head"> 
 <header class="page-header">
@@ -92,10 +92,10 @@
                     <ul class="nav" role="tablist">
                         <li class="nav-item dropdown mw-100">
                             <a class="nav-link dropdown-toggle text-truncate" data-toggle="dropdown" href="#" role="button" aria-haspopup="true" aria-expanded="false">
-                                Cayenne Version 4.0
+                                Cayenne Version 1.2
                             </a>
                             <div class="dropdown-menu">
-                                <a class="dropdown-item" href="/docs/4.1/getting-started-guide/">Version 4.1 (Release Candidate)</a><a class="dropdown-item" href="/docs/4.0/getting-started-guide/">Version 4.0 (Stable)</a><a class="dropdown-item" href="/docs/3.1/getting-started-guide/">Version 3.1 (Aging)</a><a class="dropdown-item" href="/docs/3.0/api/">Version 3.0 (Legacy)</a><a class="dropdown-item" href="/docs/2.0/api/">Version 2.0 (Legacy)</a><a class="dropdown-item" href="/docs/1.2/ [...]
+                                <a class="dropdown-item" href="/docs/4.1/getting-started-guide/">Version 4.1 (Release Candidate)</a><a class="dropdown-item" href="/docs/4.0/getting-started-guide/">Version 4.0 (Stable)</a><a class="dropdown-item" href="/docs/3.1/getting-started-guide/">Version 3.1 (Aging)</a><a class="dropdown-item" href="/docs/3.0/cayenne-guide.html">Version 3.0 (Legacy)</a><a class="dropdown-item" href="/docs/2.0/user-guide.html">Version 2.0 (Legacy)</a><a class="dropdo [...]
                             </div>
                         </li>
                     </ul>
@@ -111,45 +111,91 @@
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/getting-started-guide/">Getting Started</a>
+                            <a class="cd-toc-link" href="/docs/1.2/user-guide.html">User Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/cayenne-guide/">Cayenne Guide</a>
+                            <a class="cd-toc-link" href="/docs/1.2/modeler-guide.html">Modeler Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/getting-started-rop/">Getting Started ROP</a>
+                            <a class="cd-toc-link" href="/docs/1.2/remote-object-persistence-guide.html">Remote Object Persistence Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
-                        
-                            <a class="cd-toc-link" href="/docs/4.0/upgrade-guide/">Upgrade Guide</a>
-                        
-                    </div>
-                    
-                    <div class="cd-toc-item">
-                        <a class="cd-toc-link" href="/docs/4.0/api/">JavaDoc</a>
+                        <a class="cd-toc-link" href="/docs/1.2/api/">JavaDoc</a>
                     </div>
                 </div>
             </div>
             
             <div class="col-12 col-lg-8 col-xl-9  py-3 pl-lg-5  cd-content">
 
-                <article>
-                    <header>
-                        <h1></h1>
-                    </header>
-                    <section>
-                        <p>Documentation, the JavaDoc API, examples and articles for Cayenne 4.0 can all be found here.</p>
+            
+            <article>
+                <section>
+                    
+	
+
+<P>Here we illustrate the discussion of DataViews with configuration samples and code snippets. Cayenne project DTD file supports references to data view configuration files. This information is loaded into the Cayenne Configuration instance along with the DataDomain, DataNode, and DataMap entries. Since the DataView functionality is optional and would not be very useful in some deployment scenarios (server-side applications) the DataView configiuration itself is not loaded at the time o [...]
+<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent">
+<PRE class="code-java"><SPAN class="code-comment">//Assume, <SPAN class="code-keyword">this</SPAN> is your Cayenne Configuration instance.
+</SPAN>Configuration cayenneConfiguration = ...;
+
+<SPAN class="code-comment">//You will need to setup a Cayenne EntityResolver in your DataView
+</SPAN><SPAN class="code-comment">//For example you can retrieve it from the DataContext in use
+</SPAN><SPAN class="code-comment">//with dataContext.getEntityResolver();
+</SPAN><SPAN class="code-comment">//or construct your own composite one, spanning several Data Domains.
+</SPAN>EntityResolver entityResolver = ...;
+
+<SPAN class="code-comment">//Create <SPAN class="code-keyword">new</SPAN> DataView instance, and set its entityResolver
+</SPAN><SPAN class="code-comment">//*before* loading the actual configuration
+</SPAN>DataView dataView = <SPAN class="code-keyword">new</SPAN> DataView();
+dataView.setEntityResolver(entityResolver);
+
+<SPAN class="code-comment">//Load the configuration
+</SPAN>cayenneConfiguration.loadDataView(dataView);
+
+<SPAN class="code-comment">//Here we go. Our Data View is ready to be used in the application
+</SPAN><SPAN class="code-comment">//This way you can create several of them, completely separated <SPAN class="code-keyword">if</SPAN> needed.</SPAN>
+</PRE>
+</DIV></DIV>     
+
+<P>It is worth mentioning one instance of DataView serves to incorporate several Data View configurations saved in different files. Therefore it defines single namespace and easily resolves inter-configuration references among the ObjEntityViews</P>
+
+<P>Next, let us see how a Swing table model and JTable can be configured with our Data View to display and edit a list of data objects.</P>
+
+<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent">
+<PRE class="code-java">DataView dataView = ...;
+
+JTable featureTable = ...;
+ObjEntityView featureView = dataView.getObjEntityView(<SPAN class="code-quote">&quot;ProductFeatureView&quot;</SPAN>);
+
+<SPAN class="code-comment">// This is a descendant of javax.swing.table.AbstractTableModel
+</SPAN>DOTableModel tableModel = <SPAN class="code-keyword">new</SPAN> DOTableModel();
+tableModel.setView(featureView);
+
+<SPAN class="code-comment">// Retrieve a list of data objects (with SelectQuery, say)
+</SPAN><SPAN class="code-comment">// and initialize the model with it
+</SPAN>DataObjectList featureDataObjects = ...;
+tableModel.setDataObjects(matrixEntries);
+
+featureTable.setModel(tableModel);
+
+<SPAN class="code-comment">// set the apropriate TableCellRenderers and Editors
+</SPAN><SPAN class="code-keyword">new</SPAN> CellRenderers().installRenderers(featureTable);
+<SPAN class="code-keyword">new</SPAN> CellEditors().installEditors(featureTable);
+</PRE>
+</DIV></DIV>  
+
+<P>In fact, there is many more cool things you could do with DataViews to build your Cayenne enabled Swing rich client faster and cleaner, and separate the GUI related stuff from your domain logic defining the clear declarative rules telling the framework how to interprete, render, and edit the ObjEntities and DataObjects your application relies upon. </P>
 
-                    </section>
-                </article>
+                </section>
+            </article>
 
 	        </div>
 	    </div>
@@ -279,7 +325,7 @@
     </div>
 </footer>
     
-<script>
+<script type="application/javascript">
 var doNotTrack = false;
 if (!doNotTrack) {
 	(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
diff --git a/docs/4.0/index.html b/docs/1.2/dataviews.html
similarity index 81%
copy from docs/4.0/index.html
copy to docs/1.2/dataviews.html
index 2bbcbd2..1f14e98 100644
--- a/docs/4.0/index.html
+++ b/docs/1.2/dataviews.html
@@ -15,7 +15,7 @@
         <meta name="theme-color" content="#ffffff">
         <link rel="stylesheet" href="https://cayenne.apache.org/css/styles-e429186d1b.css"/>
         <script src="https://cayenne.apache.org/js/bundle-92aa692db7.js"></script>
-        <title>Apache Cayenne</title>
+        <title>DataViews &middot; Apache Cayenne</title>
     </head>
     <body data-spy="scroll" data-target=".toc-side" class="cd-head"> 
 <header class="page-header">
@@ -92,10 +92,10 @@
                     <ul class="nav" role="tablist">
                         <li class="nav-item dropdown mw-100">
                             <a class="nav-link dropdown-toggle text-truncate" data-toggle="dropdown" href="#" role="button" aria-haspopup="true" aria-expanded="false">
-                                Cayenne Version 4.0
+                                Cayenne Version 1.2
                             </a>
                             <div class="dropdown-menu">
-                                <a class="dropdown-item" href="/docs/4.1/getting-started-guide/">Version 4.1 (Release Candidate)</a><a class="dropdown-item" href="/docs/4.0/getting-started-guide/">Version 4.0 (Stable)</a><a class="dropdown-item" href="/docs/3.1/getting-started-guide/">Version 3.1 (Aging)</a><a class="dropdown-item" href="/docs/3.0/api/">Version 3.0 (Legacy)</a><a class="dropdown-item" href="/docs/2.0/api/">Version 2.0 (Legacy)</a><a class="dropdown-item" href="/docs/1.2/ [...]
+                                <a class="dropdown-item" href="/docs/4.1/getting-started-guide/">Version 4.1 (Release Candidate)</a><a class="dropdown-item" href="/docs/4.0/getting-started-guide/">Version 4.0 (Stable)</a><a class="dropdown-item" href="/docs/3.1/getting-started-guide/">Version 3.1 (Aging)</a><a class="dropdown-item" href="/docs/3.0/cayenne-guide.html">Version 3.0 (Legacy)</a><a class="dropdown-item" href="/docs/2.0/user-guide.html">Version 2.0 (Legacy)</a><a class="dropdo [...]
                             </div>
                         </li>
                     </ul>
@@ -111,45 +111,49 @@
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/getting-started-guide/">Getting Started</a>
+                            <a class="cd-toc-link" href="/docs/1.2/user-guide.html">User Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/cayenne-guide/">Cayenne Guide</a>
+                            <a class="cd-toc-link" href="/docs/1.2/modeler-guide.html">Modeler Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/getting-started-rop/">Getting Started ROP</a>
+                            <a class="cd-toc-link" href="/docs/1.2/remote-object-persistence-guide.html">Remote Object Persistence Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
-                        
-                            <a class="cd-toc-link" href="/docs/4.0/upgrade-guide/">Upgrade Guide</a>
-                        
-                    </div>
-                    
-                    <div class="cd-toc-item">
-                        <a class="cd-toc-link" href="/docs/4.0/api/">JavaDoc</a>
+                        <a class="cd-toc-link" href="/docs/1.2/api/">JavaDoc</a>
                     </div>
                 </div>
             </div>
             
             <div class="col-12 col-lg-8 col-xl-9  py-3 pl-lg-5  cd-content">
 
-                <article>
-                    <header>
-                        <h1></h1>
-                    </header>
-                    <section>
-                        <p>Documentation, the JavaDoc API, examples and articles for Cayenne 4.0 can all be found here.</p>
+            
+            <article>
+                <section>
+                    
+	
+
+<DIV class="panelMacro"><TABLE class="warningMacro"><COLGROUP><COL width="24"><COL></COLGROUP><TR><TD valign="top"><img src="/docs/1.2/images/forbidden.gif" width="16" height="16" align="absmiddle" alt="" border="0"></TD><TD>In the future versions of Cayenne DataViews will be split in a standalone package. Unless we find volunteers, this package won't be supported very well.</TD></TR></TABLE></DIV>
+
+<P>Cayenne takes care of managing persistence layer for all types of applications - web, rich client, command line, etc. With DataViews Cayenne extends into the area of integrating such persistent layer with Swing GUI.</P>
+
+<P>DataViews define various presentation parameters of the DataObjects in an XML format. Just like DataMaps are edited using CayenneModeler, DataViews are edited with <A href="dvmodeler-gui-tool.html" title="DVModeler GUI Tool">DVModeler GUI Tool</A>. Runtime DataView classes are a part of the main Cayenne JAR file.</P>
+
+<P>For manual editing of the DataViews, DataView DTD is included in the distribution. It is pretty small and the names are self-explanatory once you become familiar with the Data View structure described in this chapter.</P>
+
+<DIV class="panelMacro"><TABLE class="infoMacro"><COLGROUP><COL width="24"><COL></COLGROUP><TR><TD valign="top"><img src="/docs/1.2/images/information.gif" width="16" height="16" align="absmiddle" alt="" border="0"></TD><TD><B>JDOM Note</B><BR>DataViews use JDOM, so in addition to the jar files required by a regular Cayenne application, DataViews-based application must have access to JDOM jars. JDOM can be downloaded from <A href="http://www.jdom.org/" class="external-link" rel="nofollow [...]
+
 
-                    </section>
-                </article>
+                </section>
+            </article>
 
 	        </div>
 	    </div>
@@ -279,7 +283,7 @@
     </div>
 </footer>
     
-<script>
+<script type="application/javascript">
 var doNotTrack = false;
 if (!doNotTrack) {
 	(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
diff --git a/docs/4.0/index.html b/docs/1.2/dbadapter.html
similarity index 81%
copy from docs/4.0/index.html
copy to docs/1.2/dbadapter.html
index 2bbcbd2..cff1fe7 100644
--- a/docs/4.0/index.html
+++ b/docs/1.2/dbadapter.html
@@ -15,7 +15,7 @@
         <meta name="theme-color" content="#ffffff">
         <link rel="stylesheet" href="https://cayenne.apache.org/css/styles-e429186d1b.css"/>
         <script src="https://cayenne.apache.org/js/bundle-92aa692db7.js"></script>
-        <title>Apache Cayenne</title>
+        <title>DbAdapter &middot; Apache Cayenne</title>
     </head>
     <body data-spy="scroll" data-target=".toc-side" class="cd-head"> 
 <header class="page-header">
@@ -92,10 +92,10 @@
                     <ul class="nav" role="tablist">
                         <li class="nav-item dropdown mw-100">
                             <a class="nav-link dropdown-toggle text-truncate" data-toggle="dropdown" href="#" role="button" aria-haspopup="true" aria-expanded="false">
-                                Cayenne Version 4.0
+                                Cayenne Version 1.2
                             </a>
                             <div class="dropdown-menu">
-                                <a class="dropdown-item" href="/docs/4.1/getting-started-guide/">Version 4.1 (Release Candidate)</a><a class="dropdown-item" href="/docs/4.0/getting-started-guide/">Version 4.0 (Stable)</a><a class="dropdown-item" href="/docs/3.1/getting-started-guide/">Version 3.1 (Aging)</a><a class="dropdown-item" href="/docs/3.0/api/">Version 3.0 (Legacy)</a><a class="dropdown-item" href="/docs/2.0/api/">Version 2.0 (Legacy)</a><a class="dropdown-item" href="/docs/1.2/ [...]
+                                <a class="dropdown-item" href="/docs/4.1/getting-started-guide/">Version 4.1 (Release Candidate)</a><a class="dropdown-item" href="/docs/4.0/getting-started-guide/">Version 4.0 (Stable)</a><a class="dropdown-item" href="/docs/3.1/getting-started-guide/">Version 3.1 (Aging)</a><a class="dropdown-item" href="/docs/3.0/cayenne-guide.html">Version 3.0 (Legacy)</a><a class="dropdown-item" href="/docs/2.0/user-guide.html">Version 2.0 (Legacy)</a><a class="dropdo [...]
                             </div>
                         </li>
                     </ul>
@@ -111,45 +111,59 @@
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/getting-started-guide/">Getting Started</a>
+                            <a class="cd-toc-link" href="/docs/1.2/user-guide.html">User Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/cayenne-guide/">Cayenne Guide</a>
+                            <a class="cd-toc-link" href="/docs/1.2/modeler-guide.html">Modeler Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/getting-started-rop/">Getting Started ROP</a>
+                            <a class="cd-toc-link" href="/docs/1.2/remote-object-persistence-guide.html">Remote Object Persistence Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
-                        
-                            <a class="cd-toc-link" href="/docs/4.0/upgrade-guide/">Upgrade Guide</a>
-                        
-                    </div>
-                    
-                    <div class="cd-toc-item">
-                        <a class="cd-toc-link" href="/docs/4.0/api/">JavaDoc</a>
+                        <a class="cd-toc-link" href="/docs/1.2/api/">JavaDoc</a>
                     </div>
                 </div>
             </div>
             
             <div class="col-12 col-lg-8 col-xl-9  py-3 pl-lg-5  cd-content">
 
-                <article>
-                    <header>
-                        <h1></h1>
-                    </header>
-                    <section>
-                        <p>Documentation, the JavaDoc API, examples and articles for Cayenne 4.0 can all be found here.</p>
+            
+            <article>
+                <section>
+                    
+	
+
+<H3><A name="DbAdapter-PortabilityAcrossDatabases"></A>Portability Across Databases</H3>
+
+<P>The JDBC specification provides a great abstraction for relational database work. Still in practice some cross-database portability issues remain:</P>
+
+<UL>
+	<LI>Certain standard SQL features may not be implemented in some RDBMS.</LI>
+	<LI>Certain standard JDBC features may not be supported by some drivers (batch updates, auto incremented columns, etc.)</LI>
+	<LI>SQL syntax may vary across RDBMS.</LI>
+	<LI>BLOBs and CLOBs are handled differently by different vendors.</LI>
+	<LI>Data type definitions vary across RDBMS. Data types may have different names, size and precision.</LI>
+	<LI>Vendors provide their own extensions of SQL and JDBC functionality. Taking advantage of these extensions and creating portable code at the same time is not a trivial task.</LI>
+</UL>
+
+
+<P><TT>org.objectstyle.cayenne.dba.DbAdapter</TT> interface is used in Cayenne for an additional portability layer sitting on top of JDBC. There is one generic implementation of DbAdapter provided with Cayenne (JdbcAdapter) and also a subclass of JdbcAdapter for each database that is officially supported by Cayenne. Users can create their own adapter implementations as well (some hints are given <A href="../doc/custom-dbadapter.html" title="Custom DbAdapter">here</A>).</P>
+
+<H3><A name="DbAdapter-DbAdapterAutomaticDetection"></A>DbAdapter Automatic Detection</H3>
+
+<P>Usually Cayenne detects the type of the database dynamically and installs the right adapter in runtime. However a user can enforce a specific adapter class by entering its name using &quot;Adapter&quot; tab in the DataNode Editor panel in CayenneModeler. Alternatively an adapter can be set on a DataNode via a method call.</P>
+
 
-                    </section>
-                </article>
+                </section>
+            </article>
 
 	        </div>
 	    </div>
@@ -279,7 +293,7 @@
     </div>
 </footer>
     
-<script>
+<script type="application/javascript">
 var doNotTrack = false;
 if (!doNotTrack) {
 	(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
diff --git a/docs/4.0/index.html b/docs/1.2/delete-rules.html
similarity index 75%
copy from docs/4.0/index.html
copy to docs/1.2/delete-rules.html
index 2bbcbd2..d6635b1 100644
--- a/docs/4.0/index.html
+++ b/docs/1.2/delete-rules.html
@@ -15,7 +15,7 @@
         <meta name="theme-color" content="#ffffff">
         <link rel="stylesheet" href="https://cayenne.apache.org/css/styles-e429186d1b.css"/>
         <script src="https://cayenne.apache.org/js/bundle-92aa692db7.js"></script>
-        <title>Apache Cayenne</title>
+        <title>Delete Rules &middot; Apache Cayenne</title>
     </head>
     <body data-spy="scroll" data-target=".toc-side" class="cd-head"> 
 <header class="page-header">
@@ -92,10 +92,10 @@
                     <ul class="nav" role="tablist">
                         <li class="nav-item dropdown mw-100">
                             <a class="nav-link dropdown-toggle text-truncate" data-toggle="dropdown" href="#" role="button" aria-haspopup="true" aria-expanded="false">
-                                Cayenne Version 4.0
+                                Cayenne Version 1.2
                             </a>
                             <div class="dropdown-menu">
-                                <a class="dropdown-item" href="/docs/4.1/getting-started-guide/">Version 4.1 (Release Candidate)</a><a class="dropdown-item" href="/docs/4.0/getting-started-guide/">Version 4.0 (Stable)</a><a class="dropdown-item" href="/docs/3.1/getting-started-guide/">Version 3.1 (Aging)</a><a class="dropdown-item" href="/docs/3.0/api/">Version 3.0 (Legacy)</a><a class="dropdown-item" href="/docs/2.0/api/">Version 2.0 (Legacy)</a><a class="dropdown-item" href="/docs/1.2/ [...]
+                                <a class="dropdown-item" href="/docs/4.1/getting-started-guide/">Version 4.1 (Release Candidate)</a><a class="dropdown-item" href="/docs/4.0/getting-started-guide/">Version 4.0 (Stable)</a><a class="dropdown-item" href="/docs/3.1/getting-started-guide/">Version 3.1 (Aging)</a><a class="dropdown-item" href="/docs/3.0/cayenne-guide.html">Version 3.0 (Legacy)</a><a class="dropdown-item" href="/docs/2.0/user-guide.html">Version 2.0 (Legacy)</a><a class="dropdo [...]
                             </div>
                         </li>
                     </ul>
@@ -111,45 +111,61 @@
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/getting-started-guide/">Getting Started</a>
+                            <a class="cd-toc-link" href="/docs/1.2/user-guide.html">User Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/cayenne-guide/">Cayenne Guide</a>
+                            <a class="cd-toc-link" href="/docs/1.2/modeler-guide.html">Modeler Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/getting-started-rop/">Getting Started ROP</a>
+                            <a class="cd-toc-link" href="/docs/1.2/remote-object-persistence-guide.html">Remote Object Persistence Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
-                        
-                            <a class="cd-toc-link" href="/docs/4.0/upgrade-guide/">Upgrade Guide</a>
-                        
-                    </div>
-                    
-                    <div class="cd-toc-item">
-                        <a class="cd-toc-link" href="/docs/4.0/api/">JavaDoc</a>
+                        <a class="cd-toc-link" href="/docs/1.2/api/">JavaDoc</a>
                     </div>
                 </div>
             </div>
             
             <div class="col-12 col-lg-8 col-xl-9  py-3 pl-lg-5  cd-content">
 
-                <article>
-                    <header>
-                        <h1></h1>
-                    </header>
-                    <section>
-                        <p>Documentation, the JavaDoc API, examples and articles for Cayenne 4.0 can all be found here.</p>
+            
+            <article>
+                <section>
+                    
+	
+
+<H3><A name="DeleteRules-DeleteRules"></A>Delete Rules</H3>
+
+<P>One of the columns in the Modeler ObjRelationships panel is &quot;Delete Rule&quot;. It tells Cayenne what to do with related objects when a <B>source object</B> of the relationship is deleted. Cayenne will use this delete rule to perform cleanup of other objects after a given object was deleted from the graph. </P>
+
+<P>Default delete rule is <B>No Action</B>, meaning just that - when an object is deleted, no changes should happen to objects related to this object via a given relationship. Though this is a default, it is not very useful, and can lead to object graph corruption in many cases. It is developer responsibility to select a more meaningful delete rule. The choices are: &quot;Nullify&quot;, &quot;Cascade&quot; and &quot;Deny&quot;. Each one of them is explained below.</P>
+
+<UL>
+	<LI><B>Nullify Rule:</B> When a <B>source object</B> is deleted, any pointers from the <B>target object(s)</B> back to the deleted object will be reset to null. This presumes an existence of reverse ObjRelationship for a given ObjRelationship. If no such reverse relationship exist, &quot;Nullify&quot; rule has no effect. This rule should be used when target object(s) of relationship can exist without the source object and do not depend on it. Example: <TT>Employee.toDepartment</TT> rela [...]
+</UL>
+
+
+<UL>
+	<LI><B>Cascade Rule:</B> When a <B>source object</B> is deleted, any of the <B>target object(s)</B> will be deleted too. This may cause the whole tree of objects to be deleted with one command. This rule should be used when target object(s) of relationship can not exist without the source object. Example: <TT>Department.employeeArray</TT> relationship may use &quot;Cascade&quot; rule.</LI>
+</UL>
+
+
+<UL>
+	<LI><B>Deny Rule:</B> When a <B>source object</B> is being deleted, but it has at least one <B>target object</B> this rule would generate a runtime exception on delete attempt. This rule is usually a reflection of certain business rules in the application. Example: <TT>Department.employeeArray</TT> relationship may use &quot;Deny&quot; rule if there is an application requirement that explicitly states that non-empty departments can not be deleted.</LI>
+</UL>
+
+
+<DIV class="panelMacro"><TABLE class="noteMacro"><COLGROUP><COL width="24"><COL></COLGROUP><TR><TD valign="top"><img src="/docs/1.2/images/warning.gif" width="16" height="16" align="absmiddle" alt="" border="0"></TD><TD><B>Cayenne Delete Rules vs. DB Delete Rules</B><BR>Some databases allow to define delete rules logically similar to the rules described above. Cayenne rules differ from DB rules in that they deal with object graph instead of relational schema. Some changes to the object g [...]
 
-                    </section>
-                </article>
+                </section>
+            </article>
 
 	        </div>
 	    </div>
@@ -279,7 +295,7 @@
     </div>
 </footer>
     
-<script>
+<script type="application/javascript">
 var doNotTrack = false;
 if (!doNotTrack) {
 	(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
diff --git a/docs/4.0/index.html b/docs/1.2/deleting-objects.html
similarity index 75%
copy from docs/4.0/index.html
copy to docs/1.2/deleting-objects.html
index 2bbcbd2..9b4a6b4 100644
--- a/docs/4.0/index.html
+++ b/docs/1.2/deleting-objects.html
@@ -15,7 +15,7 @@
         <meta name="theme-color" content="#ffffff">
         <link rel="stylesheet" href="https://cayenne.apache.org/css/styles-e429186d1b.css"/>
         <script src="https://cayenne.apache.org/js/bundle-92aa692db7.js"></script>
-        <title>Apache Cayenne</title>
+        <title>Deleting Objects &middot; Apache Cayenne</title>
     </head>
     <body data-spy="scroll" data-target=".toc-side" class="cd-head"> 
 <header class="page-header">
@@ -92,10 +92,10 @@
                     <ul class="nav" role="tablist">
                         <li class="nav-item dropdown mw-100">
                             <a class="nav-link dropdown-toggle text-truncate" data-toggle="dropdown" href="#" role="button" aria-haspopup="true" aria-expanded="false">
-                                Cayenne Version 4.0
+                                Cayenne Version 1.2
                             </a>
                             <div class="dropdown-menu">
-                                <a class="dropdown-item" href="/docs/4.1/getting-started-guide/">Version 4.1 (Release Candidate)</a><a class="dropdown-item" href="/docs/4.0/getting-started-guide/">Version 4.0 (Stable)</a><a class="dropdown-item" href="/docs/3.1/getting-started-guide/">Version 3.1 (Aging)</a><a class="dropdown-item" href="/docs/3.0/api/">Version 3.0 (Legacy)</a><a class="dropdown-item" href="/docs/2.0/api/">Version 2.0 (Legacy)</a><a class="dropdown-item" href="/docs/1.2/ [...]
+                                <a class="dropdown-item" href="/docs/4.1/getting-started-guide/">Version 4.1 (Release Candidate)</a><a class="dropdown-item" href="/docs/4.0/getting-started-guide/">Version 4.0 (Stable)</a><a class="dropdown-item" href="/docs/3.1/getting-started-guide/">Version 3.1 (Aging)</a><a class="dropdown-item" href="/docs/3.0/cayenne-guide.html">Version 3.0 (Legacy)</a><a class="dropdown-item" href="/docs/2.0/user-guide.html">Version 2.0 (Legacy)</a><a class="dropdo [...]
                             </div>
                         </li>
                     </ul>
@@ -111,45 +111,79 @@
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/getting-started-guide/">Getting Started</a>
+                            <a class="cd-toc-link" href="/docs/1.2/user-guide.html">User Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/cayenne-guide/">Cayenne Guide</a>
+                            <a class="cd-toc-link" href="/docs/1.2/modeler-guide.html">Modeler Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/getting-started-rop/">Getting Started ROP</a>
+                            <a class="cd-toc-link" href="/docs/1.2/remote-object-persistence-guide.html">Remote Object Persistence Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
-                        
-                            <a class="cd-toc-link" href="/docs/4.0/upgrade-guide/">Upgrade Guide</a>
-                        
-                    </div>
-                    
-                    <div class="cd-toc-item">
-                        <a class="cd-toc-link" href="/docs/4.0/api/">JavaDoc</a>
+                        <a class="cd-toc-link" href="/docs/1.2/api/">JavaDoc</a>
                     </div>
                 </div>
             </div>
             
             <div class="col-12 col-lg-8 col-xl-9  py-3 pl-lg-5  cd-content">
 
-                <article>
-                    <header>
-                        <h1></h1>
-                    </header>
-                    <section>
-                        <p>Documentation, the JavaDoc API, examples and articles for Cayenne 4.0 can all be found here.</p>
+            
+            <article>
+                <section>
+                    
+	
+
+<P>As discussed before, an object must be deleted in the DataContext to trigger a removal of the corresponding row from the database on commit. There are few simple ways to delete individual objects and collections of objects. Quiet naturally delete operation changes object state to PersistenceState.DELETED. However there maybe other consequences of such operation for the overall object graph. Such consequences are controlled via <A href="delete-rules.html" title="Delete Rules">Delete Ru [...]
+
+<H5><A name="DeletingObjects-Deletingasingleobject"></A>Deleting a single object</H5>
+<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent">
+<PRE class="code-java">DataContext context = ...;
+Artist artist = ....;
+
+<SPAN class="code-comment">// <SPAN class="code-keyword">this</SPAN> will trigger delete rules <SPAN class="code-keyword">for</SPAN> artist, <SPAN class="code-keyword">if</SPAN> any
+</SPAN>context.deleteObject(artist);
+</PRE>
+</DIV></DIV>
+<H5><A name="DeletingObjects-Deletingacollectionofobjects"></A>Deleting a collection of objects</H5>
+<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent">
+<PRE class="code-java">DataContext context = ...;
+Artist artist = ....;
+
+context.deleteObjects(artist.getPaintings());
+</PRE>
+</DIV></DIV>
+<H5><A name="DeletingObjects-DeletinginanIterator"></A>Deleting in an Iterator</H5>
+<P>This case can be complicated if an iteration is performed over a relationship list and an object being deleted has a nullify delete rule. Such combination may result in ConcurrencyModificationExceptions as collection underlying the iterator is being modified. If ALL objects in the collection have to be deleted, use &quot;deleteObjects()&quot; method shown above - it will do the right thing. If only a subset of collection objects has to be deleted, you can use the following technique:</P>
+
+<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent">
+<PRE class="code-java">DataContext context = ...;
+Artist artist = ....;
+
+Iterator it = artist.getPaintings().iterator();
+<SPAN class="code-keyword">while</SPAN>(it.hasNext()) {
+   DataObject object = it.next();
+   
+   <SPAN class="code-keyword">if</SPAN>(some_condition) {
+      <SPAN class="code-comment">// jump ahead of the delete rule and unset the relationship
+</SPAN>      it.remove();
+   
+      <SPAN class="code-comment">// now <SPAN class="code-keyword">do</SPAN> the actual delete
+</SPAN>      context.deleteObject(object); 
+   }
+}
+</PRE>
+</DIV></DIV>
 
-                    </section>
-                </article>
+                </section>
+            </article>
 
 	        </div>
 	    </div>
@@ -279,7 +313,7 @@
     </div>
 </footer>
     
-<script>
+<script type="application/javascript">
 var doNotTrack = false;
 if (!doNotTrack) {
 	(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
diff --git a/docs/4.0/index.html b/docs/1.2/deployment-with-ant.html
similarity index 87%
copy from docs/4.0/index.html
copy to docs/1.2/deployment-with-ant.html
index 2bbcbd2..4c6f96c 100644
--- a/docs/4.0/index.html
+++ b/docs/1.2/deployment-with-ant.html
@@ -15,7 +15,7 @@
         <meta name="theme-color" content="#ffffff">
         <link rel="stylesheet" href="https://cayenne.apache.org/css/styles-e429186d1b.css"/>
         <script src="https://cayenne.apache.org/js/bundle-92aa692db7.js"></script>
-        <title>Apache Cayenne</title>
+        <title>Deployment with Ant &middot; Apache Cayenne</title>
     </head>
     <body data-spy="scroll" data-target=".toc-side" class="cd-head"> 
 <header class="page-header">
@@ -92,10 +92,10 @@
                     <ul class="nav" role="tablist">
                         <li class="nav-item dropdown mw-100">
                             <a class="nav-link dropdown-toggle text-truncate" data-toggle="dropdown" href="#" role="button" aria-haspopup="true" aria-expanded="false">
-                                Cayenne Version 4.0
+                                Cayenne Version 1.2
                             </a>
                             <div class="dropdown-menu">
-                                <a class="dropdown-item" href="/docs/4.1/getting-started-guide/">Version 4.1 (Release Candidate)</a><a class="dropdown-item" href="/docs/4.0/getting-started-guide/">Version 4.0 (Stable)</a><a class="dropdown-item" href="/docs/3.1/getting-started-guide/">Version 3.1 (Aging)</a><a class="dropdown-item" href="/docs/3.0/api/">Version 3.0 (Legacy)</a><a class="dropdown-item" href="/docs/2.0/api/">Version 2.0 (Legacy)</a><a class="dropdown-item" href="/docs/1.2/ [...]
+                                <a class="dropdown-item" href="/docs/4.1/getting-started-guide/">Version 4.1 (Release Candidate)</a><a class="dropdown-item" href="/docs/4.0/getting-started-guide/">Version 4.0 (Stable)</a><a class="dropdown-item" href="/docs/3.1/getting-started-guide/">Version 3.1 (Aging)</a><a class="dropdown-item" href="/docs/3.0/cayenne-guide.html">Version 3.0 (Legacy)</a><a class="dropdown-item" href="/docs/2.0/user-guide.html">Version 2.0 (Legacy)</a><a class="dropdo [...]
                             </div>
                         </li>
                     </ul>
@@ -111,45 +111,48 @@
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/getting-started-guide/">Getting Started</a>
+                            <a class="cd-toc-link" href="/docs/1.2/user-guide.html">User Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/cayenne-guide/">Cayenne Guide</a>
+                            <a class="cd-toc-link" href="/docs/1.2/modeler-guide.html">Modeler Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/getting-started-rop/">Getting Started ROP</a>
+                            <a class="cd-toc-link" href="/docs/1.2/remote-object-persistence-guide.html">Remote Object Persistence Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
-                        
-                            <a class="cd-toc-link" href="/docs/4.0/upgrade-guide/">Upgrade Guide</a>
-                        
-                    </div>
-                    
-                    <div class="cd-toc-item">
-                        <a class="cd-toc-link" href="/docs/4.0/api/">JavaDoc</a>
+                        <a class="cd-toc-link" href="/docs/1.2/api/">JavaDoc</a>
                     </div>
                 </div>
             </div>
             
             <div class="col-12 col-lg-8 col-xl-9  py-3 pl-lg-5  cd-content">
 
-                <article>
-                    <header>
-                        <h1></h1>
-                    </header>
-                    <section>
-                        <p>Documentation, the JavaDoc API, examples and articles for Cayenne 4.0 can all be found here.</p>
+            
+            <article>
+                <section>
+                    
+	
+
+<P>There is a number of cases when it is highly desirable to automate changing of Cayenne configuration files, including cayenne.xml and driver information files:</P>
+
+<UL>
+	<LI>Changing connection information when porting an application from one environment to another: Deployment environment uses different information for the database connections from what was used in development.</LI>
+	<LI>Deployment of Cayenne libraries: Third party Cayenne libraries may contain DataMaps and business classes, but they normally do not have cayenne.xml file, since ultimate deployment configuration is unknown when the library is created.</LI>
+</UL>
+
+
+<P>Cayenne provides an Ant task called cdeploy that takes care of such things. More information on cdeploy is available <A href="cdeploy.html" title="cdeploy">here</A>.</P>
 
-                    </section>
-                </article>
+                </section>
+            </article>
 
 	        </div>
 	    </div>
@@ -279,7 +282,7 @@
     </div>
 </footer>
     
-<script>
+<script type="application/javascript">
 var doNotTrack = false;
 if (!doNotTrack) {
 	(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
diff --git a/docs/4.0/index.html b/docs/1.2/deployment.html
similarity index 84%
copy from docs/4.0/index.html
copy to docs/1.2/deployment.html
index 2bbcbd2..944165b 100644
--- a/docs/4.0/index.html
+++ b/docs/1.2/deployment.html
@@ -15,7 +15,7 @@
         <meta name="theme-color" content="#ffffff">
         <link rel="stylesheet" href="https://cayenne.apache.org/css/styles-e429186d1b.css"/>
         <script src="https://cayenne.apache.org/js/bundle-92aa692db7.js"></script>
-        <title>Apache Cayenne</title>
+        <title>Deployment &middot; Apache Cayenne</title>
     </head>
     <body data-spy="scroll" data-target=".toc-side" class="cd-head"> 
 <header class="page-header">
@@ -92,10 +92,10 @@
                     <ul class="nav" role="tablist">
                         <li class="nav-item dropdown mw-100">
                             <a class="nav-link dropdown-toggle text-truncate" data-toggle="dropdown" href="#" role="button" aria-haspopup="true" aria-expanded="false">
-                                Cayenne Version 4.0
+                                Cayenne Version 1.2
                             </a>
                             <div class="dropdown-menu">
-                                <a class="dropdown-item" href="/docs/4.1/getting-started-guide/">Version 4.1 (Release Candidate)</a><a class="dropdown-item" href="/docs/4.0/getting-started-guide/">Version 4.0 (Stable)</a><a class="dropdown-item" href="/docs/3.1/getting-started-guide/">Version 3.1 (Aging)</a><a class="dropdown-item" href="/docs/3.0/api/">Version 3.0 (Legacy)</a><a class="dropdown-item" href="/docs/2.0/api/">Version 2.0 (Legacy)</a><a class="dropdown-item" href="/docs/1.2/ [...]
+                                <a class="dropdown-item" href="/docs/4.1/getting-started-guide/">Version 4.1 (Release Candidate)</a><a class="dropdown-item" href="/docs/4.0/getting-started-guide/">Version 4.0 (Stable)</a><a class="dropdown-item" href="/docs/3.1/getting-started-guide/">Version 3.1 (Aging)</a><a class="dropdown-item" href="/docs/3.0/cayenne-guide.html">Version 3.0 (Legacy)</a><a class="dropdown-item" href="/docs/2.0/user-guide.html">Version 2.0 (Legacy)</a><a class="dropdo [...]
                             </div>
                         </li>
                     </ul>
@@ -111,45 +111,53 @@
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/getting-started-guide/">Getting Started</a>
+                            <a class="cd-toc-link" href="/docs/1.2/user-guide.html">User Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/cayenne-guide/">Cayenne Guide</a>
+                            <a class="cd-toc-link" href="/docs/1.2/modeler-guide.html">Modeler Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/getting-started-rop/">Getting Started ROP</a>
+                            <a class="cd-toc-link" href="/docs/1.2/remote-object-persistence-guide.html">Remote Object Persistence Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
-                        
-                            <a class="cd-toc-link" href="/docs/4.0/upgrade-guide/">Upgrade Guide</a>
-                        
-                    </div>
-                    
-                    <div class="cd-toc-item">
-                        <a class="cd-toc-link" href="/docs/4.0/api/">JavaDoc</a>
+                        <a class="cd-toc-link" href="/docs/1.2/api/">JavaDoc</a>
                     </div>
                 </div>
             </div>
             
             <div class="col-12 col-lg-8 col-xl-9  py-3 pl-lg-5  cd-content">
 
-                <article>
-                    <header>
-                        <h1></h1>
-                    </header>
-                    <section>
-                        <p>Documentation, the JavaDoc API, examples and articles for Cayenne 4.0 can all be found here.</p>
+            
+            <article>
+                <section>
+                    
+	
+
+<P>Cayenne application deployment is about configuring the application so that at runtime it can find a main project file (cayenne.xml) and associated resources, such as DataMap and DataNode XML files.</P>
+
+<P>The central point in Cayenne deployment is the <A href="http://objectstyle.org/cayenne/api/cayenne/org/objectstyle/cayenne/conf/Configuration.html" class="external-link" rel="nofollow">Configuration</A> class. It locates and loads all the mapping and configuration information required for Cayenne at runtime. By default Configuration uses a singleton model, i.e. normally there is only one instance of Configuration (or a subclass) that exists in the application. This shared instance can [...]
+<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent">
+<PRE class="code-java"><SPAN class="code-keyword">import</SPAN> org.objectstyle.cayenne.conf.Configuration;
+<SPAN class="code-keyword">import</SPAN> org.objectstyle.cayenne.access.DataDomain;
+...
+Configuration conf = Configuration.getSharedConfiguration();
+DataDomain domain = conf.getDomain();
+</PRE>
+</DIV></DIV>
+<P>As discussed in the following chapters Configuration works behind the scenes and users rarely care about it. Application code is normally only concered with obtaining a DataContext.</P>
+
+
 
-                    </section>
-                </article>
+                </section>
+            </article>
 
 	        </div>
 	    </div>
@@ -279,7 +287,7 @@
     </div>
 </footer>
     
-<script>
+<script type="application/javascript">
 var doNotTrack = false;
 if (!doNotTrack) {
 	(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
diff --git a/docs/4.0/index.html b/docs/1.2/design.html
similarity index 84%
copy from docs/4.0/index.html
copy to docs/1.2/design.html
index 2bbcbd2..7d23120 100644
--- a/docs/4.0/index.html
+++ b/docs/1.2/design.html
@@ -15,7 +15,7 @@
         <meta name="theme-color" content="#ffffff">
         <link rel="stylesheet" href="https://cayenne.apache.org/css/styles-e429186d1b.css"/>
         <script src="https://cayenne.apache.org/js/bundle-92aa692db7.js"></script>
-        <title>Apache Cayenne</title>
+        <title>Design &middot; Apache Cayenne</title>
     </head>
     <body data-spy="scroll" data-target=".toc-side" class="cd-head"> 
 <header class="page-header">
@@ -92,10 +92,10 @@
                     <ul class="nav" role="tablist">
                         <li class="nav-item dropdown mw-100">
                             <a class="nav-link dropdown-toggle text-truncate" data-toggle="dropdown" href="#" role="button" aria-haspopup="true" aria-expanded="false">
-                                Cayenne Version 4.0
+                                Cayenne Version 1.2
                             </a>
                             <div class="dropdown-menu">
-                                <a class="dropdown-item" href="/docs/4.1/getting-started-guide/">Version 4.1 (Release Candidate)</a><a class="dropdown-item" href="/docs/4.0/getting-started-guide/">Version 4.0 (Stable)</a><a class="dropdown-item" href="/docs/3.1/getting-started-guide/">Version 3.1 (Aging)</a><a class="dropdown-item" href="/docs/3.0/api/">Version 3.0 (Legacy)</a><a class="dropdown-item" href="/docs/2.0/api/">Version 2.0 (Legacy)</a><a class="dropdown-item" href="/docs/1.2/ [...]
+                                <a class="dropdown-item" href="/docs/4.1/getting-started-guide/">Version 4.1 (Release Candidate)</a><a class="dropdown-item" href="/docs/4.0/getting-started-guide/">Version 4.0 (Stable)</a><a class="dropdown-item" href="/docs/3.1/getting-started-guide/">Version 3.1 (Aging)</a><a class="dropdown-item" href="/docs/3.0/cayenne-guide.html">Version 3.0 (Legacy)</a><a class="dropdown-item" href="/docs/2.0/user-guide.html">Version 2.0 (Legacy)</a><a class="dropdo [...]
                             </div>
                         </li>
                     </ul>
@@ -111,45 +111,53 @@
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/getting-started-guide/">Getting Started</a>
+                            <a class="cd-toc-link" href="/docs/1.2/user-guide.html">User Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/cayenne-guide/">Cayenne Guide</a>
+                            <a class="cd-toc-link" href="/docs/1.2/modeler-guide.html">Modeler Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/getting-started-rop/">Getting Started ROP</a>
+                            <a class="cd-toc-link" href="/docs/1.2/remote-object-persistence-guide.html">Remote Object Persistence Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
-                        
-                            <a class="cd-toc-link" href="/docs/4.0/upgrade-guide/">Upgrade Guide</a>
-                        
-                    </div>
-                    
-                    <div class="cd-toc-item">
-                        <a class="cd-toc-link" href="/docs/4.0/api/">JavaDoc</a>
+                        <a class="cd-toc-link" href="/docs/1.2/api/">JavaDoc</a>
                     </div>
                 </div>
             </div>
             
             <div class="col-12 col-lg-8 col-xl-9  py-3 pl-lg-5  cd-content">
 
-                <article>
-                    <header>
-                        <h1></h1>
-                    </header>
-                    <section>
-                        <p>Documentation, the JavaDoc API, examples and articles for Cayenne 4.0 can all be found here.</p>
+            
+            <article>
+                <section>
+                    
+	
+
+<P>This chapter discusses the architecture of the core Cayenne framework. It only deals with the runtime operation of the object-relational persistence layer. <A href="modeler-guide.html" title="Modeler Guide">Mapping procedures</A> and <A href="remote-object-persistence-guide.html" title="Remote Object Persistence Guide">remote object persistence</A> are discussed elsewhere. The information below is not strictly required to start using Cayenne, so new users can skip it initially and com [...]
+
+<P>The following topics are discssued:</P>
+
+<UL>
+	<LI><A href="cayenne-contract.html" title="Cayenne Contract">Contract between persistent objects and Cayenne</A></LI>
+	<LI><A href="persistent-object-lifecycle.html" title="Persistent Object Lifecycle">Persistent object lifecycle</A></LI>
+	<LI><A href="runtime-components.html" title="Runtime Components">Runtime Components</A></LI>
+	<LI><A href="understanding-transactions.html" title="Understanding Transactions">Transactions</A></LI>
+	<LI><A href="primary-key-generation.html" title="Primary Key Generation">Primary Key generation strategies</A></LI>
+	<LI><A href="object-caching.html" title="Object Caching">Object caching mechanism</A></LI>
+</UL>
+
+
 
-                    </section>
-                </article>
+                </section>
+            </article>
 
 	        </div>
 	    </div>
@@ -279,7 +287,7 @@
     </div>
 </footer>
     
-<script>
+<script type="application/javascript">
 var doNotTrack = false;
 if (!doNotTrack) {
 	(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
diff --git a/docs/4.0/index.html b/docs/1.2/dvmodeler-gui-tool.html
similarity index 85%
copy from docs/4.0/index.html
copy to docs/1.2/dvmodeler-gui-tool.html
index 2bbcbd2..85ab0c0 100644
--- a/docs/4.0/index.html
+++ b/docs/1.2/dvmodeler-gui-tool.html
@@ -15,7 +15,7 @@
         <meta name="theme-color" content="#ffffff">
         <link rel="stylesheet" href="https://cayenne.apache.org/css/styles-e429186d1b.css"/>
         <script src="https://cayenne.apache.org/js/bundle-92aa692db7.js"></script>
-        <title>Apache Cayenne</title>
+        <title>DVModeler GUI Tool &middot; Apache Cayenne</title>
     </head>
     <body data-spy="scroll" data-target=".toc-side" class="cd-head"> 
 <header class="page-header">
@@ -92,10 +92,10 @@
                     <ul class="nav" role="tablist">
                         <li class="nav-item dropdown mw-100">
                             <a class="nav-link dropdown-toggle text-truncate" data-toggle="dropdown" href="#" role="button" aria-haspopup="true" aria-expanded="false">
-                                Cayenne Version 4.0
+                                Cayenne Version 1.2
                             </a>
                             <div class="dropdown-menu">
-                                <a class="dropdown-item" href="/docs/4.1/getting-started-guide/">Version 4.1 (Release Candidate)</a><a class="dropdown-item" href="/docs/4.0/getting-started-guide/">Version 4.0 (Stable)</a><a class="dropdown-item" href="/docs/3.1/getting-started-guide/">Version 3.1 (Aging)</a><a class="dropdown-item" href="/docs/3.0/api/">Version 3.0 (Legacy)</a><a class="dropdown-item" href="/docs/2.0/api/">Version 2.0 (Legacy)</a><a class="dropdown-item" href="/docs/1.2/ [...]
+                                <a class="dropdown-item" href="/docs/4.1/getting-started-guide/">Version 4.1 (Release Candidate)</a><a class="dropdown-item" href="/docs/4.0/getting-started-guide/">Version 4.0 (Stable)</a><a class="dropdown-item" href="/docs/3.1/getting-started-guide/">Version 3.1 (Aging)</a><a class="dropdown-item" href="/docs/3.0/cayenne-guide.html">Version 3.0 (Legacy)</a><a class="dropdown-item" href="/docs/2.0/user-guide.html">Version 2.0 (Legacy)</a><a class="dropdo [...]
                             </div>
                         </li>
                     </ul>
@@ -111,45 +111,53 @@
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/getting-started-guide/">Getting Started</a>
+                            <a class="cd-toc-link" href="/docs/1.2/user-guide.html">User Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/cayenne-guide/">Cayenne Guide</a>
+                            <a class="cd-toc-link" href="/docs/1.2/modeler-guide.html">Modeler Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/getting-started-rop/">Getting Started ROP</a>
+                            <a class="cd-toc-link" href="/docs/1.2/remote-object-persistence-guide.html">Remote Object Persistence Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
-                        
-                            <a class="cd-toc-link" href="/docs/4.0/upgrade-guide/">Upgrade Guide</a>
-                        
-                    </div>
-                    
-                    <div class="cd-toc-item">
-                        <a class="cd-toc-link" href="/docs/4.0/api/">JavaDoc</a>
+                        <a class="cd-toc-link" href="/docs/1.2/api/">JavaDoc</a>
                     </div>
                 </div>
             </div>
             
             <div class="col-12 col-lg-8 col-xl-9  py-3 pl-lg-5  cd-content">
 
-                <article>
-                    <header>
-                        <h1></h1>
-                    </header>
-                    <section>
-                        <p>Documentation, the JavaDoc API, examples and articles for Cayenne 4.0 can all be found here.</p>
+            
+            <article>
+                <section>
+                    
+	
+
+<P>DVModeler is a Java GUI tool to work with DataViews configuration included in Cayenne projects. Steps needed to start DVModeler are similar to that of CayenneModeler. Main class is <TT>org.objectstyle.cayenne.dataview.dvmodeler.Main</TT>. For convenience Cayenne distribution provides run scripts to start DVModeler on Windows and UNIX platforms. To take advantage of these scripts, user must set CAYENNE_HOME (optional) and JAVA_HOME environment variables as described in <A href="install [...]
+
+<P>To run DVModeler, simply doubleclick the appropriate script. Alternatively it can be run from the command line.</P>
+
+<P>Windows:</P>
+<DIV class="preformatted panel" style="border-width: 1px;"><DIV class="preformattedContent panelContent">
+<PRE>%CAYENNE_HOME%\bin\dvmodeler.bat
+</PRE>
+</DIV></DIV>
+<P>UNIX:</P>
+<DIV class="preformatted panel" style="border-width: 1px;"><DIV class="preformattedContent panelContent">
+<PRE>$CAYENNE_HOME/bin/dvmodeler.sh
+</PRE>
+</DIV></DIV>
 
-                    </section>
-                </article>
+                </section>
+            </article>
 
 	        </div>
 	    </div>
@@ -279,7 +287,7 @@
     </div>
 </footer>
     
-<script>
+<script type="application/javascript">
 var doNotTrack = false;
 if (!doNotTrack) {
 	(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
diff --git a/docs/4.0/index.html b/docs/1.2/entityresolver.html
similarity index 88%
copy from docs/4.0/index.html
copy to docs/1.2/entityresolver.html
index 2bbcbd2..1b10007 100644
--- a/docs/4.0/index.html
+++ b/docs/1.2/entityresolver.html
@@ -15,7 +15,7 @@
         <meta name="theme-color" content="#ffffff">
         <link rel="stylesheet" href="https://cayenne.apache.org/css/styles-e429186d1b.css"/>
         <script src="https://cayenne.apache.org/js/bundle-92aa692db7.js"></script>
-        <title>Apache Cayenne</title>
+        <title>EntityResolver &middot; Apache Cayenne</title>
     </head>
     <body data-spy="scroll" data-target=".toc-side" class="cd-head"> 
 <header class="page-header">
@@ -92,10 +92,10 @@
                     <ul class="nav" role="tablist">
                         <li class="nav-item dropdown mw-100">
                             <a class="nav-link dropdown-toggle text-truncate" data-toggle="dropdown" href="#" role="button" aria-haspopup="true" aria-expanded="false">
-                                Cayenne Version 4.0
+                                Cayenne Version 1.2
                             </a>
                             <div class="dropdown-menu">
-                                <a class="dropdown-item" href="/docs/4.1/getting-started-guide/">Version 4.1 (Release Candidate)</a><a class="dropdown-item" href="/docs/4.0/getting-started-guide/">Version 4.0 (Stable)</a><a class="dropdown-item" href="/docs/3.1/getting-started-guide/">Version 3.1 (Aging)</a><a class="dropdown-item" href="/docs/3.0/api/">Version 3.0 (Legacy)</a><a class="dropdown-item" href="/docs/2.0/api/">Version 2.0 (Legacy)</a><a class="dropdown-item" href="/docs/1.2/ [...]
+                                <a class="dropdown-item" href="/docs/4.1/getting-started-guide/">Version 4.1 (Release Candidate)</a><a class="dropdown-item" href="/docs/4.0/getting-started-guide/">Version 4.0 (Stable)</a><a class="dropdown-item" href="/docs/3.1/getting-started-guide/">Version 3.1 (Aging)</a><a class="dropdown-item" href="/docs/3.0/cayenne-guide.html">Version 3.0 (Legacy)</a><a class="dropdown-item" href="/docs/2.0/user-guide.html">Version 2.0 (Legacy)</a><a class="dropdo [...]
                             </div>
                         </li>
                     </ul>
@@ -111,45 +111,42 @@
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/getting-started-guide/">Getting Started</a>
+                            <a class="cd-toc-link" href="/docs/1.2/user-guide.html">User Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/cayenne-guide/">Cayenne Guide</a>
+                            <a class="cd-toc-link" href="/docs/1.2/modeler-guide.html">Modeler Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/getting-started-rop/">Getting Started ROP</a>
+                            <a class="cd-toc-link" href="/docs/1.2/remote-object-persistence-guide.html">Remote Object Persistence Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
-                        
-                            <a class="cd-toc-link" href="/docs/4.0/upgrade-guide/">Upgrade Guide</a>
-                        
-                    </div>
-                    
-                    <div class="cd-toc-item">
-                        <a class="cd-toc-link" href="/docs/4.0/api/">JavaDoc</a>
+                        <a class="cd-toc-link" href="/docs/1.2/api/">JavaDoc</a>
                     </div>
                 </div>
             </div>
             
             <div class="col-12 col-lg-8 col-xl-9  py-3 pl-lg-5  cd-content">
 
-                <article>
-                    <header>
-                        <h1></h1>
-                    </header>
-                    <section>
-                        <p>Documentation, the JavaDoc API, examples and articles for Cayenne 4.0 can all be found here.</p>
+            
+            <article>
+                <section>
+                    
+	
+
+<P>In runtime the mapping metadata is accessed via a <A href="datachannel.html" title="DataChannel">DataChannel</A> in a form of <TT>org.objectstyle.cayenne.map.EntityResolver</TT> (EntityResolver available via ObjectContext is usually obtained from the channel behind the scenes). EntityResolver provides a single namespace for multiple DataMaps. </P>
+
+<P>Another important function of the EntityResolver is providing access to the <TT>org.objectstyle.cayenne.property.ClassDescriptor</TT> instances for each persistent entity. Those a compiled by Cayenne on the fly using EntityResolver's <TT>org.objectstyle.cayenne.property.ClassDescriptorFactory</TT>.</P>
 
-                    </section>
-                </article>
+                </section>
+            </article>
 
 	        </div>
 	    </div>
@@ -279,7 +276,7 @@
     </div>
 </footer>
     
-<script>
+<script type="application/javascript">
 var doNotTrack = false;
 if (!doNotTrack) {
 	(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
diff --git a/docs/4.0/index.html b/docs/1.2/event-package.html
similarity index 80%
copy from docs/4.0/index.html
copy to docs/1.2/event-package.html
index 2bbcbd2..15d9384 100644
--- a/docs/4.0/index.html
+++ b/docs/1.2/event-package.html
@@ -15,7 +15,7 @@
         <meta name="theme-color" content="#ffffff">
         <link rel="stylesheet" href="https://cayenne.apache.org/css/styles-e429186d1b.css"/>
         <script src="https://cayenne.apache.org/js/bundle-92aa692db7.js"></script>
-        <title>Apache Cayenne</title>
+        <title>Event Package &middot; Apache Cayenne</title>
     </head>
     <body data-spy="scroll" data-target=".toc-side" class="cd-head"> 
 <header class="page-header">
@@ -92,10 +92,10 @@
                     <ul class="nav" role="tablist">
                         <li class="nav-item dropdown mw-100">
                             <a class="nav-link dropdown-toggle text-truncate" data-toggle="dropdown" href="#" role="button" aria-haspopup="true" aria-expanded="false">
-                                Cayenne Version 4.0
+                                Cayenne Version 1.2
                             </a>
                             <div class="dropdown-menu">
-                                <a class="dropdown-item" href="/docs/4.1/getting-started-guide/">Version 4.1 (Release Candidate)</a><a class="dropdown-item" href="/docs/4.0/getting-started-guide/">Version 4.0 (Stable)</a><a class="dropdown-item" href="/docs/3.1/getting-started-guide/">Version 3.1 (Aging)</a><a class="dropdown-item" href="/docs/3.0/api/">Version 3.0 (Legacy)</a><a class="dropdown-item" href="/docs/2.0/api/">Version 2.0 (Legacy)</a><a class="dropdown-item" href="/docs/1.2/ [...]
+                                <a class="dropdown-item" href="/docs/4.1/getting-started-guide/">Version 4.1 (Release Candidate)</a><a class="dropdown-item" href="/docs/4.0/getting-started-guide/">Version 4.0 (Stable)</a><a class="dropdown-item" href="/docs/3.1/getting-started-guide/">Version 3.1 (Aging)</a><a class="dropdown-item" href="/docs/3.0/cayenne-guide.html">Version 3.0 (Legacy)</a><a class="dropdown-item" href="/docs/2.0/user-guide.html">Version 2.0 (Legacy)</a><a class="dropdo [...]
                             </div>
                         </li>
                     </ul>
@@ -111,45 +111,52 @@
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/getting-started-guide/">Getting Started</a>
+                            <a class="cd-toc-link" href="/docs/1.2/user-guide.html">User Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/cayenne-guide/">Cayenne Guide</a>
+                            <a class="cd-toc-link" href="/docs/1.2/modeler-guide.html">Modeler Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/getting-started-rop/">Getting Started ROP</a>
+                            <a class="cd-toc-link" href="/docs/1.2/remote-object-persistence-guide.html">Remote Object Persistence Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
-                        
-                            <a class="cd-toc-link" href="/docs/4.0/upgrade-guide/">Upgrade Guide</a>
-                        
-                    </div>
-                    
-                    <div class="cd-toc-item">
-                        <a class="cd-toc-link" href="/docs/4.0/api/">JavaDoc</a>
+                        <a class="cd-toc-link" href="/docs/1.2/api/">JavaDoc</a>
                     </div>
                 </div>
             </div>
             
             <div class="col-12 col-lg-8 col-xl-9  py-3 pl-lg-5  cd-content">
 
-                <article>
-                    <header>
-                        <h1></h1>
-                    </header>
-                    <section>
-                        <p>Documentation, the JavaDoc API, examples and articles for Cayenne 4.0 can all be found here.</p>
+            
+            <article>
+                <section>
+                    
+	
+
+<P>Cayenne includes a full-featured events mechanism. It allows creation of local and distributed event queues. It is very powerful and generic; it is not tied to Cayenne persistence features in any way and can be used in any application. The most important features are:</P>
+
+<UL>
+	<LI>Event senders do not have to deal with event dispatching details - listener handling and dispatches are done via instances of EventManager.</LI>
+	<LI>Any types of listeners can be registered. Listeners do not have to implement a specific interface.</LI>
+	<LI>No explicit unregistering of listeners is required. Listeners are cleaned up when they go out of scope, or when the event subject goes out of scope.</LI>
+	<LI>Supports local and remote dispatches. Remote dispatches can be done via arbitrary transport by implementing transport-specific EventBridge. There are two existing EventBridge implementations - using JMS and using JavaGroups.</LI>
+	<LI>Dispatches can be done both synchronously (sender waits till all listeners finish) or asyncronously (sender posts an event to the queue, and returns without waiting for the processing to complete).</LI>
+	<LI>In a similar manner individual listeners can register as blocking or non-blocking.</LI>
+</UL>
+
+
+<DIV class="panelMacro"><TABLE class="tipMacro"><COLGROUP><COL width="24"><COL></COLGROUP><TR><TD valign="top"><img src="/docs/1.2/images/check.gif" width="16" height="16" align="absmiddle" alt="" border="0"></TD><TD>The most common error when using EventSubject is not storing a reference to it. This may result in a premature cleanup of a given subject, and automatic unregistering of all listeners. Good practice is to make subject a &quot;public static final&quot; variable of the event s [...]
 
-                    </section>
-                </article>
+                </section>
+            </article>
 
 	        </div>
 	    </div>
@@ -279,7 +286,7 @@
     </div>
 </footer>
     
-<script>
+<script type="application/javascript">
 var doNotTrack = false;
 if (!doNotTrack) {
 	(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
diff --git a/docs/4.0/index.html b/docs/1.2/executing-a-stored-procedure.html
similarity index 71%
copy from docs/4.0/index.html
copy to docs/1.2/executing-a-stored-procedure.html
index 2bbcbd2..ccc6fef 100644
--- a/docs/4.0/index.html
+++ b/docs/1.2/executing-a-stored-procedure.html
@@ -15,7 +15,7 @@
         <meta name="theme-color" content="#ffffff">
         <link rel="stylesheet" href="https://cayenne.apache.org/css/styles-e429186d1b.css"/>
         <script src="https://cayenne.apache.org/js/bundle-92aa692db7.js"></script>
-        <title>Apache Cayenne</title>
+        <title>Executing a Stored Procedure &middot; Apache Cayenne</title>
     </head>
     <body data-spy="scroll" data-target=".toc-side" class="cd-head"> 
 <header class="page-header">
@@ -92,10 +92,10 @@
                     <ul class="nav" role="tablist">
                         <li class="nav-item dropdown mw-100">
                             <a class="nav-link dropdown-toggle text-truncate" data-toggle="dropdown" href="#" role="button" aria-haspopup="true" aria-expanded="false">
-                                Cayenne Version 4.0
+                                Cayenne Version 1.2
                             </a>
                             <div class="dropdown-menu">
-                                <a class="dropdown-item" href="/docs/4.1/getting-started-guide/">Version 4.1 (Release Candidate)</a><a class="dropdown-item" href="/docs/4.0/getting-started-guide/">Version 4.0 (Stable)</a><a class="dropdown-item" href="/docs/3.1/getting-started-guide/">Version 3.1 (Aging)</a><a class="dropdown-item" href="/docs/3.0/api/">Version 3.0 (Legacy)</a><a class="dropdown-item" href="/docs/2.0/api/">Version 2.0 (Legacy)</a><a class="dropdown-item" href="/docs/1.2/ [...]
+                                <a class="dropdown-item" href="/docs/4.1/getting-started-guide/">Version 4.1 (Release Candidate)</a><a class="dropdown-item" href="/docs/4.0/getting-started-guide/">Version 4.0 (Stable)</a><a class="dropdown-item" href="/docs/3.1/getting-started-guide/">Version 3.1 (Aging)</a><a class="dropdown-item" href="/docs/3.0/cayenne-guide.html">Version 3.0 (Legacy)</a><a class="dropdown-item" href="/docs/2.0/user-guide.html">Version 2.0 (Legacy)</a><a class="dropdo [...]
                             </div>
                         </li>
                     </ul>
@@ -111,45 +111,99 @@
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/getting-started-guide/">Getting Started</a>
+                            <a class="cd-toc-link" href="/docs/1.2/user-guide.html">User Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/cayenne-guide/">Cayenne Guide</a>
+                            <a class="cd-toc-link" href="/docs/1.2/modeler-guide.html">Modeler Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/getting-started-rop/">Getting Started ROP</a>
+                            <a class="cd-toc-link" href="/docs/1.2/remote-object-persistence-guide.html">Remote Object Persistence Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
-                        
-                            <a class="cd-toc-link" href="/docs/4.0/upgrade-guide/">Upgrade Guide</a>
-                        
-                    </div>
-                    
-                    <div class="cd-toc-item">
-                        <a class="cd-toc-link" href="/docs/4.0/api/">JavaDoc</a>
+                        <a class="cd-toc-link" href="/docs/1.2/api/">JavaDoc</a>
                     </div>
                 </div>
             </div>
             
             <div class="col-12 col-lg-8 col-xl-9  py-3 pl-lg-5  cd-content">
 
-                <article>
-                    <header>
-                        <h1></h1>
-                    </header>
-                    <section>
-                        <p>Documentation, the JavaDoc API, examples and articles for Cayenne 4.0 can all be found here.</p>
+            
+            <article>
+                <section>
+                    
+	
+
+<H3><A name="ExecutingaStoredProcedure-UsingQueryResponsetoProcessComplexResults"></A>Using QueryResponse to Process Complex Results</H3>
+
+<P>Previous chapter showed how to select a single set of data rows using a ProcedureQuery. In a more general case stored procedures can return multiple sets of data, either as ResultSets or via OUT parameters, execute update/delete/insert queries, etc. To collect the results of execution of such stored procedure, you need to run a query using context's <TT>&quot;performGenericQuery&quot;</TT> method and inspect returned QueryResponse.</P>
+
+
+<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent">
+<PRE class="code-java">DataContext ctxt;
+
+<SPAN class="code-comment">// <SPAN class="code-quote">&quot;my_procedure&quot;</SPAN> is a name of a stored procedure,
+</SPAN><SPAN class="code-comment">// that must exist in the DataMap
+</SPAN>ProcedureQuery query = <SPAN class="code-keyword">new</SPAN> ProcedureQuery(<SPAN class="code-quote">&quot;my_procedure&quot;</SPAN>);
+
+<SPAN class="code-comment">// Set <SPAN class="code-quote">&quot;IN&quot;</SPAN> parameter values
+</SPAN>query.addParam(<SPAN class="code-quote">&quot;parameter1&quot;</SPAN>, <SPAN class="code-quote">&quot;abc&quot;</SPAN>);
+query.addParam(<SPAN class="code-quote">&quot;parameter2&quot;</SPAN>, <SPAN class="code-keyword">new</SPAN> <SPAN class="code-object">Integer</SPAN>(3000));
+
+<SPAN class="code-comment">// run query
+</SPAN>QueryResponse result = ctxt.performGenericQuery(query);
+
+<SPAN class="code-comment">// check the results
+</SPAN>Iterator it = rowSets.iterator();
+<SPAN class="code-keyword">while</SPAN>(result.next()) {
+     <SPAN class="code-keyword">if</SPAN> (result.isList()) {
+          List list = result.currentList();
+          <SPAN class="code-comment">// ...
+</SPAN>     }
+     <SPAN class="code-keyword">else</SPAN> {
+          <SPAN class="code-object">int</SPAN>[] updateCounts = result.currentUpdateCount();
+          <SPAN class="code-comment">// ...
+</SPAN>     }
+}
+</PRE>
+</DIV></DIV>
+
+<H3><A name="ExecutingaStoredProcedure-UsingQueryResponsetoReadOUTParameters"></A>Using QueryResponse to Read OUT Parameters</H3>
+
+<P>Stored Procedure can return data back to the application as ResultSets or via OUT parameters. To simplify the processing of the query output, QueryResponse treats OUT parameters as if it was a separate ResultSet. If a stored procedure declares any OUT or INOUT parameters, QueryResponse will contain their returned values in the very first result list:</P>
+
+<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent">
+<PRE class="code-java">DataContext ctxt;
+
+<SPAN class="code-comment">// <SPAN class="code-quote">&quot;my_procedure&quot;</SPAN> is a name of a stored procedure,
+</SPAN><SPAN class="code-comment">// that must exist in the DataMap
+</SPAN>ProcedureQuery query = <SPAN class="code-keyword">new</SPAN> ProcedureQuery(<SPAN class="code-quote">&quot;my_procedure&quot;</SPAN>);
+
+<SPAN class="code-comment">// Set <SPAN class="code-quote">&quot;IN&quot;</SPAN> parameter values
+</SPAN>query.addParam(<SPAN class="code-quote">&quot;paramter1&quot;</SPAN>, <SPAN class="code-quote">&quot;abc&quot;</SPAN>);
+query.addParam(<SPAN class="code-quote">&quot;parameter2&quot;</SPAN>, <SPAN class="code-keyword">new</SPAN> <SPAN class="code-object">Integer</SPAN>(3000));
+
+<SPAN class="code-comment">// run query
+</SPAN>QueryResponse result = ctxt.performGenericQuery(query);
+
+<SPAN class="code-comment">// read OUT parameters
+</SPAN>List outList = result.firstList();
+
+<SPAN class="code-keyword">if</SPAN>(outList.size() &gt;  0) {
+    Map outParameterValues = (Map) outList.get(0);
+}
+</PRE>
+</DIV></DIV>
 
-                    </section>
-                </article>
+                </section>
+            </article>
 
 	        </div>
 	    </div>
@@ -279,7 +333,7 @@
     </div>
 </footer>
     
-<script>
+<script type="application/javascript">
 var doNotTrack = false;
 if (!doNotTrack) {
 	(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
diff --git a/docs/4.0/index.html b/docs/1.2/expression-factory-utilities.html
similarity index 58%
copy from docs/4.0/index.html
copy to docs/1.2/expression-factory-utilities.html
index 2bbcbd2..abde9b3 100644
--- a/docs/4.0/index.html
+++ b/docs/1.2/expression-factory-utilities.html
@@ -15,7 +15,7 @@
         <meta name="theme-color" content="#ffffff">
         <link rel="stylesheet" href="https://cayenne.apache.org/css/styles-e429186d1b.css"/>
         <script src="https://cayenne.apache.org/js/bundle-92aa692db7.js"></script>
-        <title>Apache Cayenne</title>
+        <title>Expression Factory Utilities &middot; Apache Cayenne</title>
     </head>
     <body data-spy="scroll" data-target=".toc-side" class="cd-head"> 
 <header class="page-header">
@@ -92,10 +92,10 @@
                     <ul class="nav" role="tablist">
                         <li class="nav-item dropdown mw-100">
                             <a class="nav-link dropdown-toggle text-truncate" data-toggle="dropdown" href="#" role="button" aria-haspopup="true" aria-expanded="false">
-                                Cayenne Version 4.0
+                                Cayenne Version 1.2
                             </a>
                             <div class="dropdown-menu">
-                                <a class="dropdown-item" href="/docs/4.1/getting-started-guide/">Version 4.1 (Release Candidate)</a><a class="dropdown-item" href="/docs/4.0/getting-started-guide/">Version 4.0 (Stable)</a><a class="dropdown-item" href="/docs/3.1/getting-started-guide/">Version 3.1 (Aging)</a><a class="dropdown-item" href="/docs/3.0/api/">Version 3.0 (Legacy)</a><a class="dropdown-item" href="/docs/2.0/api/">Version 2.0 (Legacy)</a><a class="dropdown-item" href="/docs/1.2/ [...]
+                                <a class="dropdown-item" href="/docs/4.1/getting-started-guide/">Version 4.1 (Release Candidate)</a><a class="dropdown-item" href="/docs/4.0/getting-started-guide/">Version 4.0 (Stable)</a><a class="dropdown-item" href="/docs/3.1/getting-started-guide/">Version 3.1 (Aging)</a><a class="dropdown-item" href="/docs/3.0/cayenne-guide.html">Version 3.0 (Legacy)</a><a class="dropdown-item" href="/docs/2.0/user-guide.html">Version 2.0 (Legacy)</a><a class="dropdo [...]
                             </div>
                         </li>
                     </ul>
@@ -111,45 +111,132 @@
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/getting-started-guide/">Getting Started</a>
+                            <a class="cd-toc-link" href="/docs/1.2/user-guide.html">User Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/cayenne-guide/">Cayenne Guide</a>
+                            <a class="cd-toc-link" href="/docs/1.2/modeler-guide.html">Modeler Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/getting-started-rop/">Getting Started ROP</a>
+                            <a class="cd-toc-link" href="/docs/1.2/remote-object-persistence-guide.html">Remote Object Persistence Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
-                        
-                            <a class="cd-toc-link" href="/docs/4.0/upgrade-guide/">Upgrade Guide</a>
-                        
-                    </div>
-                    
-                    <div class="cd-toc-item">
-                        <a class="cd-toc-link" href="/docs/4.0/api/">JavaDoc</a>
+                        <a class="cd-toc-link" href="/docs/1.2/api/">JavaDoc</a>
                     </div>
                 </div>
             </div>
             
             <div class="col-12 col-lg-8 col-xl-9  py-3 pl-lg-5  cd-content">
 
-                <article>
-                    <header>
-                        <h1></h1>
-                    </header>
-                    <section>
-                        <p>Documentation, the JavaDoc API, examples and articles for Cayenne 4.0 can all be found here.</p>
+            
+            <article>
+                <section>
+                    
+	
+
+<P>Sometimes there is a need to build an expression by combining other existing expressions. Also quiet often it is desirable to use strongly typed API instead of interpreted string expressions. The following sections describe <A href="http://objectstyle.org/cayenne/api/cayenne/org/objectstyle/cayenne/exp/ExpressionFactory.html" class="external-link" rel="nofollow">ExpressionFactory</A> and <A href="http://objectstyle.org/cayenne/api/cayenne/org/objectstyle/cayenne/exp/Expression.html" c [...]
+
+<H3><A name="ExpressionFactoryUtilities-Path%2FValueExpressions"></A>Path/Value Expressions</H3>
+
+<P>The most simple expressions are the ones that match an object property path with a value or a list of values. ExpressionFactory provides a set of methods to build such &quot;path/value&quot; expressions:</P>
+<UL>
+	<LI>public static Expression <B>matchExp</B>(String pathSpec, Object value)</LI>
+	<LI>public static Expression <B>noMatchExp</B>(String pathSpec, Object value)</LI>
+	<LI>public static Expression <B>matchDbExp</B>(String pathSpec, Object value)</LI>
+	<LI>public static Expression <B>lessExp</B>(String pathSpec, Object value)</LI>
+	<LI>public static Expression <B>lessOrEqualExp</B>(String pathSpec, Object value)</LI>
+	<LI>public static Expression <B>greaterExp</B>(String pathSpec, Object value)</LI>
+	<LI>public static Expression <B>greaterOrEqualExp</B>(String pathSpec, Object value)</LI>
+	<LI>public static Expression <B>inExp</B>(String pathSpec, Object[] values)</LI>
+	<LI>public static Expression <B>inExp</B>(String pathSpec, java.util.List values)</LI>
+	<LI>public static Expression <B>betweenExp</B>(String pathSpec, Object value1, Object value2)</LI>
+	<LI>public static Expression <B>likeExp</B>(String pathSpec, Object value)</LI>
+	<LI>public static Expression <B>likeIgnoreCaseExp</B>(String pathSpec, Object value)</LI>
+	<LI>public static Expression <B>notInExp</B>(String pathSpec, Object value)</LI>
+	<LI>public static Expression <B>notBetweenExp</B>(String pathSpec, Object value)</LI>
+	<LI>public static Expression <B>notLikeExp</B>(String pathSpec, Object value)</LI>
+	<LI>public static Expression <B>notLikeIgnoreCaseExp</B>(String pathSpec, Object value)</LI>
+</UL>
+
+
+<P>As was mentioned <A href="path-expressions.html" title="Path Expressions">earlier</A>, the type of a second Object argument depends on the type of property path points to. It is important to mention that paths that end with a relationship name (both to-one and to-many) can be matched against DataObjects, thus removing the need to know PK or FK values when building expressions. This behavior is not specific to ExpressionFactory, it works the same way with Expression.fromString(..) as w [...]
+<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent">
+<PRE class="code-java"><SPAN class="code-keyword">import</SPAN> org.objectstyle.cayenne.exp.Expression;
+<SPAN class="code-keyword">import</SPAN> org.objectstyle.cayenne.exp.ExpressionFactory;
+<SPAN class="code-keyword">import</SPAN> org.objectstyle.cayenne.query.SelectQuery;
+...
+
+<SPAN class="code-comment">// find artist paintings (<SPAN class="code-keyword">if</SPAN> we don't want to use relationship <SPAN class="code-keyword">for</SPAN> whatever reason)
+</SPAN>
+Artist a = ...;
+Expression qual = ExpressionFactory.matchExp(<SPAN class="code-quote">&quot;toArtist&quot;</SPAN>, a);
+SelectQuery select = <SPAN class="code-keyword">new</SPAN> SelectQuery(Painting.class, qual);
+</PRE>
+</DIV></DIV>
+
+<H3><A name="ExpressionFactoryUtilities-ChainingExpressions"></A>Chaining Expressions</H3>
+
+<P>Expression class itself provides a set of convenience methods to chain expressions as they are built from smaller parts. Note that each of these methods does not modify the original expression, rather it builds and returns a new instance of the expression.</P>
+<UL>
+	<LI>public Expression <B>joinExp</B>(int type, Expression exp)<BR>
+ Creates and returns a new expression that joins this object with another expression, using specified join type. This is a shorter equivalent of ExpressionFactory.binaryExpression(type, this, exp).</LI>
+	<LI>public Expression <B>andExp</B>(Expression exp)<BR>
+ A shorter equivalent for joinExp(Expression.AND, exp).</LI>
+	<LI>public Expression <B>orExp</B>(Expression exp)<BR>
+ A shorter equivalent for joinExp(Expression.OR, exp).</LI>
+</UL>
+
+
+<P>Example of using chaining:</P>
+<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent">
+<PRE class="code-java"><SPAN class="code-keyword">import</SPAN> org.objectstyle.cayenne.exp.Expression;
+<SPAN class="code-keyword">import</SPAN> org.objectstyle.cayenne.exp.ExpressionFactory;
+<SPAN class="code-keyword">import</SPAN> org.objectstyle.cayenne.query.SelectQuery;
+...
+
+<SPAN class="code-comment">// find artists whose name starts with <SPAN class="code-quote">&quot;D&quot;</SPAN>
+</SPAN><SPAN class="code-comment">// with invalid or <SPAN class="code-keyword">null</SPAN> date of birth
+</SPAN>
+Expression qual = ExpressionFactory.greaterOrEqualExp(<SPAN class="code-quote">&quot;dateOfBirth&quot;</SPAN>, <SPAN class="code-keyword">new</SPAN> Date());
+
+<SPAN class="code-comment">// 1. chain expressions, note the assignment back to <SPAN class="code-quote">&quot;qual&quot;</SPAN>,
+</SPAN><SPAN class="code-comment">// since a <SPAN class="code-keyword">new</SPAN> instance is created
+</SPAN>qual = qual.orExp(ExpressionFactory.matchExp(<SPAN class="code-quote">&quot;dateOfBirth&quot;</SPAN>, <SPAN class="code-keyword">null</SPAN>));
+
+<SPAN class="code-comment">// 2. <SPAN class="code-quote">&quot;AND&quot;</SPAN> applies to a combined earlier criteria
+</SPAN>qual =
+   qual.andExp(ExpressionFactory.likeIgnoreCaseExp(<SPAN class="code-quote">&quot;artistName&quot;</SPAN>, <SPAN class="code-quote">&quot;D%&quot;</SPAN>));
+
+SelectQuery select = <SPAN class="code-keyword">new</SPAN> SelectQuery(Artist.class, qual);
+</PRE>
+</DIV></DIV>
+
+<H3><A name="ExpressionFactoryUtilities-CreatingComplexExpressions"></A>Creating Complex Expressions</H3>
+
+<P>There is a way to create complex expressions either from the Lists of expressions or from the Maps containing values using &quot;path&quot; Strings as keys. This approach significantly simplifies connecting Cayenne queries to the UI, and reduces the number of steps needed to create expressions in other cases. ExpressionFactory provides the following methods:</P>
+<UL>
+	<LI>public static Expression <B>joinExp</B>(int type, java.util.List expressions)<BR>
+ Joins all expressions into a single expression. type is used as an expression type for expressions joining each one of the items on the list. type is normally AND or OR.</LI>
+	<LI>public static Expression <B>matchAllExp</B>(java.util.Map map, int type)<BR>
+ Creates an expression that matches all path/value pairs in map. Path is OBJ_PATH.</LI>
+	<LI>public static Expression <B>matchAllDbExp</B>(java.util.Map map, int type)<BR>
+ Same as above, but path is interpreted to be DB_PATH.</LI>
+	<LI>public static Expression <B>matchAnyExp</B>(java.util.Map map, int type)<BR>
+ Creates an expression that matches any of the path/value pairs in map. Path is OBJ_PATH.</LI>
+	<LI>public static Expression <B>matchAnyDbExp</B>(java.util.Map map, int type)<BR>
+ Same as above, but path is interpreted to be DB_PATH.</LI>
+</UL>
+
 
-                    </section>
-                </article>
+                </section>
+            </article>
 
 	        </div>
 	    </div>
@@ -279,7 +366,7 @@
     </div>
 </footer>
     
-<script>
+<script type="application/javascript">
 var doNotTrack = false;
 if (!doNotTrack) {
 	(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
diff --git a/docs/4.0/index.html b/docs/1.2/expressions.html
similarity index 87%
copy from docs/4.0/index.html
copy to docs/1.2/expressions.html
index 2bbcbd2..c686c02 100644
--- a/docs/4.0/index.html
+++ b/docs/1.2/expressions.html
@@ -15,7 +15,7 @@
         <meta name="theme-color" content="#ffffff">
         <link rel="stylesheet" href="https://cayenne.apache.org/css/styles-e429186d1b.css"/>
         <script src="https://cayenne.apache.org/js/bundle-92aa692db7.js"></script>
-        <title>Apache Cayenne</title>
+        <title>Expressions &middot; Apache Cayenne</title>
     </head>
     <body data-spy="scroll" data-target=".toc-side" class="cd-head"> 
 <header class="page-header">
@@ -92,10 +92,10 @@
                     <ul class="nav" role="tablist">
                         <li class="nav-item dropdown mw-100">
                             <a class="nav-link dropdown-toggle text-truncate" data-toggle="dropdown" href="#" role="button" aria-haspopup="true" aria-expanded="false">
-                                Cayenne Version 4.0
+                                Cayenne Version 1.2
                             </a>
                             <div class="dropdown-menu">
-                                <a class="dropdown-item" href="/docs/4.1/getting-started-guide/">Version 4.1 (Release Candidate)</a><a class="dropdown-item" href="/docs/4.0/getting-started-guide/">Version 4.0 (Stable)</a><a class="dropdown-item" href="/docs/3.1/getting-started-guide/">Version 3.1 (Aging)</a><a class="dropdown-item" href="/docs/3.0/api/">Version 3.0 (Legacy)</a><a class="dropdown-item" href="/docs/2.0/api/">Version 2.0 (Legacy)</a><a class="dropdown-item" href="/docs/1.2/ [...]
+                                <a class="dropdown-item" href="/docs/4.1/getting-started-guide/">Version 4.1 (Release Candidate)</a><a class="dropdown-item" href="/docs/4.0/getting-started-guide/">Version 4.0 (Stable)</a><a class="dropdown-item" href="/docs/3.1/getting-started-guide/">Version 3.1 (Aging)</a><a class="dropdown-item" href="/docs/3.0/cayenne-guide.html">Version 3.0 (Legacy)</a><a class="dropdown-item" href="/docs/2.0/user-guide.html">Version 2.0 (Legacy)</a><a class="dropdo [...]
                             </div>
                         </li>
                     </ul>
@@ -111,45 +111,43 @@
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/getting-started-guide/">Getting Started</a>
+                            <a class="cd-toc-link" href="/docs/1.2/user-guide.html">User Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/cayenne-guide/">Cayenne Guide</a>
+                            <a class="cd-toc-link" href="/docs/1.2/modeler-guide.html">Modeler Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/getting-started-rop/">Getting Started ROP</a>
+                            <a class="cd-toc-link" href="/docs/1.2/remote-object-persistence-guide.html">Remote Object Persistence Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
-                        
-                            <a class="cd-toc-link" href="/docs/4.0/upgrade-guide/">Upgrade Guide</a>
-                        
-                    </div>
-                    
-                    <div class="cd-toc-item">
-                        <a class="cd-toc-link" href="/docs/4.0/api/">JavaDoc</a>
+                        <a class="cd-toc-link" href="/docs/1.2/api/">JavaDoc</a>
                     </div>
                 </div>
             </div>
             
             <div class="col-12 col-lg-8 col-xl-9  py-3 pl-lg-5  cd-content">
 
-                <article>
-                    <header>
-                        <h1></h1>
-                    </header>
-                    <section>
-                        <p>Documentation, the JavaDoc API, examples and articles for Cayenne 4.0 can all be found here.</p>
+            
+            <article>
+                <section>
+                    
+	
+
+<P>Cayenne defines a simple yet powerful object-based expression language. Cayenne expressions are database independent and are used as query qualifiers and orderings and also to perform in-memory evaluation with DataObjects (and generally any kind of Java Beans). BNF of Cayenne expression language is described <A href="http://objectstyle.org/cayenne/grammar/ExpressionParser.html" class="external-link" rel="nofollow">here</A>.</P>
+
+<P>Expressions are broadly divided into the following categories: object property expressions (also called &quot;path expressions&quot;), arithmetic operations, and conditional expressions. Cayenne contains a parser to build expressions from strings, and also features explicit expression API. Various ways of creating and using expressions are described later in this chapter. </P>
+
 
-                    </section>
-                </article>
+                </section>
+            </article>
 
 	        </div>
 	    </div>
@@ -279,7 +277,7 @@
     </div>
 </footer>
     
-<script>
+<script type="application/javascript">
 var doNotTrack = false;
 if (!doNotTrack) {
 	(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
diff --git a/docs/4.0/index.html b/docs/1.2/extended-types.html
similarity index 74%
copy from docs/4.0/index.html
copy to docs/1.2/extended-types.html
index 2bbcbd2..20a415b 100644
--- a/docs/4.0/index.html
+++ b/docs/1.2/extended-types.html
@@ -15,7 +15,7 @@
         <meta name="theme-color" content="#ffffff">
         <link rel="stylesheet" href="https://cayenne.apache.org/css/styles-e429186d1b.css"/>
         <script src="https://cayenne.apache.org/js/bundle-92aa692db7.js"></script>
-        <title>Apache Cayenne</title>
+        <title>Extended Types &middot; Apache Cayenne</title>
     </head>
     <body data-spy="scroll" data-target=".toc-side" class="cd-head"> 
 <header class="page-header">
@@ -92,10 +92,10 @@
                     <ul class="nav" role="tablist">
                         <li class="nav-item dropdown mw-100">
                             <a class="nav-link dropdown-toggle text-truncate" data-toggle="dropdown" href="#" role="button" aria-haspopup="true" aria-expanded="false">
-                                Cayenne Version 4.0
+                                Cayenne Version 1.2
                             </a>
                             <div class="dropdown-menu">
-                                <a class="dropdown-item" href="/docs/4.1/getting-started-guide/">Version 4.1 (Release Candidate)</a><a class="dropdown-item" href="/docs/4.0/getting-started-guide/">Version 4.0 (Stable)</a><a class="dropdown-item" href="/docs/3.1/getting-started-guide/">Version 3.1 (Aging)</a><a class="dropdown-item" href="/docs/3.0/api/">Version 3.0 (Legacy)</a><a class="dropdown-item" href="/docs/2.0/api/">Version 2.0 (Legacy)</a><a class="dropdown-item" href="/docs/1.2/ [...]
+                                <a class="dropdown-item" href="/docs/4.1/getting-started-guide/">Version 4.1 (Release Candidate)</a><a class="dropdown-item" href="/docs/4.0/getting-started-guide/">Version 4.0 (Stable)</a><a class="dropdown-item" href="/docs/3.1/getting-started-guide/">Version 3.1 (Aging)</a><a class="dropdown-item" href="/docs/3.0/cayenne-guide.html">Version 3.0 (Legacy)</a><a class="dropdown-item" href="/docs/2.0/user-guide.html">Version 2.0 (Legacy)</a><a class="dropdo [...]
                             </div>
                         </li>
                     </ul>
@@ -111,45 +111,60 @@
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/getting-started-guide/">Getting Started</a>
+                            <a class="cd-toc-link" href="/docs/1.2/user-guide.html">User Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/cayenne-guide/">Cayenne Guide</a>
+                            <a class="cd-toc-link" href="/docs/1.2/modeler-guide.html">Modeler Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/getting-started-rop/">Getting Started ROP</a>
+                            <a class="cd-toc-link" href="/docs/1.2/remote-object-persistence-guide.html">Remote Object Persistence Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
-                        
-                            <a class="cd-toc-link" href="/docs/4.0/upgrade-guide/">Upgrade Guide</a>
-                        
-                    </div>
-                    
-                    <div class="cd-toc-item">
-                        <a class="cd-toc-link" href="/docs/4.0/api/">JavaDoc</a>
+                        <a class="cd-toc-link" href="/docs/1.2/api/">JavaDoc</a>
                     </div>
                 </div>
             </div>
             
             <div class="col-12 col-lg-8 col-xl-9  py-3 pl-lg-5  cd-content">
 
-                <article>
-                    <header>
-                        <h1></h1>
-                    </header>
-                    <section>
-                        <p>Documentation, the JavaDoc API, examples and articles for Cayenne 4.0 can all be found here.</p>
+            
+            <article>
+                <section>
+                    
+	
+
+<P>JDBC specification defines a set of &quot;standard&quot; database column types (defined in java.sql.Types class) and a very specific mapping of these types to Java Object Types, such as java.lang.String, java.math.BigDecimal, etc. Sometimes there is a need to use a custom Java type not known to JDBC driver. CayenneModeler allows to configure an arbitrary Java class as an <A href="http://objectstyle.org/cayenne/api/cayenne/org/objectstyle/cayenne/map/ObjAttribute.html" class="external- [...]
+
+<H3><A name="ExtendedTypes-SupportingNonStandardTypes"></A>Supporting Non-Standard Types</H3>
+
+<P><A href="http://objectstyle.org/cayenne/api/cayenne/org/objectstyle/cayenne/access/types/ExtendedType.html" class="external-link" rel="nofollow">ExtendedType</A> interface serves to integrate a custom attribute type to Cayenne. An implementation must provide <TT>ExtendedType.getClassName()</TT> method that returns a fully qualified Java class name for the supported custom type, and a number of methods that convert data between JDBC and custom type. Installing an ExtendedType currently [...]
+<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent">
+<PRE class="code-java"><SPAN class="code-comment">// create custom ExtendedType instance
+</SPAN>ExtendedType customType = <SPAN class="code-keyword">new</SPAN> MyCustomType();
+
+<SPAN class="code-comment">// Find DataNode
+</SPAN>DataDomain domain = Configuration.getSharedConfiguration().getDomain();
+DataNode node = domain.getNode(<SPAN class="code-quote">&quot;node_name_from_the_project&quot;</SPAN>);
+
+<SPAN class="code-comment">// install ExtendedType
+</SPAN>node.getAdapter().getExtendedTypes().registerType(customType);
+</PRE>
+</DIV></DIV>
+
+<H3><A name="ExtendedTypes-DbAdaptersandExtendedTypes"></A>DbAdapters and Extended Types</H3>
+
+<P>As shown in the example above, ExtendedTypes are stored by <A href="http://objectstyle.org/cayenne/api/cayenne/org/objectstyle/cayenne/dba/DbAdapter.html" class="external-link" rel="nofollow">DbAdapter</A>. In fact DbAdapters often install their own extended types to address incompatibilities, incompletness and differences between JDBC drivers in handling &quot;standard&quot; JDBC types. For instance some drivers support reading large character columns (CLOB) as java.sql.Clob, but som [...]
 
-                    </section>
-                </article>
+                </section>
+            </article>
 
 	        </div>
 	    </div>
@@ -279,7 +294,7 @@
     </div>
 </footer>
     
-<script>
+<script type="application/javascript">
 var doNotTrack = false;
 if (!doNotTrack) {
 	(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
diff --git a/docs/4.0/index.html b/docs/1.2/flattened-relationships.html
similarity index 84%
copy from docs/4.0/index.html
copy to docs/1.2/flattened-relationships.html
index 2bbcbd2..bd6c4dc 100644
--- a/docs/4.0/index.html
+++ b/docs/1.2/flattened-relationships.html
@@ -15,7 +15,7 @@
         <meta name="theme-color" content="#ffffff">
         <link rel="stylesheet" href="https://cayenne.apache.org/css/styles-e429186d1b.css"/>
         <script src="https://cayenne.apache.org/js/bundle-92aa692db7.js"></script>
-        <title>Apache Cayenne</title>
+        <title>Flattened Relationships &middot; Apache Cayenne</title>
     </head>
     <body data-spy="scroll" data-target=".toc-side" class="cd-head"> 
 <header class="page-header">
@@ -92,10 +92,10 @@
                     <ul class="nav" role="tablist">
                         <li class="nav-item dropdown mw-100">
                             <a class="nav-link dropdown-toggle text-truncate" data-toggle="dropdown" href="#" role="button" aria-haspopup="true" aria-expanded="false">
-                                Cayenne Version 4.0
+                                Cayenne Version 1.2
                             </a>
                             <div class="dropdown-menu">
-                                <a class="dropdown-item" href="/docs/4.1/getting-started-guide/">Version 4.1 (Release Candidate)</a><a class="dropdown-item" href="/docs/4.0/getting-started-guide/">Version 4.0 (Stable)</a><a class="dropdown-item" href="/docs/3.1/getting-started-guide/">Version 3.1 (Aging)</a><a class="dropdown-item" href="/docs/3.0/api/">Version 3.0 (Legacy)</a><a class="dropdown-item" href="/docs/2.0/api/">Version 2.0 (Legacy)</a><a class="dropdown-item" href="/docs/1.2/ [...]
+                                <a class="dropdown-item" href="/docs/4.1/getting-started-guide/">Version 4.1 (Release Candidate)</a><a class="dropdown-item" href="/docs/4.0/getting-started-guide/">Version 4.0 (Stable)</a><a class="dropdown-item" href="/docs/3.1/getting-started-guide/">Version 3.1 (Aging)</a><a class="dropdown-item" href="/docs/3.0/cayenne-guide.html">Version 3.0 (Legacy)</a><a class="dropdown-item" href="/docs/2.0/user-guide.html">Version 2.0 (Legacy)</a><a class="dropdo [...]
                             </div>
                         </li>
                     </ul>
@@ -111,45 +111,41 @@
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/getting-started-guide/">Getting Started</a>
+                            <a class="cd-toc-link" href="/docs/1.2/user-guide.html">User Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/cayenne-guide/">Cayenne Guide</a>
+                            <a class="cd-toc-link" href="/docs/1.2/modeler-guide.html">Modeler Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/getting-started-rop/">Getting Started ROP</a>
+                            <a class="cd-toc-link" href="/docs/1.2/remote-object-persistence-guide.html">Remote Object Persistence Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
-                        
-                            <a class="cd-toc-link" href="/docs/4.0/upgrade-guide/">Upgrade Guide</a>
-                        
-                    </div>
-                    
-                    <div class="cd-toc-item">
-                        <a class="cd-toc-link" href="/docs/4.0/api/">JavaDoc</a>
+                        <a class="cd-toc-link" href="/docs/1.2/api/">JavaDoc</a>
                     </div>
                 </div>
             </div>
             
             <div class="col-12 col-lg-8 col-xl-9  py-3 pl-lg-5  cd-content">
 
-                <article>
-                    <header>
-                        <h1></h1>
-                    </header>
-                    <section>
-                        <p>Documentation, the JavaDoc API, examples and articles for Cayenne 4.0 can all be found here.</p>
+            
+            <article>
+                <section>
+                    
+	
+
+<P>Flattened relationships represent relationship between two types of DataObjects that is not direct in the underlying relational storage. Instead it is mapped across one or more &quot;join&quot; tables. Still from the application point of view there is no diffrence in working with flattened relationships compared to the &quot;normal&quot; ones. Cayenne internally figures out how to build the needed query joins to retrieve related objects. On adding or removing an object to/from a flatt [...]
+<DIV class="panelMacro"><TABLE class="infoMacro"><COLGROUP><COL width="24"><COL></COLGROUP><TR><TD valign="top"><img src="/docs/1.2/images/information.gif" width="16" height="16" align="absmiddle" alt="" border="0"></TD><TD><B>Flattened Relationships Limitations</B><BR>Currently only many-to-many flattened relatationships with a single join table can be modified. All other types of flattened relationships can be used as &quot;read-only&quot;. This is reflected in the DataObject code gene [...]
 
-                    </section>
-                </article>
+                </section>
+            </article>
 
 	        </div>
 	    </div>
@@ -279,7 +275,7 @@
     </div>
 </footer>
     
-<script>
+<script type="application/javascript">
 var doNotTrack = false;
 if (!doNotTrack) {
 	(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
diff --git a/docs/4.0/index.html b/docs/1.2/general-navigation.html
similarity index 66%
copy from docs/4.0/index.html
copy to docs/1.2/general-navigation.html
index 2bbcbd2..a7636ee 100644
--- a/docs/4.0/index.html
+++ b/docs/1.2/general-navigation.html
@@ -15,7 +15,7 @@
         <meta name="theme-color" content="#ffffff">
         <link rel="stylesheet" href="https://cayenne.apache.org/css/styles-e429186d1b.css"/>
         <script src="https://cayenne.apache.org/js/bundle-92aa692db7.js"></script>
-        <title>Apache Cayenne</title>
+        <title>General Navigation &middot; Apache Cayenne</title>
     </head>
     <body data-spy="scroll" data-target=".toc-side" class="cd-head"> 
 <header class="page-header">
@@ -92,10 +92,10 @@
                     <ul class="nav" role="tablist">
                         <li class="nav-item dropdown mw-100">
                             <a class="nav-link dropdown-toggle text-truncate" data-toggle="dropdown" href="#" role="button" aria-haspopup="true" aria-expanded="false">
-                                Cayenne Version 4.0
+                                Cayenne Version 1.2
                             </a>
                             <div class="dropdown-menu">
-                                <a class="dropdown-item" href="/docs/4.1/getting-started-guide/">Version 4.1 (Release Candidate)</a><a class="dropdown-item" href="/docs/4.0/getting-started-guide/">Version 4.0 (Stable)</a><a class="dropdown-item" href="/docs/3.1/getting-started-guide/">Version 3.1 (Aging)</a><a class="dropdown-item" href="/docs/3.0/api/">Version 3.0 (Legacy)</a><a class="dropdown-item" href="/docs/2.0/api/">Version 2.0 (Legacy)</a><a class="dropdown-item" href="/docs/1.2/ [...]
+                                <a class="dropdown-item" href="/docs/4.1/getting-started-guide/">Version 4.1 (Release Candidate)</a><a class="dropdown-item" href="/docs/4.0/getting-started-guide/">Version 4.0 (Stable)</a><a class="dropdown-item" href="/docs/3.1/getting-started-guide/">Version 3.1 (Aging)</a><a class="dropdown-item" href="/docs/3.0/cayenne-guide.html">Version 3.0 (Legacy)</a><a class="dropdown-item" href="/docs/2.0/user-guide.html">Version 2.0 (Legacy)</a><a class="dropdo [...]
                             </div>
                         </li>
                     </ul>
@@ -111,45 +111,89 @@
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/getting-started-guide/">Getting Started</a>
+                            <a class="cd-toc-link" href="/docs/1.2/user-guide.html">User Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/cayenne-guide/">Cayenne Guide</a>
+                            <a class="cd-toc-link" href="/docs/1.2/modeler-guide.html">Modeler Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/getting-started-rop/">Getting Started ROP</a>
+                            <a class="cd-toc-link" href="/docs/1.2/remote-object-persistence-guide.html">Remote Object Persistence Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
-                        
-                            <a class="cd-toc-link" href="/docs/4.0/upgrade-guide/">Upgrade Guide</a>
-                        
-                    </div>
-                    
-                    <div class="cd-toc-item">
-                        <a class="cd-toc-link" href="/docs/4.0/api/">JavaDoc</a>
+                        <a class="cd-toc-link" href="/docs/1.2/api/">JavaDoc</a>
                     </div>
                 </div>
             </div>
             
             <div class="col-12 col-lg-8 col-xl-9  py-3 pl-lg-5  cd-content">
 
-                <article>
-                    <header>
-                        <h1></h1>
-                    </header>
-                    <section>
-                        <p>Documentation, the JavaDoc API, examples and articles for Cayenne 4.0 can all be found here.</p>
+            
+            <article>
+                <section>
+                    
+	
+
+<H3><A name="GeneralNavigation-GeneralNavigation"></A>General Navigation</H3>
+
+
+<P>CayenneModeler supports executing commands via its main menu and a button toolbar. Currently Modeler DOES NOT support contextual menus that open on right-click. All of the toolbar buttons have corresponding items in the menu that perform exact same operation (plus there are operations that are available via the menu only). If an item or a button action can not be performed in a given context an item is visually disabled.</P>
+
+<H4><A name="GeneralNavigation-Toolbars"></A>Toolbars</H4>
+
+<P>There is a main toolbar shown below, and a number of object-specific toolbars.</P>
+
+<P><SPAN class="image-wrap" style=""><img src="/docs/1.2/images/toolbar-main.jpg" style="border: 0px solid black"></SPAN></P>
+
+<P>The following is a quick reference of the toolbar button functions.</P>
+
+<H5><A name="GeneralNavigation-Project%3A%21iconnew.gif%21%21iconopen.gif%21%21iconsave.gif%21"></A>Project: <SPAN class="image-wrap" style=""><img src="/docs/1.2/images/icon-new.gif" style="border: 0px solid black"></SPAN> <SPAN class="image-wrap" style=""><img src="/docs/1.2/images/icon-open.gif" style="border: 0px solid black"></SPAN> <SPAN class="image-wrap" style=""><img src="/docs/1.2/images/icon-save.gif" style="border: 0px solid black"></SPAN></H5>
+
+<P>Cayenne Project is a logical deployment unit, that consists of a main project file (called cayenne.xml) and zero or more DataNode (<B>.driver.xml) and DataMap (</B>.map.xml) XML files. Currently CayenneModeler supports a single project per running Modeler instance, however multiple instances of Modeler can be started to edit multiple projects at the same time.</P>
+
+<H5><A name="GeneralNavigation-DataDomain%3A%21icondom.gif%21"></A>DataDomain: <SPAN class="image-wrap" style=""><img src="/docs/1.2/images/icon-dom.gif" style="border: 0px solid black"></SPAN>  </H5>
+
+<P>Each DataDomain is an abstraction of a logical data source, possibly spreading multiple physical databases. cayenne.xml file lists DataDomains present in the project. Most projects will contain only a single domain. DataDomain button creates a new DataDomain in the currently open project. </P>
+
+<H5><A name="GeneralNavigation-DataNode%3A%21iconnode.gif%21"></A>DataNode: <SPAN class="image-wrap" style=""><img src="/docs/1.2/images/icon-node.gif" style="border: 0px solid black"></SPAN></H5>
+
+<P>DataNode is an object that corresponds to a single physical data source, normally a database. Currently there are two types of DataNodes: </P>
+
+<UL>
+	<LI>Based on DataSource obtained via JNDI from the container (e.g. a WebLogic or Tomcat server).</LI>
+	<LI>Based on JDBC driver. In this case Cayenne provides its own connection pooling and other functions expected from a DataSource.</LI>
+</UL>
+
+
+<P>DataNode references zero or more DataMaps defined under DataDomain. </P>
+
+<H5><A name="GeneralNavigation-DataMap%3A%21icondatamap.gif%21"></A>DataMap: <SPAN class="image-wrap" style=""><img src="/docs/1.2/images/icon-datamap.gif" style="border: 0px solid black"></SPAN></H5>
+
+<P>DataMap is a collection of Object/Relational mapping information linking Java object layer with the relational database. DataMaps are created within DataDomains and can be later linked to DataNodes. </P>
+
+<H5><A name="GeneralNavigation-Entities%3A%21icondbentity.gif%21%21iconderiveddbentity.gif%21%21iconobjentity.gif%21"></A>Entities: <SPAN class="image-wrap" style=""><img src="/docs/1.2/images/icon-dbentity.gif" style="border: 0px solid black"></SPAN> <SPAN class="image-wrap" style=""><img src="/docs/1.2/images/icon-derived-dbentity.gif" style="border: 0px solid black"></SPAN> <SPAN class="image-wrap" style=""><img src="/docs/1.2/images/icon-objentity.gif" style="border: 0px solid black" [...]
+
+<P>There are two types of entities in Cayenne DataMaps: ObjEntities, reflecting the structure of the object layer, and DbEntities that describe database tables and views. In other words, ObjEntity is a descriptor of a persistent Java class, and DbEntity is a descriptor of a database table or view. Each ObjEntity is based on a DbEntity, but there can be DbEntities that do not have a corresponding ObjEntity. </P>
+
+<P>There is a special kind of DbEntity - DerivedDbEntity - that has limited capabilities of defining &quot;virtual&quot; database views. </P>
+
+<H5><A name="GeneralNavigation-Procedures%3A%21iconstoredprocedure.gif%21"></A>Procedures: <SPAN class="image-wrap" style=""><img src="/docs/1.2/images/icon-stored-procedure.gif" style="border: 0px solid black"></SPAN></H5>
+
+<P>Procedure is a decriptor of a database stored procedure. It can be created in the modeler and later invoked using ProcedureQuery. Note that not all databases support stored procedures. </P>
+
+<H5><A name="GeneralNavigation-Query%3A%21iconquery.gif%21"></A>Query: <SPAN class="image-wrap" style=""><img src="/docs/1.2/images/icon-query.gif" style="border: 0px solid black"></SPAN></H5>
+
+<P>Cayenne allows to store queries in the DataMap. There are three types of Cayenne queries that can be created in the Modeler - object select query, raw SQL query, and procedure query.</P>
 
-                    </section>
-                </article>
+                </section>
+            </article>
 
 	        </div>
 	    </div>
@@ -279,7 +323,7 @@
     </div>
 </footer>
     
-<script>
+<script type="application/javascript">
 var doNotTrack = false;
 if (!doNotTrack) {
 	(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
diff --git a/docs/4.0/index.html b/docs/1.2/general-preferences.html
similarity index 89%
copy from docs/4.0/index.html
copy to docs/1.2/general-preferences.html
index 2bbcbd2..edcd8b5 100644
--- a/docs/4.0/index.html
+++ b/docs/1.2/general-preferences.html
@@ -15,7 +15,7 @@
         <meta name="theme-color" content="#ffffff">
         <link rel="stylesheet" href="https://cayenne.apache.org/css/styles-e429186d1b.css"/>
         <script src="https://cayenne.apache.org/js/bundle-92aa692db7.js"></script>
-        <title>Apache Cayenne</title>
+        <title>General Preferences &middot; Apache Cayenne</title>
     </head>
     <body data-spy="scroll" data-target=".toc-side" class="cd-head"> 
 <header class="page-header">
@@ -92,10 +92,10 @@
                     <ul class="nav" role="tablist">
                         <li class="nav-item dropdown mw-100">
                             <a class="nav-link dropdown-toggle text-truncate" data-toggle="dropdown" href="#" role="button" aria-haspopup="true" aria-expanded="false">
-                                Cayenne Version 4.0
+                                Cayenne Version 1.2
                             </a>
                             <div class="dropdown-menu">
-                                <a class="dropdown-item" href="/docs/4.1/getting-started-guide/">Version 4.1 (Release Candidate)</a><a class="dropdown-item" href="/docs/4.0/getting-started-guide/">Version 4.0 (Stable)</a><a class="dropdown-item" href="/docs/3.1/getting-started-guide/">Version 3.1 (Aging)</a><a class="dropdown-item" href="/docs/3.0/api/">Version 3.0 (Legacy)</a><a class="dropdown-item" href="/docs/2.0/api/">Version 2.0 (Legacy)</a><a class="dropdown-item" href="/docs/1.2/ [...]
+                                <a class="dropdown-item" href="/docs/4.1/getting-started-guide/">Version 4.1 (Release Candidate)</a><a class="dropdown-item" href="/docs/4.0/getting-started-guide/">Version 4.0 (Stable)</a><a class="dropdown-item" href="/docs/3.1/getting-started-guide/">Version 3.1 (Aging)</a><a class="dropdown-item" href="/docs/3.0/cayenne-guide.html">Version 3.0 (Legacy)</a><a class="dropdown-item" href="/docs/2.0/user-guide.html">Version 2.0 (Legacy)</a><a class="dropdo [...]
                             </div>
                         </li>
                     </ul>
@@ -111,45 +111,42 @@
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/getting-started-guide/">Getting Started</a>
+                            <a class="cd-toc-link" href="/docs/1.2/user-guide.html">User Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/cayenne-guide/">Cayenne Guide</a>
+                            <a class="cd-toc-link" href="/docs/1.2/modeler-guide.html">Modeler Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/getting-started-rop/">Getting Started ROP</a>
+                            <a class="cd-toc-link" href="/docs/1.2/remote-object-persistence-guide.html">Remote Object Persistence Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
-                        
-                            <a class="cd-toc-link" href="/docs/4.0/upgrade-guide/">Upgrade Guide</a>
-                        
-                    </div>
-                    
-                    <div class="cd-toc-item">
-                        <a class="cd-toc-link" href="/docs/4.0/api/">JavaDoc</a>
+                        <a class="cd-toc-link" href="/docs/1.2/api/">JavaDoc</a>
                     </div>
                 </div>
             </div>
             
             <div class="col-12 col-lg-8 col-xl-9  py-3 pl-lg-5  cd-content">
 
-                <article>
-                    <header>
-                        <h1></h1>
-                    </header>
-                    <section>
-                        <p>Documentation, the JavaDoc API, examples and articles for Cayenne 4.0 can all be found here.</p>
+            
+            <article>
+                <section>
+                    
+	
+
+<H3><A name="GeneralPreferences-GeneralPreferences"></A>General Preferences</H3>
+
+<P>&quot;General Preferences&quot; panel currently supports configuration of a single parameter - &quot;Preferences Save Interval&quot;. This parameter determines how often should the Modeler commit preference values that it collects automatically during normal operation (e.g. main window or panel sizes, etc.). Don't set this to a small value as this may sometimes degrade Modeler performance. </P>
 
-                    </section>
-                </article>
+                </section>
+            </article>
 
 	        </div>
 	    </div>
@@ -279,7 +276,7 @@
     </div>
 </footer>
     
-<script>
+<script type="application/javascript">
 var doNotTrack = false;
 if (!doNotTrack) {
 	(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
diff --git a/docs/4.0/index.html b/docs/1.2/generate-database-schema.html
similarity index 89%
copy from docs/4.0/index.html
copy to docs/1.2/generate-database-schema.html
index 2bbcbd2..00fee35 100644
--- a/docs/4.0/index.html
+++ b/docs/1.2/generate-database-schema.html
@@ -15,7 +15,7 @@
         <meta name="theme-color" content="#ffffff">
         <link rel="stylesheet" href="https://cayenne.apache.org/css/styles-e429186d1b.css"/>
         <script src="https://cayenne.apache.org/js/bundle-92aa692db7.js"></script>
-        <title>Apache Cayenne</title>
+        <title>Generate Database Schema &middot; Apache Cayenne</title>
     </head>
     <body data-spy="scroll" data-target=".toc-side" class="cd-head"> 
 <header class="page-header">
@@ -92,10 +92,10 @@
                     <ul class="nav" role="tablist">
                         <li class="nav-item dropdown mw-100">
                             <a class="nav-link dropdown-toggle text-truncate" data-toggle="dropdown" href="#" role="button" aria-haspopup="true" aria-expanded="false">
-                                Cayenne Version 4.0
+                                Cayenne Version 1.2
                             </a>
                             <div class="dropdown-menu">
-                                <a class="dropdown-item" href="/docs/4.1/getting-started-guide/">Version 4.1 (Release Candidate)</a><a class="dropdown-item" href="/docs/4.0/getting-started-guide/">Version 4.0 (Stable)</a><a class="dropdown-item" href="/docs/3.1/getting-started-guide/">Version 3.1 (Aging)</a><a class="dropdown-item" href="/docs/3.0/api/">Version 3.0 (Legacy)</a><a class="dropdown-item" href="/docs/2.0/api/">Version 2.0 (Legacy)</a><a class="dropdown-item" href="/docs/1.2/ [...]
+                                <a class="dropdown-item" href="/docs/4.1/getting-started-guide/">Version 4.1 (Release Candidate)</a><a class="dropdown-item" href="/docs/4.0/getting-started-guide/">Version 4.0 (Stable)</a><a class="dropdown-item" href="/docs/3.1/getting-started-guide/">Version 3.1 (Aging)</a><a class="dropdown-item" href="/docs/3.0/cayenne-guide.html">Version 3.0 (Legacy)</a><a class="dropdown-item" href="/docs/2.0/user-guide.html">Version 2.0 (Legacy)</a><a class="dropdo [...]
                             </div>
                         </li>
                     </ul>
@@ -111,45 +111,48 @@
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/getting-started-guide/">Getting Started</a>
+                            <a class="cd-toc-link" href="/docs/1.2/user-guide.html">User Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/cayenne-guide/">Cayenne Guide</a>
+                            <a class="cd-toc-link" href="/docs/1.2/modeler-guide.html">Modeler Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/getting-started-rop/">Getting Started ROP</a>
+                            <a class="cd-toc-link" href="/docs/1.2/remote-object-persistence-guide.html">Remote Object Persistence Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
-                        
-                            <a class="cd-toc-link" href="/docs/4.0/upgrade-guide/">Upgrade Guide</a>
-                        
-                    </div>
-                    
-                    <div class="cd-toc-item">
-                        <a class="cd-toc-link" href="/docs/4.0/api/">JavaDoc</a>
+                        <a class="cd-toc-link" href="/docs/1.2/api/">JavaDoc</a>
                     </div>
                 </div>
             </div>
             
             <div class="col-12 col-lg-8 col-xl-9  py-3 pl-lg-5  cd-content">
 
-                <article>
-                    <header>
-                        <h1></h1>
-                    </header>
-                    <section>
-                        <p>Documentation, the JavaDoc API, examples and articles for Cayenne 4.0 can all be found here.</p>
+            
+            <article>
+                <section>
+                    
+	
+
+<H3><A name="GenerateDatabaseSchema-GenerateDatabaseSchema"></A>Generate Database Schema</H3>
+
+<P>To be done...</P>
+
+<P><SPAN class="image-wrap" style=""><img src="/docs/1.2/images/generate-connect.jpg" style="border: 0px solid black"></SPAN></P>
+
+<P><SPAN class="image-wrap" style=""><img src="/docs/1.2/images/generate-options.jpg" style="border: 0px solid black"></SPAN></P>
+
+<P><SPAN class="image-wrap" style=""><img src="/docs/1.2/images/generate-options-tables.jpg" style="border: 0px solid black"></SPAN></P>
 
-                    </section>
-                </article>
+                </section>
+            </article>
 
 	        </div>
 	    </div>
@@ -279,7 +282,7 @@
     </div>
 </footer>
     
-<script>
+<script type="application/javascript">
 var doNotTrack = false;
 if (!doNotTrack) {
 	(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
diff --git a/docs/4.0/index.html b/docs/1.2/generate-java-classes.html
similarity index 75%
copy from docs/4.0/index.html
copy to docs/1.2/generate-java-classes.html
index 2bbcbd2..26db89c 100644
--- a/docs/4.0/index.html
+++ b/docs/1.2/generate-java-classes.html
@@ -15,7 +15,7 @@
         <meta name="theme-color" content="#ffffff">
         <link rel="stylesheet" href="https://cayenne.apache.org/css/styles-e429186d1b.css"/>
         <script src="https://cayenne.apache.org/js/bundle-92aa692db7.js"></script>
-        <title>Apache Cayenne</title>
+        <title>Generate Java Classes &middot; Apache Cayenne</title>
     </head>
     <body data-spy="scroll" data-target=".toc-side" class="cd-head"> 
 <header class="page-header">
@@ -92,10 +92,10 @@
                     <ul class="nav" role="tablist">
                         <li class="nav-item dropdown mw-100">
                             <a class="nav-link dropdown-toggle text-truncate" data-toggle="dropdown" href="#" role="button" aria-haspopup="true" aria-expanded="false">
-                                Cayenne Version 4.0
+                                Cayenne Version 1.2
                             </a>
                             <div class="dropdown-menu">
-                                <a class="dropdown-item" href="/docs/4.1/getting-started-guide/">Version 4.1 (Release Candidate)</a><a class="dropdown-item" href="/docs/4.0/getting-started-guide/">Version 4.0 (Stable)</a><a class="dropdown-item" href="/docs/3.1/getting-started-guide/">Version 3.1 (Aging)</a><a class="dropdown-item" href="/docs/3.0/api/">Version 3.0 (Legacy)</a><a class="dropdown-item" href="/docs/2.0/api/">Version 2.0 (Legacy)</a><a class="dropdown-item" href="/docs/1.2/ [...]
+                                <a class="dropdown-item" href="/docs/4.1/getting-started-guide/">Version 4.1 (Release Candidate)</a><a class="dropdown-item" href="/docs/4.0/getting-started-guide/">Version 4.0 (Stable)</a><a class="dropdown-item" href="/docs/3.1/getting-started-guide/">Version 3.1 (Aging)</a><a class="dropdown-item" href="/docs/3.0/cayenne-guide.html">Version 3.0 (Legacy)</a><a class="dropdown-item" href="/docs/2.0/user-guide.html">Version 2.0 (Legacy)</a><a class="dropdo [...]
                             </div>
                         </li>
                     </ul>
@@ -111,45 +111,62 @@
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/getting-started-guide/">Getting Started</a>
+                            <a class="cd-toc-link" href="/docs/1.2/user-guide.html">User Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/cayenne-guide/">Cayenne Guide</a>
+                            <a class="cd-toc-link" href="/docs/1.2/modeler-guide.html">Modeler Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
                         
-                            <a class="cd-toc-link" href="/docs/4.0/getting-started-rop/">Getting Started ROP</a>
+                            <a class="cd-toc-link" href="/docs/1.2/remote-object-persistence-guide.html">Remote Object Persistence Guide</a>
                         
                     </div>
                     
                     <div class="cd-toc-item">
-                        
-                            <a class="cd-toc-link" href="/docs/4.0/upgrade-guide/">Upgrade Guide</a>
-                        
-                    </div>
-                    
-                    <div class="cd-toc-item">
-                        <a class="cd-toc-link" href="/docs/4.0/api/">JavaDoc</a>
+                        <a class="cd-toc-link" href="/docs/1.2/api/">JavaDoc</a>
                     </div>
                 </div>
             </div>
             
             <div class="col-12 col-lg-8 col-xl-9  py-3 pl-lg-5  cd-content">
 
-                <article>
-                    <header>
-                        <h1></h1>
-                    </header>
-                    <section>
-                        <p>Documentation, the JavaDoc API, examples and articles for Cayenne 4.0 can all be found here.</p>
+            
+            <article>
+                <section>
+                    
+	
+
+<P>First we'd like to mention an alternative way of generating classes from the model, that can save time in many situtations compared to using the GUI: <A href="cgen.html" title="cgen">cgen Ant task</A> would automatically refresh generated classes when needed during the build.</P>
+
+<P>To generate classes from the Modeler, you must select either a DataMap or an ObjEntity in the project tree and then select <TT>&quot;Tools &gt; Generate Classes&quot;</TT> from the menu. A &quot;Code Generation&quot; dialog opens:</P>
+
+<P><SPAN class="image-wrap" style=""><img src="/docs/1.2/images/generator1.jpg" style="border: 0px solid black"></SPAN></P>
+
+<P>It has two tabs - &quot;Code Generator&quot; for setting generator parameters, and &quot;Entities&quot; for entity selection. If you had an ObjEntity selected prior to opening the dialog, only this entity will be selected. Otherwise all entities that do not have validation failures will be selected. Users of course can change the selection to run generator for an arbitrary subset of entities.</P>
+
+<P>Generator provides three modes of operation that can be chosen from the &quot;Type:&quot; dropdown. </P>
+
+<H3><A name="GenerateJavaClasses-%22StandardPersistentObjects%22GenerationMode"></A>&quot;Standard Persistent Objects&quot; Generation Mode</H3>
+
+<P>The first type, shown above, is &quot;Standard Persistent Objects&quot; - it will generate class pairs (&quot;auto&quot; superclass, and an empty subclass that can be later customized by users). All you need is to select a root directory of your source code (nested package subdirectories will be created automatically), and check that the default superclass package is what you want. If you previously set a Java package for the DataMap, the default superclass package will appen &quot;.a [...]
+
... 72186 lines suppressed ...