You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by jo...@apache.org on 2020/06/20 20:25:51 UTC

[isis] branch master updated (c81c658 -> a52d01b)

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

joergrade pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git.


    from c81c658  ISIS-2340: deduplicate ThereCanBeOnlyOne, as used by Wicket and Vaadin
     new 27dc5ad  ISIS-2350 RoToolPanel shows object icon
     new 7e8e4f5  ISIS-2350 RoToolPanel renamed to RoIconBar, styling via css. Factory and action not yet possible at the same time. Chart Sample added. Code cleanup.
     new e45a763  Revert "ISIS-2374 Support Gradle Builds - initial"
     new fe1716e  Merge branch 'ISIS-2374'
     new 8ee559a  ISIS-2350 Colours changed in SampleChart
     new d5e9cb1  ISIS-2350 yet another try to ignore .idea files
     new 64ee75d  Merge remote-tracking branch 'origin/master'
     new e40663b  ISIS-2350 dragging from EventLogTable, EventChart introduced
     new a52d01b  Merge remote-tracking branch 'origin/master'

The 9 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .gitignore                                         |   1 +
 api/applib/build.gradle                            |  24 --
 api/build.gradle                                   |   6 -
 api/gradle/wrapper/gradle-wrapper.properties       |   5 -
 api/gradlew                                        | 172 -------------
 api/gradlew.bat                                    |  84 -------
 api/schema/build.gradle                            |  12 -
 api/settings.gradle                                |  10 -
 build.gradle                                       |  27 ---
 .../gradle/wrapper/gradle-wrapper.properties       |   5 -
 core/codegen-bytebuddy/build.gradle                |  17 --
 core/commons/build.gradle                          |  26 --
 core/config/build.gradle                           |  17 --
 core/internaltestsupport/build.gradle              |  42 ----
 core/metamodel/build.gradle                        |  32 ---
 core/runtime/build.gradle                          |  17 --
 core/runtimeservices/build.gradle                  |  16 --
 core/security/build.gradle                         |  18 --
 core/webapp/build.gradle                           |  18 --
 examples/demo/domain/build.gradle                  |   2 -
 examples/demo/wicket/build.gradle                  |   5 -
 examples/smoketests/build.gradle                   |  22 --
 extensions/core/flyway/impl/build.gradle           |  15 --
 extensions/core/model-annotation/build.gradle      |  14 --
 extensions/security/secman/api/build.gradle        |   8 -
 .../secman/encryption-jbcrypt/build.gradle         |  14 --
 extensions/security/secman/model/build.gradle      |  13 -
 .../security/secman/persistence-jdo/build.gradle   |  16 --
 .../security/secman/shiro-realm/build.gradle       |  14 --
 .../security/shiro-realm-ldap/impl/build.gradle    |  12 -
 extensions/vro/cors/impl/build.gradle              |  14 --
 extensions/vw/exceldownload/ui/build.gradle        |  16 --
 extensions/vw/fullcalendar/applib/build.gradle     |  12 -
 extensions/vw/fullcalendar/ui/build.gradle         |  13 -
 extensions/vw/pdfjs/applib/build.gradle            |  12 -
 extensions/vw/pdfjs/metamodel/build.gradle         |  13 -
 extensions/vw/pdfjs/ui/build.gradle                |  12 -
 gradle/wrapper/gradle-wrapper.properties           |   6 -
 gradlew                                            | 172 -------------
 gradlew.bat                                        |  84 -------
 .../kroviz/core/aggregator/ActionDispatcher.kt     |  26 +-
 .../kroviz/core/aggregator/BaseAggregator.kt       |   4 +-
 .../core/aggregator/DomainTypesAggregator.kt       |   2 +-
 .../kroviz/core/aggregator/ListAggregator.kt       |  27 ++-
 .../kroviz/core/aggregator/ObjectAggregator.kt     |   4 +-
 .../isis/client/kroviz/core/event/EventStore.kt    |  13 +
 .../isis/client/kroviz/core/event/LogEntry.kt      |   7 +-
 .../kroviz/core/event/ResourceSpecification.kt     |   3 +-
 .../client/kroviz/core/event/RoXmlHttpRequest.kt   |  38 +--
 .../isis/client/kroviz/core/model/DisplayModel.kt  |   9 -
 .../kroviz/core/model/DisplayModelWithLayout.kt    |   2 +
 .../isis/client/kroviz/handler/BaseHandler.kt      |   3 +-
 .../org/apache/isis/client/kroviz/to/Link.kt       |  35 ++-
 .../apache/isis/client/kroviz/ui/ErrorDialog.kt    |   2 +-
 .../apache/isis/client/kroviz/ui/EventLogDetail.kt |   3 +-
 .../org/apache/isis/client/kroviz/ui/FileDialog.kt |   2 +-
 .../isis/client/kroviz/ui/builder/RowBuilder.kt    |   2 +-
 .../org/apache/isis/client/kroviz/ui/kv/CFG.kt     | 120 ---------
 .../isis/client/kroviz/ui/kv/ChartFactory.kt       |  10 +
 .../apache/isis/client/kroviz/ui/kv/ChartModel.kt  |  53 ++++
 .../isis/client/kroviz/ui/kv/ColumnFactory.kt      |  13 +-
 .../apache/isis/client/kroviz/ui/kv/Constants.kt   |  10 +
 .../apache/isis/client/kroviz/ui/kv/EventChart.kt  |  63 +++++
 .../isis/client/kroviz/ui/kv/EventLogTable.kt      |  16 +-
 .../apache/isis/client/kroviz/ui/kv/MenuFactory.kt | 151 +++++++++---
 .../org/apache/isis/client/kroviz/ui/kv/RoApp.kt   |   2 +-
 .../apache/isis/client/kroviz/ui/kv/RoIconBar.kt   | 151 ++++++++++++
 .../apache/isis/client/kroviz/ui/kv/RoMenuBar.kt   |  21 +-
 .../isis/client/kroviz/ui/kv/RoSimplePanel.kt      |  11 -
 .../org/apache/isis/client/kroviz/ui/kv/RoTable.kt |   7 +-
 .../apache/isis/client/kroviz/ui/kv/RoToolPanel.kt |  90 -------
 .../apache/isis/client/kroviz/ui/kv/UiManager.kt   |   7 +-
 .../apache/isis/client/kroviz/utils/IconManager.kt |  25 +-
 .../org/apache/isis/client/kroviz/utils/Utils.kt   |  50 ++--
 .../kroviz/src/main/resources/css/kroviz.css       |  34 ++-
 .../apache/isis/client/kroviz/IntegrationTest.kt   |   5 +-
 .../client/kroviz/core/event/EventStoreTest.kt     |   9 +-
 incubator/mappings/microprofile/build.gradle       |  18 --
 incubator/viewers/build.gradle                     |   6 -
 .../gradle/wrapper/gradle-wrapper.properties       |   5 -
 incubator/viewers/gradlew                          | 172 -------------
 incubator/viewers/gradlew.bat                      |  84 -------
 incubator/viewers/settings.gradle                  |  10 -
 incubator/viewers/vaadin/model/build.gradle        |  16 --
 incubator/viewers/vaadin/ui/build.gradle           |  17 --
 incubator/viewers/vaadin/viewer/build.gradle       |  11 -
 legacy/extensions/core/applib/build.gradle         |  17 --
 legacy/extensions/core/commons/build.gradle        |  17 --
 legacy/extensions/core/metamodel/build.gradle      |  20 --
 legacy/extensions/core/runtime/build.gradle        |  20 --
 legacy/mappings/restclient/build.gradle            |  14 --
 mappings/jaxrsclient/api/build.gradle              |  11 -
 mappings/restclient/api/build.gradle               |  13 -
 persistence/jdo/applib/build.gradle                |  14 --
 persistence/jdo/datanucleus-5/build.gradle         |  22 --
 persistence/jpa/applib/build.gradle                |  12 -
 persistence/jpa/model/build.gradle                 |  17 --
 security/bypass/build.gradle                       |  11 -
 security/keycloak/build.gradle                     |  14 --
 security/shiro/build.gradle                        |  18 --
 settings.gradle                                    | 268 ---------------------
 subdomains/base/applib/build.gradle                |  17 --
 subdomains/docx/applib/build.gradle                |  11 -
 subdomains/excel/applib/build.gradle               |  18 --
 subdomains/excel/fixture/build.gradle              |  15 --
 subdomains/excel/integtests/build.gradle           |  15 --
 subdomains/excel/testing/build.gradle              |  11 -
 subdomains/freemarker/applib/build.gradle          |  11 -
 subdomains/ognl/applib/build.gradle                |  11 -
 subdomains/pdfbox/applib/build.gradle              |  11 -
 subdomains/spring/applib/build.gradle              |  13 -
 subdomains/xdocreport/applib/build.gradle          |  18 --
 subdomains/zip/applib/build.gradle                 |  12 -
 testing/fakedata/applib/build.gradle               |  16 --
 testing/fakedata/fixtures/build.gradle             |  15 --
 testing/fakedata/integtests/build.gradle           |  13 -
 testing/fixtures/applib/build.gradle               |  17 --
 testing/h2console/ui/build.gradle                  |  12 -
 testing/hsqldbmgr/ui/build.gradle                  |  12 -
 testing/integtestsupport/applib/build.gradle       |  28 ---
 testing/specsupport/applib/build.gradle            |  17 --
 testing/unittestsupport/applib/build.gradle        |  33 ---
 valuetypes/asciidoc/applib/build.gradle            |  12 -
 valuetypes/asciidoc/ui/vaadin/build.gradle         |  12 -
 valuetypes/asciidoc/ui/wicket/build.gradle         |  12 -
 valuetypes/markdown/applib/build.gradle            |  12 -
 valuetypes/markdown/ui/build.gradle                |  17 --
 valuetypes/sse/applib/build.gradle                 |  14 --
 valuetypes/sse/metamodel/build.gradle              |  12 -
 valuetypes/sse/ui/build.gradle                     |  15 --
 viewers/common/build.gradle                        |  14 --
 viewers/restfulobjects/applib/build.gradle         |  14 --
 .../restfulobjects/jaxrs-resteasy-4/build.gradle   |  21 --
 viewers/restfulobjects/rendering/build.gradle      |  13 -
 viewers/restfulobjects/viewer/build.gradle         |  17 --
 viewers/wicket/model/build.gradle                  |  21 --
 viewers/wicket/ui/build.gradle                     |  80 ------
 viewers/wicket/viewer/build.gradle                 |  38 ---
 138 files changed, 606 insertions(+), 2939 deletions(-)
 delete mode 100644 api/applib/build.gradle
 delete mode 100644 api/build.gradle
 delete mode 100644 api/gradle/wrapper/gradle-wrapper.properties
 delete mode 100644 api/gradlew
 delete mode 100644 api/gradlew.bat
 delete mode 100644 api/schema/build.gradle
 delete mode 100644 api/settings.gradle
 delete mode 100644 build.gradle
 delete mode 100644 core-parent/gradle/wrapper/gradle-wrapper.properties
 delete mode 100644 core/codegen-bytebuddy/build.gradle
 delete mode 100644 core/commons/build.gradle
 delete mode 100644 core/config/build.gradle
 delete mode 100644 core/internaltestsupport/build.gradle
 delete mode 100644 core/metamodel/build.gradle
 delete mode 100644 core/runtime/build.gradle
 delete mode 100644 core/runtimeservices/build.gradle
 delete mode 100644 core/security/build.gradle
 delete mode 100644 core/webapp/build.gradle
 delete mode 100644 examples/demo/domain/build.gradle
 delete mode 100644 examples/demo/wicket/build.gradle
 delete mode 100644 examples/smoketests/build.gradle
 delete mode 100644 extensions/core/flyway/impl/build.gradle
 delete mode 100644 extensions/core/model-annotation/build.gradle
 delete mode 100644 extensions/security/secman/api/build.gradle
 delete mode 100644 extensions/security/secman/encryption-jbcrypt/build.gradle
 delete mode 100644 extensions/security/secman/model/build.gradle
 delete mode 100644 extensions/security/secman/persistence-jdo/build.gradle
 delete mode 100644 extensions/security/secman/shiro-realm/build.gradle
 delete mode 100644 extensions/security/shiro-realm-ldap/impl/build.gradle
 delete mode 100644 extensions/vro/cors/impl/build.gradle
 delete mode 100644 extensions/vw/exceldownload/ui/build.gradle
 delete mode 100644 extensions/vw/fullcalendar/applib/build.gradle
 delete mode 100644 extensions/vw/fullcalendar/ui/build.gradle
 delete mode 100644 extensions/vw/pdfjs/applib/build.gradle
 delete mode 100644 extensions/vw/pdfjs/metamodel/build.gradle
 delete mode 100644 extensions/vw/pdfjs/ui/build.gradle
 delete mode 100644 gradle/wrapper/gradle-wrapper.properties
 delete mode 100644 gradlew
 delete mode 100644 gradlew.bat
 delete mode 100644 incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/CFG.kt
 create mode 100644 incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/ChartFactory.kt
 create mode 100644 incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/ChartModel.kt
 create mode 100644 incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/Constants.kt
 create mode 100644 incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/EventChart.kt
 create mode 100644 incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/RoIconBar.kt
 delete mode 100644 incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/RoSimplePanel.kt
 delete mode 100644 incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/RoToolPanel.kt
 delete mode 100644 incubator/mappings/microprofile/build.gradle
 delete mode 100644 incubator/viewers/build.gradle
 delete mode 100644 incubator/viewers/gradle/wrapper/gradle-wrapper.properties
 delete mode 100644 incubator/viewers/gradlew
 delete mode 100644 incubator/viewers/gradlew.bat
 delete mode 100644 incubator/viewers/settings.gradle
 delete mode 100644 incubator/viewers/vaadin/model/build.gradle
 delete mode 100644 incubator/viewers/vaadin/ui/build.gradle
 delete mode 100644 incubator/viewers/vaadin/viewer/build.gradle
 delete mode 100644 legacy/extensions/core/applib/build.gradle
 delete mode 100644 legacy/extensions/core/commons/build.gradle
 delete mode 100644 legacy/extensions/core/metamodel/build.gradle
 delete mode 100644 legacy/extensions/core/runtime/build.gradle
 delete mode 100644 legacy/mappings/restclient/build.gradle
 delete mode 100644 mappings/jaxrsclient/api/build.gradle
 delete mode 100644 mappings/restclient/api/build.gradle
 delete mode 100644 persistence/jdo/applib/build.gradle
 delete mode 100644 persistence/jdo/datanucleus-5/build.gradle
 delete mode 100644 persistence/jpa/applib/build.gradle
 delete mode 100644 persistence/jpa/model/build.gradle
 delete mode 100644 security/bypass/build.gradle
 delete mode 100644 security/keycloak/build.gradle
 delete mode 100644 security/shiro/build.gradle
 delete mode 100644 settings.gradle
 delete mode 100644 subdomains/base/applib/build.gradle
 delete mode 100644 subdomains/docx/applib/build.gradle
 delete mode 100644 subdomains/excel/applib/build.gradle
 delete mode 100644 subdomains/excel/fixture/build.gradle
 delete mode 100644 subdomains/excel/integtests/build.gradle
 delete mode 100644 subdomains/excel/testing/build.gradle
 delete mode 100644 subdomains/freemarker/applib/build.gradle
 delete mode 100644 subdomains/ognl/applib/build.gradle
 delete mode 100644 subdomains/pdfbox/applib/build.gradle
 delete mode 100644 subdomains/spring/applib/build.gradle
 delete mode 100644 subdomains/xdocreport/applib/build.gradle
 delete mode 100644 subdomains/zip/applib/build.gradle
 delete mode 100644 testing/fakedata/applib/build.gradle
 delete mode 100644 testing/fakedata/fixtures/build.gradle
 delete mode 100644 testing/fakedata/integtests/build.gradle
 delete mode 100644 testing/fixtures/applib/build.gradle
 delete mode 100644 testing/h2console/ui/build.gradle
 delete mode 100644 testing/hsqldbmgr/ui/build.gradle
 delete mode 100644 testing/integtestsupport/applib/build.gradle
 delete mode 100644 testing/specsupport/applib/build.gradle
 delete mode 100644 testing/unittestsupport/applib/build.gradle
 delete mode 100644 valuetypes/asciidoc/applib/build.gradle
 delete mode 100644 valuetypes/asciidoc/ui/vaadin/build.gradle
 delete mode 100644 valuetypes/asciidoc/ui/wicket/build.gradle
 delete mode 100644 valuetypes/markdown/applib/build.gradle
 delete mode 100644 valuetypes/markdown/ui/build.gradle
 delete mode 100644 valuetypes/sse/applib/build.gradle
 delete mode 100644 valuetypes/sse/metamodel/build.gradle
 delete mode 100644 valuetypes/sse/ui/build.gradle
 delete mode 100644 viewers/common/build.gradle
 delete mode 100644 viewers/restfulobjects/applib/build.gradle
 delete mode 100644 viewers/restfulobjects/jaxrs-resteasy-4/build.gradle
 delete mode 100644 viewers/restfulobjects/rendering/build.gradle
 delete mode 100644 viewers/restfulobjects/viewer/build.gradle
 delete mode 100644 viewers/wicket/model/build.gradle
 delete mode 100644 viewers/wicket/ui/build.gradle
 delete mode 100644 viewers/wicket/viewer/build.gradle


[isis] 06/09: ISIS-2350 yet another try to ignore .idea files

Posted by jo...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

joergrade pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git

commit d5e9cb11f6b79068b4f6dd712fe4a035f3966a59
Author: Jörg Rade <jo...@kuehne-nagel.com>
AuthorDate: Thu Jun 18 17:32:49 2020 +0200

    ISIS-2350 yet another try to ignore .idea files
---
 .gitignore | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/.gitignore b/.gitignore
index 61d0a0f..d757448 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,6 +1,7 @@
 # IDEA
 .idea
 .idea/gradle.xml
+.idea/jarRepositories.xnl
 .idea/modules.xml
 .idea/vcs.xml
 *.iml
@@ -66,3 +67,4 @@ _commit.sh
 # The following files are generated/updated by vaadin-maven-plugin
 node_modules/
 
+/incubator/clients/kroviz/package.json


[isis] 01/09: ISIS-2350 RoToolPanel shows object icon

Posted by jo...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

joergrade pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git

commit 27dc5ad79d7ba798c768a1713ab30944c0f95903
Author: Jörg Rade <jo...@kuehne-nagel.com>
AuthorDate: Fri Jun 12 10:41:20 2020 +0200

    ISIS-2350 RoToolPanel shows object icon
---
 .../apache/isis/client/kroviz/ui/kv/RoToolPanel.kt | 35 ++++++++++++++++++----
 1 file changed, 30 insertions(+), 5 deletions(-)

diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/RoToolPanel.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/RoToolPanel.kt
index ba2b587..a7289ee 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/RoToolPanel.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/RoToolPanel.kt
@@ -69,22 +69,47 @@ object RoToolPanel : SimplePanel() {
     }
 
     private fun addButton(exp: Exposer) {
-        val b = buildButton(exp.iconName, "dynamic sample").onClick {
-
+        var iconName = ""
+        val ed = exp.dynamise()
+        if (ed.hasOwnProperty("iconName") as Boolean) {
+            iconName = ed["iconName"] as String
+        }
+        val b = buildButton(iconName, "dynamic sample")
+        val tObject = exp.delegate
+        val m = MenuFactory.buildFor(
+                tObject,
+                false,
+                ButtonStyle.LINK)
+        console.log("[RoToolPanel.addButton]")
+        console.log(exp)
+        console.log(m)
+        b.apply {
+            onEvent {
+                dblclick = {
+                    console.log("dblclick")
+                    m.toggle()
+                    m.show()
+                }
+            }
         }
         buttons.add(b)
         panel.add(b)
     }
 
     private fun buildButton(iconName: String, toolTip: String): Button {
-        return Button(
+        val icon =
+                if (iconName.startsWith("fa")) iconName else {
+                    IconManager.find(iconName)
+                }
+        val b = Button(
                 text = "",
-                icon = IconManager.find(iconName),
-                style = ButtonStyle.LIGHT).apply {
+                icon = icon,
+                style = ButtonStyle.LINK).apply {
             padding = CssSize(-16, UNIT.px)
             margin = CssSize(0, UNIT.px)
             title = toolTip
         }
+        return b
     }
 
 }


[isis] 08/09: ISIS-2350 dragging from EventLogTable, EventChart introduced

Posted by jo...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

joergrade pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git

commit e40663bb2033f803360b0bbaf348a2bf88e2c6ca
Author: Jörg Rade <jo...@kuehne-nagel.com>
AuthorDate: Sat Jun 20 22:24:33 2020 +0200

    ISIS-2350 dragging from EventLogTable, EventChart introduced
---
 .../kroviz/core/aggregator/ActionDispatcher.kt     |  26 ++---
 .../kroviz/core/aggregator/BaseAggregator.kt       |   4 +-
 .../core/aggregator/DomainTypesAggregator.kt       |   2 +-
 .../kroviz/core/aggregator/ListAggregator.kt       |  27 ++---
 .../kroviz/core/aggregator/ObjectAggregator.kt     |   4 +-
 .../isis/client/kroviz/core/event/EventStore.kt    |   6 +-
 .../isis/client/kroviz/core/event/LogEntry.kt      |   7 +-
 .../kroviz/core/event/ResourceSpecification.kt     |   3 +-
 .../client/kroviz/core/event/RoXmlHttpRequest.kt   |  38 ++++---
 .../kroviz/core/model/DisplayModelWithLayout.kt    |   2 +
 .../isis/client/kroviz/handler/BaseHandler.kt      |   3 +-
 .../org/apache/isis/client/kroviz/to/Link.kt       |  35 +++---
 .../apache/isis/client/kroviz/ui/ErrorDialog.kt    |   2 +-
 .../apache/isis/client/kroviz/ui/EventLogDetail.kt |   3 +-
 .../org/apache/isis/client/kroviz/ui/FileDialog.kt |   2 +-
 .../isis/client/kroviz/ui/builder/RowBuilder.kt    |   2 +-
 .../org/apache/isis/client/kroviz/ui/kv/CFG.kt     | 120 --------------------
 .../isis/client/kroviz/ui/kv/ChartFactory.kt       |  10 ++
 .../apache/isis/client/kroviz/ui/kv/ChartModel.kt  |  53 +++++++++
 .../apache/isis/client/kroviz/ui/kv/ChartTab.kt    | 121 ---------------------
 .../isis/client/kroviz/ui/kv/ColumnFactory.kt      |   5 +-
 .../apache/isis/client/kroviz/ui/kv/Constants.kt   |   2 +
 .../apache/isis/client/kroviz/ui/kv/EventChart.kt  |  63 +++++++++++
 .../isis/client/kroviz/ui/kv/EventLogTable.kt      |  10 +-
 .../apache/isis/client/kroviz/ui/kv/MenuFactory.kt |  72 +++++++-----
 .../apache/isis/client/kroviz/ui/kv/RoIconBar.kt   |  45 +++++---
 .../apache/isis/client/kroviz/ui/kv/RoMenuBar.kt   |   8 +-
 .../apache/isis/client/kroviz/ui/kv/UiManager.kt   |   2 +-
 .../apache/isis/client/kroviz/utils/IconManager.kt |   1 +
 .../apache/isis/client/kroviz/IntegrationTest.kt   |   5 +-
 .../client/kroviz/core/event/EventStoreTest.kt     |   9 +-
 31 files changed, 306 insertions(+), 386 deletions(-)

diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/aggregator/ActionDispatcher.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/aggregator/ActionDispatcher.kt
index aa14a10..338dbdd 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/aggregator/ActionDispatcher.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/aggregator/ActionDispatcher.kt
@@ -4,8 +4,8 @@ import org.apache.isis.client.kroviz.core.event.LogEntry
 import org.apache.isis.client.kroviz.to.Action
 import org.apache.isis.client.kroviz.to.Link
 import org.apache.isis.client.kroviz.to.Method
-import org.apache.isis.client.kroviz.utils.Point
 import org.apache.isis.client.kroviz.ui.kv.ActionPrompt
+import org.apache.isis.client.kroviz.utils.Point
 import org.apache.isis.client.kroviz.utils.Utils
 
 class ActionDispatcher(private val at: Point = Point(100, 100)) : BaseAggregator() {
@@ -15,9 +15,12 @@ class ActionDispatcher(private val at: Point = Point(100, 100)) : BaseAggregator
         action.links.forEach { link ->
             if (link.isInvokeAction()) {
                 when (link.method) {
-                    Method.GET.name -> processGet(action, link)
-                    Method.POST.name -> processPost(action, link)
-                    Method.PUT.name -> invoke(link)
+                    Method.GET.name -> process(action, link)
+                    Method.POST.name -> {
+                        val title = Utils.deCamel(action.id)
+                        process(action, link, ObjectAggregator(title))
+                    }
+                    Method.PUT.name -> process(action, link)
                 }
             }
         }
@@ -30,20 +33,11 @@ class ActionDispatcher(private val at: Point = Point(100, 100)) : BaseAggregator
         return rel.contains("invoke") && rel.contains("action")
     }
 
-    private fun processGet(action: Action, link: Link) {
-        if (link.hasArguments()) {
-            ActionPrompt(action).open(at)
-        } else {
-            link.invokeWith(this)
-        }
-    }
-
-    private fun processPost(action: Action, link: Link) {
-        val title = Utils.deCamel(action.id)
+    private fun process(action: Action, link: Link, aggregator: BaseAggregator = this) {
         if (link.hasArguments()) {
-            ActionPrompt(action).open(at)
+            ActionPrompt(action = action).open(at)
         } else {
-            link.invokeWith(ObjectAggregator(title))
+            link.invokeWith(aggregator)
         }
     }
 
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/aggregator/BaseAggregator.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/aggregator/BaseAggregator.kt
index 9be799b..228f81f 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/aggregator/BaseAggregator.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/aggregator/BaseAggregator.kt
@@ -39,9 +39,7 @@ abstract class BaseAggregator {
     }
 
     fun TObject.getLayoutLink(): Link? {
-        return links.firstOrNull { l ->
-            l.isLayout()
-        }
+        return links.firstOrNull { it.isLayout() }
     }
 
     private fun Link.isLayout(): Boolean {
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/aggregator/DomainTypesAggregator.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/aggregator/DomainTypesAggregator.kt
index 673bac4..200cb45 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/aggregator/DomainTypesAggregator.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/aggregator/DomainTypesAggregator.kt
@@ -72,7 +72,7 @@ class DomainTypesAggregator(val url: String) : BaseAggregator() {
         }
     }
 
-    fun DomainType.isPrimitiveOrService(): Boolean {
+    private fun DomainType.isPrimitiveOrService(): Boolean {
         val primitives = arrayOf("void", "boolean", "double", "byte", "long", "char", "float", "short", "int")
         return (primitives.contains(canonicalName) || extensions.isService)
     }
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/aggregator/ListAggregator.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/aggregator/ListAggregator.kt
index 0364034..9ff3761 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/aggregator/ListAggregator.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/aggregator/ListAggregator.kt
@@ -6,6 +6,7 @@ import org.apache.isis.client.kroviz.core.model.ListDM
 import org.apache.isis.client.kroviz.layout.Layout
 import org.apache.isis.client.kroviz.to.*
 import org.apache.isis.client.kroviz.to.bs3.Grid
+import org.apache.isis.client.kroviz.ui.kv.Constants
 import org.apache.isis.client.kroviz.ui.kv.UiManager
 
 /** sequence of operations:
@@ -42,9 +43,11 @@ class ListAggregator(actionTitle: String) : BaseAggregator() {
     }
 
     private fun handleList(resultList: ResultList) {
-        val result = resultList.result!!
-        result.value.forEach {
-            it.invokeWith(this)
+        if (resultList.resulttype != "void") {
+            val result = resultList.result!!
+            result.value.forEach {
+                it.invokeWith(this)
+            }
         }
     }
 
@@ -54,7 +57,7 @@ class ListAggregator(actionTitle: String) : BaseAggregator() {
         // Json.Layout is invoked first
         l.invokeWith(this)
         // then Xml.Layout is to be invoked as well
-        l.invokeWith(this, "xml")
+        l.invokeWith(this, Constants.subTypeXml)
     }
 
     //TODO same code in ObjectAggregator? -> pullup refactoring to be applied
@@ -67,11 +70,10 @@ class ListAggregator(actionTitle: String) : BaseAggregator() {
             dm.propertyLayoutList.forEach { p ->
                 val l = p.link!!
                 val isDn = l.href.contains("datanucleus")
-                if (isDn) {
+                val id = p.id!!
+                dm.addPropertyDescription(id, id)
+                if (!isDn) {
                     //invoking DN links leads to an error
-                    val id = p.id!!
-                    dm.addPropertyDescription(id, id)
-                } else {
                     l.invokeWith(this)
                 }
             }
@@ -83,11 +85,11 @@ class ListAggregator(actionTitle: String) : BaseAggregator() {
     }
 
     private fun handleProperty(p: Property) {
-        val dspl = dsp as ListDM
+        val dm = dsp as ListDM
         if (p.isPropertyDescription()) {
-            dspl.addPropertyDescription(p)
+            dm.addPropertyDescription(p)
         } else {
-            dspl.addProperty(p)
+            dm.addProperty(p)
             p.descriptionLink()?.invokeWith(this)
         }
     }
@@ -109,8 +111,7 @@ class ListAggregator(actionTitle: String) : BaseAggregator() {
      * FR_PROPERTY_DESCRIPTION
      * FR_OBJECT_PROPERTY_
      */
-    private fun Property.isPropertyDescription(): Boolean
-    {
+    private fun Property.isPropertyDescription(): Boolean {
         val hasExtensions = extensions != null
         if (!hasExtensions) {
             return false
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/aggregator/ObjectAggregator.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/aggregator/ObjectAggregator.kt
index 3a89aba..933d16f 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/aggregator/ObjectAggregator.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/aggregator/ObjectAggregator.kt
@@ -9,6 +9,7 @@ import org.apache.isis.client.kroviz.to.ResultObject
 import org.apache.isis.client.kroviz.to.TObject
 import org.apache.isis.client.kroviz.to.bs3.Grid
 import org.apache.isis.client.kroviz.ui.ErrorDialog
+import org.apache.isis.client.kroviz.ui.kv.Constants
 import org.apache.isis.client.kroviz.ui.kv.UiManager
 
 class ObjectAggregator(val actionTitle: String) : BaseAggregator() {
@@ -40,7 +41,7 @@ class ObjectAggregator(val actionTitle: String) : BaseAggregator() {
         // Json.Layout is invoked first
         l.invokeWith(this)
         // then Xml.Layout is to be invoked as well
-        l.invokeWith(this, "xml")
+        l.invokeWith(this, Constants.subTypeXml)
     }
 
     fun handleResultObject(obj: ResultObject) {
@@ -74,7 +75,6 @@ class ObjectAggregator(val actionTitle: String) : BaseAggregator() {
         (dsp as ObjectDM).grid = grid
     }
 
-
     override fun reset(): ObjectAggregator {
         dsp.isRendered = false
         return this
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/event/EventStore.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/event/EventStore.kt
index 0ac65fc..4f29db7 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/event/EventStore.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/event/EventStore.kt
@@ -108,9 +108,13 @@ object EventStore {
         return null
     }
 
+    fun findBy(aggregator: BaseAggregator): LogEntry? {
+        return log.firstOrNull { it.getAggregator() == aggregator }
+    }
+
     fun findMenuBars(): LogEntry? {
         this.log.forEach {
-           if (it.obj is Menubars)
+            if (it.obj is Menubars)
                 return it
         }
         return null
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/event/LogEntry.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/event/LogEntry.kt
index ea5082d..e3fff7e 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/event/LogEntry.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/event/LogEntry.kt
@@ -4,6 +4,7 @@ import kotlinx.serialization.ContextualSerialization
 import kotlinx.serialization.Serializable
 import org.apache.isis.client.kroviz.core.aggregator.BaseAggregator
 import org.apache.isis.client.kroviz.to.TransferObject
+import org.apache.isis.client.kroviz.ui.kv.Constants
 import org.apache.isis.client.kroviz.ui.kv.UiManager
 import org.apache.isis.client.kroviz.utils.Utils.removeHexCode
 import pl.treksoft.kvision.html.ButtonStyle
@@ -15,9 +16,9 @@ enum class EventState(val id: String, val iconName: String, val style: ButtonSty
     RUNNING("RUNNING", "fas fa-play-circle", ButtonStyle.WARNING),
     ERROR("ERROR", "fas fa-exclamation-circle", ButtonStyle.DANGER),
     SUCCESS("SUCCESS", "fas fa-check-circle", ButtonStyle.SUCCESS),
-    VIEW("VIEW", "fas fa-info-circle", ButtonStyle.INFO),
+    VIEW("VIEW", "fas fa-eye", ButtonStyle.INFO),
     DUPLICATE("DUPLICATE", "fas fa-link", ButtonStyle.OUTLINESUCCESS),
-    CLOSED("CLOSED", "fas fa-times-circle", ButtonStyle.OUTLINEINFO),
+    CLOSED("CLOSED", "fas fa-eye-slash", ButtonStyle.OUTLINEINFO),
     RELOAD("RELOAD", "fas fa-retweet", ButtonStyle.OUTLINEWARNING),
     MISSING("MISSING", "fas fa-bug", ButtonStyle.OUTLINEDANGER)
     // IMPROVE multiple aspects intermangled: req/resp, view, as well as cache
@@ -29,7 +30,7 @@ data class LogEntry(
         val url: String,
         val method: String? = "",
         val request: String = "",
-        val subType: String = "json",
+        val subType: String = Constants.subTypeJson,
         @ContextualSerialization val createdAt: Date = Date()) {
     var state = EventState.INITIAL
     var title: String = ""
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/event/ResourceSpecification.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/event/ResourceSpecification.kt
index d033ed0..d199777 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/event/ResourceSpecification.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/event/ResourceSpecification.kt
@@ -1,10 +1,11 @@
 package org.apache.isis.client.kroviz.core.event
 
+import org.apache.isis.client.kroviz.ui.kv.Constants
 import org.apache.isis.client.kroviz.utils.Utils
 
 class ResourceSpecification(
         val url: String,
-        val subType: String = "json") {
+        val subType: String = Constants.subTypeJson) {
 
     fun isRedundant(): Boolean {
         return when {
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/event/RoXmlHttpRequest.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/event/RoXmlHttpRequest.kt
index 08e2091..e3e12d2 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/event/RoXmlHttpRequest.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/event/RoXmlHttpRequest.kt
@@ -4,6 +4,8 @@ import org.apache.isis.client.kroviz.core.aggregator.BaseAggregator
 import org.apache.isis.client.kroviz.handler.ResponseHandler
 import org.apache.isis.client.kroviz.to.Link
 import org.apache.isis.client.kroviz.to.Method
+import org.apache.isis.client.kroviz.to.TObject
+import org.apache.isis.client.kroviz.ui.kv.Constants
 import org.apache.isis.client.kroviz.ui.kv.UiManager
 import org.apache.isis.client.kroviz.utils.Utils
 import org.w3c.xhr.XMLHttpRequest
@@ -13,12 +15,11 @@ import org.w3c.xhr.XMLHttpRequest
  */
 class RoXmlHttpRequest {
 
-    fun invoke(link: Link, aggregator: BaseAggregator?, subType: String = "json") {
+    fun invoke(link: Link, aggregator: BaseAggregator?, subType: String = Constants.subTypeJson) {
         val reSpec = ResourceSpecification(link.href)
-        if (EventStore.isCached(reSpec, link.method)) {
-            processCached(reSpec)
-        } else {
-            process(link, aggregator, subType)
+        when {
+            EventStore.isCached(reSpec, link.method) -> processCached(reSpec)
+            else -> process(link, aggregator, subType)
         }
     }
 
@@ -50,19 +51,22 @@ class RoXmlHttpRequest {
 
         var body = ""
         when {
-            link.hasArguments()
-            -> body = Utils.argumentsAsBody(link)
+            link.hasArguments() -> body = Utils.argumentsAsBody(link)
             link.method == Method.PUT.operation -> {
-                val tObject = aggregator?.getObject()!!
-                body = Utils.propertiesAsBody(tObject)
+                val logEntry = EventStore.findBy(aggregator!!)
+                val obj = logEntry?.obj
+                when (obj) {
+                    is TObject -> body = Utils.propertiesAsBody(obj)
+                    else -> {
+                    }
+                }
             }
             else -> {
             }
         }
-        if (body.isEmpty()) {
-            xhr.send()
-        } else {
-            xhr.send(body)
+        when {
+            body.isEmpty() -> xhr.send()
+            else -> xhr.send(body)
         }
         EventStore.start(reSpec, method, body, aggregator)
     }
@@ -73,10 +77,10 @@ class RoXmlHttpRequest {
 
         val xhr = XMLHttpRequest()
         xhr.open(method, url, true)
-        xhr.setRequestHeader("Content-Type", "text/plain")
+        xhr.setRequestHeader("Content-Type", Constants.format)
         xhr.setRequestHeader("Accept", "image/svg+xml")
 
-        val reSpec = ResourceSpecification(url, "xml")
+        val reSpec = ResourceSpecification(url, Constants.subTypeXml)
         xhr.onload = { _ -> resultHandler(reSpec, xhr.responseText) }
         xhr.onerror = { _ -> errorHandler(reSpec, xhr.responseText) }
         xhr.ontimeout = { _ -> errorHandler(reSpec, xhr.responseText) }
@@ -88,9 +92,7 @@ class RoXmlHttpRequest {
 
     private fun resultHandler(reSpec: ResourceSpecification, responseText: String) {
         val logEntry: LogEntry? = EventStore.end(reSpec, responseText)
-        if (logEntry != null) {
-            ResponseHandler.handle(logEntry)
-        }
+        if (logEntry != null) ResponseHandler.handle(logEntry)
     }
 
     private fun errorHandler(reSpec: ResourceSpecification, responseText: String) {
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/model/DisplayModelWithLayout.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/model/DisplayModelWithLayout.kt
index 0b2b2da..0bbbf03 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/model/DisplayModelWithLayout.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/model/DisplayModelWithLayout.kt
@@ -24,6 +24,8 @@ abstract class DisplayModelWithLayout : DisplayModel() {
                 val pls = propertyLayoutList.size
                 val pds = propertyDescriptionList.size
                 val descriptionsComplete = pds >= pls
+                console.log("[DMWL.canBeDisplayed] $descriptionsComplete")
+                console.log(this)
                 descriptionsComplete
             }
         }
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/handler/BaseHandler.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/handler/BaseHandler.kt
index 4072a24..dbc1994 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/handler/BaseHandler.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/handler/BaseHandler.kt
@@ -2,6 +2,7 @@ package org.apache.isis.client.kroviz.handler
 
 import org.apache.isis.client.kroviz.core.event.LogEntry
 import org.apache.isis.client.kroviz.to.TransferObject
+import org.apache.isis.client.kroviz.ui.kv.Constants
 
 /**
  * Handle responses to XmlHttpRequests asynchronously,
@@ -61,7 +62,7 @@ abstract class BaseHandler {
     }
 
     protected fun update() {
-        logEntry.getAggregator()!!.update(logEntry, "json")
+        logEntry.getAggregator()!!.update(logEntry, Constants.subTypeJson)
     }
 
 }
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/to/Link.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/to/Link.kt
index 70a7bac..42176f8 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/to/Link.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/to/Link.kt
@@ -5,27 +5,28 @@ import org.apache.isis.client.kroviz.utils.Utils
 
 @Serializable
 data class Link(val rel: String = "",
-                val method: String =Method.GET.operation,
+                val method: String = Method.GET.operation,
                 val href: String,
                 val type: String = "",
         //TODO "args" should be changed to "arguments" - RO spec or SimpleApp?
-                val args: Map<String,Argument> = emptyMap(),
+                val args: Map<String, Argument> = emptyMap(),
         /* arguments can either be:
          * -> empty Map {}
          * -> Map with "value": null (cf. SO_PROPERTY)
          * -> Map with empty key "" (cf. ACTIONS_DOWNLOAD_META_MODEL)
          * -> Map with key,<VALUE> (cf. ACTIONS_RUN_FIXTURE_SCRIPT, ACTIONS_FIND_BY_NAME, ACTIONS_CREATE) */
-                val arguments: Map<String,Argument?> = emptyMap(),
-                val title: String = "") :TransferObject {
-
-    fun argMap(): Map<String,Argument?>? {
-        if (args.isNotEmpty()) {
-            return args
-        }
-        if (arguments.isNotEmpty()) {
-            return arguments
+                val arguments: Map<String, Argument?> = emptyMap(),
+                val title: String = "")
+    : TransferObject {
+
+    fun argMap(): Map<String, Argument?>? {
+        console.log("[Link.argMap]")
+        console.log(this)
+        return when {
+            arguments.isNotEmpty() -> arguments
+            args.isNotEmpty() -> args
+            else -> null
         }
-        return null
     }
 
     fun setArgument(key: String, value: String?) {
@@ -39,19 +40,15 @@ data class Link(val rel: String = "",
         return !argMap().isNullOrEmpty()
     }
 
-    fun isProperty() : Boolean {
+    fun isProperty(): Boolean {
         return rel.endsWith("/property")
     }
 
-    fun isPropertyDescription() : Boolean {
-        return type.endsWith("/property-description")
-    }
-
-    fun isAction() : Boolean {
+    fun isAction(): Boolean {
         return rel.endsWith("/action")
     }
 
-    fun name() : String {
+    fun name(): String {
         return href.split("/").last()
     }
 
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/ErrorDialog.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/ErrorDialog.kt
index 903c576..ce6fe4f 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/ErrorDialog.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/ErrorDialog.kt
@@ -13,7 +13,7 @@ class ErrorDialog(val logEntry: LogEntry) : Command() {
         formItems.add(FormItem("Message", "Text", error.message))
         val detail = error.detail
         if (detail != null) {
-            formItems.add(FormItem("StackTrace", "TextArea", toString(detail.element), 15))
+            formItems.add(FormItem("StackTrace", "TextArea", toString(detail.element), 10))
             formItems.add(FormItem("Caused by", "Text", detail.causedBy))
         }
         val label = "HttpError " + error.httpStatusCode.toString()
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/EventLogDetail.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/EventLogDetail.kt
index 72f92cf..872fcb4 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/EventLogDetail.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/EventLogDetail.kt
@@ -1,6 +1,7 @@
 package org.apache.isis.client.kroviz.ui
 
 import org.apache.isis.client.kroviz.core.event.LogEntry
+import org.apache.isis.client.kroviz.ui.kv.Constants
 import org.apache.isis.client.kroviz.ui.kv.RoDialog
 import org.apache.isis.client.kroviz.utils.Utils
 
@@ -10,7 +11,7 @@ class EventLogDetail(val logEntry: LogEntry) : Command() {
         val formItems = mutableListOf<FormItem>()
         formItems.add(FormItem("Url", "Response", logEntry.url))
         var jsonStr = logEntry.response
-        if (jsonStr.isNotEmpty()) {
+        if (jsonStr.isNotEmpty() && logEntry.subType == Constants.subTypeJson) {
             jsonStr = Utils.format(jsonStr)
         }
         formItems.add(FormItem("Text", "TextArea", jsonStr, 15))
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/FileDialog.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/FileDialog.kt
index 57ae621..ed277da 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/FileDialog.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/FileDialog.kt
@@ -13,7 +13,7 @@ class FileDialog(val logEntry: LogEntry) : Command() {
         val list = value.split(":")
         val formItems = mutableListOf<FormItem>()
         formItems.add(FormItem("URL", "Text", logEntry.url))
-        formItems.add(FormItem("Blob", "TextArea", list[2], 15))
+        formItems.add(FormItem("Blob", "TextArea", list[1], 15))
         val label = list[0] + "/" + list[1]
         RoDialog(
                 caption = label,
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/builder/RowBuilder.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/builder/RowBuilder.kt
index 699da8e..7a2dec7 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/builder/RowBuilder.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/builder/RowBuilder.kt
@@ -31,7 +31,7 @@ class RowBuilder {
         result.width = CssSize(100, UNIT.perc)
         result.height = CssSize(100, UNIT.perc)
 
-        val dd = MenuFactory.buildFor(tObject)
+        val dd = MenuFactory.buildForObject(tObject)
         dd.marginTop = CssSize(10, UNIT.px)
         dd.marginBottom = CssSize(10, UNIT.px)
         MenuFactory.amendWithSaveUndo(dd, tObject)
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/CFG.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/CFG.kt
deleted file mode 100644
index 30740c0..0000000
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/CFG.kt
+++ /dev/null
@@ -1,120 +0,0 @@
-package org.apache.isis.client.kroviz.ui.kv
-
-@Deprecated("used only during dev")
-object CFG {
-     val url = "http://localhost:8080/restful/objects/isisApplib.ConfigurationProperty/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9InllcyI_Pgo8Y29uZmlndXJhdGlvblByb3BlcnR5PgogICAgPGtleT5pc2lzLmFwcE1hbmlmZXN0PC9rZXk-CiAgICA8dmFsdWU-ZG9tYWluYXBwLmFwcGxpY2F0aW9uLm1hbmlmZXN0LkRvbWFpbkFwcEFwcE1hbmlmZXN0PC92YWx1ZT4KPC9jb25maWd1cmF0aW9uUHJvcGVydHk-Cg=="
-     val str = """
-{
-    "links": [
-        {
-            "rel": "self",
-            "href": "http://localhost:8080/restful/objects/isisApplib.ConfigurationProperty/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9InllcyI_Pgo8Y29uZmlndXJhdGlvblByb3BlcnR5PgogICAgPGtleT5pc2lzLmFwcE1hbmlmZXN0PC9rZXk-CiAgICA8dmFsdWU-ZG9tYWluYXBwLmFwcGxpY2F0aW9uLm1hbmlmZXN0LkRvbWFpbkFwcEFwcE1hbmlmZXN0PC92YWx1ZT4KPC9jb25maWd1cmF0aW9uUHJvcGVydHk-Cg==",
-            "method": "GET",
-            "type": "application/json;profile=\"urn:org.restfulobjects:repr-types/object\"",
-            "title": "isis.appManifest"
-        },
-        {
-            "rel": "describedby",
-            "href": "http://localhost:8080/restful/domain-types/isisApplib.ConfigurationProperty",
-            "method": "GET",
-            "type": "application/json;profile=\"urn:org.restfulobjects:repr-types/domain-type\""
-        },
-        {
-            "rel": "urn:org.apache.isis.restfulobjects:rels/object-layout",
-            "href": "http://localhost:8080/restful/objects/isisApplib.ConfigurationProperty/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9InllcyI_Pgo8Y29uZmlndXJhdGlvblByb3BlcnR5PgogICAgPGtleT5pc2lzLmFwcE1hbmlmZXN0PC9rZXk-CiAgICA8dmFsdWU-ZG9tYWluYXBwLmFwcGxpY2F0aW9uLm1hbmlmZXN0LkRvbWFpbkFwcEFwcE1hbmlmZXN0PC92YWx1ZT4KPC9jb25maWd1cmF0aW9uUHJvcGVydHk-Cg==/object-layout",
-            "method": "GET",
-            "type": "application/json;profile=\"urn:org.restfulobjects:repr-types/object\"",
-            "title": "isis.appManifest"
-        },
-        {
-            "rel": "urn:org.restfulobjects:rels/update",
-            "href": "http://localhost:8080/restful/objects/isisApplib.ConfigurationProperty/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9InllcyI_Pgo8Y29uZmlndXJhdGlvblByb3BlcnR5PgogICAgPGtleT5pc2lzLmFwcE1hbmlmZXN0PC9rZXk-CiAgICA8dmFsdWU-ZG9tYWluYXBwLmFwcGxpY2F0aW9uLm1hbmlmZXN0LkRvbWFpbkFwcEFwcE1hbmlmZXN0PC92YWx1ZT4KPC9jb25maWd1cmF0aW9uUHJvcGVydHk-Cg==",
-            "method": "PUT",
-            "type": "application/json;profile=\"urn:org.restfulobjects:repr-types/object\"",
-            "arguments": {}
-        }
-    ],
-    "extensions": {
-        "oid": "*isisApplib.ConfigurationProperty:PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9InllcyI_Pgo8Y29uZmlndXJhdGlvblByb3BlcnR5PgogICAgPGtleT5pc2lzLmFwcE1hbmlmZXN0PC9rZXk-CiAgICA8dmFsdWU-ZG9tYWluYXBwLmFwcGxpY2F0aW9uLm1hbmlmZXN0LkRvbWFpbkFwcEFwcE1hbmlmZXN0PC92YWx1ZT4KPC9jb25maWd1cmF0aW9uUHJvcGVydHk-Cg==",
-        "isService": false,
-        "isPersistent": true
-    },
-    "title": "isis.appManifest",
-    "domainType": "isisApplib.ConfigurationProperty",
-    "instanceId": "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9InllcyI_Pgo8Y29uZmlndXJhdGlvblByb3BlcnR5PgogICAgPGtleT5pc2lzLmFwcE1hbmlmZXN0PC9rZXk-CiAgICA8dmFsdWU-ZG9tYWluYXBwLmFwcGxpY2F0aW9uLm1hbmlmZXN0LkRvbWFpbkFwcEFwcE1hbmlmZXN0PC92YWx1ZT4KPC9jb25maWd1cmF0aW9uUHJvcGVydHk-Cg==",
-    "members": {
-        "key": {
-            "id": "key",
-            "memberType": "property",
-            "links": [
-                {
-                    "rel": "urn:org.restfulobjects:rels/details;property=\"key\"",
-                    "href": "http://localhost:8080/restful/objects/isisApplib.ConfigurationProperty/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9InllcyI_Pgo8Y29uZmlndXJhdGlvblByb3BlcnR5PgogICAgPGtleT5pc2lzLmFwcE1hbmlmZXN0PC9rZXk-CiAgICA8dmFsdWU-ZG9tYWluYXBwLmFwcGxpY2F0aW9uLm1hbmlmZXN0LkRvbWFpbkFwcEFwcE1hbmlmZXN0PC92YWx1ZT4KPC9jb25maWd1cmF0aW9uUHJvcGVydHk-Cg==/properties/key",
-                    "method": "GET",
-                    "type": "application/json;profile=\"urn:org.restfulobjects:repr-types/object-property\""
-                }
-            ],
-            "value": "isis.appManifest",
-            "extensions": {
-                "x-isis-format": "string"
-            },
-            "disabledReason": "Immutable"
-        },
-        "value": {
-            "id": "value",
-            "memberType": "property",
-            "links": [
-                {
-                    "rel": "urn:org.restfulobjects:rels/details;property=\"value\"",
-                    "href": "http://localhost:8080/restful/objects/isisApplib.ConfigurationProperty/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9InllcyI_Pgo8Y29uZmlndXJhdGlvblByb3BlcnR5PgogICAgPGtleT5pc2lzLmFwcE1hbmlmZXN0PC9rZXk-CiAgICA8dmFsdWU-ZG9tYWluYXBwLmFwcGxpY2F0aW9uLm1hbmlmZXN0LkRvbWFpbkFwcEFwcE1hbmlmZXN0PC92YWx1ZT4KPC9jb25maWd1cmF0aW9uUHJvcGVydHk-Cg==/properties/value",
-                    "method": "GET",
-                    "type": "application/json;profile=\"urn:org.restfulobjects:repr-types/object-property\""
-                }
-            ],
-            "value": "domainapp.application.manifest.DomainAppAppManifest",
-            "extensions": {
-                "x-isis-format": "string"
-            },
-            "disabledReason": "Immutable"
-        },
-        "openRestApi": {
-            "id": "openRestApi",
-            "memberType": "action",
-            "links": [
-                {
-                    "rel": "urn:org.restfulobjects:rels/details;action=\"openRestApi\"",
-                    "href": "http://localhost:8080/restful/objects/isisApplib.ConfigurationProperty/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9InllcyI_Pgo8Y29uZmlndXJhdGlvblByb3BlcnR5PgogICAgPGtleT5pc2lzLmFwcE1hbmlmZXN0PC9rZXk-CiAgICA8dmFsdWU-ZG9tYWluYXBwLmFwcGxpY2F0aW9uLm1hbmlmZXN0LkRvbWFpbkFwcEFwcE1hbmlmZXN0PC92YWx1ZT4KPC9jb25maWd1cmF0aW9uUHJvcGVydHk-Cg==/actions/openRestApi",
-                    "method": "GET",
-                    "type": "application/json;profile=\"urn:org.restfulobjects:repr-types/object-action\""
-                }
-            ]
-        },
-        "rebuildMetamodel": {
-            "id": "rebuildMetamodel",
-            "memberType": "action",
-            "links": [
-                {
-                    "rel": "urn:org.restfulobjects:rels/details;action=\"rebuildMetamodel\"",
-                    "href": "http://localhost:8080/restful/objects/isisApplib.ConfigurationProperty/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9InllcyI_Pgo8Y29uZmlndXJhdGlvblByb3BlcnR5PgogICAgPGtleT5pc2lzLmFwcE1hbmlmZXN0PC9rZXk-CiAgICA8dmFsdWU-ZG9tYWluYXBwLmFwcGxpY2F0aW9uLm1hbmlmZXN0LkRvbWFpbkFwcEFwcE1hbmlmZXN0PC92YWx1ZT4KPC9jb25maWd1cmF0aW9uUHJvcGVydHk-Cg==/actions/rebuildMetamodel",
-                    "method": "GET",
-                    "type": "application/json;profile=\"urn:org.restfulobjects:repr-types/object-action\""
-                }
-            ]
-        },
-        "downloadLayoutXml": {
-            "id": "downloadLayoutXml",
-            "memberType": "action",
-            "links": [
-                {
-                    "rel": "urn:org.restfulobjects:rels/details;action=\"downloadLayoutXml\"",
-                    "href": "http://localhost:8080/restful/objects/isisApplib.ConfigurationProperty/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9InllcyI_Pgo8Y29uZmlndXJhdGlvblByb3BlcnR5PgogICAgPGtleT5pc2lzLmFwcE1hbmlmZXN0PC9rZXk-CiAgICA8dmFsdWU-ZG9tYWluYXBwLmFwcGxpY2F0aW9uLm1hbmlmZXN0LkRvbWFpbkFwcEFwcE1hbmlmZXN0PC92YWx1ZT4KPC9jb25maWd1cmF0aW9uUHJvcGVydHk-Cg==/actions/downloadLayoutXml",
-                    "method": "GET",
-                    "type": "application/json;profile=\"urn:org.restfulobjects:repr-types/object-action\""
-                }
-            ]
-        }
-    }
-}   
-            """
-}
-
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/ChartFactory.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/ChartFactory.kt
new file mode 100644
index 0000000..ba77cda
--- /dev/null
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/ChartFactory.kt
@@ -0,0 +1,10 @@
+package org.apache.isis.client.kroviz.ui.kv
+
+import org.apache.isis.client.kroviz.core.event.LogEntry
+
+class ChartFactory {
+
+    fun build(logEventList: MutableList<LogEntry> = mutableListOf<LogEntry>()): EventChart {
+        return EventChart(ChartModel())
+    }
+}
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/ChartModel.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/ChartModel.kt
new file mode 100644
index 0000000..f1be941
--- /dev/null
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/ChartModel.kt
@@ -0,0 +1,53 @@
+package org.apache.isis.client.kroviz.ui.kv
+
+import pl.treksoft.kvision.chart.DataSets
+import pl.treksoft.kvision.core.Color
+import pl.treksoft.kvision.i18n.I18n
+
+class ChartModel() {
+
+    private val bgColorList = listOf(
+            Color.hex(0xC0504D),
+            Color.hex(0xF79646),
+            Color.hex(0x9BBB59),
+            Color.hex(0x4BACC6),
+            Color.hex(0x4F81BD),
+            Color.hex(0x8064A2)
+    )
+
+    private val bgColorList2 = listOf(
+            Color.hex(0xC0504D.or(0x303030)),
+            Color.hex(0xF79646.or(0x303030)),
+            Color.hex(0x9BBB59.or(0x203030)),
+            Color.hex(0x4BACC6.or(0x301010)),
+            Color.hex(0x4F81BD.or(0x101010)),
+            Color.hex(0x8064A2.or(0x303030))
+    )
+
+    val labelList = listOf<String>(
+            I18n.tr("BU 6"),
+            I18n.tr("BU 5"),
+            I18n.tr("BU 4"),
+            I18n.tr("BU 3"),
+            I18n.tr("BU 2"),
+            I18n.tr("BU 1")
+    )
+
+    val datasetList = mutableListOf<DataSets>()
+
+    private val ds1 = DataSets(
+            data = listOf(300, 727, 589, 537, 543, 574),
+            backgroundColor = bgColorList,
+            label = "initial"
+    )
+    private val ds2 = DataSets(
+            data = listOf(400, 238, 553, 746, 884, 903),
+            backgroundColor = bgColorList2,
+            label = "duplicates"
+    )
+
+    init {
+        datasetList.add(ds1)
+        datasetList.add(ds2)
+    }
+}
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/ChartTab.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/ChartTab.kt
deleted file mode 100644
index 52aedbb..0000000
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/ChartTab.kt
+++ /dev/null
@@ -1,121 +0,0 @@
-package org.apache.isis.client.kroviz.ui.kv
-
-import pl.treksoft.kvision.chart.*
-import pl.treksoft.kvision.core.Col
-import pl.treksoft.kvision.core.Color
-import pl.treksoft.kvision.i18n.I18n.tr
-import pl.treksoft.kvision.panel.SimplePanel
-import pl.treksoft.kvision.panel.gridPanel
-import pl.treksoft.kvision.utils.obj
-import pl.treksoft.kvision.utils.px
-import kotlin.math.sin
-
-class ChartTab : SimplePanel() {
-    init {
-        this.marginTop = 10.px
-
-        gridPanel(templateColumns = "50% 50%", columnGap = 30, rowGap = 30) {
-            @Suppress("UnsafeCastFromDynamic")
-            chart(
-                    Configuration(
-                            ChartType.SCATTER,
-                            listOf(
-                                    DataSets(
-                                            pointBorderColor = listOf(Color.hex(0xC0504D)),
-                                            backgroundColor = listOf(Color.hex(0x9BBB59)),
-                                            data = (-60..60).map {
-                                                obj {
-                                                    x = it.toDouble() / 10
-                                                    y = sin(it.toDouble() / 10)
-                                                }
-                                            }
-                                    )
-                            ),
-                            options = ChartOptions(legend = LegendOptions(display = false), showLines = true)
-                    )
-            )
-            chart(
-                    Configuration(
-                            ChartType.BAR,
-                            listOf(
-                                    DataSets(
-                                            data = listOf(6, 12, 19, 13, 7, 3),
-                                            backgroundColor = listOf(
-                                                    Color.hex(0xC0504D),
-                                                    Color.hex(0xF79646),
-                                                    Color.hex(0x9BBB59),
-                                                    Color.hex(0x4BACC6),
-                                                    Color.hex(0x4F81BD),
-                                                    Color.hex(0x8064A2)
-                                            )
-                                    )
-                            ),
-                            listOf(
-                                    tr("Africa"),
-                                    tr("Asia"),
-                                    tr("Europe"),
-                                    tr("Latin America"),
-                                    tr("North America"),
-                                    tr("Australia")
-                            ),
-                            ChartOptions(legend = LegendOptions(display = false), scales = ChartScales(yAxes = listOf(obj {
-                                ticks = obj {
-                                    suggestedMin = 0
-                                    suggestedMax = 20
-                                }
-                            })), title = TitleOptions(display = false))
-                    )
-            )
-            chart(
-                    Configuration(
-                            ChartType.PIE,
-                            listOf(
-                                    DataSets(
-                                            data = listOf(6, 12, 19, 13, 7, 3),
-                                            backgroundColor = listOf(
-                                                    Color.hex(0xC0504D),
-                                                    Color.hex(0xF79646),
-                                                    Color.hex(0x9BBB59),
-                                                    Color.hex(0x4BACC6),
-                                                    Color.hex(0x4F81BD),
-                                                    Color.hex(0x8064A2)
-                                            )
-                                    )
-                            ), listOf(
-                            tr("Africa"),
-                            tr("Asia"),
-                            tr("Europe"),
-                            tr("Latin America"),
-                            tr("North America"),
-                            tr("Australia")
-                    )
-                    )
-            )
-            chart(
-                    Configuration(
-                            ChartType.POLARAREA,
-                            listOf(
-                                    DataSets(
-                                            data = listOf(6, 12, 19, 13, 7, 3),
-                                            backgroundColor = listOf(
-                                                    Color.hex(0xC0504D),
-                                                    Color.hex(0xF79646),
-                                                    Color.hex(0x9BBB59),
-                                                    Color.hex(0x4BACC6),
-                                                    Color.hex(0x4F81BD),
-                                                    Color.hex(0x8064A2)
-                                            )
-                                    )
-                            ), listOf(
-                            tr("Africa"),
-                            tr("Asia"),
-                            tr("Europe"),
-                            tr("Latin America"),
-                            tr("North America"),
-                            tr("Australia")
-                    )
-                    )
-            )
-        }
-    }
-}
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/ColumnFactory.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/ColumnFactory.kt
index 121b871..d3e13f0 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/ColumnFactory.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/ColumnFactory.kt
@@ -132,10 +132,9 @@ class ColumnFactory {
                 headerSort = false,
                 formatterComponentFunction = { _, _, data ->
                     val tObject = data.delegate
-                    MenuFactory.buildFor(
+                    MenuFactory.buildForObject(
                             tObject,
-                            false,
-                            style = ButtonStyle.LINK)
+                            false)
                 })
     }
 
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/Constants.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/Constants.kt
index 4afcbeb..ad898e8 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/Constants.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/Constants.kt
@@ -5,4 +5,6 @@ object Constants {
     const val format = "text/plain"
     const val calcHeight = "calc(100vh - 128px)"
     const val actionSeparator = "\n"
+    const val subTypeJson = "json"
+    const val subTypeXml = "xml"
 }
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/EventChart.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/EventChart.kt
new file mode 100644
index 0000000..aa99b40
--- /dev/null
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/EventChart.kt
@@ -0,0 +1,63 @@
+package org.apache.isis.client.kroviz.ui.kv
+
+import pl.treksoft.kvision.chart.*
+import pl.treksoft.kvision.core.Color
+import pl.treksoft.kvision.panel.SimplePanel
+import pl.treksoft.kvision.utils.obj
+import pl.treksoft.kvision.utils.px
+
+external fun rgba(r: Int, g: Int, b: Int, a: Int): String
+
+//IMPROVE https://github.com/datavisyn/chartjs-chart-box-and-violin-plot
+class EventChart(model:ChartModel) : SimplePanel() {
+
+    private val yAxes = listOf(obj {
+        gridLines = {
+            display = Display.FLEX
+            color = Color.hex(0xffffff)
+            zeroLineColor = Color.hex(0xffffff)
+//            zeroLineWidth = 1
+        }
+        ticks = obj {
+            fontFamily = "'Open Sans Bold', sans-serif"
+            fontSize = 11.px
+        }
+        stacked = true
+    })
+
+    private val xAxes = listOf(obj {
+        barThickness = 20
+        ticks = obj {
+            beginAtZero = true
+            fontFamily = "'Open Sans Bold', sans-serif"
+            fontSize = 11.px
+        }
+        gridLines = { GridLineOptions(visible = true) }
+        stacked = true
+    })
+
+    private val options = ChartOptions(
+            tooltips = TooltipOptions(enabled = true),
+            hover = HoverOptions(animationDuration = 0),
+            legend = LegendOptions(display = true),
+            scales = ChartScales(
+                    yAxes = yAxes,
+                    xAxes = xAxes),
+            showLines = true,
+            title = TitleOptions(display = true))
+
+    init {
+        this.marginTop = 10.px
+        chart(
+                configuration = Configuration(
+                        type = ChartType.HORIZONTALBAR,
+                        dataSets = model.datasetList,
+                        labels = model.labelList,
+                        options = options
+                ),
+                chartHeight = 600,
+                chartWidth = 1000
+        )
+    }
+
+}
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/EventLogTable.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/EventLogTable.kt
index 7df1a88..8ee0ec8 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/EventLogTable.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/EventLogTable.kt
@@ -22,7 +22,7 @@ class EventLogTable(val model: List<LogEntry>) : VPanel() {
                     title = "",
                     field = "state",
                     width = "50",
-                    align = Align.CENTER,
+                    hozAlign = Align.CENTER,
                     formatterComponentFunction = { _, _, data ->
                         Button("", icon = "fa fa-ellipsis-v", style = data.state.style).onClick {
                             EventLogDetail(data).open()
@@ -38,10 +38,10 @@ class EventLogTable(val model: List<LogEntry>) : VPanel() {
                     }),
             ColumnDefinition("State", "state", width = "100", headerFilter = Editor.INPUT),
             ColumnDefinition("Method", "method", width = "100", headerFilter = Editor.INPUT),
-            ColumnDefinition("req.len", field = "requestLength", width = "100", align = Align.RIGHT),
-            ColumnDefinition("resp.len", field = "responseLength", width = "100", align = Align.RIGHT),
-            ColumnDefinition("cacheHits", field = "cacheHits", width = "100", align = Align.RIGHT),
-            ColumnDefinition("duration", field = "duration", width = "100", align = Align.RIGHT),
+            ColumnDefinition("req.len", field = "requestLength", width = "100", hozAlign = Align.RIGHT),
+            ColumnDefinition("resp.len", field = "responseLength", width = "100", hozAlign = Align.RIGHT),
+            ColumnDefinition("cacheHits", field = "cacheHits", width = "100", hozAlign = Align.RIGHT),
+            ColumnDefinition("duration", field = "duration", width = "100", hozAlign = Align.RIGHT),
             ColumnDefinition(
                     title = "Created",
                     field = "createdAt",
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/MenuFactory.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/MenuFactory.kt
index aa840b6..4c0d05d 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/MenuFactory.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/MenuFactory.kt
@@ -19,29 +19,33 @@ import pl.treksoft.kvision.html.Link as KvisionHtmlLink
 
 object MenuFactory {
 
-    fun buildFor(tObject: TObject,
-                 withText: Boolean = true,
-                 iconName: String = "Actions",
-                 style: ButtonStyle = ButtonStyle.LIGHT)
+    fun buildForObject(tObject: TObject,
+                       withText: Boolean = true,
+                       iconName: String = "Actions")
             : DropDown {
         val type = tObject.domainType
         val text = if (withText) "Actions for $type" else ""
         val icon = IconManager.find(iconName)
-        val dd = DropDown(text = text, icon = icon, style = style)
+        val dd = DropDown(
+                text = text,
+                icon = icon,
+                style = ButtonStyle.LINK)
         val actions = tObject.getActions()
         actions.forEach {
-            val title = it.id
-            val link = it.getInvokeLink()!!
-            val action = buildAction(title, link, text)
-            dd.add(action)
+            val link = buildActionLink(it.id, text)
+            val invokeLink = it.getInvokeLink()!!
+            link.onClick {
+                ActionDispatcher().invoke(invokeLink)
+            }
+            dd.add(link)
         }
         return dd
     }
 
-    fun buildFor(menu: Menu,
-                 style: ButtonStyle = ButtonStyle.LIGHT,
-                 withText: Boolean = true,
-                 classes: Set<String> = setOf())
+    fun buildForMenu(menu: Menu,
+                     style: ButtonStyle = ButtonStyle.LIGHT,
+                     withText: Boolean = true,
+                     classes: Set<String> = setOf())
             : DropDown {
         val menuTitle = menu.named
         val dd = DropDown(
@@ -54,7 +58,10 @@ object MenuFactory {
         // action.setDragDropData gets always overridden by dd.setDragDropData
         menu.section.forEachIndexed { index, section ->
             section.serviceAction.forEach { sa ->
-                val action = buildAction(sa.id!!, sa.link!!, menuTitle)
+                val action = buildActionLink(sa.id!!, menuTitle)
+                action.onClick {
+                    ActionDispatcher().invoke(sa.link!!)
+                }
                 action.setDragDropData(Constants.format, action.id!!)
                 dd.add(action)
             }
@@ -68,7 +75,7 @@ object MenuFactory {
     fun buildForTitle(title: String): DropDown? {
         val menu = findMenuByTitle(title)
         return if (menu == null) null else
-            buildFor(
+            buildForMenu(
                     menu = menu,
                     withText = false)
     }
@@ -90,8 +97,11 @@ object MenuFactory {
         menu.section.forEachIndexed { _, section ->
             section.serviceAction.forEach { sa ->
                 if (actionTitle == sa.named) {
-                    val action = buildAction(sa.id!!, sa.link!!, menuTitle)
+                    val action = buildActionLink(sa.id!!, menuTitle)
                     action.label = ""
+                    action.onClick {
+                        ActionDispatcher().invoke(sa.link!!)
+                    }
                     return action
                 }
             }
@@ -99,18 +109,16 @@ object MenuFactory {
         return null
     }
 
-    private fun buildAction(label: String, link: Link, menuTitle: String): KvisionHtmlLink {
-        val icon = IconManager.find(label)
-        val classes = IconManager.findStyleFor(label)
+    private fun buildActionLink(label: String, menuTitle: String): KvisionHtmlLink {
         val actionTitle = Utils.deCamel(label)
-        val action: KvisionHtmlLink = ddLink(actionTitle, icon = icon, classes = classes)
-        action.onClick {
-            ActionDispatcher().invoke(link)
-        }
+        val actionLink: KvisionHtmlLink = ddLink(
+                label = actionTitle,
+                icon = IconManager.find(label),
+                classes = IconManager.findStyleFor(label))
         val title = "$menuTitle${Constants.actionSeparator}$actionTitle"
-        action.setDragDropData(Constants.format, title)
-        action.id = title
-        return action
+        actionLink.setDragDropData(Constants.format, title)
+        actionLink.id = title
+        return actionLink
     }
 
     private fun ddLink(
@@ -136,17 +144,21 @@ object MenuFactory {
         dd.separator()
 
         val saveLink = tObject.links.first()
-        val saveAction = buildAction(
+        val saveAction = buildActionLink(
                 label = "save",
-                link = saveLink,
                 menuTitle = tObject.domainType)
+        saveAction.onClick {
+            ActionDispatcher().invoke(saveLink)
+        }
         dd.add(saveAction)
 
         val undoLink = Link(href = "")
-        val undoAction = buildAction(
+        val undoAction = buildActionLink(
                 label = "undo",
-                link = undoLink,
                 menuTitle = tObject.domainType)
+        undoAction.onClick {
+            ActionDispatcher().invoke(undoLink)
+        }
         dd.add(undoAction)
     }
 
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/RoIconBar.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/RoIconBar.kt
index 7a01de3..364430e 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/RoIconBar.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/RoIconBar.kt
@@ -3,7 +3,10 @@ package org.apache.isis.client.kroviz.ui.kv
 import org.apache.isis.client.kroviz.core.event.EventStore
 import org.apache.isis.client.kroviz.core.event.ResourceSpecification
 import org.apache.isis.client.kroviz.core.model.Exposer
+import org.apache.isis.client.kroviz.to.Action
+import org.apache.isis.client.kroviz.to.Property
 import org.apache.isis.client.kroviz.to.TObject
+import org.apache.isis.client.kroviz.to.TransferObject
 import org.apache.isis.client.kroviz.ui.kv.MenuFactory.buildForTitle
 import org.apache.isis.client.kroviz.utils.IconManager
 import org.apache.isis.client.kroviz.utils.Utils
@@ -11,6 +14,7 @@ import pl.treksoft.kvision.core.CssSize
 import pl.treksoft.kvision.core.UNIT
 import pl.treksoft.kvision.core.Widget
 import pl.treksoft.kvision.dropdown.DropDown
+import pl.treksoft.kvision.dropdown.dropDown
 import pl.treksoft.kvision.html.Button
 import pl.treksoft.kvision.html.ButtonStyle
 import pl.treksoft.kvision.panel.SimplePanel
@@ -84,21 +88,34 @@ object RoIconBar : SimplePanel() {
     private fun createObjectIcon(url: String): DropDown? {
         val reSpec = ResourceSpecification(url)
         val logEntry = EventStore.find(reSpec)!!
-        val obj = logEntry.obj!!
-        return if (obj is TObject) {
-            val exp = Exposer(obj)
-            val ed = exp.dynamise()
-            val hasIconName = ed.hasOwnProperty("iconName") as Boolean
-            val iconName = if (hasIconName) (ed["iconName"] as String) else ""
+        return when (val obj = logEntry.obj) {
+            (obj == null)  -> null
+            is TObject -> {
+                val exp = Exposer(obj)
+                val ed = exp.dynamise()
+                val hasIconName = ed.hasOwnProperty("iconName") as Boolean
+                val iconName = if (hasIconName) (ed["iconName"] as String) else ""
 
-            val icon = MenuFactory.buildFor(
-                    tObject = obj,
-                    iconName = iconName,
-                    withText = false)
-            val title = Utils.extractTitle(logEntry.title)
-            initIcon(icon, url, title, "icon-bar-object", icon.buttonId()!!)
-            icon
-        } else null
+                val icon = MenuFactory.buildForObject(
+                        tObject = obj,
+                        iconName = iconName,
+                        withText = false)
+                var title = Utils.extractTitle(logEntry.title)
+                title += "\n${obj.title}"
+                initIcon(icon, url, title, "icon-bar-object", icon.buttonId()!!)
+                icon
+            }
+            is TransferObject -> {
+                val icon = DropDown(
+                        text = "",
+                        icon = IconManager.find("Unknown"),
+                        style = ButtonStyle.LIGHT)
+                val title = "Generic TransferObject"
+                initIcon(icon, url, title, "icon-bar-object", icon.buttonId()!!)
+                icon
+            }
+            else -> null
+        }
     }
 
     private fun createActionIcon(id: String): SimplePanel {
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/RoMenuBar.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/RoMenuBar.kt
index 8aca267..84edb4d 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/RoMenuBar.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/RoMenuBar.kt
@@ -76,7 +76,7 @@ object RoMenuBar : SimplePanel() {
             ddLink(chartTitle,
                     icon = IconManager.find("Chart")
             ).onClick {
-                UiManager.add(chartTitle, ChartTab())
+                UiManager.add(chartTitle, ChartFactory().build())
             }
         }
     }
@@ -84,11 +84,11 @@ object RoMenuBar : SimplePanel() {
     fun amendMenu(menuBars: Menubars) {
         logoButton()
         menuBars.primary.menu.forEach { m ->
-            val dd = MenuFactory.buildFor(m)
+            val dd = MenuFactory.buildForMenu(m)
             if (dd.getChildren().isNotEmpty()) nav.add(dd)
         }
-        nav.add(MenuFactory.buildFor(menuBars.secondary.menu.first()))
-        nav.add(MenuFactory.buildFor(menuBars.tertiary.menu.first()))
+        nav.add(MenuFactory.buildForMenu(menuBars.secondary.menu.first()))
+        nav.add(MenuFactory.buildForMenu(menuBars.tertiary.menu.first()))
     }
 
     private fun logoButton() {
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/UiManager.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/UiManager.kt
index 290ed5b..45d2758 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/UiManager.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/UiManager.kt
@@ -105,7 +105,7 @@ object UiManager {
         linkLayout(tObject, aggregator)
         val logEntry = EventStore.find(tObject)!!
         logEntry.addAggregator(aggregator)
-        aggregator.update(logEntry, "json")
+        aggregator.update(logEntry, Constants.subTypeJson)
         aggregator.handleObject(tObject)
     }
 
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/utils/IconManager.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/utils/IconManager.kt
index 4a949af..07db56d 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/utils/IconManager.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/utils/IconManager.kt
@@ -66,6 +66,7 @@ object IconManager {
             "Trees" to "tree",
             "Types" to "typewriter",
             "Undo" to "undo",
+            "Unknown" to "question",
             "Visualize" to "eye",
             "Wikipedia" to "wikipedia-w")
 
diff --git a/incubator/clients/kroviz/src/test/kotlin/org/apache/isis/client/kroviz/IntegrationTest.kt b/incubator/clients/kroviz/src/test/kotlin/org/apache/isis/client/kroviz/IntegrationTest.kt
index 3bb98d5..8406690 100644
--- a/incubator/clients/kroviz/src/test/kotlin/org/apache/isis/client/kroviz/IntegrationTest.kt
+++ b/incubator/clients/kroviz/src/test/kotlin/org/apache/isis/client/kroviz/IntegrationTest.kt
@@ -11,6 +11,7 @@ import org.apache.isis.client.kroviz.core.event.ResourceSpecification
 import org.apache.isis.client.kroviz.handler.ResponseHandler
 import org.apache.isis.client.kroviz.snapshots.Response
 import org.apache.isis.client.kroviz.to.Method
+import org.apache.isis.client.kroviz.ui.kv.Constants
 import org.apache.isis.client.kroviz.ui.kv.UiManager
 import org.apache.isis.client.kroviz.utils.XmlHelper
 import org.w3c.xhr.XMLHttpRequest
@@ -46,9 +47,9 @@ open class IntegrationTest {
     fun mockResponse(response: Response, aggregator: BaseAggregator?): LogEntry {
         val str = response.str
         val subType = if (XmlHelper.isXml(response.str)) {
-            "xml"
+            Constants.subTypeXml
         } else {
-            "json"
+            Constants.subTypeJson
         }
         val reSpec = ResourceSpecification(response.url, subType)
         EventStore.start(
diff --git a/incubator/clients/kroviz/src/test/kotlin/org/apache/isis/client/kroviz/core/event/EventStoreTest.kt b/incubator/clients/kroviz/src/test/kotlin/org/apache/isis/client/kroviz/core/event/EventStoreTest.kt
index fcc196a..0c2e8db 100644
--- a/incubator/clients/kroviz/src/test/kotlin/org/apache/isis/client/kroviz/core/event/EventStoreTest.kt
+++ b/incubator/clients/kroviz/src/test/kotlin/org/apache/isis/client/kroviz/core/event/EventStoreTest.kt
@@ -6,6 +6,7 @@ import org.apache.isis.client.kroviz.core.aggregator.ListAggregator
 import org.apache.isis.client.kroviz.core.aggregator.ObjectAggregator
 import org.apache.isis.client.kroviz.snapshots.simpleapp1_16_0.*
 import org.apache.isis.client.kroviz.to.Method
+import org.apache.isis.client.kroviz.ui.kv.Constants
 import org.apache.isis.client.kroviz.utils.XmlHelper
 import pl.treksoft.kvision.panel.VPanel
 import kotlin.test.*
@@ -29,18 +30,18 @@ class EventStoreTest : IntegrationTest() {
             val rsJson = ResourceSpecification(SO_LAYOUT_JSON.url)
             mockResponse(SO_LAYOUT_JSON, obs)
 
-            val rsXml = ResourceSpecification(SO_LAYOUT_XML.url, "xml")
+            val rsXml = ResourceSpecification(SO_LAYOUT_XML.url, Constants.subTypeXml)
             mockResponse(SO_LAYOUT_XML, obs)
 
             // then
             val soListLe = EventStore.find(soList)!!
-            assertEquals("json", soListLe.subType) // 1
+            assertEquals(Constants.subTypeJson, soListLe.subType) // 1
 
             val leJson = EventStore.find(rsJson)!!
-            assertEquals("json", leJson.subType) // 2
+            assertEquals(Constants.subTypeJson, leJson.subType) // 2
 
             val leXml = EventStore.find(rsXml)!!
-            assertEquals("xml", leXml.subType) // 3
+            assertEquals(Constants.subTypeXml, leXml.subType) // 3
             assertTrue(XmlHelper.isXml(leXml.response)) // 4
 
             assertTrue(EventStore.log.size > 3)


[isis] 03/09: Revert "ISIS-2374 Support Gradle Builds - initial"

Posted by jo...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

joergrade pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git

commit e45a763ad8212034a8a3af5dcc3b765a90db69d3
Author: Jörg Rade <jo...@kuehne-nagel.com>
AuthorDate: Thu Jun 18 11:22:25 2020 +0200

    Revert "ISIS-2374 Support Gradle Builds - initial"
---
 api/applib/build.gradle                            |  24 --
 api/build.gradle                                   |   6 -
 api/gradle/wrapper/gradle-wrapper.properties       |   5 -
 api/gradlew                                        | 172 -------------
 api/gradlew.bat                                    |  84 -------
 api/schema/build.gradle                            |  12 -
 api/settings.gradle                                |  10 -
 build.gradle                                       |  27 ---
 .../gradle/wrapper/gradle-wrapper.properties       |   5 -
 core/codegen-bytebuddy/build.gradle                |  17 --
 core/commons/build.gradle                          |  26 --
 core/config/build.gradle                           |  17 --
 core/internaltestsupport/build.gradle              |  42 ----
 core/metamodel/build.gradle                        |  32 ---
 core/runtime/build.gradle                          |  17 --
 core/runtimeservices/build.gradle                  |  16 --
 core/security/build.gradle                         |  18 --
 core/webapp/build.gradle                           |  18 --
 examples/demo/domain/build.gradle                  |   2 -
 examples/demo/wicket/build.gradle                  |   5 -
 examples/smoketests/build.gradle                   |  22 --
 extensions/core/flyway/impl/build.gradle           |  15 --
 extensions/core/model-annotation/build.gradle      |  14 --
 extensions/security/secman/api/build.gradle        |   8 -
 .../secman/encryption-jbcrypt/build.gradle         |  14 --
 extensions/security/secman/model/build.gradle      |  13 -
 .../security/secman/persistence-jdo/build.gradle   |  16 --
 .../security/secman/shiro-realm/build.gradle       |  14 --
 .../security/shiro-realm-ldap/impl/build.gradle    |  12 -
 extensions/vro/cors/impl/build.gradle              |  14 --
 extensions/vw/exceldownload/ui/build.gradle        |  16 --
 extensions/vw/fullcalendar/applib/build.gradle     |  12 -
 extensions/vw/fullcalendar/ui/build.gradle         |  13 -
 extensions/vw/pdfjs/applib/build.gradle            |  12 -
 extensions/vw/pdfjs/metamodel/build.gradle         |  13 -
 extensions/vw/pdfjs/ui/build.gradle                |  12 -
 gradle/wrapper/gradle-wrapper.properties           |   6 -
 gradlew                                            | 172 -------------
 gradlew.bat                                        |  84 -------
 incubator/mappings/microprofile/build.gradle       |  18 --
 incubator/viewers/build.gradle                     |   6 -
 .../gradle/wrapper/gradle-wrapper.properties       |   5 -
 incubator/viewers/gradlew                          | 172 -------------
 incubator/viewers/gradlew.bat                      |  84 -------
 incubator/viewers/settings.gradle                  |  10 -
 incubator/viewers/vaadin/model/build.gradle        |  16 --
 incubator/viewers/vaadin/ui/build.gradle           |  17 --
 incubator/viewers/vaadin/viewer/build.gradle       |  11 -
 legacy/extensions/core/applib/build.gradle         |  17 --
 legacy/extensions/core/commons/build.gradle        |  17 --
 legacy/extensions/core/metamodel/build.gradle      |  20 --
 legacy/extensions/core/runtime/build.gradle        |  20 --
 legacy/mappings/restclient/build.gradle            |  14 --
 mappings/jaxrsclient/api/build.gradle              |  11 -
 mappings/restclient/api/build.gradle               |  13 -
 persistence/jdo/applib/build.gradle                |  14 --
 persistence/jdo/datanucleus-5/build.gradle         |  22 --
 persistence/jpa/applib/build.gradle                |  12 -
 persistence/jpa/model/build.gradle                 |  17 --
 security/bypass/build.gradle                       |  11 -
 security/keycloak/build.gradle                     |  14 --
 security/shiro/build.gradle                        |  18 --
 settings.gradle                                    | 268 ---------------------
 subdomains/base/applib/build.gradle                |  17 --
 subdomains/docx/applib/build.gradle                |  11 -
 subdomains/excel/applib/build.gradle               |  18 --
 subdomains/excel/fixture/build.gradle              |  15 --
 subdomains/excel/integtests/build.gradle           |  15 --
 subdomains/excel/testing/build.gradle              |  11 -
 subdomains/freemarker/applib/build.gradle          |  11 -
 subdomains/ognl/applib/build.gradle                |  11 -
 subdomains/pdfbox/applib/build.gradle              |  11 -
 subdomains/spring/applib/build.gradle              |  13 -
 subdomains/xdocreport/applib/build.gradle          |  18 --
 subdomains/zip/applib/build.gradle                 |  12 -
 testing/fakedata/applib/build.gradle               |  16 --
 testing/fakedata/fixtures/build.gradle             |  15 --
 testing/fakedata/integtests/build.gradle           |  13 -
 testing/fixtures/applib/build.gradle               |  17 --
 testing/h2console/ui/build.gradle                  |  12 -
 testing/hsqldbmgr/ui/build.gradle                  |  12 -
 testing/integtestsupport/applib/build.gradle       |  28 ---
 testing/specsupport/applib/build.gradle            |  17 --
 testing/unittestsupport/applib/build.gradle        |  33 ---
 valuetypes/asciidoc/applib/build.gradle            |  12 -
 valuetypes/asciidoc/ui/vaadin/build.gradle         |  12 -
 valuetypes/asciidoc/ui/wicket/build.gradle         |  12 -
 valuetypes/markdown/applib/build.gradle            |  12 -
 valuetypes/markdown/ui/build.gradle                |  17 --
 valuetypes/sse/applib/build.gradle                 |  14 --
 valuetypes/sse/metamodel/build.gradle              |  12 -
 valuetypes/sse/ui/build.gradle                     |  15 --
 viewers/common/build.gradle                        |  14 --
 viewers/restfulobjects/applib/build.gradle         |  14 --
 .../restfulobjects/jaxrs-resteasy-4/build.gradle   |  21 --
 viewers/restfulobjects/rendering/build.gradle      |  13 -
 viewers/restfulobjects/viewer/build.gradle         |  17 --
 viewers/wicket/model/build.gradle                  |  21 --
 viewers/wicket/ui/build.gradle                     |  80 ------
 viewers/wicket/viewer/build.gradle                 |  38 ---
 100 files changed, 2514 deletions(-)

diff --git a/api/applib/build.gradle b/api/applib/build.gradle
deleted file mode 100644
index 445b219..0000000
--- a/api/applib/build.gradle
+++ /dev/null
@@ -1,24 +0,0 @@
-description = 'Apache Isis Core - AppLib'
-apply plugin: 'war'
-dependencies {
-    compile project(':isis-parent:isis-schema')
-    compile group: 'javax', name: 'javaee-api', version: '8.0'
-    compile group: 'com.google.code.findbugs', name: 'annotations', version: '2.0.1'
-    compileOnly group: 'org.projectlombok', name: 'lombok', version: '1.18.12'
-    testCompile group: 'org.junit.jupiter', name: 'junit-jupiter-api', version: '5.5.2'
-    testCompile group: 'org.junit.jupiter', name: 'junit-jupiter-engine', version: '5.5.2'
-    testCompile group: 'org.junit.vintage', name: 'junit-vintage-engine', version: '5.5.2'
-    testCompile group: 'org.jmock', name: 'jmock', version: '2.11.0'
-    testCompile(group: 'org.jmock', name: 'jmock-junit4', version: '2.11.0') {
-        exclude(module: 'junit-dep')
-        exclude(module: 'byte-buddy')
-    }
-    testCompile group: 'org.assertj', name: 'assertj-core', version: '3.13.2'
-    providedCompile project(':isis-parent:isis:isis-core-commons')
-}
-
-task packageTests(type: Jar) {
-    from sourceSets.test.output
-    classifier = 'tests'
-}
-artifacts.archives packageTests
diff --git a/api/build.gradle b/api/build.gradle
deleted file mode 100644
index 6819940..0000000
--- a/api/build.gradle
+++ /dev/null
@@ -1,6 +0,0 @@
-/*
- * This file was generated by the Gradle 'init' task.
- *
- * This is a general purpose Gradle build.
- * Learn how to create Gradle builds at https://guides.gradle.org/creating-new-gradle-builds/
- */
diff --git a/api/gradle/wrapper/gradle-wrapper.properties b/api/gradle/wrapper/gradle-wrapper.properties
deleted file mode 100644
index 9492014..0000000
--- a/api/gradle/wrapper/gradle-wrapper.properties
+++ /dev/null
@@ -1,5 +0,0 @@
-distributionBase=GRADLE_USER_HOME
-distributionPath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-6.0.1-bin.zip
-zipStoreBase=GRADLE_USER_HOME
-zipStorePath=wrapper/dists
diff --git a/api/gradlew b/api/gradlew
deleted file mode 100644
index cccdd3d..0000000
--- a/api/gradlew
+++ /dev/null
@@ -1,172 +0,0 @@
-#!/usr/bin/env sh
-
-##############################################################################
-##
-##  Gradle start up script for UN*X
-##
-##############################################################################
-
-# Attempt to set APP_HOME
-# Resolve links: $0 may be a link
-PRG="$0"
-# Need this for relative symlinks.
-while [ -h "$PRG" ] ; do
-    ls=`ls -ld "$PRG"`
-    link=`expr "$ls" : '.*-> \(.*\)$'`
-    if expr "$link" : '/.*' > /dev/null; then
-        PRG="$link"
-    else
-        PRG=`dirname "$PRG"`"/$link"
-    fi
-done
-SAVED="`pwd`"
-cd "`dirname \"$PRG\"`/" >/dev/null
-APP_HOME="`pwd -P`"
-cd "$SAVED" >/dev/null
-
-APP_NAME="Gradle"
-APP_BASE_NAME=`basename "$0"`
-
-# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
-DEFAULT_JVM_OPTS=""
-
-# Use the maximum available, or set MAX_FD != -1 to use that value.
-MAX_FD="maximum"
-
-warn () {
-    echo "$*"
-}
-
-die () {
-    echo
-    echo "$*"
-    echo
-    exit 1
-}
-
-# OS specific support (must be 'true' or 'false').
-cygwin=false
-msys=false
-darwin=false
-nonstop=false
-case "`uname`" in
-  CYGWIN* )
-    cygwin=true
-    ;;
-  Darwin* )
-    darwin=true
-    ;;
-  MINGW* )
-    msys=true
-    ;;
-  NONSTOP* )
-    nonstop=true
-    ;;
-esac
-
-CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
-
-# Determine the Java command to use to start the JVM.
-if [ -n "$JAVA_HOME" ] ; then
-    if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
-        # IBM's JDK on AIX uses strange locations for the executables
-        JAVACMD="$JAVA_HOME/jre/sh/java"
-    else
-        JAVACMD="$JAVA_HOME/bin/java"
-    fi
-    if [ ! -x "$JAVACMD" ] ; then
-        die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
-
-Please set the JAVA_HOME variable in your environment to match the
-location of your Java installation."
-    fi
-else
-    JAVACMD="java"
-    which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
-
-Please set the JAVA_HOME variable in your environment to match the
-location of your Java installation."
-fi
-
-# Increase the maximum file descriptors if we can.
-if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
-    MAX_FD_LIMIT=`ulimit -H -n`
-    if [ $? -eq 0 ] ; then
-        if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
-            MAX_FD="$MAX_FD_LIMIT"
-        fi
-        ulimit -n $MAX_FD
-        if [ $? -ne 0 ] ; then
-            warn "Could not set maximum file descriptor limit: $MAX_FD"
-        fi
-    else
-        warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
-    fi
-fi
-
-# For Darwin, add options to specify how the application appears in the dock
-if $darwin; then
-    GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
-fi
-
-# For Cygwin, switch paths to Windows format before running java
-if $cygwin ; then
-    APP_HOME=`cygpath --path --mixed "$APP_HOME"`
-    CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
-    JAVACMD=`cygpath --unix "$JAVACMD"`
-
-    # We build the pattern for arguments to be converted via cygpath
-    ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
-    SEP=""
-    for dir in $ROOTDIRSRAW ; do
-        ROOTDIRS="$ROOTDIRS$SEP$dir"
-        SEP="|"
-    done
-    OURCYGPATTERN="(^($ROOTDIRS))"
-    # Add a user-defined pattern to the cygpath arguments
-    if [ "$GRADLE_CYGPATTERN" != "" ] ; then
-        OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
-    fi
-    # Now convert the arguments - kludge to limit ourselves to /bin/sh
-    i=0
-    for arg in "$@" ; do
-        CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
-        CHECK2=`echo "$arg"|egrep -c "^-"`                                 ### Determine if an option
-
-        if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then                    ### Added a condition
-            eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
-        else
-            eval `echo args$i`="\"$arg\""
-        fi
-        i=$((i+1))
-    done
-    case $i in
-        (0) set -- ;;
-        (1) set -- "$args0" ;;
-        (2) set -- "$args0" "$args1" ;;
-        (3) set -- "$args0" "$args1" "$args2" ;;
-        (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
-        (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
-        (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
-        (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
-        (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
-        (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
-    esac
-fi
-
-# Escape application args
-save () {
-    for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
-    echo " "
-}
-APP_ARGS=$(save "$@")
-
-# Collect all arguments for the java command, following the shell quoting and substitution rules
-eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
-
-# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong
-if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then
-  cd "$(dirname "$0")"
-fi
-
-exec "$JAVACMD" "$@"
diff --git a/api/gradlew.bat b/api/gradlew.bat
deleted file mode 100644
index f955316..0000000
--- a/api/gradlew.bat
+++ /dev/null
@@ -1,84 +0,0 @@
-@if "%DEBUG%" == "" @echo off
-@rem ##########################################################################
-@rem
-@rem  Gradle startup script for Windows
-@rem
-@rem ##########################################################################
-
-@rem Set local scope for the variables with windows NT shell
-if "%OS%"=="Windows_NT" setlocal
-
-set DIRNAME=%~dp0
-if "%DIRNAME%" == "" set DIRNAME=.
-set APP_BASE_NAME=%~n0
-set APP_HOME=%DIRNAME%
-
-@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
-set DEFAULT_JVM_OPTS=
-
-@rem Find java.exe
-if defined JAVA_HOME goto findJavaFromJavaHome
-
-set JAVA_EXE=java.exe
-%JAVA_EXE% -version >NUL 2>&1
-if "%ERRORLEVEL%" == "0" goto init
-
-echo.
-echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
-echo.
-echo Please set the JAVA_HOME variable in your environment to match the
-echo location of your Java installation.
-
-goto fail
-
-:findJavaFromJavaHome
-set JAVA_HOME=%JAVA_HOME:"=%
-set JAVA_EXE=%JAVA_HOME%/bin/java.exe
-
-if exist "%JAVA_EXE%" goto init
-
-echo.
-echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
-echo.
-echo Please set the JAVA_HOME variable in your environment to match the
-echo location of your Java installation.
-
-goto fail
-
-:init
-@rem Get command-line arguments, handling Windows variants
-
-if not "%OS%" == "Windows_NT" goto win9xME_args
-
-:win9xME_args
-@rem Slurp the command line arguments.
-set CMD_LINE_ARGS=
-set _SKIP=2
-
-:win9xME_args_slurp
-if "x%~1" == "x" goto execute
-
-set CMD_LINE_ARGS=%*
-
-:execute
-@rem Setup the command line
-
-set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
-
-@rem Execute Gradle
-"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
-
-:end
-@rem End local scope for the variables with windows NT shell
-if "%ERRORLEVEL%"=="0" goto mainEnd
-
-:fail
-rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
-rem the _cmd.exe /c_ return code!
-if  not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
-exit /b 1
-
-:mainEnd
-if "%OS%"=="Windows_NT" endlocal
-
-:omega
diff --git a/api/schema/build.gradle b/api/schema/build.gradle
deleted file mode 100644
index 9bfca44..0000000
--- a/api/schema/build.gradle
+++ /dev/null
@@ -1,12 +0,0 @@
-description = 'Apache Isis Core - Schemas'
-dependencies {
-    compile group: 'org.springframework', name: 'spring-context', version: '5.2.6.RELEASE'
-    compile group: 'joda-time', name: 'joda-time', version: '2.10.6'
-    compileOnly group: 'org.projectlombok', name: 'lombok', version: '1.18.12'
-}
-
-task packageTests(type: Jar) {
-    from sourceSets.test.output
-    classifier = 'tests'
-}
-artifacts.archives packageTests
diff --git a/api/settings.gradle b/api/settings.gradle
deleted file mode 100644
index 284e182..0000000
--- a/api/settings.gradle
+++ /dev/null
@@ -1,10 +0,0 @@
-/*
- * This file was generated by the Gradle 'init' task.
- *
- * The settings file is used to specify which projects to include in your build.
- *
- * Detailed information about configuring a multi-project build in Gradle can be found
- * in the user guide at https://docs.gradle.org/4.10.2/userguide/multi_project_builds.html
- */
-
-rootProject.name = 'api'
diff --git a/build.gradle b/build.gradle
deleted file mode 100644
index deaeac0..0000000
--- a/build.gradle
+++ /dev/null
@@ -1,27 +0,0 @@
-allprojects {
-    apply plugin: 'maven'
-
-    group = 'org.apache.isis'
-    version = '2.0.0-SNAPSHOT'
-}
-
-subprojects {
-    apply plugin: 'java'
-    sourceCompatibility = 1.8
-    targetCompatibility = 1.8
-
-    repositories {
-        mavenCentral()
-        jcenter()
-
-        maven { url "http://repo.maven.apache.org/maven2" }
-        maven { url "https://repo.maven.apache.org/maven2" }
-        maven { url "https://repository.apache.org/" }
-        maven { url "https://repository.jboss.org/nexus/content/groups/public-jboss/" }
-        maven { url "https://oss.sonatype.org/content/repositories/snapshots" }
-        maven { url "https://repository.apache.org/snapshots" }
-        maven { url "https://repo1.maven.org/maven2" }
-        mavenLocal()
-    }
-
-}
diff --git a/core-parent/gradle/wrapper/gradle-wrapper.properties b/core-parent/gradle/wrapper/gradle-wrapper.properties
deleted file mode 100644
index 9492014..0000000
--- a/core-parent/gradle/wrapper/gradle-wrapper.properties
+++ /dev/null
@@ -1,5 +0,0 @@
-distributionBase=GRADLE_USER_HOME
-distributionPath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-6.0.1-bin.zip
-zipStoreBase=GRADLE_USER_HOME
-zipStorePath=wrapper/dists
diff --git a/core/codegen-bytebuddy/build.gradle b/core/codegen-bytebuddy/build.gradle
deleted file mode 100644
index aa5c842..0000000
--- a/core/codegen-bytebuddy/build.gradle
+++ /dev/null
@@ -1,17 +0,0 @@
-description = 'Apache Isis Core - Code Gen (ByteBuddy)'
-apply plugin: 'war'
-dependencies {
-    compile group: 'net.bytebuddy', name: 'byte-buddy', version: '1.10.10'
-    compile group: 'org.objenesis', name: 'objenesis', version: '2.6'
-    compile project(':isis-parent:isis:isis-core-commons')
-    testCompile(group: 'org.jmock', name: 'jmock-junit4', version: '2.11.0') {
-        exclude(module: 'junit-dep')
-        exclude(module: 'byte-buddy')
-    }
-}
-
-task packageTests(type: Jar) {
-    from sourceSets.test.output
-    classifier = 'tests'
-}
-artifacts.archives packageTests
diff --git a/core/commons/build.gradle b/core/commons/build.gradle
deleted file mode 100644
index a7f5061..0000000
--- a/core/commons/build.gradle
+++ /dev/null
@@ -1,26 +0,0 @@
-description = 'Apache Isis Core - Commons'
-dependencies {
-    compile group: 'javax', name: 'javaee-api', version: '8.0'
-    compile group: 'com.google.code.findbugs', name: 'annotations', version: '2.0.1'
-    compile group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: '2.10.4'
-    compile group: 'org.springframework', name: 'spring-context', version: '5.2.6.RELEASE'
-    compile group: 'org.springframework', name: 'spring-tx', version: '5.2.6.RELEASE'
-    compile(group: 'org.springframework.boot', name: 'spring-boot-starter', version: '2.2.7.RELEASE') {
-        exclude(module: 'validation-api')
-        exclude(module: 'spring-boot-starter-logging')
-    }
-    compile(group: 'org.springframework.boot', name: 'spring-boot-starter-log4j2', version: '2.2.7.RELEASE') {
-        exclude(module: 'slf4j-api')
-    }
-    compile group: 'org.slf4j', name: 'slf4j-api', version: '1.7.26'
-    compile group: 'org.projectlombok', name: 'lombok', version: '1.18.12'
-    testCompile group: 'org.junit.jupiter', name: 'junit-jupiter-api', version: '5.5.2'
-    testCompile group: 'org.junit.jupiter', name: 'junit-jupiter-engine', version: '5.5.2'
-    testCompile group: 'org.junit.vintage', name: 'junit-vintage-engine', version: '5.5.2'
-}
-
-task packageTests(type: Jar) {
-    from sourceSets.test.output
-    classifier = 'tests'
-}
-artifacts.archives packageTests
diff --git a/core/config/build.gradle b/core/config/build.gradle
deleted file mode 100644
index cf74bfa..0000000
--- a/core/config/build.gradle
+++ /dev/null
@@ -1,17 +0,0 @@
-description = 'Apache Isis Core - Configuration'
-apply plugin: 'war'
-
-dependencies {
-    compile project(':isis-parent:isis-applib')
-    compile project(':isis-parent:isis:isis-core-commons')
-    compile group: 'org.hibernate.validator', name: 'hibernate-validator', version: '6.0.19.Final'
-    compile group: 'org.springframework.boot', name: 'spring-boot-configuration-processor', version: '2.2.7.RELEASE'
-    testCompile project(':isis-parent:isis:isis-core-internaltestsupport')
-    testCompile project(':isis-parent:isis-applib')
-}
-
-task packageTests(type: Jar) {
-    from sourceSets.test.output
-    classifier = 'tests'
-}
-artifacts.archives packageTests
diff --git a/core/internaltestsupport/build.gradle b/core/internaltestsupport/build.gradle
deleted file mode 100644
index 0c3e4da..0000000
--- a/core/internaltestsupport/build.gradle
+++ /dev/null
@@ -1,42 +0,0 @@
-description = 'Apache Isis Core - Unit Test Support'
-apply plugin: 'war'
-
-dependencies {
-    compile project(':isis-parent:isis:isis-core-commons')
-    compile group: 'org.junit.jupiter', name: 'junit-jupiter-api', version: '5.5.2'
-    compile group: 'org.junit.jupiter', name: 'junit-jupiter-engine', version: '5.5.2'
-    compile group: 'org.junit.vintage', name: 'junit-vintage-engine', version: '5.5.2'
-    compile group: 'org.assertj', name: 'assertj-core', version: '3.13.2'
-    compile group: 'net.bytebuddy', name: 'byte-buddy', version: '1.10.10'
-    compile(group: 'org.mockito', name: 'mockito-core', version: '3.1.0') {
-        exclude(module: 'byte-buddy')
-        exclude(module: 'byte-buddy-agent')
-    }
-    compile project(':isis-parent:isis:isis-core-codegen-bytebuddy')
-    compile group: 'org.hamcrest', name: 'hamcrest-library', version: '2.1'
-    compile group: 'org.slf4j', name: 'slf4j-api', version: '1.7.26'
-    compile(group: 'org.springframework.boot', name: 'spring-boot-starter-test', version: '2.2.7.RELEASE') {
-        exclude(module: 'asm')
-        exclude(module: 'spring-test')
-        exclude(module: 'spring-core')
-        exclude(module: 'spring-boot-starter-logging')
-        exclude(module: 'slf4j-api')
-    }
-    compile group: 'org.springframework', name: 'spring-test', version: '5.2.6.RELEASE'
-    compile group: 'org.picocontainer', name: 'picocontainer', version: '2.15'
-    compile(group: 'org.jmock', name: 'jmock', version: '2.11.0') {
-        exclude(module: 'asm')
-    }
-    compile(group: 'org.jmock', name: 'jmock-junit4', version: '2.11.0') {
-        exclude(module: 'junit-dep')
-        exclude(module: 'asm')
-        exclude(module: 'byte-buddy')
-    }
-    compileOnly group: 'org.datanucleus', name: 'javax.jdo', version: '3.2.0-m13'
-}
-
-task packageTests(type: Jar) {
-    from sourceSets.test.output
-    classifier = 'tests'
-}
-artifacts.archives packageTests
diff --git a/core/metamodel/build.gradle b/core/metamodel/build.gradle
deleted file mode 100644
index 476ed5c..0000000
--- a/core/metamodel/build.gradle
+++ /dev/null
@@ -1,32 +0,0 @@
-description = 'Apache Isis Core - MetaModel'
-dependencies {
-    compile project(':isis-parent:isis-applib')
-    compile project(':isis-parent:isis:isis-core-config')
-    compile project(':isis-parent:isis:isis-core-security')
-    compile(group: 'io.swagger', name: 'swagger-core', version: '1.6.0') {
-        exclude(module: 'guava')
-        exclude(module: 'validation-api')
-        exclude(module: 'snakeyaml')
-        exclude(module: 'slf4j-api')
-        exclude(module: 'commons-lang3')
-    }
-    compile project(':isis-parent:isis:isis-core-commons')
-    testCompile project(':isis-parent:isis:isis-core-config')
-    testCompile project(':isis-parent:isis-applib')
-    testCompile group: 'org.junit.jupiter', name: 'junit-jupiter-api', version: '5.5.2'
-    testCompile group: 'org.junit.jupiter', name: 'junit-jupiter-engine', version: '5.5.2'
-    testCompile group: 'org.junit.vintage', name: 'junit-vintage-engine', version: '5.5.2'
-    testCompile group: 'org.jmock', name: 'jmock', version: '2.11.0'
-    testCompile(group: 'org.jmock', name: 'jmock-junit4', version: '2.11.0') {
-        exclude(module: 'junit-dep')
-        exclude(module: 'byte-buddy')
-    }
-    testCompile project(':isis-parent:isis:isis-core-internaltestsupport')
-    testCompile group: 'org.hibernate.validator', name: 'hibernate-validator', version: '6.0.19.Final'
-}
-
-task packageTests(type: Jar) {
-    from sourceSets.test.output
-    classifier = 'tests'
-}
-artifacts.archives packageTests
diff --git a/core/runtime/build.gradle b/core/runtime/build.gradle
deleted file mode 100644
index b053a1c..0000000
--- a/core/runtime/build.gradle
+++ /dev/null
@@ -1,17 +0,0 @@
-description = 'Apache Isis Core - Runtime'
-dependencies {
-    compile project(':isis-parent:isis:isis-core-metamodel')
-    compile(group: 'org.apache.commons', name: 'commons-email', version: '1.5') {
-        exclude(module: 'javax.mail')
-        exclude(module: 'activation')
-    }
-    testCompile project(':isis-parent:isis:isis-core-internaltestsupport')
-    testCompile project(':isis-parent:isis-applib')
-    testCompile project(':isis-parent:isis:isis-core-metamodel')
-}
-
-task packageTests(type: Jar) {
-    from sourceSets.test.output
-    classifier = 'tests'
-}
-artifacts.archives packageTests
diff --git a/core/runtimeservices/build.gradle b/core/runtimeservices/build.gradle
deleted file mode 100644
index aada5c1..0000000
--- a/core/runtimeservices/build.gradle
+++ /dev/null
@@ -1,16 +0,0 @@
-description = 'Apache Isis Core - Runtime Services'
-dependencies {
-    compile project(':isis-parent:isis:isis-core-runtime')
-    compile project(':isis-parent:isis:isis-core-codegen-bytebuddy')
-    compile group: 'org.hsqldb', name: 'hsqldb', version: '2.5.0'
-    testCompile project(':isis-parent:isis:isis-core-internaltestsupport')
-    testCompile project(':isis-parent:isis:isis-core-config')
-    testCompile project(':isis-parent:isis:isis-core-metamodel')
-    testCompile project(':isis-parent:isis:isis-core-runtime')
-}
-
-task packageTests(type: Jar) {
-    from sourceSets.test.output
-    classifier = 'tests'
-}
-artifacts.archives packageTests
diff --git a/core/security/build.gradle b/core/security/build.gradle
deleted file mode 100644
index 6276916..0000000
--- a/core/security/build.gradle
+++ /dev/null
@@ -1,18 +0,0 @@
-description = 'Apache Isis Core - Security'
-dependencies {
-    compile project(':isis-parent:isis-applib')
-    compile project(':isis-parent:isis:isis-core-config')
-    testCompile(group: 'org.jmock', name: 'jmock-junit4', version: '2.11.0') {
-        exclude(module: 'junit-dep')
-    }
-    testCompile group: 'org.hamcrest', name: 'hamcrest-library', version: '2.1'
-    testCompile group: 'org.junit.jupiter', name: 'junit-jupiter-api', version: '5.5.2'
-    testCompile group: 'org.junit.jupiter', name: 'junit-jupiter-engine', version: '5.5.2'
-    testCompile group: 'org.junit.vintage', name: 'junit-vintage-engine', version: '5.5.2'
-}
-
-task packageTests(type: Jar) {
-    from sourceSets.test.output
-    classifier = 'tests'
-}
-artifacts.archives packageTests
diff --git a/core/webapp/build.gradle b/core/webapp/build.gradle
deleted file mode 100644
index 2c503d9..0000000
--- a/core/webapp/build.gradle
+++ /dev/null
@@ -1,18 +0,0 @@
-description = 'Apache Isis Core - WebApp'
-dependencies {
-    compile project(':isis-parent:isis:isis-core-runtime')
-    compile group: 'org.springframework', name: 'spring-web', version: '5.2.6.RELEASE'
-    compile group: 'org.springframework.boot', name: 'spring-boot-actuator', version: '2.2.7.RELEASE'
-    compile(group: 'org.springframework.boot', name: 'spring-boot-starter-thymeleaf', version: '2.2.7.RELEASE') {
-        exclude(module: 'spring-boot-starter')
-    }
-    compile group: 'org.springframework.boot', name: 'spring-boot', version: '2.2.7.RELEASE'
-    testCompile project(':isis-parent:isis:isis-core-internaltestsupport')
-    testCompile project(':isis-parent:isis:isis-core-runtime')
-}
-
-task packageTests(type: Jar) {
-    from sourceSets.test.output
-    classifier = 'tests'
-}
-artifacts.archives packageTests
diff --git a/examples/demo/domain/build.gradle b/examples/demo/domain/build.gradle
deleted file mode 100644
index 9758438..0000000
--- a/examples/demo/domain/build.gradle
+++ /dev/null
@@ -1,2 +0,0 @@
-group = 'org.apache.isis.examples.apps'
-description = 'Apache Isis App - Demo (Domain)'
diff --git a/examples/demo/wicket/build.gradle b/examples/demo/wicket/build.gradle
deleted file mode 100644
index 40f451d..0000000
--- a/examples/demo/wicket/build.gradle
+++ /dev/null
@@ -1,5 +0,0 @@
-group = 'org.apache.isis.examples.apps'
-description = 'Apache Isis App - Demo (Wicket)'
-dependencies {
-  compile project(':isis-app-starter-parent:demo-parent:demo-domain')
-}
diff --git a/examples/smoketests/build.gradle b/examples/smoketests/build.gradle
deleted file mode 100644
index e433369..0000000
--- a/examples/smoketests/build.gradle
+++ /dev/null
@@ -1,22 +0,0 @@
-group = 'org.apache.isis.app'
-description = 'Apache Isis App - Smoketests'
-dependencies {
-    compile project(':isis-parent:isis:isis-mavendeps:isis-mavendeps-webapp')
-    compile project(':isis-parent:isis:isis-mavendeps:isis-mavendeps-jdk11')
-    compile project(':isis-parent:isis:isis-security-shiro')
-    compile project(':isis-parent:isis:isis-testing:isis-testing-fixtures:isis-testing-fixtures-applib')
-    compile project(':isis-parent:isis:isis-mappings:isis-mappings-restclient-api')
-    compile project(':isis-parent:isis:isis-extensions:isis-extensions-modelannotation')
-    compile project(':isis-parent:isis:isis-extensions:isis-extensions-secman:isis-extensions-secman-model')
-    compile project(':isis-parent:isis:isis-extensions:isis-extensions-secman:isis-extensions-secman-encryption-jbcrypt')
-    compile project(':isis-parent:isis:isis-extensions:isis-extensions-secman:isis-extensions-secman-persistence-jdo')
-    compile project(':isis-parent:isis:isis-extensions:isis-extensions-secman:isis-extensions-secman-shiro-realm')
-    compile project(':isis-parent:isis:isis-extensions:isis-extensions-shiro-realm-ldap:isis-extensions-shiro-realm-ldap-impl')
-    compile group: 'org.springframework.data', name: 'spring-data-jpa', version: '2.2.7.RELEASE'
-    testCompile group: 'org.glassfish.jersey.ext', name: 'jersey-spring5', version: '2.29.1'
-    testCompile group: 'org.glassfish', name: 'javax.json', version: '1.1.4'
-    testCompile group: 'org.eclipse.persistence', name: 'org.eclipse.persistence.moxy', version: '2.7.5'
-    testCompile project(':isis-parent:isis:isis-mavendeps:isis-mavendeps-integtests')
-    testCompile group: 'org.apache.directory.server', name: 'apacheds-test-framework', version: '2.0.0.AM25'
-    compileOnly group: 'org.projectlombok', name: 'lombok', version: '1.18.12'
-}
diff --git a/extensions/core/flyway/impl/build.gradle b/extensions/core/flyway/impl/build.gradle
deleted file mode 100644
index c252d38..0000000
--- a/extensions/core/flyway/impl/build.gradle
+++ /dev/null
@@ -1,15 +0,0 @@
-group = 'org.apache.isis.extensions'
-description = 'Apache Isis Ext - Flyway Impl'
-dependencies {
-    compile project(':isis-parent:isis:isis-core-config')
-    compile group: 'org.flywaydb', name: 'flyway-core', version: '6.0.8'
-    compile group: 'org.springframework', name: 'spring-context', version: '5.2.6.RELEASE'
-    compile group: 'org.springframework.boot', name: 'spring-boot-autoconfigure', version: '2.2.7.RELEASE'
-    compile group: 'org.springframework', name: 'spring-jdbc', version: '5.2.6.RELEASE'
-}
-
-task packageTests(type: Jar) {
-    from sourceSets.test.output
-    classifier = 'tests'
-}
-artifacts.archives packageTests
diff --git a/extensions/core/model-annotation/build.gradle b/extensions/core/model-annotation/build.gradle
deleted file mode 100644
index 047435a..0000000
--- a/extensions/core/model-annotation/build.gradle
+++ /dev/null
@@ -1,14 +0,0 @@
-group = 'org.apache.isis.extensions'
-description = 'Apache Isis Ext - @Model'
-apply plugin: 'war'
-dependencies {
-  compile project(':isis-parent:isis:isis-core-metamodel')
-  providedCompile project(':isis-parent:isis:isis-core-webapp')
-  providedCompile project(':isis-parent:isis:isis-viewer-wicket:isis-viewer-wicket-ui')
-}
-
-task packageTests(type: Jar) {
-  from sourceSets.test.output
-  classifier = 'tests'
-}
-artifacts.archives packageTests
diff --git a/extensions/security/secman/api/build.gradle b/extensions/security/secman/api/build.gradle
deleted file mode 100644
index d547ff2..0000000
--- a/extensions/security/secman/api/build.gradle
+++ /dev/null
@@ -1,8 +0,0 @@
-group = 'org.apache.isis.extensions'
-description = 'Apache Isis Ext - Sec Man API'
-
-task packageTests(type: Jar) {
-  from sourceSets.test.output
-  classifier = 'tests'
-}
-artifacts.archives packageTests
diff --git a/extensions/security/secman/encryption-jbcrypt/build.gradle b/extensions/security/secman/encryption-jbcrypt/build.gradle
deleted file mode 100644
index 0254f1d..0000000
--- a/extensions/security/secman/encryption-jbcrypt/build.gradle
+++ /dev/null
@@ -1,14 +0,0 @@
-group = 'org.apache.isis.extensions'
-description = 'Apache Isis Ext - Sec Man Encryption (Using jbcrypt)'
-apply plugin: 'war'
-dependencies {
-    compile group: 'org.mindrot', name: 'jbcrypt', version: '0.4'
-    providedCompile project(':isis-parent:isis:isis-core-runtime')
-    providedCompile project(':isis-parent:isis:isis-extensions:isis-extensions-secman:isis-extensions-secman-api')
-}
-
-task packageTests(type: Jar) {
-    from sourceSets.test.output
-    classifier = 'tests'
-}
-artifacts.archives packageTests
diff --git a/extensions/security/secman/model/build.gradle b/extensions/security/secman/model/build.gradle
deleted file mode 100644
index 59fe09c..0000000
--- a/extensions/security/secman/model/build.gradle
+++ /dev/null
@@ -1,13 +0,0 @@
-group = 'org.apache.isis.extensions'
-description = 'Apache Isis Ext - Sec Man Model'
-apply plugin: 'war'
-dependencies {
-    compile project(':isis-parent:isis:isis-extensions:isis-extensions-secman:isis-extensions-secman-api')
-    providedCompile project(':isis-parent:isis:isis-core-runtime')
-}
-
-task packageTests(type: Jar) {
-    from sourceSets.test.output
-    classifier = 'tests'
-}
-artifacts.archives packageTests
diff --git a/extensions/security/secman/persistence-jdo/build.gradle b/extensions/security/secman/persistence-jdo/build.gradle
deleted file mode 100644
index b2f9bf3..0000000
--- a/extensions/security/secman/persistence-jdo/build.gradle
+++ /dev/null
@@ -1,16 +0,0 @@
-group = 'org.apache.isis.extensions'
-description = 'Apache Isis Ext - Sec Man Persistence (Using JDO)'
-apply plugin: 'war'
-dependencies {
-    compile project(':isis-parent:isis:isis-testing:isis-testing-fixtures:isis-testing-fixtures-applib')
-    providedCompile project(':isis-parent:isis:isis-persistence-jdo:isis-persistence-jdo-datanucleus5')
-    providedCompile project(':isis-parent:isis:isis-core-runtime')
-    providedCompile project(':isis-parent:isis:isis-extensions:isis-extensions-secman:isis-extensions-secman-api')
-    providedCompile project(':isis-parent:isis:isis-extensions:isis-extensions-secman:isis-extensions-secman-model')
-}
-
-task packageTests(type: Jar) {
-    from sourceSets.test.output
-    classifier = 'tests'
-}
-artifacts.archives packageTests
diff --git a/extensions/security/secman/shiro-realm/build.gradle b/extensions/security/secman/shiro-realm/build.gradle
deleted file mode 100644
index 368c528..0000000
--- a/extensions/security/secman/shiro-realm/build.gradle
+++ /dev/null
@@ -1,14 +0,0 @@
-group = 'org.apache.isis.extensions'
-description = 'Apache Isis Ext - Sec Man Realm (Using Shiro)'
-apply plugin: 'war'
-dependencies {
-    providedCompile project(':isis-parent:isis:isis-security-shiro')
-    providedCompile project(':isis-parent:isis:isis-core-runtime')
-    providedCompile project(':isis-parent:isis:isis-extensions:isis-extensions-secman:isis-extensions-secman-api')
-}
-
-task packageTests(type: Jar) {
-    from sourceSets.test.output
-    classifier = 'tests'
-}
-artifacts.archives packageTests
diff --git a/extensions/security/shiro-realm-ldap/impl/build.gradle b/extensions/security/shiro-realm-ldap/impl/build.gradle
deleted file mode 100644
index 33b859c..0000000
--- a/extensions/security/shiro-realm-ldap/impl/build.gradle
+++ /dev/null
@@ -1,12 +0,0 @@
-group = 'org.apache.isis.extensions'
-description = 'Apache Isis Ext - Security - Shiro LDAP Realm (impl)'
-dependencies {
-    compile project(':isis-parent:isis:isis-security-shiro')
-    testCompile project(':isis-parent:isis:isis-core-internaltestsupport')
-}
-
-task packageTests(type: Jar) {
-    from sourceSets.test.output
-    classifier = 'tests'
-}
-artifacts.archives packageTests
diff --git a/extensions/vro/cors/impl/build.gradle b/extensions/vro/cors/impl/build.gradle
deleted file mode 100644
index 239d674..0000000
--- a/extensions/vro/cors/impl/build.gradle
+++ /dev/null
@@ -1,14 +0,0 @@
-group = 'org.apache.isis.extensions'
-description = 'Apache Isis Ext - CORS (impl)'
-apply plugin: 'war'
-dependencies {
-    compile project(':isis-parent:isis:isis-core-metamodel')
-    compile group: 'org.ebaysf.web', name: 'cors-filter', version: '1.0.1'
-    providedCompile project(':isis-parent:isis:isis-core-webapp')
-}
-
-task packageTests(type: Jar) {
-    from sourceSets.test.output
-    classifier = 'tests'
-}
-artifacts.archives packageTests
diff --git a/extensions/vw/exceldownload/ui/build.gradle b/extensions/vw/exceldownload/ui/build.gradle
deleted file mode 100644
index dd88c3d..0000000
--- a/extensions/vw/exceldownload/ui/build.gradle
+++ /dev/null
@@ -1,16 +0,0 @@
-group = 'org.apache.isis.extensions'
-description = 'Apache Isis Ext - Wicket Viewer - Excel Download (ui)'
-apply plugin: 'war'
-dependencies {
-    compile(group: 'org.apache.poi', name: 'poi-ooxml', version: '4.1.1') {
-        exclude(module: 'commons-collections4')
-    }
-    compile group: 'org.apache.poi', name: 'poi-ooxml-schemas', version: '4.1.1'
-    providedCompile project(':isis-parent:isis:isis-viewer-wicket:isis-viewer-wicket-ui')
-}
-
-task packageTests(type: Jar) {
-    from sourceSets.test.output
-    classifier = 'tests'
-}
-artifacts.archives packageTests
diff --git a/extensions/vw/fullcalendar/applib/build.gradle b/extensions/vw/fullcalendar/applib/build.gradle
deleted file mode 100644
index 265b79f..0000000
--- a/extensions/vw/fullcalendar/applib/build.gradle
+++ /dev/null
@@ -1,12 +0,0 @@
-group = 'org.apache.isis.extensions'
-description = 'Apache Isis Ext - Wicket Viewer - fullcalendar (applib)'
-dependencies {
-    compile project(':isis-parent:isis-applib')
-    compile group: 'de.agilecoders.wicket', name: 'wicket-bootstrap-core', version: '2.0.13'
-}
-
-task packageTests(type: Jar) {
-    from sourceSets.test.output
-    classifier = 'tests'
-}
-artifacts.archives packageTests
diff --git a/extensions/vw/fullcalendar/ui/build.gradle b/extensions/vw/fullcalendar/ui/build.gradle
deleted file mode 100644
index 8d4c944..0000000
--- a/extensions/vw/fullcalendar/ui/build.gradle
+++ /dev/null
@@ -1,13 +0,0 @@
-group = 'org.apache.isis.extensions'
-description = 'Apache Isis Ext - Wicket Viewer - fullcalendar (ui)'
-dependencies {
-    compile project(':isis-parent:isis:isis-extensions:isis-extensions-fullcalendar:isis-extensions-fullcalendar-applib')
-    compile project(':isis-parent:isis:isis-viewer-wicket:isis-viewer-wicket-ui')
-    compile group: 'net.ftlines.wicket-fullcalendar', name: 'wicket-fullcalendar-core', version: '4.2'
-}
-
-task packageTests(type: Jar) {
-    from sourceSets.test.output
-    classifier = 'tests'
-}
-artifacts.archives packageTests
diff --git a/extensions/vw/pdfjs/applib/build.gradle b/extensions/vw/pdfjs/applib/build.gradle
deleted file mode 100644
index 2b0a23f..0000000
--- a/extensions/vw/pdfjs/applib/build.gradle
+++ /dev/null
@@ -1,12 +0,0 @@
-group = 'org.apache.isis.extensions'
-description = 'Apache Isis Ext - Wicket Viewer - pdf.js (applib)'
-dependencies {
-    compile project(':isis-parent:isis-applib')
-    compile group: 'de.agilecoders.wicket', name: 'wicket-bootstrap-core', version: '2.0.13'
-}
-
-task packageTests(type: Jar) {
-    from sourceSets.test.output
-    classifier = 'tests'
-}
-artifacts.archives packageTests
diff --git a/extensions/vw/pdfjs/metamodel/build.gradle b/extensions/vw/pdfjs/metamodel/build.gradle
deleted file mode 100644
index fbda85c..0000000
--- a/extensions/vw/pdfjs/metamodel/build.gradle
+++ /dev/null
@@ -1,13 +0,0 @@
-group = 'org.apache.isis.extensions'
-description = 'Apache Isis Ext - Wicket Viewer - pdf.js (metamodel)'
-dependencies {
-    compile project(':isis-parent:isis:isis-extensions:isis-extensions-pdfjs:isis-extensions-pdfjs-applib')
-    compile project(':isis-parent:isis:isis-core-metamodel')
-    compile group: 'de.agilecoders.wicket', name: 'wicket-bootstrap-core', version: '2.0.13'
-}
-
-task packageTests(type: Jar) {
-    from sourceSets.test.output
-    classifier = 'tests'
-}
-artifacts.archives packageTests
diff --git a/extensions/vw/pdfjs/ui/build.gradle b/extensions/vw/pdfjs/ui/build.gradle
deleted file mode 100644
index 153d0d9..0000000
--- a/extensions/vw/pdfjs/ui/build.gradle
+++ /dev/null
@@ -1,12 +0,0 @@
-group = 'org.apache.isis.extensions'
-description = 'Apache Isis Ext - Wicket Viewer - pdf.js (ui)'
-dependencies {
-    compile project(':isis-parent:isis:isis-extensions:isis-extensions-pdfjs:isis-extensions-pdfjs-metamodel')
-    compile project(':isis-parent:isis:isis-viewer-wicket:isis-viewer-wicket-ui')
-}
-
-task packageTests(type: Jar) {
-    from sourceSets.test.output
-    classifier = 'tests'
-}
-artifacts.archives packageTests
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
deleted file mode 100644
index 5fe401e..0000000
--- a/gradle/wrapper/gradle-wrapper.properties
+++ /dev/null
@@ -1,6 +0,0 @@
-#Wed Jun 10 10:53:40 CEST 2020
-distributionUrl=https\://services.gradle.org/distributions/gradle-6.0.1-all.zip
-distributionBase=GRADLE_USER_HOME
-distributionPath=wrapper/dists
-zipStorePath=wrapper/dists
-zipStoreBase=GRADLE_USER_HOME
diff --git a/gradlew b/gradlew
deleted file mode 100644
index cccdd3d..0000000
--- a/gradlew
+++ /dev/null
@@ -1,172 +0,0 @@
-#!/usr/bin/env sh
-
-##############################################################################
-##
-##  Gradle start up script for UN*X
-##
-##############################################################################
-
-# Attempt to set APP_HOME
-# Resolve links: $0 may be a link
-PRG="$0"
-# Need this for relative symlinks.
-while [ -h "$PRG" ] ; do
-    ls=`ls -ld "$PRG"`
-    link=`expr "$ls" : '.*-> \(.*\)$'`
-    if expr "$link" : '/.*' > /dev/null; then
-        PRG="$link"
-    else
-        PRG=`dirname "$PRG"`"/$link"
-    fi
-done
-SAVED="`pwd`"
-cd "`dirname \"$PRG\"`/" >/dev/null
-APP_HOME="`pwd -P`"
-cd "$SAVED" >/dev/null
-
-APP_NAME="Gradle"
-APP_BASE_NAME=`basename "$0"`
-
-# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
-DEFAULT_JVM_OPTS=""
-
-# Use the maximum available, or set MAX_FD != -1 to use that value.
-MAX_FD="maximum"
-
-warn () {
-    echo "$*"
-}
-
-die () {
-    echo
-    echo "$*"
-    echo
-    exit 1
-}
-
-# OS specific support (must be 'true' or 'false').
-cygwin=false
-msys=false
-darwin=false
-nonstop=false
-case "`uname`" in
-  CYGWIN* )
-    cygwin=true
-    ;;
-  Darwin* )
-    darwin=true
-    ;;
-  MINGW* )
-    msys=true
-    ;;
-  NONSTOP* )
-    nonstop=true
-    ;;
-esac
-
-CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
-
-# Determine the Java command to use to start the JVM.
-if [ -n "$JAVA_HOME" ] ; then
-    if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
-        # IBM's JDK on AIX uses strange locations for the executables
-        JAVACMD="$JAVA_HOME/jre/sh/java"
-    else
-        JAVACMD="$JAVA_HOME/bin/java"
-    fi
-    if [ ! -x "$JAVACMD" ] ; then
-        die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
-
-Please set the JAVA_HOME variable in your environment to match the
-location of your Java installation."
-    fi
-else
-    JAVACMD="java"
-    which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
-
-Please set the JAVA_HOME variable in your environment to match the
-location of your Java installation."
-fi
-
-# Increase the maximum file descriptors if we can.
-if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
-    MAX_FD_LIMIT=`ulimit -H -n`
-    if [ $? -eq 0 ] ; then
-        if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
-            MAX_FD="$MAX_FD_LIMIT"
-        fi
-        ulimit -n $MAX_FD
-        if [ $? -ne 0 ] ; then
-            warn "Could not set maximum file descriptor limit: $MAX_FD"
-        fi
-    else
-        warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
-    fi
-fi
-
-# For Darwin, add options to specify how the application appears in the dock
-if $darwin; then
-    GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
-fi
-
-# For Cygwin, switch paths to Windows format before running java
-if $cygwin ; then
-    APP_HOME=`cygpath --path --mixed "$APP_HOME"`
-    CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
-    JAVACMD=`cygpath --unix "$JAVACMD"`
-
-    # We build the pattern for arguments to be converted via cygpath
-    ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
-    SEP=""
-    for dir in $ROOTDIRSRAW ; do
-        ROOTDIRS="$ROOTDIRS$SEP$dir"
-        SEP="|"
-    done
-    OURCYGPATTERN="(^($ROOTDIRS))"
-    # Add a user-defined pattern to the cygpath arguments
-    if [ "$GRADLE_CYGPATTERN" != "" ] ; then
-        OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
-    fi
-    # Now convert the arguments - kludge to limit ourselves to /bin/sh
-    i=0
-    for arg in "$@" ; do
-        CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
-        CHECK2=`echo "$arg"|egrep -c "^-"`                                 ### Determine if an option
-
-        if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then                    ### Added a condition
-            eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
-        else
-            eval `echo args$i`="\"$arg\""
-        fi
-        i=$((i+1))
-    done
-    case $i in
-        (0) set -- ;;
-        (1) set -- "$args0" ;;
-        (2) set -- "$args0" "$args1" ;;
-        (3) set -- "$args0" "$args1" "$args2" ;;
-        (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
-        (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
-        (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
-        (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
-        (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
-        (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
-    esac
-fi
-
-# Escape application args
-save () {
-    for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
-    echo " "
-}
-APP_ARGS=$(save "$@")
-
-# Collect all arguments for the java command, following the shell quoting and substitution rules
-eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
-
-# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong
-if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then
-  cd "$(dirname "$0")"
-fi
-
-exec "$JAVACMD" "$@"
diff --git a/gradlew.bat b/gradlew.bat
deleted file mode 100644
index f955316..0000000
--- a/gradlew.bat
+++ /dev/null
@@ -1,84 +0,0 @@
-@if "%DEBUG%" == "" @echo off
-@rem ##########################################################################
-@rem
-@rem  Gradle startup script for Windows
-@rem
-@rem ##########################################################################
-
-@rem Set local scope for the variables with windows NT shell
-if "%OS%"=="Windows_NT" setlocal
-
-set DIRNAME=%~dp0
-if "%DIRNAME%" == "" set DIRNAME=.
-set APP_BASE_NAME=%~n0
-set APP_HOME=%DIRNAME%
-
-@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
-set DEFAULT_JVM_OPTS=
-
-@rem Find java.exe
-if defined JAVA_HOME goto findJavaFromJavaHome
-
-set JAVA_EXE=java.exe
-%JAVA_EXE% -version >NUL 2>&1
-if "%ERRORLEVEL%" == "0" goto init
-
-echo.
-echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
-echo.
-echo Please set the JAVA_HOME variable in your environment to match the
-echo location of your Java installation.
-
-goto fail
-
-:findJavaFromJavaHome
-set JAVA_HOME=%JAVA_HOME:"=%
-set JAVA_EXE=%JAVA_HOME%/bin/java.exe
-
-if exist "%JAVA_EXE%" goto init
-
-echo.
-echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
-echo.
-echo Please set the JAVA_HOME variable in your environment to match the
-echo location of your Java installation.
-
-goto fail
-
-:init
-@rem Get command-line arguments, handling Windows variants
-
-if not "%OS%" == "Windows_NT" goto win9xME_args
-
-:win9xME_args
-@rem Slurp the command line arguments.
-set CMD_LINE_ARGS=
-set _SKIP=2
-
-:win9xME_args_slurp
-if "x%~1" == "x" goto execute
-
-set CMD_LINE_ARGS=%*
-
-:execute
-@rem Setup the command line
-
-set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
-
-@rem Execute Gradle
-"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
-
-:end
-@rem End local scope for the variables with windows NT shell
-if "%ERRORLEVEL%"=="0" goto mainEnd
-
-:fail
-rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
-rem the _cmd.exe /c_ return code!
-if  not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
-exit /b 1
-
-:mainEnd
-if "%OS%"=="Windows_NT" endlocal
-
-:omega
diff --git a/incubator/mappings/microprofile/build.gradle b/incubator/mappings/microprofile/build.gradle
deleted file mode 100644
index 20c0fa6..0000000
--- a/incubator/mappings/microprofile/build.gradle
+++ /dev/null
@@ -1,18 +0,0 @@
-group = 'org.apache.isis.incubator'
-description = 'Apache Isis Inc - MicroProfile Support'
-dependencies {
-    compile project(':isis-parent:isis:isis-core-metamodel')
-    compile(group: 'org.springframework.boot', name: 'spring-boot-starter-web', version: '2.2.7.RELEASE') {
-        exclude(module: 'spring-boot-starter-tomcat')
-        exclude(module: 'spring-boot-starter-logging')
-    }
-    compile(group: 'org.springframework.boot', name: 'spring-boot-starter-batch', version: '2.2.7.RELEASE') {
-        exclude(module: 'spring-boot-starter-logging')
-    }
-}
-
-task packageTests(type: Jar) {
-    from sourceSets.test.output
-    classifier = 'tests'
-}
-artifacts.archives packageTests
diff --git a/incubator/viewers/build.gradle b/incubator/viewers/build.gradle
deleted file mode 100644
index 6819940..0000000
--- a/incubator/viewers/build.gradle
+++ /dev/null
@@ -1,6 +0,0 @@
-/*
- * This file was generated by the Gradle 'init' task.
- *
- * This is a general purpose Gradle build.
- * Learn how to create Gradle builds at https://guides.gradle.org/creating-new-gradle-builds/
- */
diff --git a/incubator/viewers/gradle/wrapper/gradle-wrapper.properties b/incubator/viewers/gradle/wrapper/gradle-wrapper.properties
deleted file mode 100644
index 9492014..0000000
--- a/incubator/viewers/gradle/wrapper/gradle-wrapper.properties
+++ /dev/null
@@ -1,5 +0,0 @@
-distributionBase=GRADLE_USER_HOME
-distributionPath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-6.0.1-bin.zip
-zipStoreBase=GRADLE_USER_HOME
-zipStorePath=wrapper/dists
diff --git a/incubator/viewers/gradlew b/incubator/viewers/gradlew
deleted file mode 100644
index cccdd3d..0000000
--- a/incubator/viewers/gradlew
+++ /dev/null
@@ -1,172 +0,0 @@
-#!/usr/bin/env sh
-
-##############################################################################
-##
-##  Gradle start up script for UN*X
-##
-##############################################################################
-
-# Attempt to set APP_HOME
-# Resolve links: $0 may be a link
-PRG="$0"
-# Need this for relative symlinks.
-while [ -h "$PRG" ] ; do
-    ls=`ls -ld "$PRG"`
-    link=`expr "$ls" : '.*-> \(.*\)$'`
-    if expr "$link" : '/.*' > /dev/null; then
-        PRG="$link"
-    else
-        PRG=`dirname "$PRG"`"/$link"
-    fi
-done
-SAVED="`pwd`"
-cd "`dirname \"$PRG\"`/" >/dev/null
-APP_HOME="`pwd -P`"
-cd "$SAVED" >/dev/null
-
-APP_NAME="Gradle"
-APP_BASE_NAME=`basename "$0"`
-
-# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
-DEFAULT_JVM_OPTS=""
-
-# Use the maximum available, or set MAX_FD != -1 to use that value.
-MAX_FD="maximum"
-
-warn () {
-    echo "$*"
-}
-
-die () {
-    echo
-    echo "$*"
-    echo
-    exit 1
-}
-
-# OS specific support (must be 'true' or 'false').
-cygwin=false
-msys=false
-darwin=false
-nonstop=false
-case "`uname`" in
-  CYGWIN* )
-    cygwin=true
-    ;;
-  Darwin* )
-    darwin=true
-    ;;
-  MINGW* )
-    msys=true
-    ;;
-  NONSTOP* )
-    nonstop=true
-    ;;
-esac
-
-CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
-
-# Determine the Java command to use to start the JVM.
-if [ -n "$JAVA_HOME" ] ; then
-    if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
-        # IBM's JDK on AIX uses strange locations for the executables
-        JAVACMD="$JAVA_HOME/jre/sh/java"
-    else
-        JAVACMD="$JAVA_HOME/bin/java"
-    fi
-    if [ ! -x "$JAVACMD" ] ; then
-        die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
-
-Please set the JAVA_HOME variable in your environment to match the
-location of your Java installation."
-    fi
-else
-    JAVACMD="java"
-    which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
-
-Please set the JAVA_HOME variable in your environment to match the
-location of your Java installation."
-fi
-
-# Increase the maximum file descriptors if we can.
-if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
-    MAX_FD_LIMIT=`ulimit -H -n`
-    if [ $? -eq 0 ] ; then
-        if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
-            MAX_FD="$MAX_FD_LIMIT"
-        fi
-        ulimit -n $MAX_FD
-        if [ $? -ne 0 ] ; then
-            warn "Could not set maximum file descriptor limit: $MAX_FD"
-        fi
-    else
-        warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
-    fi
-fi
-
-# For Darwin, add options to specify how the application appears in the dock
-if $darwin; then
-    GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
-fi
-
-# For Cygwin, switch paths to Windows format before running java
-if $cygwin ; then
-    APP_HOME=`cygpath --path --mixed "$APP_HOME"`
-    CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
-    JAVACMD=`cygpath --unix "$JAVACMD"`
-
-    # We build the pattern for arguments to be converted via cygpath
-    ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
-    SEP=""
-    for dir in $ROOTDIRSRAW ; do
-        ROOTDIRS="$ROOTDIRS$SEP$dir"
-        SEP="|"
-    done
-    OURCYGPATTERN="(^($ROOTDIRS))"
-    # Add a user-defined pattern to the cygpath arguments
-    if [ "$GRADLE_CYGPATTERN" != "" ] ; then
-        OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
-    fi
-    # Now convert the arguments - kludge to limit ourselves to /bin/sh
-    i=0
-    for arg in "$@" ; do
-        CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
-        CHECK2=`echo "$arg"|egrep -c "^-"`                                 ### Determine if an option
-
-        if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then                    ### Added a condition
-            eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
-        else
-            eval `echo args$i`="\"$arg\""
-        fi
-        i=$((i+1))
-    done
-    case $i in
-        (0) set -- ;;
-        (1) set -- "$args0" ;;
-        (2) set -- "$args0" "$args1" ;;
-        (3) set -- "$args0" "$args1" "$args2" ;;
-        (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
-        (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
-        (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
-        (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
-        (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
-        (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
-    esac
-fi
-
-# Escape application args
-save () {
-    for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
-    echo " "
-}
-APP_ARGS=$(save "$@")
-
-# Collect all arguments for the java command, following the shell quoting and substitution rules
-eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
-
-# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong
-if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then
-  cd "$(dirname "$0")"
-fi
-
-exec "$JAVACMD" "$@"
diff --git a/incubator/viewers/gradlew.bat b/incubator/viewers/gradlew.bat
deleted file mode 100644
index f955316..0000000
--- a/incubator/viewers/gradlew.bat
+++ /dev/null
@@ -1,84 +0,0 @@
-@if "%DEBUG%" == "" @echo off
-@rem ##########################################################################
-@rem
-@rem  Gradle startup script for Windows
-@rem
-@rem ##########################################################################
-
-@rem Set local scope for the variables with windows NT shell
-if "%OS%"=="Windows_NT" setlocal
-
-set DIRNAME=%~dp0
-if "%DIRNAME%" == "" set DIRNAME=.
-set APP_BASE_NAME=%~n0
-set APP_HOME=%DIRNAME%
-
-@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
-set DEFAULT_JVM_OPTS=
-
-@rem Find java.exe
-if defined JAVA_HOME goto findJavaFromJavaHome
-
-set JAVA_EXE=java.exe
-%JAVA_EXE% -version >NUL 2>&1
-if "%ERRORLEVEL%" == "0" goto init
-
-echo.
-echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
-echo.
-echo Please set the JAVA_HOME variable in your environment to match the
-echo location of your Java installation.
-
-goto fail
-
-:findJavaFromJavaHome
-set JAVA_HOME=%JAVA_HOME:"=%
-set JAVA_EXE=%JAVA_HOME%/bin/java.exe
-
-if exist "%JAVA_EXE%" goto init
-
-echo.
-echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
-echo.
-echo Please set the JAVA_HOME variable in your environment to match the
-echo location of your Java installation.
-
-goto fail
-
-:init
-@rem Get command-line arguments, handling Windows variants
-
-if not "%OS%" == "Windows_NT" goto win9xME_args
-
-:win9xME_args
-@rem Slurp the command line arguments.
-set CMD_LINE_ARGS=
-set _SKIP=2
-
-:win9xME_args_slurp
-if "x%~1" == "x" goto execute
-
-set CMD_LINE_ARGS=%*
-
-:execute
-@rem Setup the command line
-
-set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
-
-@rem Execute Gradle
-"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
-
-:end
-@rem End local scope for the variables with windows NT shell
-if "%ERRORLEVEL%"=="0" goto mainEnd
-
-:fail
-rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
-rem the _cmd.exe /c_ return code!
-if  not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
-exit /b 1
-
-:mainEnd
-if "%OS%"=="Windows_NT" endlocal
-
-:omega
diff --git a/incubator/viewers/settings.gradle b/incubator/viewers/settings.gradle
deleted file mode 100644
index 40d0856..0000000
--- a/incubator/viewers/settings.gradle
+++ /dev/null
@@ -1,10 +0,0 @@
-/*
- * This file was generated by the Gradle 'init' task.
- *
- * The settings file is used to specify which projects to include in your build.
- * 
- * Detailed information about configuring a multi-project build in Gradle can be found
- * in the user guide at https://docs.gradle.org/4.10.2/userguide/multi_project_builds.html
- */
-
-rootProject.name = 'viewers'
diff --git a/incubator/viewers/vaadin/model/build.gradle b/incubator/viewers/vaadin/model/build.gradle
deleted file mode 100644
index b244786..0000000
--- a/incubator/viewers/vaadin/model/build.gradle
+++ /dev/null
@@ -1,16 +0,0 @@
-group = 'org.apache.isis.incubator.viewer'
-description = 'Apache Isis Inc - Viewer Vaadin (Model)'
-dependencies {
-    compile project(':isis-parent:isis:isis-core-webapp')
-    compile project(':isis-parent:isis:isis-viewer-common')
-    compile group: 'com.vaadin', name: 'vaadin', version: '14.2.0'
-    compile group: 'org.webjars.bowergithub.osano', name: 'cookieconsent', version: '3.1.0'
-    testCompile project(':isis-parent:isis:isis-core-internaltestsupport')
-    testCompile project(':isis-parent:isis:isis-core-metamodel')
-}
-
-task packageTests(type: Jar) {
-    from sourceSets.test.output
-    classifier = 'tests'
-}
-artifacts.archives packageTests
diff --git a/incubator/viewers/vaadin/ui/build.gradle b/incubator/viewers/vaadin/ui/build.gradle
deleted file mode 100644
index 7e1cab1..0000000
--- a/incubator/viewers/vaadin/ui/build.gradle
+++ /dev/null
@@ -1,17 +0,0 @@
-group = 'org.apache.isis.incubator.viewer'
-description = 'Apache Isis Inc - Viewer Vaadin (UI Components)'
-dependencies {
-    compile project(':isis-parent:isis:isis-incubator:isis-viewer-vaadin:isis-viewer-vaadin-model')
-    compile project(':isis-parent:isis:isis-core-runtimeservices')
-    compile group: 'com.vaadin', name: 'vaadin', version: '14.2.0'
-    compile(group: 'com.vaadin', name: 'vaadin-spring', version: '12.2.0') {
-        exclude(module: 'commons-fileupload')
-    }
-    compile group: 'commons-fileupload', name: 'commons-fileupload', version: '1.4'
-}
-
-task packageTests(type: Jar) {
-    from sourceSets.test.output
-    classifier = 'tests'
-}
-artifacts.archives packageTests
diff --git a/incubator/viewers/vaadin/viewer/build.gradle b/incubator/viewers/vaadin/viewer/build.gradle
deleted file mode 100644
index 16f663c..0000000
--- a/incubator/viewers/vaadin/viewer/build.gradle
+++ /dev/null
@@ -1,11 +0,0 @@
-group = 'org.apache.isis.incubator.viewer'
-description = 'Apache Isis Inc - Viewer Vaadin (Viewer)'
-dependencies {
-    compile project(':isis-parent:isis:isis-incubator:isis-viewer-vaadin:isis-viewer-vaadin-ui')
-}
-
-task packageTests(type: Jar) {
-    from sourceSets.test.output
-    classifier = 'tests'
-}
-artifacts.archives packageTests
diff --git a/legacy/extensions/core/applib/build.gradle b/legacy/extensions/core/applib/build.gradle
deleted file mode 100644
index 3fd0ba3..0000000
--- a/legacy/extensions/core/applib/build.gradle
+++ /dev/null
@@ -1,17 +0,0 @@
-group = 'org.apache.isis.legacy'
-description = 'Apache Isis Legacy - Applib'
-apply plugin: 'war'
-dependencies {
-    compile group: 'com.google.guava', name: 'guava', version: '28.1-jre'
-    compile project(':isis-parent:isis-applib')
-    compile project(':isis-parent:isis:isis-core-runtime')
-    testCompile project(':isis-parent:isis:isis-core-internaltestsupport')
-    compileOnly group: 'org.datanucleus', name: 'javax.jdo', version: '3.2.0-m13'
-    providedCompile project(':isis-parent:isis:isis-persistence-jdo:isis-persistence-jdo-applib')
-}
-
-task packageTests(type: Jar) {
-    from sourceSets.test.output
-    classifier = 'tests'
-}
-artifacts.archives packageTests
diff --git a/legacy/extensions/core/commons/build.gradle b/legacy/extensions/core/commons/build.gradle
deleted file mode 100644
index f2bcaa1..0000000
--- a/legacy/extensions/core/commons/build.gradle
+++ /dev/null
@@ -1,17 +0,0 @@
-group = 'org.apache.isis.legacy'
-description = 'Apache Isis Legacy - Commons'
-apply plugin: 'war'
-dependencies {
-    compile group: 'com.google.guava', name: 'guava', version: '28.1-jre'
-    compile project(':isis-parent:isis-applib')
-    compile project(':isis-parent:isis:isis-core-runtime')
-    testCompile project(':isis-parent:isis:isis-core-internaltestsupport')
-    compileOnly group: 'org.datanucleus', name: 'javax.jdo', version: '3.2.0-m13'
-    providedCompile project(':isis-parent:isis:isis-persistence-jdo:isis-persistence-jdo-applib')
-}
-
-task packageTests(type: Jar) {
-    from sourceSets.test.output
-    classifier = 'tests'
-}
-artifacts.archives packageTests
diff --git a/legacy/extensions/core/metamodel/build.gradle b/legacy/extensions/core/metamodel/build.gradle
deleted file mode 100644
index 1bf76a0..0000000
--- a/legacy/extensions/core/metamodel/build.gradle
+++ /dev/null
@@ -1,20 +0,0 @@
-group = 'org.apache.isis.legacy'
-description = 'Apache Isis Legacy - Metamodel'
-apply plugin: 'war'
-dependencies {
-    compile group: 'com.google.guava', name: 'guava', version: '28.1-jre'
-    compile project(':isis-parent:isis-applib')
-    compile project(':isis-parent:isis:isis-legacy:isis-legacy-applib')
-    compile project(':isis-parent:isis:isis-core-metamodel')
-    testCompile project(':isis-parent:isis:isis-core-config')
-    testCompile project(':isis-parent:isis:isis-core-metamodel')
-    testCompile project(':isis-parent:isis:isis-core-internaltestsupport')
-    compileOnly group: 'org.datanucleus', name: 'javax.jdo', version: '3.2.0-m13'
-    providedCompile project(':isis-parent:isis:isis-persistence-jdo:isis-persistence-jdo-applib')
-}
-
-task packageTests(type: Jar) {
-    from sourceSets.test.output
-    classifier = 'tests'
-}
-artifacts.archives packageTests
diff --git a/legacy/extensions/core/runtime/build.gradle b/legacy/extensions/core/runtime/build.gradle
deleted file mode 100644
index e3a4802..0000000
--- a/legacy/extensions/core/runtime/build.gradle
+++ /dev/null
@@ -1,20 +0,0 @@
-group = 'org.apache.isis.legacy'
-description = 'Apache Isis Legacy - Runtime'
-apply plugin: 'war'
-dependencies {
-    compile group: 'com.google.guava', name: 'guava', version: '28.1-jre'
-    compile project(':isis-parent:isis-applib')
-    compile project(':isis-parent:isis:isis-legacy:isis-legacy-applib')
-    compile project(':isis-parent:isis:isis-core-runtime')
-    testCompile project(':isis-parent:isis:isis-core-internaltestsupport')
-    compileOnly group: 'org.datanucleus', name: 'javax.jdo', version: '3.2.0-m13'
-    providedCompile project(':isis-parent:isis:isis-persistence-jdo:isis-persistence-jdo-applib')
-    providedCompile project(':isis-parent:isis:isis-persistence-jdo:isis-persistence-jdo-datanucleus5')
-    providedCompile project(':isis-parent:isis:isis-viewer-wicket:isis-viewer-wicket-ui')
-}
-
-task packageTests(type: Jar) {
-    from sourceSets.test.output
-    classifier = 'tests'
-}
-artifacts.archives packageTests
diff --git a/legacy/mappings/restclient/build.gradle b/legacy/mappings/restclient/build.gradle
deleted file mode 100644
index c48e6ee..0000000
--- a/legacy/mappings/restclient/build.gradle
+++ /dev/null
@@ -1,14 +0,0 @@
-group = 'org.apache.isis.legacy'
-description = 'Apache Isis Legacy - REST Client'
-apply plugin: 'war'
-dependencies {
-    compile project(':isis-parent:isis:isis-viewer-restfulobjects:isis-viewer-restfulobjects-applib')
-    testCompile project(':isis-parent:isis:isis-core-internaltestsupport')
-    providedCompile project(':isis-parent:isis:isis-core-commons')
-}
-
-task packageTests(type: Jar) {
-    from sourceSets.test.output
-    classifier = 'tests'
-}
-artifacts.archives packageTests
diff --git a/mappings/jaxrsclient/api/build.gradle b/mappings/jaxrsclient/api/build.gradle
deleted file mode 100644
index 9bc6eef..0000000
--- a/mappings/jaxrsclient/api/build.gradle
+++ /dev/null
@@ -1,11 +0,0 @@
-group = 'org.apache.isis.mappings'
-description = 'Apache Isis Map - JaxRS Client (api)'
-dependencies {
-    compile group: 'org.springframework', name: 'spring-context', version:'5.2.6.RELEASE'
-}
-
-task packageTests(type: Jar) {
-  from sourceSets.test.output
-  classifier = 'tests'
-}
-artifacts.archives packageTests
diff --git a/mappings/restclient/api/build.gradle b/mappings/restclient/api/build.gradle
deleted file mode 100644
index 8edae00..0000000
--- a/mappings/restclient/api/build.gradle
+++ /dev/null
@@ -1,13 +0,0 @@
-group = 'org.apache.isis.mappings'
-description = 'Apache Isis Ext - REST Client'
-dependencies {
-    compile project(':isis-parent:isis-applib')
-    compile project(':isis-parent:isis:isis-core-commons')
-    compile group: 'org.springframework', name: 'spring-context', version: '5.2.6.RELEASE'
-}
-
-task packageTests(type: Jar) {
-    from sourceSets.test.output
-    classifier = 'tests'
-}
-artifacts.archives packageTests
diff --git a/persistence/jdo/applib/build.gradle b/persistence/jdo/applib/build.gradle
deleted file mode 100644
index a6d75c3..0000000
--- a/persistence/jdo/applib/build.gradle
+++ /dev/null
@@ -1,14 +0,0 @@
-group = 'org.apache.isis.persistence'
-description = 'Apache Isis Persistence - JDO (applib)'
-dependencies {
-    compile project(':isis-parent:isis-applib')
-    compile project(':isis-parent:isis:isis-core-commons')
-    compile group: 'org.datanucleus', name: 'javax.jdo', version: '3.2.0-m13'
-    compile group: 'org.datanucleus', name: 'datanucleus-rdbms', version: '5.2.1'
-}
-
-task packageTests(type: Jar) {
-    from sourceSets.test.output
-    classifier = 'tests'
-}
-artifacts.archives packageTests
diff --git a/persistence/jdo/datanucleus-5/build.gradle b/persistence/jdo/datanucleus-5/build.gradle
deleted file mode 100644
index a54dcea..0000000
--- a/persistence/jdo/datanucleus-5/build.gradle
+++ /dev/null
@@ -1,22 +0,0 @@
-group = 'org.apache.isis.persistence'
-description = 'Apache Isis Persistence - JDO (datanucleus 5)'
-dependencies {
-    compile project(':isis-parent:isis:isis-persistence-jdo:isis-persistence-jdo-applib')
-    compile project(':isis-parent:isis:isis-core-runtime')
-    compile group: 'org.datanucleus', name: 'datanucleus-core', version: '5.2.2'
-    compile group: 'org.datanucleus', name: 'datanucleus-api-jdo', version: '5.2.2'
-    compile group: 'org.datanucleus', name: 'datanucleus-jdo-query', version: '5.0.9'
-    compile group: 'org.datanucleus', name: 'datanucleus-rdbms', version: '5.2.1'
-    compile group: 'org.datanucleus', name: 'datanucleus-jodatime', version: '5.2.0-release'
-    testCompile project(':isis-parent:isis:isis-core-runtime')
-    testCompile project(':isis-parent:isis:isis-core-config')
-    testCompile project(':isis-parent:isis:isis-core-runtimeservices')
-    testCompile project(':isis-parent:isis:isis-core-metamodel')
-    testCompile project(':isis-parent:isis:isis-core-internaltestsupport')
-}
-
-task packageTests(type: Jar) {
-    from sourceSets.test.output
-    classifier = 'tests'
-}
-artifacts.archives packageTests
diff --git a/persistence/jpa/applib/build.gradle b/persistence/jpa/applib/build.gradle
deleted file mode 100644
index c2a88e3..0000000
--- a/persistence/jpa/applib/build.gradle
+++ /dev/null
@@ -1,12 +0,0 @@
-group = 'org.apache.isis.persistence'
-description = 'Apache Isis Persistence - JPA (applib)'
-dependencies {
-    compile project(':isis-parent:isis-applib')
-    compile project(':isis-parent:isis:isis-core-commons')
-}
-
-task packageTests(type: Jar) {
-    from sourceSets.test.output
-    classifier = 'tests'
-}
-artifacts.archives packageTests
diff --git a/persistence/jpa/model/build.gradle b/persistence/jpa/model/build.gradle
deleted file mode 100644
index 9c5f673..0000000
--- a/persistence/jpa/model/build.gradle
+++ /dev/null
@@ -1,17 +0,0 @@
-group = 'org.apache.isis.persistence'
-description = 'Apache Isis Persistence - JPA (model)'
-dependencies {
-    compile project(':isis-parent:isis:isis-persistence-jpa:isis-persistence-jpa-applib')
-    compile project(':isis-parent:isis:isis-core-runtime')
-    testCompile project(':isis-parent:isis:isis-core-runtime')
-    testCompile project(':isis-parent:isis:isis-core-config')
-    testCompile project(':isis-parent:isis:isis-core-runtimeservices')
-    testCompile project(':isis-parent:isis:isis-core-metamodel')
-    testCompile project(':isis-parent:isis:isis-core-internaltestsupport')
-}
-
-task packageTests(type: Jar) {
-    from sourceSets.test.output
-    classifier = 'tests'
-}
-artifacts.archives packageTests
diff --git a/security/bypass/build.gradle b/security/bypass/build.gradle
deleted file mode 100644
index 2f33fe0..0000000
--- a/security/bypass/build.gradle
+++ /dev/null
@@ -1,11 +0,0 @@
-group = 'org.apache.isis.security'
-description = 'Apache Isis Security - Bypass'
-dependencies {
-    compile project(':isis-parent:isis:isis-core-runtimeservices')
-}
-
-task packageTests(type: Jar) {
-    from sourceSets.test.output
-    classifier = 'tests'
-}
-artifacts.archives packageTests
diff --git a/security/keycloak/build.gradle b/security/keycloak/build.gradle
deleted file mode 100644
index 9bb1b9d..0000000
--- a/security/keycloak/build.gradle
+++ /dev/null
@@ -1,14 +0,0 @@
-group = 'org.apache.isis.security'
-description = 'Apache Isis Security - Keycloak'
-dependencies {
-    compile project(':isis-parent:isis:isis-core-runtimeservices')
-    compile project(':isis-parent:isis:isis-core-webapp')
-    testCompile project(':isis-parent:isis:isis-core-runtime')
-    testCompile project(':isis-parent:isis:isis-core-internaltestsupport')
-}
-
-task packageTests(type: Jar) {
-    from sourceSets.test.output
-    classifier = 'tests'
-}
-artifacts.archives packageTests
diff --git a/security/shiro/build.gradle b/security/shiro/build.gradle
deleted file mode 100644
index 6967ea3..0000000
--- a/security/shiro/build.gradle
+++ /dev/null
@@ -1,18 +0,0 @@
-group = 'org.apache.isis.security'
-description = 'Apache Isis Security - Shiro'
-dependencies {
-    compile project(':isis-parent:isis:isis-core-runtimeservices')
-    compile project(':isis-parent:isis:isis-core-webapp')
-    compile(group: 'org.apache.shiro', name: 'shiro-core', version: '1.4.1') {
-        exclude(module: 'slf4j-api')
-    }
-    compile group: 'org.apache.shiro', name: 'shiro-web', version: '1.4.1'
-    testCompile project(':isis-parent:isis:isis-core-runtime')
-    testCompile project(':isis-parent:isis:isis-core-internaltestsupport')
-}
-
-task packageTests(type: Jar) {
-    from sourceSets.test.output
-    classifier = 'tests'
-}
-artifacts.archives packageTests
diff --git a/settings.gradle b/settings.gradle
deleted file mode 100644
index 73e84e9..0000000
--- a/settings.gradle
+++ /dev/null
@@ -1,268 +0,0 @@
-rootProject.name = 'isis-all'
-include ':isis-parent:isis-schema'
-include ':isis-parent:isis-applib'
-include ':isis-parent:isis:isis-core-codegen-bytebuddy'
-include ':isis-parent:isis:isis-core-commons'
-include ':isis-parent:isis:isis-core-config'
-include ':isis-parent:isis:isis-core-internaltestsupport'
-include ':isis-parent:isis:isis-core-metamodel'
-include ':isis-parent:isis:isis-core-runtime'
-include ':isis-parent:isis:isis-core-runtimeservices'
-include ':isis-parent:isis:isis-core-webapp'
-include ':isis-parent:isis:isis-core-security'
-include ':isis-parent:isis:isis-security-bypass'
-include ':isis-parent:isis:isis-security-shiro'
-include ':isis-parent:isis:isis-security-keycloak'
-include ':isis-parent:isis:isis-viewer-common'
-include ':isis-parent:isis:isis-viewer-restfulobjects:isis-viewer-restfulobjects-applib'
-include ':isis-parent:isis:isis-viewer-restfulobjects:isis-viewer-restfulobjects-rendering'
-include ':isis-parent:isis:isis-viewer-restfulobjects:isis-viewer-restfulobjects-viewer'
-include ':isis-parent:isis:isis-viewer-restfulobjects:isis-viewer-restfulobjects-jaxrsresteasy4'
-include ':isis-parent:isis:isis-viewer-restfulobjects'
-include ':isis-parent:isis:isis-viewer-wicket:isis-viewer-wicket-model'
-include ':isis-parent:isis:isis-viewer-wicket:isis-viewer-wicket-viewer'
-include ':isis-parent:isis:isis-viewer-wicket:isis-viewer-wicket-ui'
-include ':isis-parent:isis:isis-viewer-wicket'
-include ':isis-parent:isis:isis-persistence-jdo:isis-persistence-jdo-applib'
-include ':isis-parent:isis:isis-persistence-jdo:isis-persistence-jdo-datanucleus5'
-include ':isis-parent:isis:isis-persistence-jdo'
-include ':isis-parent:isis:isis-persistence-jpa:isis-persistence-jpa-applib'
-include ':isis-parent:isis:isis-persistence-jpa:isis-persistence-jpa-model'
-include ':isis-parent:isis:isis-persistence-jpa'
-include ':isis-parent:isis'
-include ':isis-parent:isis:isis-extensions:isis-extensions-flyway:isis-extensions-flyway-impl'
-include ':isis-parent:isis:isis-extensions:isis-extensions-flyway'
-include ':isis-parent:isis:isis-extensions:isis-extensions-modelannotation'
-include ':isis-parent:isis:isis-extensions:isis-extensions-secman:isis-extensions-secman-api'
-include ':isis-parent:isis:isis-extensions:isis-extensions-secman:isis-extensions-secman-model'
-include ':isis-parent:isis:isis-extensions:isis-extensions-secman:isis-extensions-secman-encryption-jbcrypt'
-include ':isis-parent:isis:isis-extensions:isis-extensions-secman:isis-extensions-secman-persistence-jdo'
-include ':isis-parent:isis:isis-extensions:isis-extensions-secman:isis-extensions-secman-shiro-realm'
-include ':isis-parent:isis:isis-extensions:isis-extensions-secman'
-include ':isis-parent:isis:isis-extensions:isis-extensions-shiro-realm-ldap:isis-extensions-shiro-realm-ldap-impl'
-include ':isis-parent:isis:isis-extensions:isis-extensions-shiro-realm-ldap'
-include ':isis-parent:isis:isis-extensions:isis-extensions-cors:isis-extensions-cors-impl'
-include ':isis-parent:isis:isis-extensions:isis-extensions-cors'
-include ':isis-parent:isis:isis-extensions:isis-extensions-exceldownload:isis-extensions-exceldownload-ui'
-include ':isis-parent:isis:isis-extensions:isis-extensions-exceldownload'
-include ':isis-parent:isis:isis-extensions:isis-extensions-fullcalendar:isis-extensions-fullcalendar-applib'
-include ':isis-parent:isis:isis-extensions:isis-extensions-fullcalendar:isis-extensions-fullcalendar-ui'
-include ':isis-parent:isis:isis-extensions:isis-extensions-fullcalendar'
-include ':isis-parent:isis:isis-extensions:isis-extensions-pdfjs:isis-extensions-pdfjs-applib'
-include ':isis-parent:isis:isis-extensions:isis-extensions-pdfjs:isis-extensions-pdfjs-metamodel'
-include ':isis-parent:isis:isis-extensions:isis-extensions-pdfjs:isis-extensions-pdfjs-ui'
-include ':isis-parent:isis:isis-extensions:isis-extensions-pdfjs'
-include ':isis-parent:isis:isis-extensions'
-include ':isis-parent:isis:isis-incubator:isis-incubator-microprofile'
-include ':isis-parent:isis:isis-incubator:isis-viewer-vaadin:isis-viewer-vaadin-model'
-include ':isis-parent:isis:isis-incubator:isis-viewer-vaadin:isis-viewer-vaadin-viewer'
-include ':isis-parent:isis:isis-incubator:isis-viewer-vaadin:isis-viewer-vaadin-ui'
-include ':isis-parent:isis:isis-incubator:isis-viewer-vaadin'
-include ':isis-parent:isis:isis-incubator'
-include ':isis-parent:isis:isis-legacy:isis-legacy-applib'
-include ':isis-parent:isis:isis-legacy:isis-legacy-commons'
-include ':isis-parent:isis:isis-legacy:isis-legacy-metamodel'
-include ':isis-parent:isis:isis-legacy:isis-legacy-runtime'
-include ':isis-parent:isis:isis-legacy:isis-legacy-restclient'
-include ':isis-parent:isis:isis-legacy'
-include ':isis-parent:isis:isis-mappings:isis-mappings-jaxrsclient:isis-mappings-jaxrsclient-api'
-include ':isis-parent:isis:isis-mappings:isis-mappings-jaxrsclient'
-include ':isis-parent:isis:isis-mappings:isis-mappings-restclient-api'
-include ':isis-parent:isis:isis-mappings:isis-mappings-restclient'
-include ':isis-parent:isis:isis-mappings'
-include ':isis-parent:isis:isis-mavendeps:isis-mavendeps-jdk11'
-include ':isis-parent:isis:isis-mavendeps:isis-mavendeps-unittests'
-include ':isis-parent:isis:isis-mavendeps:isis-mavendeps-integtests'
-include ':isis-parent:isis:isis-mavendeps:isis-mavendeps-integspecs'
-include ':isis-parent:isis:isis-mavendeps:isis-mavendeps-webapp'
-include ':isis-parent:isis:isis-mavendeps'
-include ':isis-parent:isis:isis-subdomains:isis-subdomains-base:isis-subdomains-base-applib'
-include ':isis-parent:isis:isis-subdomains:isis-subdomains-base'
-include ':isis-parent:isis:isis-subdomains:isis-subdomains-docx:isis-subdomains-docx-applib'
-include ':isis-parent:isis:isis-subdomains:isis-subdomains-docx'
-include ':isis-parent:isis:isis-subdomains:isis-subdomains-excel:isis-subdomains-excel-applib'
-include ':isis-parent:isis:isis-subdomains:isis-subdomains-excel-fixtures'
-include ':isis-parent:isis:isis-subdomains:isis-subdomains-excel-integtests'
-include ':isis-parent:isis:isis-subdomains:isis-subdomains-excel:isis-subdomains-excel-testing'
-include ':isis-parent:isis:isis-subdomains:isis-subdomains-excel'
-include ':isis-parent:isis:isis-subdomains:isis-subdomains-freemarker:isis-subdomains-freemarker-applib'
-include ':isis-parent:isis:isis-subdomains:isis-subdomains-freemarker'
-include ':isis-parent:isis:isis-subdomains:isis-subdomains-ognl-applib'
-include ':isis-parent:isis:isis-subdomains:isis-subdomains-ognl'
-include ':isis-parent:isis:isis-subdomains:isis-subdomains-pdfbox:isis-subdomains-pdfbox-applib'
-include ':isis-parent:isis:isis-subdomains:isis-subdomains-pdfbox'
-include ':isis-parent:isis:isis-subdomains:isis-subdomains-spring:isis-subdomains-spring-applib'
-include ':isis-parent:isis:isis-subdomains:isis-subdomains-spring'
-include ':isis-parent:isis:isis-subdomains:isis-subdomains-xdocreport:isis-subdomains-xdocreport-applib'
-include ':isis-parent:isis:isis-subdomains:isis-subdomains-xdocreport'
-include ':isis-parent:isis:isis-subdomains:isis-subdomains-zip:isis-subdomains-zip-applib'
-include ':isis-parent:isis:isis-subdomains:isis-subdomains-zip'
-include ':isis-parent:isis:isis-subdomains'
-include ':isis-parent:isis:isis-testing:isis-testing-fakedata:isis-testing-fakedata-applib'
-include ':isis-parent:isis:isis-testing:isis-testing-fakedata:isis-testing-fakedata-fixtures'
-include ':isis-parent:isis:isis-testing:isis-testing-fakedata:isis-testing-fakedata-integtests'
-include ':isis-parent:isis:isis-testing:isis-testing-fakedata'
-include ':isis-parent:isis:isis-testing:isis-testing-fixtures:isis-testing-fixtures-applib'
-include ':isis-parent:isis:isis-testing:isis-testing-fixtures'
-include ':isis-parent:isis:isis-testing:isis-testing-h2console:isis-testing-h2console-ui'
-include ':isis-parent:isis:isis-testing:isis-testing-h2console'
-include ':isis-parent:isis:isis-testing:isis-testing-hsqldbmgr:isis-testing-hsqldbmgr-ui'
-include ':isis-parent:isis:isis-testing:isis-testing-hsqldbmgr'
-include ':isis-parent:isis:isis-testing:isis-testing-specsupport:isis-testing-specsupport-applib'
-include ':isis-parent:isis:isis-testing:isis-testing-specsupport'
-include ':isis-parent:isis:isis-testing:isis-testing-integtestsupport:isis-testing-integtestsupport-applib'
-include ':isis-parent:isis:isis-testing:isis-testing-integtestsupport'
-include ':isis-parent:isis:isis-testing:isis-testing-unittestsupport:isis-testing-unittestsupport-applib'
-include ':isis-parent:isis:isis-testing:isis-testing-unittestsupport'
-include ':isis-parent:isis:isis-testing'
-include ':isis-parent:isis:isis-valuetypes:isis-valuetypes-asciidoc:isis-valuetypes-asciidoc-applib'
-include ':isis-parent:isis:isis-valuetypes:isis-valuetypes-asciidoc:isis-valuetypes-asciidoc-ui:isis-valuetypes-asciidoc-ui-vaa'
-include ':isis-parent:isis:isis-valuetypes:isis-valuetypes-asciidoc:isis-valuetypes-asciidoc-ui:isis-valuetypes-asciidoc-ui-wkt'
-include ':isis-parent:isis:isis-valuetypes:isis-valuetypes-asciidoc:isis-valuetypes-asciidoc-ui'
-include ':isis-parent:isis:isis-valuetypes:isis-valuetypes-asciidoc'
-include ':isis-parent:isis:isis-valuetypes:isis-valuetypes-markdown:isis-valuetypes-markdown-applib'
-include ':isis-parent:isis:isis-valuetypes:isis-valuetypes-markdown:isis-valuetypes-markdown-ui'
-include ':isis-parent:isis:isis-valuetypes:isis-valuetypes-markdown'
-include ':isis-parent:isis:isis-valuetypes:isis-valuetypes-sse-applib'
-include ':isis-parent:isis:isis-valuetypes:isis-valuetypes-sse:isis-valuetypes-sse-metamodel'
-include ':isis-parent:isis:isis-valuetypes:isis-valuetypes-sse:isis-valuetypes-sse-ui'
-include ':isis-parent:isis:isis-valuetypes:isis-valuetypes-sse'
-include ':isis-parent:isis:isis-valuetypes'
-include ':isis-app-starter-parent:demo-parent:demo-domain'
-include ':isis-app-starter-parent:demo-parent:demo-wicket'
-include ':isis-app-starter-parent:demo-parent'
-include ':isis-app-starter-parent:smoketests'
-
-project(':isis-parent:isis-schema').projectDir = "$rootDir/api/schema" as File
-project(':isis-parent:isis-applib').projectDir = "$rootDir/api/applib" as File
-project(':isis-parent:isis:isis-core-codegen-bytebuddy').projectDir = "$rootDir/core/codegen-bytebuddy" as File
-project(':isis-parent:isis:isis-core-commons').projectDir = "$rootDir/core/commons" as File
-project(':isis-parent:isis:isis-core-config').projectDir = "$rootDir/core/config" as File
-project(':isis-parent:isis:isis-core-internaltestsupport').projectDir = "$rootDir/core/internaltestsupport" as File
-project(':isis-parent:isis:isis-core-metamodel').projectDir = "$rootDir/core/metamodel" as File
-project(':isis-parent:isis:isis-core-runtime').projectDir = "$rootDir/core/runtime" as File
-project(':isis-parent:isis:isis-core-runtimeservices').projectDir = "$rootDir/core/runtimeservices" as File
-project(':isis-parent:isis:isis-core-webapp').projectDir = "$rootDir/core/webapp" as File
-project(':isis-parent:isis:isis-core-security').projectDir = "$rootDir/core/security" as File
-project(':isis-parent:isis:isis-security-bypass').projectDir = "$rootDir/security/bypass" as File
-project(':isis-parent:isis:isis-security-shiro').projectDir = "$rootDir/security/shiro" as File
-project(':isis-parent:isis:isis-security-keycloak').projectDir = "$rootDir/security/keycloak" as File
-project(':isis-parent:isis:isis-viewer-common').projectDir = "$rootDir/viewers/common" as File
-project(':isis-parent:isis:isis-viewer-restfulobjects:isis-viewer-restfulobjects-applib').projectDir = "$rootDir/viewers/restfulobjects/applib" as File
-project(':isis-parent:isis:isis-viewer-restfulobjects:isis-viewer-restfulobjects-rendering').projectDir = "$rootDir/viewers/restfulobjects/rendering" as File
-project(':isis-parent:isis:isis-viewer-restfulobjects:isis-viewer-restfulobjects-viewer').projectDir = "$rootDir/viewers/restfulobjects/viewer" as File
-project(':isis-parent:isis:isis-viewer-restfulobjects:isis-viewer-restfulobjects-jaxrsresteasy4').projectDir = "$rootDir/viewers/restfulobjects/jaxrs-resteasy-4" as File
-project(':isis-parent:isis:isis-viewer-restfulobjects').projectDir = "$rootDir/viewers/restfulobjects" as File
-project(':isis-parent:isis:isis-viewer-wicket:isis-viewer-wicket-model').projectDir = "$rootDir/viewers/wicket/model" as File
-project(':isis-parent:isis:isis-viewer-wicket:isis-viewer-wicket-viewer').projectDir = "$rootDir/viewers/wicket/viewer" as File
-project(':isis-parent:isis:isis-viewer-wicket:isis-viewer-wicket-ui').projectDir = "$rootDir/viewers/wicket/ui" as File
-project(':isis-parent:isis:isis-viewer-wicket').projectDir = "$rootDir/viewers/wicket" as File
-project(':isis-parent:isis:isis-persistence-jdo:isis-persistence-jdo-applib').projectDir = "$rootDir/persistence/jdo/applib" as File
-project(':isis-parent:isis:isis-persistence-jdo:isis-persistence-jdo-datanucleus5').projectDir = "$rootDir/persistence/jdo/datanucleus-5" as File
-project(':isis-parent:isis:isis-persistence-jdo').projectDir = "$rootDir/persistence/jdo" as File
-project(':isis-parent:isis:isis-persistence-jpa:isis-persistence-jpa-applib').projectDir = "$rootDir/persistence/jpa/applib" as File
-project(':isis-parent:isis:isis-persistence-jpa:isis-persistence-jpa-model').projectDir = "$rootDir/persistence/jpa/model" as File
-project(':isis-parent:isis:isis-persistence-jpa').projectDir = "$rootDir/persistence/jpa" as File
-project(':isis-parent:isis').projectDir = "$rootDir/core" as File
-project(':isis-parent:isis:isis-extensions:isis-extensions-flyway:isis-extensions-flyway-impl').projectDir = "$rootDir/extensions/core/flyway/impl" as File
-project(':isis-parent:isis:isis-extensions:isis-extensions-flyway').projectDir = "$rootDir/extensions/core/flyway" as File
-project(':isis-parent:isis:isis-extensions:isis-extensions-modelannotation').projectDir = "$rootDir/extensions/core/model-annotation" as File
-project(':isis-parent:isis:isis-extensions:isis-extensions-secman:isis-extensions-secman-api').projectDir = "$rootDir/extensions/security/secman/api" as File
-project(':isis-parent:isis:isis-extensions:isis-extensions-secman:isis-extensions-secman-model').projectDir = "$rootDir/extensions/security/secman/model" as File
-project(':isis-parent:isis:isis-extensions:isis-extensions-secman:isis-extensions-secman-encryption-jbcrypt').projectDir = "$rootDir/extensions/security/secman/encryption-jbcrypt" as File
-project(':isis-parent:isis:isis-extensions:isis-extensions-secman:isis-extensions-secman-persistence-jdo').projectDir = "$rootDir/extensions/security/secman/persistence-jdo" as File
-project(':isis-parent:isis:isis-extensions:isis-extensions-secman:isis-extensions-secman-shiro-realm').projectDir = "$rootDir/extensions/security/secman/shiro-realm" as File
-project(':isis-parent:isis:isis-extensions:isis-extensions-secman').projectDir = "$rootDir/extensions/security/secman" as File
-project(':isis-parent:isis:isis-extensions:isis-extensions-shiro-realm-ldap:isis-extensions-shiro-realm-ldap-impl').projectDir = "$rootDir/extensions/security/shiro-realm-ldap/impl" as File
-project(':isis-parent:isis:isis-extensions:isis-extensions-shiro-realm-ldap').projectDir = "$rootDir/extensions/security/shiro-realm-ldap" as File
-project(':isis-parent:isis:isis-extensions:isis-extensions-cors:isis-extensions-cors-impl').projectDir = "$rootDir/extensions/vro/cors/impl" as File
-project(':isis-parent:isis:isis-extensions:isis-extensions-cors').projectDir = "$rootDir/extensions/vro/cors" as File
-project(':isis-parent:isis:isis-extensions:isis-extensions-exceldownload:isis-extensions-exceldownload-ui').projectDir = "$rootDir/extensions/vw/exceldownload/ui" as File
-project(':isis-parent:isis:isis-extensions:isis-extensions-exceldownload').projectDir = "$rootDir/extensions/vw/exceldownload" as File
-project(':isis-parent:isis:isis-extensions:isis-extensions-fullcalendar:isis-extensions-fullcalendar-applib').projectDir = "$rootDir/extensions/vw/fullcalendar/applib" as File
-project(':isis-parent:isis:isis-extensions:isis-extensions-fullcalendar:isis-extensions-fullcalendar-ui').projectDir = "$rootDir/extensions/vw/fullcalendar/ui" as File
-project(':isis-parent:isis:isis-extensions:isis-extensions-fullcalendar').projectDir = "$rootDir/extensions/vw/fullcalendar" as File
-project(':isis-parent:isis:isis-extensions:isis-extensions-pdfjs:isis-extensions-pdfjs-applib').projectDir = "$rootDir/extensions/vw/pdfjs/applib" as File
-project(':isis-parent:isis:isis-extensions:isis-extensions-pdfjs:isis-extensions-pdfjs-metamodel').projectDir = "$rootDir/extensions/vw/pdfjs/metamodel" as File
-project(':isis-parent:isis:isis-extensions:isis-extensions-pdfjs:isis-extensions-pdfjs-ui').projectDir = "$rootDir/extensions/vw/pdfjs/ui" as File
-project(':isis-parent:isis:isis-extensions:isis-extensions-pdfjs').projectDir = "$rootDir/extensions/vw/pdfjs" as File
-project(':isis-parent:isis:isis-extensions').projectDir = "$rootDir/extensions" as File
-project(':isis-parent:isis:isis-incubator:isis-incubator-microprofile').projectDir = "$rootDir/incubator/mappings/microprofile" as File
-project(':isis-parent:isis:isis-incubator:isis-viewer-vaadin:isis-viewer-vaadin-model').projectDir = "$rootDir/incubator/viewers/vaadin/model" as File
-project(':isis-parent:isis:isis-incubator:isis-viewer-vaadin:isis-viewer-vaadin-viewer').projectDir = "$rootDir/incubator/viewers/vaadin/viewer" as File
-project(':isis-parent:isis:isis-incubator:isis-viewer-vaadin:isis-viewer-vaadin-ui').projectDir = "$rootDir/incubator/viewers/vaadin/ui" as File
-project(':isis-parent:isis:isis-incubator:isis-viewer-vaadin').projectDir = "$rootDir/incubator/viewers/vaadin" as File
-project(':isis-parent:isis:isis-incubator').projectDir = "$rootDir/incubator" as File
-project(':isis-parent:isis:isis-legacy:isis-legacy-applib').projectDir = "$rootDir/legacy/extensions/core/applib" as File
-project(':isis-parent:isis:isis-legacy:isis-legacy-commons').projectDir = "$rootDir/legacy/extensions/core/commons" as File
-project(':isis-parent:isis:isis-legacy:isis-legacy-metamodel').projectDir = "$rootDir/legacy/extensions/core/metamodel" as File
-project(':isis-parent:isis:isis-legacy:isis-legacy-runtime').projectDir = "$rootDir/legacy/extensions/core/runtime" as File
-project(':isis-parent:isis:isis-legacy:isis-legacy-restclient').projectDir = "$rootDir/legacy/mappings/restclient" as File
-project(':isis-parent:isis:isis-legacy').projectDir = "$rootDir/legacy" as File
-project(':isis-parent:isis:isis-mappings:isis-mappings-jaxrsclient:isis-mappings-jaxrsclient-api').projectDir = "$rootDir/mappings/jaxrsclient/api" as File
-project(':isis-parent:isis:isis-mappings:isis-mappings-jaxrsclient').projectDir = "$rootDir/mappings/jaxrsclient" as File
-project(':isis-parent:isis:isis-mappings:isis-mappings-restclient-api').projectDir = "$rootDir/mappings/restclient/api" as File
-project(':isis-parent:isis:isis-mappings:isis-mappings-restclient').projectDir = "$rootDir/mappings/restclient" as File
-project(':isis-parent:isis:isis-mappings').projectDir = "$rootDir/mappings" as File
-project(':isis-parent:isis:isis-mavendeps:isis-mavendeps-jdk11').projectDir = "$rootDir/mavendeps/jdk11" as File
-project(':isis-parent:isis:isis-mavendeps:isis-mavendeps-unittests').projectDir = "$rootDir/mavendeps/unittests" as File
-project(':isis-parent:isis:isis-mavendeps:isis-mavendeps-integtests').projectDir = "$rootDir/mavendeps/integtests" as File
-project(':isis-parent:isis:isis-mavendeps:isis-mavendeps-integspecs').projectDir = "$rootDir/mavendeps/integspecs" as File
-project(':isis-parent:isis:isis-mavendeps:isis-mavendeps-webapp').projectDir = "$rootDir/mavendeps/webapp" as File
-project(':isis-parent:isis:isis-mavendeps').projectDir = "$rootDir/mavendeps" as File
-project(':isis-parent:isis:isis-subdomains:isis-subdomains-base:isis-subdomains-base-applib').projectDir = "$rootDir/subdomains/base/applib" as File
-project(':isis-parent:isis:isis-subdomains:isis-subdomains-base').projectDir = "$rootDir/subdomains/base" as File
-project(':isis-parent:isis:isis-subdomains:isis-subdomains-docx:isis-subdomains-docx-applib').projectDir = "$rootDir/subdomains/docx/applib" as File
-project(':isis-parent:isis:isis-subdomains:isis-subdomains-docx').projectDir = "$rootDir/subdomains/docx" as File
-project(':isis-parent:isis:isis-subdomains:isis-subdomains-excel:isis-subdomains-excel-applib').projectDir = "$rootDir/subdomains/excel/applib" as File
-project(':isis-parent:isis:isis-subdomains:isis-subdomains-excel-fixtures').projectDir = "$rootDir/subdomains/excel/fixture" as File
-project(':isis-parent:isis:isis-subdomains:isis-subdomains-excel-integtests').projectDir = "$rootDir/subdomains/excel/integtests" as File
-project(':isis-parent:isis:isis-subdomains:isis-subdomains-excel:isis-subdomains-excel-testing').projectDir = "$rootDir/subdomains/excel/testing" as File
-project(':isis-parent:isis:isis-subdomains:isis-subdomains-excel').projectDir = "$rootDir/subdomains/excel" as File
-project(':isis-parent:isis:isis-subdomains:isis-subdomains-freemarker:isis-subdomains-freemarker-applib').projectDir = "$rootDir/subdomains/freemarker/applib" as File
-project(':isis-parent:isis:isis-subdomains:isis-subdomains-freemarker').projectDir = "$rootDir/subdomains/freemarker" as File
-project(':isis-parent:isis:isis-subdomains:isis-subdomains-ognl-applib').projectDir = "$rootDir/subdomains/ognl/applib" as File
-project(':isis-parent:isis:isis-subdomains:isis-subdomains-ognl').projectDir = "$rootDir/subdomains/ognl" as File
-project(':isis-parent:isis:isis-subdomains:isis-subdomains-pdfbox:isis-subdomains-pdfbox-applib').projectDir = "$rootDir/subdomains/pdfbox/applib" as File
-project(':isis-parent:isis:isis-subdomains:isis-subdomains-pdfbox').projectDir = "$rootDir/subdomains/pdfbox" as File
-project(':isis-parent:isis:isis-subdomains:isis-subdomains-spring:isis-subdomains-spring-applib').projectDir = "$rootDir/subdomains/spring/applib" as File
-project(':isis-parent:isis:isis-subdomains:isis-subdomains-spring').projectDir = "$rootDir/subdomains/spring" as File
-project(':isis-parent:isis:isis-subdomains:isis-subdomains-xdocreport:isis-subdomains-xdocreport-applib').projectDir = "$rootDir/subdomains/xdocreport/applib" as File
-project(':isis-parent:isis:isis-subdomains:isis-subdomains-xdocreport').projectDir = "$rootDir/subdomains/xdocreport" as File
-project(':isis-parent:isis:isis-subdomains:isis-subdomains-zip:isis-subdomains-zip-applib').projectDir = "$rootDir/subdomains/zip/applib" as File
-project(':isis-parent:isis:isis-subdomains:isis-subdomains-zip').projectDir = "$rootDir/subdomains/zip" as File
-project(':isis-parent:isis:isis-subdomains').projectDir = "$rootDir/subdomains" as File
-project(':isis-parent:isis:isis-testing:isis-testing-fakedata:isis-testing-fakedata-applib').projectDir = "$rootDir/testing/fakedata/applib" as File
-project(':isis-parent:isis:isis-testing:isis-testing-fakedata:isis-testing-fakedata-fixtures').projectDir = "$rootDir/testing/fakedata/fixtures" as File
-project(':isis-parent:isis:isis-testing:isis-testing-fakedata:isis-testing-fakedata-integtests').projectDir = "$rootDir/testing/fakedata/integtests" as File
-project(':isis-parent:isis:isis-testing:isis-testing-fakedata').projectDir = "$rootDir/testing/fakedata" as File
-project(':isis-parent:isis:isis-testing:isis-testing-fixtures:isis-testing-fixtures-applib').projectDir = "$rootDir/testing/fixtures/applib" as File
-project(':isis-parent:isis:isis-testing:isis-testing-fixtures').projectDir = "$rootDir/testing/fixtures" as File
-project(':isis-parent:isis:isis-testing:isis-testing-h2console:isis-testing-h2console-ui').projectDir = "$rootDir/testing/h2console/ui" as File
-project(':isis-parent:isis:isis-testing:isis-testing-h2console').projectDir = "$rootDir/testing/h2console" as File
-project(':isis-parent:isis:isis-testing:isis-testing-hsqldbmgr:isis-testing-hsqldbmgr-ui').projectDir = "$rootDir/testing/hsqldbmgr/ui" as File
-project(':isis-parent:isis:isis-testing:isis-testing-hsqldbmgr').projectDir = "$rootDir/testing/hsqldbmgr" as File
-project(':isis-parent:isis:isis-testing:isis-testing-specsupport:isis-testing-specsupport-applib').projectDir = "$rootDir/testing/specsupport/applib" as File
-project(':isis-parent:isis:isis-testing:isis-testing-specsupport').projectDir = "$rootDir/testing/specsupport" as File
-project(':isis-parent:isis:isis-testing:isis-testing-integtestsupport:isis-testing-integtestsupport-applib').projectDir = "$rootDir/testing/integtestsupport/applib" as File
-project(':isis-parent:isis:isis-testing:isis-testing-integtestsupport').projectDir = "$rootDir/testing/integtestsupport" as File
-project(':isis-parent:isis:isis-testing:isis-testing-unittestsupport:isis-testing-unittestsupport-applib').projectDir = "$rootDir/testing/unittestsupport/applib" as File
-project(':isis-parent:isis:isis-testing:isis-testing-unittestsupport').projectDir = "$rootDir/testing/unittestsupport" as File
-project(':isis-parent:isis:isis-testing').projectDir = "$rootDir/testing" as File
-project(':isis-parent:isis:isis-valuetypes:isis-valuetypes-asciidoc:isis-valuetypes-asciidoc-applib').projectDir = "$rootDir/valuetypes/asciidoc/applib" as File
-project(':isis-parent:isis:isis-valuetypes:isis-valuetypes-asciidoc:isis-valuetypes-asciidoc-ui:isis-valuetypes-asciidoc-ui-vaa').projectDir = "$rootDir/valuetypes/asciidoc/ui/vaadin" as File
-project(':isis-parent:isis:isis-valuetypes:isis-valuetypes-asciidoc:isis-valuetypes-asciidoc-ui:isis-valuetypes-asciidoc-ui-wkt').projectDir = "$rootDir/valuetypes/asciidoc/ui/wicket" as File
-project(':isis-parent:isis:isis-valuetypes:isis-valuetypes-asciidoc:isis-valuetypes-asciidoc-ui').projectDir = "$rootDir/valuetypes/asciidoc/ui" as File
-project(':isis-parent:isis:isis-valuetypes:isis-valuetypes-asciidoc').projectDir = "$rootDir/valuetypes/asciidoc" as File
-project(':isis-parent:isis:isis-valuetypes:isis-valuetypes-markdown:isis-valuetypes-markdown-applib').projectDir = "$rootDir/valuetypes/markdown/applib" as File
-project(':isis-parent:isis:isis-valuetypes:isis-valuetypes-markdown:isis-valuetypes-markdown-ui').projectDir = "$rootDir/valuetypes/markdown/ui" as File
-project(':isis-parent:isis:isis-valuetypes:isis-valuetypes-markdown').projectDir = "$rootDir/valuetypes/markdown" as File
-project(':isis-parent:isis:isis-valuetypes:isis-valuetypes-sse-applib').projectDir = "$rootDir/valuetypes/sse/applib" as File
-project(':isis-parent:isis:isis-valuetypes:isis-valuetypes-sse:isis-valuetypes-sse-metamodel').projectDir = "$rootDir/valuetypes/sse/metamodel" as File
-project(':isis-parent:isis:isis-valuetypes:isis-valuetypes-sse:isis-valuetypes-sse-ui').projectDir = "$rootDir/valuetypes/sse/ui" as File
-project(':isis-parent:isis:isis-valuetypes:isis-valuetypes-sse').projectDir = "$rootDir/valuetypes/sse" as File
-project(':isis-parent:isis:isis-valuetypes').projectDir = "$rootDir/valuetypes" as File
-project(':isis-app-starter-parent:demo-parent:demo-domain').projectDir = "$rootDir/examples/demo/domain" as File
-project(':isis-app-starter-parent:demo-parent:demo-wicket').projectDir = "$rootDir/examples/demo/wicket" as File
-project(':isis-app-starter-parent:demo-parent').projectDir = "$rootDir/examples/demo" as File
-project(':isis-app-starter-parent:smoketests').projectDir = "$rootDir/examples/smoketests" as File
diff --git a/subdomains/base/applib/build.gradle b/subdomains/base/applib/build.gradle
deleted file mode 100644
index b3f9ee4..0000000
--- a/subdomains/base/applib/build.gradle
+++ /dev/null
@@ -1,17 +0,0 @@
-group = 'org.apache.isis.subdomains'
-description = 'Apache Isis Sub - Base (applib)'
-dependencies {
-    compile project(':isis-parent:isis-applib')
-    compile group: 'com.google.guava', name: 'guava', version: '28.1-jre'
-    compile group: 'org.apache.commons', name: 'commons-lang3', version: '3.9'
-    testCompile group: 'org.reflections', name: 'reflections', version: '0.9.11'
-    testCompile project(':isis-parent:isis:isis-core-metamodel')
-    testCompile group: 'org.datanucleus', name: 'javax.jdo', version: '3.2.0-m13'
-    testCompile project(':isis-parent:isis:isis-testing:isis-testing-unittestsupport:isis-testing-unittestsupport-applib')
-}
-
-task packageTests(type: Jar) {
-    from sourceSets.test.output
-    classifier = 'tests'
-}
-artifacts.archives packageTests
diff --git a/subdomains/docx/applib/build.gradle b/subdomains/docx/applib/build.gradle
deleted file mode 100644
index 871c507..0000000
--- a/subdomains/docx/applib/build.gradle
+++ /dev/null
@@ -1,11 +0,0 @@
-group = 'org.apache.isis.subdomains'
-description = 'Apache Isis Sub - Docx (applib)'
-dependencies {
-    compile project(':isis-parent:isis-applib')
-}
-
-task packageTests(type: Jar) {
-    from sourceSets.test.output
-    classifier = 'tests'
-}
-artifacts.archives packageTests
diff --git a/subdomains/excel/applib/build.gradle b/subdomains/excel/applib/build.gradle
deleted file mode 100644
index 1872bd3..0000000
--- a/subdomains/excel/applib/build.gradle
+++ /dev/null
@@ -1,18 +0,0 @@
-group = 'org.apache.isis.subdomains'
-description = 'Apache Isis Sub - Excel (applib)'
-dependencies {
-    compile project(':isis-parent:isis-applib')
-    compile project(':isis-parent:isis:isis-core-runtime')
-    compile project(':isis-parent:isis:isis-testing:isis-testing-fixtures:isis-testing-fixtures-applib')
-    compile group: 'com.google.guava', name: 'guava', version: '28.1-jre'
-    compile group: 'org.datanucleus', name: 'datanucleus-core', version: '5.2.2'
-    compile group: 'org.apache.poi', name: 'poi-ooxml', version: '4.1.1'
-    compile group: 'org.apache.poi', name: 'poi-ooxml-schemas', version: '4.1.1'
-    testCompile project(':isis-parent:isis:isis-core-internaltestsupport')
-}
-
-task packageTests(type: Jar) {
-    from sourceSets.test.output
-    classifier = 'tests'
-}
-artifacts.archives packageTests
diff --git a/subdomains/excel/fixture/build.gradle b/subdomains/excel/fixture/build.gradle
deleted file mode 100644
index 74e9e08..0000000
--- a/subdomains/excel/fixture/build.gradle
+++ /dev/null
@@ -1,15 +0,0 @@
-group = 'org.apache.isis.subdomains'
-description = 'Apache Isis Sub - Excel (Fixtures)'
-dependencies {
-    compile project(':isis-parent:isis:isis-subdomains:isis-subdomains-excel:isis-subdomains-excel-applib')
-    compile project(':isis-parent:isis:isis-subdomains:isis-subdomains-excel:isis-subdomains-excel-testing')
-    compile project(':isis-parent:isis-applib')
-    compile project(':isis-parent:isis:isis-testing:isis-testing-fixtures:isis-testing-fixtures-applib')
-    compile project(':isis-parent:isis:isis-persistence-jdo:isis-persistence-jdo-datanucleus5')
-}
-
-task packageTests(type: Jar) {
-    from sourceSets.test.output
-    classifier = 'tests'
-}
-artifacts.archives packageTests
diff --git a/subdomains/excel/integtests/build.gradle b/subdomains/excel/integtests/build.gradle
deleted file mode 100644
index 9957e4d..0000000
--- a/subdomains/excel/integtests/build.gradle
+++ /dev/null
@@ -1,15 +0,0 @@
-group = 'org.apache.isis.subdomains'
-description = 'Apache Isis Sub - Excel (Integ Tests)'
-dependencies {
-    testCompile project(':isis-parent:isis:isis-subdomains:isis-subdomains-excel-fixtures')
-    testCompile project(':isis-parent:isis:isis-testing:isis-testing-fakedata:isis-testing-fakedata-applib')
-    testCompile project(':isis-parent:isis:isis-mavendeps:isis-mavendeps-integtests')
-    testCompile project(':isis-parent:isis:isis-persistence-jdo:isis-persistence-jdo-datanucleus5')
-    testCompile group: 'org.hsqldb', name: 'hsqldb', version: '2.5.0'
-}
-
-task packageTests(type: Jar) {
-    from sourceSets.test.output
-    classifier = 'tests'
-}
-artifacts.archives packageTests
diff --git a/subdomains/excel/testing/build.gradle b/subdomains/excel/testing/build.gradle
deleted file mode 100644
index b833e18..0000000
--- a/subdomains/excel/testing/build.gradle
+++ /dev/null
@@ -1,11 +0,0 @@
-group = 'org.apache.isis.subdomains'
-description = 'Apache Isis Sub - Excel (testing support)'
-dependencies {
-    compile project(':isis-parent:isis:isis-subdomains:isis-subdomains-excel:isis-subdomains-excel-applib')
-}
-
-task packageTests(type: Jar) {
-    from sourceSets.test.output
-    classifier = 'tests'
-}
-artifacts.archives packageTests
diff --git a/subdomains/freemarker/applib/build.gradle b/subdomains/freemarker/applib/build.gradle
deleted file mode 100644
index 577c30f..0000000
--- a/subdomains/freemarker/applib/build.gradle
+++ /dev/null
@@ -1,11 +0,0 @@
-group = 'org.apache.isis.subdomains'
-description = 'Apache Isis Sub - Freemarker (applib)'
-dependencies {
-    compile project(':isis-parent:isis-applib')
-}
-
-task packageTests(type: Jar) {
-    from sourceSets.test.output
-    classifier = 'tests'
-}
-artifacts.archives packageTests
diff --git a/subdomains/ognl/applib/build.gradle b/subdomains/ognl/applib/build.gradle
deleted file mode 100644
index 0df2d74..0000000
--- a/subdomains/ognl/applib/build.gradle
+++ /dev/null
@@ -1,11 +0,0 @@
-group = 'org.apache.isis.subdomains'
-description = 'Apache Isis Sub - Ognl (applib)'
-dependencies {
-    compile project(':isis-parent:isis-applib')
-}
-
-task packageTests(type: Jar) {
-    from sourceSets.test.output
-    classifier = 'tests'
-}
-artifacts.archives packageTests
diff --git a/subdomains/pdfbox/applib/build.gradle b/subdomains/pdfbox/applib/build.gradle
deleted file mode 100644
index 053f733..0000000
--- a/subdomains/pdfbox/applib/build.gradle
+++ /dev/null
@@ -1,11 +0,0 @@
-group = 'org.apache.isis.subdomains'
-description = 'Apache Isis Sub - PDF Box (applib)'
-dependencies {
-    compile project(':isis-parent:isis-applib')
-}
-
-task packageTests(type: Jar) {
-    from sourceSets.test.output
-    classifier = 'tests'
-}
-artifacts.archives packageTests
diff --git a/subdomains/spring/applib/build.gradle b/subdomains/spring/applib/build.gradle
deleted file mode 100644
index 0b4c072..0000000
--- a/subdomains/spring/applib/build.gradle
+++ /dev/null
@@ -1,13 +0,0 @@
-group = 'org.apache.isis.subdomains'
-description = 'Apache Isis Sub - Spring (applib)'
-apply plugin: 'war'
-dependencies {
-    compile project(':isis-parent:isis-applib')
-    providedCompile project(':isis-parent:isis:isis-core-runtime')
-}
-
-task packageTests(type: Jar) {
-    from sourceSets.test.output
-    classifier = 'tests'
-}
-artifacts.archives packageTests
diff --git a/subdomains/xdocreport/applib/build.gradle b/subdomains/xdocreport/applib/build.gradle
deleted file mode 100644
index ce89273..0000000
--- a/subdomains/xdocreport/applib/build.gradle
+++ /dev/null
@@ -1,18 +0,0 @@
-group = 'org.apache.isis.subdomains'
-description = 'Apache Isis Sub - XdocReport (applib)'
-dependencies {
-    compile project(':isis-parent:isis-applib')
-    compile group: 'fr.opensagres.xdocreport', name: 'fr.opensagres.xdocreport.document.docx', version: '1.0.6'
-    compile group: 'fr.opensagres.xdocreport', name: 'fr.opensagres.xdocreport.template.freemarker', version: '1.0.6'
-    compile group: 'fr.opensagres.xdocreport', name: 'fr.opensagres.xdocreport.converter.docx.xwpf', version: '1.0.6'
-    compile group: 'fr.opensagres.xdocreport', name: 'org.apache.poi.xwpf.converter.pdf', version: '1.0.6'
-    compile group: 'fr.opensagres.xdocreport', name: 'org.apache.poi.xwpf.converter.core', version: '1.0.6'
-    testCompile project(':isis-parent:isis:isis-testing:isis-testing-unittestsupport:isis-testing-unittestsupport-applib')
-    testCompile group: 'com.google.guava', name: 'guava', version: '28.1-jre'
-}
-
-task packageTests(type: Jar) {
-    from sourceSets.test.output
-    classifier = 'tests'
-}
-artifacts.archives packageTests
diff --git a/subdomains/zip/applib/build.gradle b/subdomains/zip/applib/build.gradle
deleted file mode 100644
index 6550b24..0000000
--- a/subdomains/zip/applib/build.gradle
+++ /dev/null
@@ -1,12 +0,0 @@
-group = 'org.apache.isis.subdomains'
-description = 'Apache Isis Sub - Zip (applib)'
-dependencies {
-    compile project(':isis-parent:isis-applib')
-    compile group: 'com.google.guava', name: 'guava', version: '28.1-jre'
-}
-
-task packageTests(type: Jar) {
-    from sourceSets.test.output
-    classifier = 'tests'
-}
-artifacts.archives packageTests
diff --git a/testing/fakedata/applib/build.gradle b/testing/fakedata/applib/build.gradle
deleted file mode 100644
index 2b5e9fe..0000000
--- a/testing/fakedata/applib/build.gradle
+++ /dev/null
@@ -1,16 +0,0 @@
-group = 'org.apache.isis.testing'
-description = 'Apache Isis Tst - FakeData (applib)'
-dependencies {
-    compile project(':isis-parent:isis-applib')
-    compile(group: 'com.github.javafaker', name: 'javafaker', version: '1.0.1') {
-        exclude(module: 'snakeyaml')
-    }
-    compile group: 'com.google.guava', name: 'guava', version: '28.1-jre'
-    testCompile project(':isis-parent:isis:isis-testing:isis-testing-unittestsupport:isis-testing-unittestsupport-applib')
-}
-
-task packageTests(type: Jar) {
-    from sourceSets.test.output
-    classifier = 'tests'
-}
-artifacts.archives packageTests
diff --git a/testing/fakedata/fixtures/build.gradle b/testing/fakedata/fixtures/build.gradle
deleted file mode 100644
index 0dac780..0000000
--- a/testing/fakedata/fixtures/build.gradle
+++ /dev/null
@@ -1,15 +0,0 @@
-group = 'org.apache.isis.testing'
-description = 'Apache Isis Tst - FakeData (fixtures)'
-dependencies {
-    compile project(':isis-parent:isis:isis-testing:isis-testing-fakedata:isis-testing-fakedata-applib')
-    compile project(':isis-parent:isis-applib')
-    compile project(':isis-parent:isis:isis-testing:isis-testing-fixtures:isis-testing-fixtures-applib')
-    compile project(':isis-parent:isis:isis-persistence-jdo:isis-persistence-jdo-datanucleus5')
-    compile group: 'com.google.guava', name: 'guava', version: '28.1-jre'
-}
-
-task packageTests(type: Jar) {
-    from sourceSets.test.output
-    classifier = 'tests'
-}
-artifacts.archives packageTests
diff --git a/testing/fakedata/integtests/build.gradle b/testing/fakedata/integtests/build.gradle
deleted file mode 100644
index c0d74bd..0000000
--- a/testing/fakedata/integtests/build.gradle
+++ /dev/null
@@ -1,13 +0,0 @@
-group = 'org.apache.isis.testing'
-description = 'Apache Isis Tst - FakeData (integ tests)'
-dependencies {
-    testCompile project(':isis-parent:isis:isis-testing:isis-testing-fakedata:isis-testing-fakedata-fixtures')
-    testCompile project(':isis-parent:isis:isis-testing:isis-testing-fakedata:isis-testing-fakedata-applib')
-    testCompile project(':isis-parent:isis:isis-mavendeps:isis-mavendeps-integtests')
-}
-
-task packageTests(type: Jar) {
-    from sourceSets.test.output
-    classifier = 'tests'
-}
-artifacts.archives packageTests
diff --git a/testing/fixtures/applib/build.gradle b/testing/fixtures/applib/build.gradle
deleted file mode 100644
index ee079c2..0000000
--- a/testing/fixtures/applib/build.gradle
+++ /dev/null
@@ -1,17 +0,0 @@
-group = 'org.apache.isis.testing'
-description = 'Apache Isis Tst - Fixtures (applib)'
-apply plugin: 'war'
-dependencies {
-    compile group: 'joda-time', name: 'joda-time', version: '2.10.6'
-    compile project(':isis-parent:isis:isis-subdomains:isis-subdomains-spring:isis-subdomains-spring-applib')
-    providedCompile project(':isis-parent:isis:isis-testing:isis-testing-integtestsupport:isis-testing-integtestsupport-applib')
-    compileOnly group: 'org.datanucleus', name: 'javax.jdo', version: '3.2.0-m13'
-    providedCompile project(':isis-parent:isis:isis-persistence-jdo:isis-persistence-jdo-applib')
-    providedCompile project(':isis-parent:isis:isis-core-runtime')
-}
-
-task packageTests(type: Jar) {
-    from sourceSets.test.output
-    classifier = 'tests'
-}
-artifacts.archives packageTests
diff --git a/testing/h2console/ui/build.gradle b/testing/h2console/ui/build.gradle
deleted file mode 100644
index dbc5102..0000000
--- a/testing/h2console/ui/build.gradle
+++ /dev/null
@@ -1,12 +0,0 @@
-group = 'org.apache.isis.testing'
-description = 'Apache Isis Tst - H2 Console (ui)'
-dependencies {
-    compile project(':isis-parent:isis:isis-core-webapp')
-    compile group: 'com.h2database', name: 'h2', version: '1.4.200'
-}
-
-task packageTests(type: Jar) {
-    from sourceSets.test.output
-    classifier = 'tests'
-}
-artifacts.archives packageTests
diff --git a/testing/hsqldbmgr/ui/build.gradle b/testing/hsqldbmgr/ui/build.gradle
deleted file mode 100644
index c58a649..0000000
--- a/testing/hsqldbmgr/ui/build.gradle
+++ /dev/null
@@ -1,12 +0,0 @@
-group = 'org.apache.isis.testing'
-description = 'Apache Isis Tst - HSQLDB Manager'
-dependencies {
-    compile project(':isis-parent:isis:isis-core-webapp')
-    compile group: 'org.hsqldb', name: 'hsqldb', version: '2.5.0'
-}
-
-task packageTests(type: Jar) {
-    from sourceSets.test.output
-    classifier = 'tests'
-}
-artifacts.archives packageTests
diff --git a/testing/integtestsupport/applib/build.gradle b/testing/integtestsupport/applib/build.gradle
deleted file mode 100644
index 7c636be..0000000
--- a/testing/integtestsupport/applib/build.gradle
+++ /dev/null
@@ -1,28 +0,0 @@
-group = 'org.apache.isis.testing'
-description = 'Apache Isis Tst - Integ Test Support (applib)'
-dependencies {
-    compile(group: 'org.springframework.boot', name: 'spring-boot-starter-test', version: '2.2.7.RELEASE') {
-        exclude(module: 'asm')
-        exclude(module: 'spring-test')
-        exclude(module: 'spring-core')
-        exclude(module: 'spring-boot-starter-logging')
-        exclude(module: 'slf4j-api')
-        exclude(module: 'junit-vintage-engine')
-    }
-    compile group: 'org.springframework', name: 'spring-test', version: '5.2.6.RELEASE'
-    compile group: 'com.approvaltests', name: 'approvaltests', version: '4.0.2'
-    compile group: 'org.hamcrest', name: 'hamcrest-library', version: '2.1'
-    compile group: 'org.slf4j', name: 'slf4j-api', version: '1.7.26'
-    compile project(':isis-parent:isis:isis-security-bypass')
-    compile project(':isis-parent:isis:isis-core-runtimeservices')
-    compile project(':isis-parent:isis:isis-persistence-jdo:isis-persistence-jdo-datanucleus5')
-    compile group: 'org.hsqldb', name: 'hsqldb', version: '2.5.0'
-    compile group: 'com.h2database', name: 'h2', version: '1.4.200'
-    compileOnly group: 'org.datanucleus', name: 'javax.jdo', version: '3.2.0-m13'
-}
-
-task packageTests(type: Jar) {
-    from sourceSets.test.output
-    classifier = 'tests'
-}
-artifacts.archives packageTests
diff --git a/testing/specsupport/applib/build.gradle b/testing/specsupport/applib/build.gradle
deleted file mode 100644
index b9809be..0000000
--- a/testing/specsupport/applib/build.gradle
+++ /dev/null
@@ -1,17 +0,0 @@
-group = 'org.apache.isis.testing'
-description = 'Apache Isis Tst - Spec/Cucumber (applib)'
-dependencies {
-    compile project(':isis-parent:isis:isis-testing:isis-testing-integtestsupport:isis-testing-integtestsupport-applib')
-    compile group: 'io.cucumber', name: 'cucumber-java', version: '5.1.2'
-    compile group: 'io.cucumber', name: 'cucumber-spring', version: '5.1.2'
-    compile group: 'io.cucumber', name: 'cucumber-junit', version: '5.1.2'
-//    compile group: 'io.cucumber', name: 'cucumber-junit-platform-engine', version: '5.1.2'
-    compile group: 'org.junit.jupiter', name: 'junit-jupiter-api', version: '5.5.2'
-//    compile group: 'org.junit.platform', name: 'junit-platform-console', version: '1.6.0'
-}
-
-task packageTests(type: Jar) {
-    from sourceSets.test.output
-    classifier = 'tests'
-}
-artifacts.archives packageTests
diff --git a/testing/unittestsupport/applib/build.gradle b/testing/unittestsupport/applib/build.gradle
deleted file mode 100644
index ab51cd9..0000000
--- a/testing/unittestsupport/applib/build.gradle
+++ /dev/null
@@ -1,33 +0,0 @@
-group = 'org.apache.isis.testing'
-description = 'Apache Isis Tst - Unit Test Support (applib)'
-dependencies {
-    compile project(':isis-parent:isis-applib')
-    compile(group: 'org.springframework.boot', name: 'spring-boot-starter-test', version: '2.2.7.RELEASE') {
-        exclude(module: 'asm')
-        exclude(module: 'spring-test')
-        exclude(module: 'spring-core')
-        exclude(module: 'spring-boot-starter-logging')
-        exclude(module: 'slf4j-api')
-    }
-    compile group: 'org.springframework', name: 'spring-test', version: '5.2.6.RELEASE'
-    compile(group: 'org.jmock', name: 'jmock', version: '2.11.0') {
-        exclude(module: 'asm')
-    }
-    compile(group: 'org.jmock', name: 'jmock-junit4', version: '2.11.0') {
-        exclude(module: 'junit-dep')
-        exclude(module: 'asm')
-        exclude(module: 'byte-buddy')
-    }
-    compile group: 'com.approvaltests', name: 'approvaltests', version: '4.0.2'
-    compile project(':isis-parent:isis:isis-core-codegen-bytebuddy')
-    compile group: 'org.picocontainer', name: 'picocontainer', version: '2.15'
-    compile group: 'com.google.guava', name: 'guava', version: '28.1-jre'
-    compile group: 'org.slf4j', name: 'slf4j-api', version: '1.7.26'
-    compileOnly group: 'org.datanucleus', name: 'javax.jdo', version: '3.2.0-m13'
-}
-
-task packageTests(type: Jar) {
-    from sourceSets.test.output
-    classifier = 'tests'
-}
-artifacts.archives packageTests
diff --git a/valuetypes/asciidoc/applib/build.gradle b/valuetypes/asciidoc/applib/build.gradle
deleted file mode 100644
index 715b4cf..0000000
--- a/valuetypes/asciidoc/applib/build.gradle
+++ /dev/null
@@ -1,12 +0,0 @@
-group = 'org.apache.isis.valuetypes'
-description = 'Apache Isis Val - Asciidoctor (applib)'
-dependencies {
-    compile project(':isis-parent:isis-applib')
-    compile group: 'org.asciidoctor', name: 'asciidoctorj-api', version: '2.1.0'
-}
-
-task packageTests(type: Jar) {
-    from sourceSets.test.output
-    classifier = 'tests'
-}
-artifacts.archives packageTests
diff --git a/valuetypes/asciidoc/ui/vaadin/build.gradle b/valuetypes/asciidoc/ui/vaadin/build.gradle
deleted file mode 100644
index 4e18dc0..0000000
--- a/valuetypes/asciidoc/ui/vaadin/build.gradle
+++ /dev/null
@@ -1,12 +0,0 @@
-group = 'org.apache.isis.valuetypes'
-description = 'Apache Isis Val - Asciidoctor (ui vaadin)'
-apply plugin: 'war'
-dependencies {
-    providedCompile project(':isis-parent:isis:isis-incubator:isis-viewer-vaadin:isis-viewer-vaadin-ui')
-}
-
-task packageTests(type: Jar) {
-    from sourceSets.test.output
-    classifier = 'tests'
-}
-artifacts.archives packageTests
diff --git a/valuetypes/asciidoc/ui/wicket/build.gradle b/valuetypes/asciidoc/ui/wicket/build.gradle
deleted file mode 100644
index a589d83..0000000
--- a/valuetypes/asciidoc/ui/wicket/build.gradle
+++ /dev/null
@@ -1,12 +0,0 @@
-group = 'org.apache.isis.valuetypes'
-description = 'Apache Isis Val - Asciidoctor (ui wicket)'
-apply plugin: 'war'
-dependencies {
-    providedCompile project(':isis-parent:isis:isis-viewer-wicket:isis-viewer-wicket-ui')
-}
-
-task packageTests(type: Jar) {
-    from sourceSets.test.output
-    classifier = 'tests'
-}
-artifacts.archives packageTests
diff --git a/valuetypes/markdown/applib/build.gradle b/valuetypes/markdown/applib/build.gradle
deleted file mode 100644
index bf771ea..0000000
--- a/valuetypes/markdown/applib/build.gradle
+++ /dev/null
@@ -1,12 +0,0 @@
-group = 'org.apache.isis.valuetypes'
-description = 'Apache Isis Val - Markdown (applib)'
-dependencies {
-    compile project(':isis-parent:isis-applib')
-    compileOnly group: 'com.vladsch.flexmark', name: 'flexmark-all', version: '0.34.32'
-}
-
-task packageTests(type: Jar) {
-    from sourceSets.test.output
-    classifier = 'tests'
-}
-artifacts.archives packageTests
diff --git a/valuetypes/markdown/ui/build.gradle b/valuetypes/markdown/ui/build.gradle
deleted file mode 100644
index 8b40994..0000000
--- a/valuetypes/markdown/ui/build.gradle
+++ /dev/null
@@ -1,17 +0,0 @@
-group = 'org.apache.isis.valuetypes'
-description = 'Apache Isis Val - Markdown (ui)'
-dependencies {
-    compile project(':isis-parent:isis:isis-valuetypes:isis-valuetypes-markdown:isis-valuetypes-markdown-applib')
-    compile project(':isis-parent:isis:isis-core-metamodel')
-    compile project(':isis-parent:isis:isis-viewer-wicket:isis-viewer-wicket-ui')
-    compile(group: 'com.vladsch.flexmark', name: 'flexmark-all', version: '0.34.32') {
-        exclude(module: 'jsoup')
-    }
-    compile group: 'org.jsoup', name: 'jsoup', version: '1.10.2'
-}
-
-task packageTests(type: Jar) {
-    from sourceSets.test.output
-    classifier = 'tests'
-}
-artifacts.archives packageTests
diff --git a/valuetypes/sse/applib/build.gradle b/valuetypes/sse/applib/build.gradle
deleted file mode 100644
index ce75fb5..0000000
--- a/valuetypes/sse/applib/build.gradle
+++ /dev/null
@@ -1,14 +0,0 @@
-group = 'org.apache.isis.valuetypes'
-description = 'Apache Isis Val - Server Sent Events'
-apply plugin: 'war'
-dependencies {
-    compile project(':isis-parent:isis:isis-core-metamodel')
-    providedCompile project(':isis-parent:isis:isis-core-webapp')
-    providedCompile project(':isis-parent:isis:isis-viewer-wicket:isis-viewer-wicket-ui')
-}
-
-task packageTests(type: Jar) {
-    from sourceSets.test.output
-    classifier = 'tests'
-}
-artifacts.archives packageTests
diff --git a/valuetypes/sse/metamodel/build.gradle b/valuetypes/sse/metamodel/build.gradle
deleted file mode 100644
index 3fc239d..0000000
--- a/valuetypes/sse/metamodel/build.gradle
+++ /dev/null
@@ -1,12 +0,0 @@
-group = 'org.apache.isis.valuetypes'
-description = 'Apache Isis Val - Server Sent Events (metamodel)'
-dependencies {
-    compile project(':isis-parent:isis:isis-valuetypes:isis-valuetypes-sse-applib')
-    compile project(':isis-parent:isis:isis-core-metamodel')
-}
-
-task packageTests(type: Jar) {
-    from sourceSets.test.output
-    classifier = 'tests'
-}
-artifacts.archives packageTests
diff --git a/valuetypes/sse/ui/build.gradle b/valuetypes/sse/ui/build.gradle
deleted file mode 100644
index 204a069..0000000
--- a/valuetypes/sse/ui/build.gradle
+++ /dev/null
@@ -1,15 +0,0 @@
-group = 'org.apache.isis.valuetypes'
-description = 'Apache Isis Val - Server Sent Events (ui)'
-apply plugin: 'war'
-dependencies {
-    compile project(':isis-parent:isis:isis-valuetypes:isis-valuetypes-sse:isis-valuetypes-sse-metamodel')
-    compile project(':isis-parent:isis:isis-core-metamodel')
-    providedCompile project(':isis-parent:isis:isis-core-webapp')
-    providedCompile project(':isis-parent:isis:isis-viewer-wicket:isis-viewer-wicket-ui')
-}
-
-task packageTests(type: Jar) {
-    from sourceSets.test.output
-    classifier = 'tests'
-}
-artifacts.archives packageTests
diff --git a/viewers/common/build.gradle b/viewers/common/build.gradle
deleted file mode 100644
index cd1ee06..0000000
--- a/viewers/common/build.gradle
+++ /dev/null
@@ -1,14 +0,0 @@
-group = 'org.apache.isis.viewer'
-description = 'Apache Isis Viewer - Common Model'
-dependencies {
-    compile project(':isis-parent:isis:isis-core-webapp')
-    compile group: 'org.webjars', name: 'font-awesome', version: '5.13.0'
-    testCompile project(':isis-parent:isis:isis-core-internaltestsupport')
-    testCompile project(':isis-parent:isis:isis-core-metamodel')
-}
-
-task packageTests(type: Jar) {
-    from sourceSets.test.output
-    classifier = 'tests'
-}
-artifacts.archives packageTests
diff --git a/viewers/restfulobjects/applib/build.gradle b/viewers/restfulobjects/applib/build.gradle
deleted file mode 100644
index 4322d86..0000000
--- a/viewers/restfulobjects/applib/build.gradle
+++ /dev/null
@@ -1,14 +0,0 @@
-group = 'org.apache.isis.viewer'
-description = 'Apache Isis Viewer - RO (AppLib)'
-dependencies {
-    compile project(':isis-parent:isis-applib')
-    compile group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: '2.10.4'
-    testCompile project(':isis-parent:isis:isis-core-metamodel')
-    testCompile project(':isis-parent:isis:isis-core-internaltestsupport')
-}
-
-task packageTests(type: Jar) {
-    from sourceSets.test.output
-    classifier = 'tests'
-}
-artifacts.archives packageTests
diff --git a/viewers/restfulobjects/jaxrs-resteasy-4/build.gradle b/viewers/restfulobjects/jaxrs-resteasy-4/build.gradle
deleted file mode 100644
index 22b00b4..0000000
--- a/viewers/restfulobjects/jaxrs-resteasy-4/build.gradle
+++ /dev/null
@@ -1,21 +0,0 @@
-group = 'org.apache.isis.viewer'
-description = 'Apache Isis Viewer - RO (JAX-RS Resteasy v4)'
-dependencies {
-    compile project(':isis-parent:isis:isis-viewer-restfulobjects:isis-viewer-restfulobjects-rendering')
-    compile project(':isis-parent:isis:isis-viewer-restfulobjects:isis-viewer-restfulobjects-viewer')
-    compile(group: 'org.jboss.resteasy', name: 'resteasy-spring-boot-starter', version: '4.4.0.Final') {
-        exclude(module: 'spring-boot-starter-logging')
-    }
-    compile group: 'com.fasterxml.jackson.module', name: 'jackson-module-jaxb-annotations', version: '2.10.4'
-    testCompile project(':isis-parent:isis:isis-core-internaltestsupport')
-    testCompile project(':isis-parent:isis:isis-core-metamodel')
-    testCompile project(':isis-parent:isis:isis-viewer-restfulobjects:isis-viewer-restfulobjects-viewer')
-    testCompile project(':isis-parent:isis:isis-viewer-restfulobjects:isis-viewer-restfulobjects-applib')
-    testCompile group: 'org.datanucleus', name: 'javax.jdo', version: '3.2.0-m13'
-}
-
-task packageTests(type: Jar) {
-    from sourceSets.test.output
-    classifier = 'tests'
-}
-artifacts.archives packageTests
diff --git a/viewers/restfulobjects/rendering/build.gradle b/viewers/restfulobjects/rendering/build.gradle
deleted file mode 100644
index dc1b5dc..0000000
--- a/viewers/restfulobjects/rendering/build.gradle
+++ /dev/null
@@ -1,13 +0,0 @@
-group = 'org.apache.isis.viewer'
-description = 'Apache Isis Viewer - RO (Rendering)'
-dependencies {
-    compile project(':isis-parent:isis:isis-core-runtime')
-    compile project(':isis-parent:isis::isis-viewer-restfulobjects:isis-viewer-restfulobjects-applib')
-    testCompile project(':isis-parent:isis::isis-core-internaltestsupport')
-}
-
-task packageTests(type: Jar) {
-    from sourceSets.test.output
-    classifier = 'tests'
-}
-artifacts.archives packageTests
diff --git a/viewers/restfulobjects/viewer/build.gradle b/viewers/restfulobjects/viewer/build.gradle
deleted file mode 100644
index 8ccc45c..0000000
--- a/viewers/restfulobjects/viewer/build.gradle
+++ /dev/null
@@ -1,17 +0,0 @@
-group = 'org.apache.isis.viewer'
-description = 'Apache Isis Viewer - RO (Viewer)'
-dependencies {
-    compile project(':isis-parent:isis:isis-core-webapp')
-    compile project(':isis-parent:isis:isis-viewer-common')
-    compile project(':isis-parent:isis:isis-viewer-restfulobjects:isis-viewer-restfulobjects-rendering')
-    compile group: 'com.fasterxml.jackson.module', name: 'jackson-module-jaxb-annotations', version: '2.10.4'
-    testCompile project(':isis-parent:isis:isis-core-metamodel')
-    testCompile project(':isis-parent:isis:isis-core-internaltestsupport')
-    compileOnly group: 'org.datanucleus', name: 'javax.jdo', version: '3.2.0-m13'
-}
-
-task packageTests(type: Jar) {
-    from sourceSets.test.output
-    classifier = 'tests'
-}
-artifacts.archives packageTests
diff --git a/viewers/wicket/model/build.gradle b/viewers/wicket/model/build.gradle
deleted file mode 100644
index 641e178..0000000
--- a/viewers/wicket/model/build.gradle
+++ /dev/null
@@ -1,21 +0,0 @@
-group = 'org.apache.isis.viewer'
-description = 'Apache Isis Viewer - Wicket (Model)'
-dependencies {
-    compile(group: 'org.apache.wicket', name: 'wicket-core', version: '8.8.0') {
-        exclude(module: 'slf4j-api')
-        exclude(module: 'commons-io')
-    }
-    compile(group: 'org.apache.wicket', name: 'wicket-extensions', version: '8.8.0') {
-        exclude(module: 'slf4j-api')
-    }
-    compile project(':isis-parent:isis:isis-core-webapp')
-    compile project(':isis-parent:isis:isis-viewer-common')
-    testCompile project(':isis-parent:isis:isis-core-internaltestsupport')
-    testCompile project(':isis-parent:isis:isis-core-metamodel')
-}
-
-task packageTests(type: Jar) {
-    from sourceSets.test.output
-    classifier = 'tests'
-}
-artifacts.archives packageTests
diff --git a/viewers/wicket/ui/build.gradle b/viewers/wicket/ui/build.gradle
deleted file mode 100644
index 9279947..0000000
--- a/viewers/wicket/ui/build.gradle
+++ /dev/null
@@ -1,80 +0,0 @@
-group = 'org.apache.isis.viewer'
-description = 'Apache Isis Viewer - Wicket (UI Components)'
-dependencies {
-    compile project(':isis-parent:isis:isis-viewer-wicket:isis-viewer-wicket-model')
-    compile(group: 'org.apache.wicket', name: 'wicket-core', version: '8.8.0') {
-        exclude(module: 'slf4j-api')
-        exclude(module: 'commons-io')
-    }
-    compile(group: 'org.apache.wicket', name: 'wicket-devutils', version: '8.8.0') {
-        exclude(module: 'slf4j-api')
-    }
-    compile group: 'org.slf4j', name: 'slf4j-api', version: '1.7.26'
-    compile(group: 'org.apache.wicket', name: 'wicket-extensions', version: '8.8.0') {
-        exclude(module: 'slf4j-api')
-    }
-    compile(group: 'org.apache.wicket', name: 'wicket-auth-roles', version: '8.8.0') {
-        exclude(module: 'slf4j-api')
-    }
-    compile(group: 'org.apache.wicket', name: 'wicket-spring', version: '8.8.0') {
-        exclude(module: 'javax.inject')
-        exclude(module: 'asm')
-        exclude(module: 'slf4j-api')
-        exclude(module: 'cglib')
-    }
-    compile(group: 'org.wicketstuff', name: 'wicketstuff-select2', version: '8.8.0') {
-        exclude(module: 'wicket-core')
-    }
-    compile group: 'org.webjars', name: 'select2', version: '4.0.10'
-    compile(group: 'org.webjars', name: 'jquery-ui', version: '1.12.1') {
-        exclude(module: 'jquery')
-    }
-    compile(group: 'de.agilecoders.wicket.webjars', name: 'wicket-webjars', version: '2.0.15') {
-        exclude(module: 'wicket-core')
-        exclude(module: 'wicket-request')
-        exclude(module: 'slf4j-api')
-    }
-    compile(group: 'de.agilecoders.wicket', name: 'wicket-bootstrap-core', version: '2.0.13') {
-        exclude(module: 'wicket-util')
-        exclude(module: 'wicket-request')
-        exclude(module: 'wicket-core')
-        exclude(module: 'wicket-extensions')
-        exclude(module: 'slf4j-api')
-        exclude(module: 'guava')
-    }
-    compile(group: 'de.agilecoders.wicket', name: 'wicket-bootstrap-extensions', version: '2.0.13') {
-        exclude(module: 'wicket-util')
-        exclude(module: 'wicket-request')
-        exclude(module: 'wicket-core')
-        exclude(module: 'wicket-extensions')
-        exclude(module: 'bootstrap')
-        exclude(module: 'font-awesome')
-        exclude(module: 'jquery')
-        exclude(module: 'jquerypp')
-        exclude(module: 'jquery-ui')
-        exclude(module: 'typeaheadjs')
-        exclude(module: 'x-editable-bootstrap')
-        exclude(module: 'spin-js')
-        exclude(module: 'closure-compiler')
-        exclude(module: 'summernote')
-        exclude(module: 'guava')
-    }
-    compile group: 'org.webjars.bower', name: 'summernote', version: '0.8.11'
-    compile(group: 'de.agilecoders.wicket', name: 'wicket-bootstrap-themes', version: '2.0.13') {
-        exclude(module: 'wicket-core')
-    }
-    compile group: 'com.google.guava', name: 'guava', version: '28.1-jre'
-    testCompile project(':isis-parent:isis:isis-core-internaltestsupport')
-    testCompile project(':isis-parent:isis:isis-core-metamodel')
-    testCompile(group: 'org.jmock', name: 'jmock-junit4', version: '2.11.0') {
-        exclude(module: 'asm')
-        exclude(module: 'junit-dep')
-    }
-    compileOnly group: 'org.datanucleus', name: 'javax.jdo', version: '3.2.0-m13'
-}
-
-task packageTests(type: Jar) {
-    from sourceSets.test.output
-    classifier = 'tests'
-}
-artifacts.archives packageTests
diff --git a/viewers/wicket/viewer/build.gradle b/viewers/wicket/viewer/build.gradle
deleted file mode 100644
index 17b888c..0000000
--- a/viewers/wicket/viewer/build.gradle
+++ /dev/null
@@ -1,38 +0,0 @@
-group = 'org.apache.isis.viewer'
-description = 'Apache Isis Viewer - Wicket (Viewer)'
-dependencies {
-    compile project(':isis-parent:isis:isis-viewer-wicket:isis-viewer-wicket-ui')
-    compile(group: 'org.apache.wicket', name: 'wicket-spring', version: '8.8.0') {
-        exclude(module: 'asm')
-        exclude(module: 'slf4j-api')
-        exclude(module: 'cglib')
-    }
-    compile(group: 'org.apache.wicket', name: 'wicket-auth-roles', version: '8.8.0') {
-        exclude(module: 'slf4j-api')
-    }
-    compile(group: 'de.agilecoders.wicket', name: 'wicket-bootstrap-core', version: '2.0.13') {
-        exclude(module: 'wicket-util')
-        exclude(module: 'wicket-request')
-        exclude(module: 'wicket-core')
-        exclude(module: 'wicket-extensions')
-        exclude(module: 'slf4j-api')
-        exclude(module: 'guava')
-    }
-    compile(group: 'net.ftlines.wicket-source', name: 'wicket-source', version: '7.0.0') {
-        exclude(module: 'wicket-core')
-        exclude(module: 'slf4j-api')
-    }
-    compile group: 'org.springframework', name: 'spring-web', version: '5.2.6.RELEASE'
-    compile group: 'commons-io', name: 'commons-io', version: '2.6'
-    testCompile project(':isis-parent:isis:isis-core-internaltestsupport')
-    testCompile(group: 'org.jmock', name: 'jmock-junit4', version: '2.11.0') {
-        exclude(module: 'asm')
-        exclude(module: 'junit-dep')
-    }
-}
-
-task packageTests(type: Jar) {
-    from sourceSets.test.output
-    classifier = 'tests'
-}
-artifacts.archives packageTests


[isis] 07/09: Merge remote-tracking branch 'origin/master'

Posted by jo...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

joergrade pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git

commit 64ee75df4a51809d21040df691b490c7d6910f17
Merge: d5e9cb1 f07ea5e
Author: Jörg Rade <jo...@kuehne-nagel.com>
AuthorDate: Thu Jun 18 17:36:33 2020 +0200

    Merge remote-tracking branch 'origin/master'
    
    # Conflicts:
    #	.gitignore

 .gitignore                | 12 ++++--
 .idea/.gitignore          |  2 -
 .idea/gradle.xml          | 20 ----------
 .idea/jarRepositories.xml | 95 -----------------------------------------------
 .idea/kroviz.iml          |  9 -----
 .idea/misc.xml            | 17 ---------
 .idea/vcs.xml             |  8 ----
 core-parent/pom.xml       |  2 +-
 core/pom.xml              |  4 +-
 examples/demo/jee/pom.xml | 84 +++++++++++++++++++++++++++++++++++++++++
 starters/pom.xml          |  4 +-
 11 files changed, 97 insertions(+), 160 deletions(-)



[isis] 02/09: ISIS-2350 RoToolPanel renamed to RoIconBar, styling via css. Factory and action not yet possible at the same time. Chart Sample added. Code cleanup.

Posted by jo...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

joergrade pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git

commit 7e8e4f54a380e6ecd6177d682c3c95c74fef1173
Author: Jörg Rade <jo...@kuehne-nagel.com>
AuthorDate: Wed Jun 17 21:31:42 2020 +0200

    ISIS-2350 RoToolPanel renamed to RoIconBar, styling via css.
    Factory and action not yet possible at the same time.
    Chart Sample added. Code cleanup.
---
 .../isis/client/kroviz/core/event/EventStore.kt    |   9 ++
 .../isis/client/kroviz/core/model/DisplayModel.kt  |   9 --
 .../apache/isis/client/kroviz/ui/kv/ChartTab.kt    | 121 +++++++++++++++++++
 .../isis/client/kroviz/ui/kv/ColumnFactory.kt      |  10 +-
 .../apache/isis/client/kroviz/ui/kv/Constants.kt   |   8 ++
 .../isis/client/kroviz/ui/kv/EventLogTable.kt      |   6 +-
 .../apache/isis/client/kroviz/ui/kv/MenuFactory.kt | 127 +++++++++++++++----
 .../org/apache/isis/client/kroviz/ui/kv/RoApp.kt   |   2 +-
 .../apache/isis/client/kroviz/ui/kv/RoIconBar.kt   | 134 +++++++++++++++++++++
 .../apache/isis/client/kroviz/ui/kv/RoMenuBar.kt   |  17 ++-
 .../isis/client/kroviz/ui/kv/RoSimplePanel.kt      |  11 --
 .../org/apache/isis/client/kroviz/ui/kv/RoTable.kt |   7 +-
 .../apache/isis/client/kroviz/ui/kv/RoToolPanel.kt | 115 ------------------
 .../apache/isis/client/kroviz/ui/kv/UiManager.kt   |   5 +-
 .../apache/isis/client/kroviz/utils/IconManager.kt |  24 ++--
 .../org/apache/isis/client/kroviz/utils/Utils.kt   |  50 ++++----
 .../kroviz/src/main/resources/css/kroviz.css       |  34 +++++-
 17 files changed, 462 insertions(+), 227 deletions(-)

diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/event/EventStore.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/event/EventStore.kt
index eb7cfef..0ac65fc 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/event/EventStore.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/event/EventStore.kt
@@ -2,6 +2,7 @@ package org.apache.isis.client.kroviz.core.event
 
 import org.apache.isis.client.kroviz.core.aggregator.BaseAggregator
 import org.apache.isis.client.kroviz.to.TObject
+import org.apache.isis.client.kroviz.to.mb.Menubars
 import org.apache.isis.client.kroviz.ui.kv.UiManager
 import pl.treksoft.kvision.panel.SimplePanel
 import pl.treksoft.kvision.state.observableListOf
@@ -107,6 +108,14 @@ object EventStore {
         return null
     }
 
+    fun findMenuBars(): LogEntry? {
+        this.log.forEach {
+           if (it.obj is Menubars)
+                return it
+        }
+        return null
+    }
+
     internal fun findExact(reSpec: ResourceSpecification): LogEntry? {
         return log.firstOrNull { it.matches(reSpec) }
     }
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/model/DisplayModel.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/model/DisplayModel.kt
index 9738c4b..045d05e 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/model/DisplayModel.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/model/DisplayModel.kt
@@ -22,13 +22,4 @@ abstract class DisplayModel {
         // subclass responsibility
     }
 
-    fun extractTitle(): String {
-        val strList = this.title.split("/")
-        val len = strList.size
-        var answer = ""
-        if (len > 2) answer =
-                strList[len - 2]
-        return answer
-    }
-
 }
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/ChartTab.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/ChartTab.kt
new file mode 100644
index 0000000..4276382
--- /dev/null
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/ChartTab.kt
@@ -0,0 +1,121 @@
+package org.apache.isis.client.kroviz.ui.kv
+
+import pl.treksoft.kvision.chart.*
+import pl.treksoft.kvision.core.Col
+import pl.treksoft.kvision.core.Color
+import pl.treksoft.kvision.i18n.I18n.tr
+import pl.treksoft.kvision.panel.SimplePanel
+import pl.treksoft.kvision.panel.gridPanel
+import pl.treksoft.kvision.utils.obj
+import pl.treksoft.kvision.utils.px
+import kotlin.math.sin
+
+class ChartTab : SimplePanel() {
+    init {
+        this.marginTop = 10.px
+
+        gridPanel(templateColumns = "50% 50%", columnGap = 30, rowGap = 30) {
+            @Suppress("UnsafeCastFromDynamic")
+            chart(
+                    Configuration(
+                            ChartType.SCATTER,
+                            listOf(
+                                    DataSets(
+                                            pointBorderColor = listOf(Color.name(Col.RED)),
+                                            backgroundColor = listOf(Color.name(Col.LIGHTGREEN)),
+                                            data = (-60..60).map {
+                                                obj {
+                                                    x = it.toDouble() / 10
+                                                    y = sin(it.toDouble() / 10)
+                                                }
+                                            }
+                                    )
+                            ),
+                            options = ChartOptions(legend = LegendOptions(display = false), showLines = true)
+                    )
+            )
+            chart(
+                    Configuration(
+                            ChartType.BAR,
+                            listOf(
+                                    DataSets(
+                                            data = listOf(6, 12, 19, 13, 7, 3),
+                                            backgroundColor = listOf(
+                                                    Color.hex(0xC0504D),
+                                                    Color.hex(0xF79646),
+                                                    Color.hex(0x9BBB59),
+                                                    Color.hex(0x4BACC6),
+                                                    Color.hex(0x4F81BD),
+                                                    Color.hex(0x8064A2)
+                                            )
+                                    )
+                            ),
+                            listOf(
+                                    tr("Africa"),
+                                    tr("Asia"),
+                                    tr("Europe"),
+                                    tr("Latin America"),
+                                    tr("North America"),
+                                    tr("Australia")
+                            ),
+                            ChartOptions(legend = LegendOptions(display = false), scales = ChartScales(yAxes = listOf(obj {
+                                ticks = obj {
+                                    suggestedMin = 0
+                                    suggestedMax = 20
+                                }
+                            })), title = TitleOptions(display = false))
+                    )
+            )
+            chart(
+                    Configuration(
+                            ChartType.PIE,
+                            listOf(
+                                    DataSets(
+                                            data = listOf(6, 12, 19, 13, 7, 3),
+                                            backgroundColor = listOf(
+                                                    Color.hex(0xC0504D),
+                                                    Color.hex(0xF79646),
+                                                    Color.hex(0x9BBB59),
+                                                    Color.hex(0x4BACC6),
+                                                    Color.hex(0x4F81BD),
+                                                    Color.hex(0x8064A2)
+                                            )
+                                    )
+                            ), listOf(
+                            tr("Africa"),
+                            tr("Asia"),
+                            tr("Europe"),
+                            tr("Latin America"),
+                            tr("North America"),
+                            tr("Australia")
+                    )
+                    )
+            )
+            chart(
+                    Configuration(
+                            ChartType.POLARAREA,
+                            listOf(
+                                    DataSets(
+                                            data = listOf(6, 12, 19, 13, 7, 3),
+                                            backgroundColor = listOf(
+                                                    Color.hex(0xC0504D),
+                                                    Color.hex(0xF79646),
+                                                    Color.hex(0x9BBB59),
+                                                    Color.hex(0x4BACC6),
+                                                    Color.hex(0x4F81BD),
+                                                    Color.hex(0x8064A2)
+                                            )
+                                    )
+                            ), listOf(
+                            tr("Africa"),
+                            tr("Asia"),
+                            tr("Europe"),
+                            tr("Latin America"),
+                            tr("North America"),
+                            tr("Australia")
+                    )
+                    )
+            )
+        }
+    }
+}
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/ColumnFactory.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/ColumnFactory.kt
index a7cec95..121b871 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/ColumnFactory.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/ColumnFactory.kt
@@ -70,7 +70,7 @@ class ColumnFactory {
         return ColumnDefinition<dynamic>(
                 "",
                 field = "iconName",
-                align = Align.CENTER,
+                hozAlign = Align.CENTER,
                 width = "40",
                 formatterComponentFunction = { _, _, data ->
                     buildButton(data, data["iconName"] as? String)
@@ -83,7 +83,7 @@ class ColumnFactory {
             UiManager.displayModel(tObject)
         }
         val logEntry = EventStore.find(tObject)!!
-        b.setDragDropData(RoToolPanel.format, logEntry.url)
+        b.setDragDropData(Constants.format, logEntry.url)
         return b
     }
 
@@ -113,7 +113,7 @@ class ColumnFactory {
                                        obj {"<i class='fa fa-square-o'></i>"}
                                    }
                                }, */
-                align = Align.CENTER,
+                hozAlign = Align.CENTER,
                 width = "40",
                 headerSort = false,
                 cellClick = { evt, cell ->
@@ -127,7 +127,7 @@ class ColumnFactory {
                 field = "iconName", // any existing field can be used
                 formatter = Formatter.TICKCROSS,
                 formatterParams = menuFormatterParams,
-                align = Align.CENTER,
+                hozAlign = Align.CENTER,
                 width = "60",
                 headerSort = false,
                 formatterComponentFunction = { _, _, data ->
@@ -135,7 +135,7 @@ class ColumnFactory {
                     MenuFactory.buildFor(
                             tObject,
                             false,
-                            ButtonStyle.LINK)
+                            style = ButtonStyle.LINK)
                 })
     }
 
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/Constants.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/Constants.kt
new file mode 100644
index 0000000..4afcbeb
--- /dev/null
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/Constants.kt
@@ -0,0 +1,8 @@
+package org.apache.isis.client.kroviz.ui.kv
+
+object Constants {
+
+    const val format = "text/plain"
+    const val calcHeight = "calc(100vh - 128px)"
+    const val actionSeparator = "\n"
+}
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/EventLogTable.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/EventLogTable.kt
index 06f94f2..7df1a88 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/EventLogTable.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/EventLogTable.kt
@@ -17,8 +17,6 @@ import pl.treksoft.kvision.utils.px
 
 class EventLogTable(val model: List<LogEntry>) : VPanel() {
 
-    private val calcHeight = "calc(100vh - 128px)"
-
     private val columns = listOf(
             ColumnDefinition(
                     title = "",
@@ -67,7 +65,7 @@ class EventLogTable(val model: List<LogEntry>) : VPanel() {
                 style = ButtonStyle.LINK).onClick {
             console.log(data)
         }
-        b.setDragDropData(RoToolPanel.format, data.url)
+        b.setDragDropData(Constants.format, data.url)
         return b
     }
 
@@ -80,7 +78,7 @@ class EventLogTable(val model: List<LogEntry>) : VPanel() {
 
         val options = TabulatorOptions(
                 movableColumns = true,
-                height = calcHeight,
+                height = Constants.calcHeight,
                 layout = Layout.FITCOLUMNS,
                 columns = columns,
                 persistenceMode = false
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/MenuFactory.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/MenuFactory.kt
index ed8d7c7..aa840b6 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/MenuFactory.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/MenuFactory.kt
@@ -1,52 +1,62 @@
 package org.apache.isis.client.kroviz.ui.kv
 
 import org.apache.isis.client.kroviz.core.aggregator.ActionDispatcher
+import org.apache.isis.client.kroviz.core.event.EventStore
 import org.apache.isis.client.kroviz.to.Link
 import org.apache.isis.client.kroviz.to.Member
 import org.apache.isis.client.kroviz.to.TObject
 import org.apache.isis.client.kroviz.to.mb.Menu
+import org.apache.isis.client.kroviz.to.mb.MenuEntry
+import org.apache.isis.client.kroviz.to.mb.Menubars
 import org.apache.isis.client.kroviz.utils.IconManager
 import org.apache.isis.client.kroviz.utils.Utils
 import pl.treksoft.kvision.core.Component
-import pl.treksoft.kvision.dropdown.Direction
 import pl.treksoft.kvision.dropdown.DropDown
-import pl.treksoft.kvision.dropdown.ddLink
 import pl.treksoft.kvision.dropdown.separator
 import pl.treksoft.kvision.html.ButtonStyle
+import pl.treksoft.kvision.utils.set
+import pl.treksoft.kvision.html.Link as KvisionHtmlLink
 
 object MenuFactory {
 
     fun buildFor(tObject: TObject,
                  withText: Boolean = true,
-                 style: ButtonStyle = ButtonStyle.LIGHT): DropDown {
+                 iconName: String = "Actions",
+                 style: ButtonStyle = ButtonStyle.LIGHT)
+            : DropDown {
         val type = tObject.domainType
-        val dd = DropDown(
-                type,
-                style = style,
-                direction = Direction.DROPDOWN
-        )
-        if (withText) {
-            dd.text = "Actions for $type"
-        } else {
-            dd.text = ""
-        }
-        dd.icon = IconManager.find("Actions")
+        val text = if (withText) "Actions for $type" else ""
+        val icon = IconManager.find(iconName)
+        val dd = DropDown(text = text, icon = icon, style = style)
         val actions = tObject.getActions()
         actions.forEach {
             val title = it.id
             val link = it.getInvokeLink()!!
-            action(dd, title, link)
+            val action = buildAction(title, link, text)
+            dd.add(action)
         }
         return dd
     }
 
-    fun buildFor(menu: Menu): DropDown {
-        val title = menu.named
-        val dd = DropDown(text = title, style = ButtonStyle.LIGHT, forNavbar = false)
-        dd.icon = IconManager.find(title)
+    fun buildFor(menu: Menu,
+                 style: ButtonStyle = ButtonStyle.LIGHT,
+                 withText: Boolean = true,
+                 classes: Set<String> = setOf())
+            : DropDown {
+        val menuTitle = menu.named
+        val dd = DropDown(
+                text = if (withText) menuTitle else "",
+                icon = IconManager.find(menuTitle),
+                style = style,
+                classes = classes,
+                forNavbar = false)
+        //dd.setDragDropData(Constants.format, menuTitle)
+        // action.setDragDropData gets always overridden by dd.setDragDropData
         menu.section.forEachIndexed { index, section ->
             section.serviceAction.forEach { sa ->
-                action(dd, sa.id!!, sa.link!!)
+                val action = buildAction(sa.id!!, sa.link!!, menuTitle)
+                action.setDragDropData(Constants.format, action.id!!)
+                dd.add(action)
             }
             if (index < menu.section.size - 1) {
                 dd.separator()
@@ -55,13 +65,70 @@ object MenuFactory {
         return dd
     }
 
-    private fun action(dd: DropDown, label: String, link: Link) {
+    fun buildForTitle(title: String): DropDown? {
+        val menu = findMenuByTitle(title)
+        return if (menu == null) null else
+            buildFor(
+                    menu = menu,
+                    withText = false)
+    }
+
+    private fun findMenuByTitle(title: String): Menu? {
+        val menuBars = EventStore.findMenuBars()!!.obj as Menubars
+        var menu = findMenu(menuBars.primary, title)
+        if (menu == null) menu = findMenu(menuBars.secondary, title)
+        if (menu == null) menu = findMenu(menuBars.tertiary, title)
+        return menu
+    }
+
+    private fun findMenu(menuEntry: MenuEntry, title: String): Menu? {
+        return menuEntry.menu.firstOrNull { it.named == title }
+    }
+
+    fun buildForAction(menuTitle: String, actionTitle: String): KvisionHtmlLink? {
+        val menu = findMenuByTitle(menuTitle)!!
+        menu.section.forEachIndexed { _, section ->
+            section.serviceAction.forEach { sa ->
+                if (actionTitle == sa.named) {
+                    val action = buildAction(sa.id!!, sa.link!!, menuTitle)
+                    action.label = ""
+                    return action
+                }
+            }
+        }
+        return null
+    }
+
+    private fun buildAction(label: String, link: Link, menuTitle: String): KvisionHtmlLink {
         val icon = IconManager.find(label)
         val classes = IconManager.findStyleFor(label)
-        val title = Utils.deCamel(label)
-        dd.ddLink(title, icon = icon, classes = classes).onClick {
+        val actionTitle = Utils.deCamel(label)
+        val action: KvisionHtmlLink = ddLink(actionTitle, icon = icon, classes = classes)
+        action.onClick {
             ActionDispatcher().invoke(link)
         }
+        val title = "$menuTitle${Constants.actionSeparator}$actionTitle"
+        action.setDragDropData(Constants.format, title)
+        action.id = title
+        return action
+    }
+
+    private fun ddLink(
+            label: String,
+            icon: String? = null,
+            classes: Set<String>? = null,
+            init: (KvisionHtmlLink.() -> Unit)? = null
+    ): KvisionHtmlLink {
+        return KvisionHtmlLink(
+                label = label,
+                url = null,
+                icon = icon,
+                image = null,
+                separator = null,
+                labelFirst = true,
+                classes = (classes ?: null.set) + "dropdown-item").apply {
+            init?.invoke(this)
+        }
     }
 
     // initially added items will be enabled
@@ -69,10 +136,18 @@ object MenuFactory {
         dd.separator()
 
         val saveLink = tObject.links.first()
-        action(dd, "save", saveLink)
+        val saveAction = buildAction(
+                label = "save",
+                link = saveLink,
+                menuTitle = tObject.domainType)
+        dd.add(saveAction)
 
         val undoLink = Link(href = "")
-        action(dd, "undo", undoLink)
+        val undoAction = buildAction(
+                label = "undo",
+                link = undoLink,
+                menuTitle = tObject.domainType)
+        dd.add(undoAction)
     }
 
     // disabled when tObject.isClean
@@ -102,7 +177,7 @@ object MenuFactory {
         menuItem.addCssClass(to)
     }
 
-    fun Member.getInvokeLink(): Link? {
+    private fun Member.getInvokeLink(): Link? {
         return links.firstOrNull { it.rel.indexOf(id) > 0 }
     }
 
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/RoApp.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/RoApp.kt
index 5625c95..85fe59c 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/RoApp.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/RoApp.kt
@@ -8,7 +8,7 @@ object RoApp : SimplePanel() {
         this.add(RoMenuBar.navbar)
 
         val view = HPanel()
-        view.add(RoToolPanel.panel)
+        view.add(RoIconBar.panel)
         view.add(RoView.tabPanel)
         this.add(view)
 
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/RoIconBar.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/RoIconBar.kt
new file mode 100644
index 0000000..7a01de3
--- /dev/null
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/RoIconBar.kt
@@ -0,0 +1,134 @@
+package org.apache.isis.client.kroviz.ui.kv
+
+import org.apache.isis.client.kroviz.core.event.EventStore
+import org.apache.isis.client.kroviz.core.event.ResourceSpecification
+import org.apache.isis.client.kroviz.core.model.Exposer
+import org.apache.isis.client.kroviz.to.TObject
+import org.apache.isis.client.kroviz.ui.kv.MenuFactory.buildForTitle
+import org.apache.isis.client.kroviz.utils.IconManager
+import org.apache.isis.client.kroviz.utils.Utils
+import pl.treksoft.kvision.core.CssSize
+import pl.treksoft.kvision.core.UNIT
+import pl.treksoft.kvision.core.Widget
+import pl.treksoft.kvision.dropdown.DropDown
+import pl.treksoft.kvision.html.Button
+import pl.treksoft.kvision.html.ButtonStyle
+import pl.treksoft.kvision.panel.SimplePanel
+import pl.treksoft.kvision.panel.VPanel
+import kotlin.browser.document
+import kotlin.dom.removeClass
+
+object RoIconBar : SimplePanel() {
+
+    val panel = VPanel()
+    private val icons = mutableListOf<SimplePanel>()
+
+    init {
+        panel.addCssClass("icon-bar")
+        panel.title = "Drop objects, factories, or actions here"
+        this.add(createDeleteIcon())
+        panel.setDropTargetData(Constants.format) { id ->
+            when {
+                Utils.isUrl(id!!) ->
+                    this.add(createObjectIcon(id)!!)
+                id.contains(Constants.actionSeparator) ->
+                    this.add(createActionIcon(id))
+                else ->
+                    this.add(createFactoryIcon(id))
+            }
+        }
+        hide()
+    }
+
+    private fun add(icon: SimplePanel) {
+        icons.add(icon)
+        panel.add(icon)
+    }
+
+    fun toggle() {
+        if (panel.width?.first == 0) show() else hide()
+    }
+
+    override fun hide(): Widget {
+        panel.width = CssSize(0, UNIT.px)
+        panel.removeAll()
+        return super.hide()
+    }
+
+    override fun show(): Widget {
+        panel.width = CssSize(40, UNIT.px)
+        icons.forEach { panel.add(it) }
+        return super.show()
+    }
+
+    private fun createDeleteIcon(): Button {
+        val del = Button(
+                text = "",
+                icon = IconManager.find("Delete"),
+                style = ButtonStyle.LIGHT).apply {
+            padding = CssSize(-16, UNIT.px)
+            margin = CssSize(0, UNIT.px)
+            title = "Drop icon here in order to remove it"
+        }
+        del.setDropTargetData(Constants.format) {
+            icons.forEach { ii ->
+                if (ii.id == it) {
+                    icons.remove(ii)
+                    panel.remove(ii)
+                }
+            }
+        }
+        return del
+    }
+
+    private fun createObjectIcon(url: String): DropDown? {
+        val reSpec = ResourceSpecification(url)
+        val logEntry = EventStore.find(reSpec)!!
+        val obj = logEntry.obj!!
+        return if (obj is TObject) {
+            val exp = Exposer(obj)
+            val ed = exp.dynamise()
+            val hasIconName = ed.hasOwnProperty("iconName") as Boolean
+            val iconName = if (hasIconName) (ed["iconName"] as String) else ""
+
+            val icon = MenuFactory.buildFor(
+                    tObject = obj,
+                    iconName = iconName,
+                    withText = false)
+            val title = Utils.extractTitle(logEntry.title)
+            initIcon(icon, url, title, "icon-bar-object", icon.buttonId()!!)
+            icon
+        } else null
+    }
+
+    private fun createActionIcon(id: String): SimplePanel {
+        val titles = id.split(Constants.actionSeparator)
+        val menuTitle = titles[0]
+        val actionTitle = titles[1]
+        val icon = MenuFactory.buildForAction(menuTitle, actionTitle)!!
+        return initIcon(icon, id, id, "icon-bar-action", icon.id!!)
+    }
+
+    private fun createFactoryIcon(id: String): SimplePanel {
+        val icon = buildForTitle(id)!!
+        return initIcon(icon, id, id, "icon-bar-factory", icon.buttonId()!!)
+    }
+
+    private fun initIcon(icon: SimplePanel,
+                         id: String,
+                         title: String,
+                         cssClass: String,
+                         btnId: String)
+            : SimplePanel {
+        icon.setDragDropData(Constants.format, id)
+        icon.id = id
+        icon.title = title
+        icon.addCssClass(cssClass)
+        icon.afterInsertHook = {
+            val btn = document.getElementById(btnId)!!
+            btn.removeClass("dropdown-toggle")
+        }
+        return icon
+    }
+
+}
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/RoMenuBar.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/RoMenuBar.kt
index c519fcf..8aca267 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/RoMenuBar.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/RoMenuBar.kt
@@ -36,10 +36,9 @@ object RoMenuBar : SimplePanel() {
     }
 
     private fun buildMainMenu(): DropDown {
-        val iconName = IconManager.find("Burger")
         return dropDown(
                 "",
-                icon = iconName,
+                icon = IconManager.find("Burger"),
                 forNavbar = false,
                 style = ButtonStyle.LIGHT)
         {
@@ -51,11 +50,11 @@ object RoMenuBar : SimplePanel() {
                 LoginPrompt().open(at)
             }
 
-            val toolTitle = "Toolbox"
+            val toolTitle = "Toolbar"
             ddLink(toolTitle,
                     icon = IconManager.find(toolTitle)
             ).onClick {
-                RoToolPanel.toggle()
+                RoIconBar.toggle()
             }
 
             val sampleTitle = "History"
@@ -72,13 +71,21 @@ object RoMenuBar : SimplePanel() {
             ).onClick {
                 ExportDialog().open()
             }
+
+            val chartTitle = "Sample Chart"
+            ddLink(chartTitle,
+                    icon = IconManager.find("Chart")
+            ).onClick {
+                UiManager.add(chartTitle, ChartTab())
+            }
         }
     }
 
     fun amendMenu(menuBars: Menubars) {
         logoButton()
         menuBars.primary.menu.forEach { m ->
-            nav.add(MenuFactory.buildFor(m))
+            val dd = MenuFactory.buildFor(m)
+            if (dd.getChildren().isNotEmpty()) nav.add(dd)
         }
         nav.add(MenuFactory.buildFor(menuBars.secondary.menu.first()))
         nav.add(MenuFactory.buildFor(menuBars.tertiary.menu.first()))
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/RoSimplePanel.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/RoSimplePanel.kt
deleted file mode 100644
index ee03e52..0000000
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/RoSimplePanel.kt
+++ /dev/null
@@ -1,11 +0,0 @@
-package org.apache.isis.client.kroviz.ui.kv
-
-import org.apache.isis.client.kroviz.core.model.DisplayModel
-import pl.treksoft.kvision.panel.SimplePanel
-
-class RoSimplePanel(displayable: DisplayModel) : SimplePanel() {
-    init {
-        title = displayable.extractTitle()
-    }
-
-}
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/RoTable.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/RoTable.kt
index 8c6f071..356f0cb 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/RoTable.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/RoTable.kt
@@ -2,6 +2,7 @@ package org.apache.isis.client.kroviz.ui.kv
 
 import org.apache.isis.client.kroviz.core.model.Exposer
 import org.apache.isis.client.kroviz.core.model.ListDM
+import org.apache.isis.client.kroviz.utils.Utils
 import pl.treksoft.kvision.core.CssSize
 import pl.treksoft.kvision.core.UNIT
 import pl.treksoft.kvision.panel.SimplePanel
@@ -19,10 +20,8 @@ import pl.treksoft.kvision.tabulator.tabulator
  */
 class RoTable(displayList: ListDM) : SimplePanel() {
 
-    private val calcHeight = "calc(100vh - 128px)"
-
     init {
-        title = displayList.extractTitle()
+        title = Utils.extractTitle(displayList.title)
         width = CssSize(100, UNIT.perc)
         val model = displayList.data
         val columns = ColumnFactory().buildColumns(
@@ -30,7 +29,7 @@ class RoTable(displayList: ListDM) : SimplePanel() {
                 true)
         val options = TabulatorOptions(
                 movableColumns = true,
-                height = calcHeight,
+                height = Constants.calcHeight,
                 layout = Layout.FITCOLUMNS,
                 columns = columns,
                 persistenceMode = false//,
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/RoToolPanel.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/RoToolPanel.kt
deleted file mode 100644
index a7289ee..0000000
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/RoToolPanel.kt
+++ /dev/null
@@ -1,115 +0,0 @@
-package org.apache.isis.client.kroviz.ui.kv
-
-import kotlinx.serialization.UnstableDefault
-import org.apache.isis.client.kroviz.core.event.EventStore
-import org.apache.isis.client.kroviz.core.event.ResourceSpecification
-import org.apache.isis.client.kroviz.core.model.Exposer
-import org.apache.isis.client.kroviz.to.TObject
-import org.apache.isis.client.kroviz.ui.BrowserWindow
-import org.apache.isis.client.kroviz.utils.IconManager
-import pl.treksoft.kvision.core.*
-import pl.treksoft.kvision.html.Button
-import pl.treksoft.kvision.html.ButtonStyle
-import pl.treksoft.kvision.panel.SimplePanel
-import pl.treksoft.kvision.panel.VPanel
-
-@OptIn(UnstableDefault::class)
-object RoToolPanel : SimplePanel() {
-
-    const val format = "text/plain"
-    val panel = VPanel()
-    private val buttons = mutableListOf<Button>()
-
-    init {
-        panel.marginTop = CssSize(40, UNIT.px)
-        panel.width = CssSize(40, UNIT.px)
-        panel.height = CssSize(100, UNIT.perc)
-        panel.background = Background(color = Color.name(Col.GHOSTWHITE))
-        panel.setDropTargetData(format) { url ->
-            val reSpec = ResourceSpecification(url!!)
-            val logEntry = EventStore.find(reSpec)!!
-            val obj = logEntry.obj!!
-            if (obj is TObject) {
-                val exp = Exposer(obj)
-                addButton(exp)
-            }
-        }
-
-        initButtons()
-        panel.addAll(buttons)
-    }
-
-    private fun initButtons() {
-        val drop: Button = buildButton("Toolbox", "Sample drop target")
-        drop.setDropTarget(format) {
-            //IMPROVE use string for wikipedia search
-            BrowserWindow("http://isis.apache.org").open()
-        }
-        buttons.add(drop)
-        //
-        val drag = buildButton("Object", "Sample drag object")
-        drag.setDragDropData(format, "element")
-        buttons.add(drag)
-    }
-
-    fun toggle() {
-        if (panel.width?.first == 0) show() else hide()
-    }
-
-    override fun hide(): Widget {
-        panel.width = CssSize(0, UNIT.px)
-        panel.removeAll()
-        return super.hide()
-    }
-
-    override fun show(): Widget {
-        panel.width = CssSize(40, UNIT.px)
-        buttons.forEach { panel.add(it) }
-        return super.show()
-    }
-
-    private fun addButton(exp: Exposer) {
-        var iconName = ""
-        val ed = exp.dynamise()
-        if (ed.hasOwnProperty("iconName") as Boolean) {
-            iconName = ed["iconName"] as String
-        }
-        val b = buildButton(iconName, "dynamic sample")
-        val tObject = exp.delegate
-        val m = MenuFactory.buildFor(
-                tObject,
-                false,
-                ButtonStyle.LINK)
-        console.log("[RoToolPanel.addButton]")
-        console.log(exp)
-        console.log(m)
-        b.apply {
-            onEvent {
-                dblclick = {
-                    console.log("dblclick")
-                    m.toggle()
-                    m.show()
-                }
-            }
-        }
-        buttons.add(b)
-        panel.add(b)
-    }
-
-    private fun buildButton(iconName: String, toolTip: String): Button {
-        val icon =
-                if (iconName.startsWith("fa")) iconName else {
-                    IconManager.find(iconName)
-                }
-        val b = Button(
-                text = "",
-                icon = icon,
-                style = ButtonStyle.LINK).apply {
-            padding = CssSize(-16, UNIT.px)
-            margin = CssSize(0, UNIT.px)
-            title = toolTip
-        }
-        return b
-    }
-
-}
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/UiManager.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/UiManager.kt
index 2ccfcc0..290ed5b 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/UiManager.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/UiManager.kt
@@ -11,6 +11,7 @@ import org.apache.isis.client.kroviz.core.model.ListDM
 import org.apache.isis.client.kroviz.core.model.ObjectDM
 import org.apache.isis.client.kroviz.to.TObject
 import org.apache.isis.client.kroviz.to.mb.Menubars
+import org.apache.isis.client.kroviz.utils.Utils
 import org.w3c.dom.events.KeyboardEvent
 import pl.treksoft.kvision.core.Component
 import pl.treksoft.kvision.core.Widget
@@ -82,7 +83,7 @@ object UiManager {
 
     fun openListView(aggregator: BaseAggregator) {
         val displayable = aggregator.dsp
-        val title: String = displayable.extractTitle()
+        val title: String = Utils.extractTitle(displayable.title)
         val panel = RoTable(displayable as ListDM)
         add(title, panel, aggregator)
         displayable.isRendered = true
@@ -90,7 +91,7 @@ object UiManager {
 
     fun openObjectView(aggregator: ObjectAggregator) {
         val dm = aggregator.dsp as ObjectDM
-        var title: String = dm.extractTitle()
+        var title: String = Utils.extractTitle(dm.title)
         if (title.isEmpty()) {
             title = aggregator.actionTitle
         }
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/utils/IconManager.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/utils/IconManager.kt
index 86fe7e6..4a949af 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/utils/IconManager.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/utils/IconManager.kt
@@ -1,21 +1,22 @@
 package org.apache.isis.client.kroviz.utils
 
 object IconManager {
-    val PREFIX = "fas fa-"
-    val DEFAULT_ICON = PREFIX + "bolt"
+    private const val PREFIX = "fas fa-"
+    const val DEFAULT_ICON = PREFIX + "bolt"
 
     const val DANGER = "text-danger"
     const val DISABLED = "text-disabled"
-    const val NORMAL = "text-normal"
+    private const val NORMAL = "text-normal"
     const val OK = "text-ok"
     const val WARN = "text-warn"
 
     /* Merge with configuration values*/
-    val word2Icon = mapOf<String, String>(
+    private val word2Icon = mapOf(
             "All" to "asterisk",
             "Actions" to "ellipsis-v",
             "Blobs" to "cloud",
             "Burger" to "bars",
+            "Chart" to "magic",
             "Close" to "times",
             "Configuration" to "wrench",
             "Connect" to "plug",
@@ -59,7 +60,7 @@ object IconManager {
             "Target" to "bullseye",
             "Text" to "font",
             "Toast" to "bread-slice", //comment-alt-plus/minus/exclamation
-            "Toolbox" to "magic",
+            "Toolbar" to "step-backward",
             "Tooltips" to "comment-alt",
             "Temporals" to "clock",
             "Trees" to "tree",
@@ -69,10 +70,11 @@ object IconManager {
             "Wikipedia" to "wikipedia-w")
 
     fun find(query: String): String {
+        if (query.startsWith("fa")) return query
         val actionTitle = Utils.deCamel(query)
         val mixedCaseList = actionTitle.split(" ")
         for (w in mixedCaseList) {
-            val hit = word2Icon.get(w)
+            val hit = word2Icon[w]
             if (hit != null) {
                 return PREFIX + hit
             }
@@ -81,11 +83,11 @@ object IconManager {
     }
 
     fun findStyleFor(actionName: String): Set<String> {
-        when {
-            actionName == "delete" -> return setOf(DANGER)
-            actionName == "undo" -> return setOf(WARN)
-            actionName == "save" -> return setOf(OK)
-            else -> return setOf(NORMAL)
+        return when (actionName) {
+            "delete" -> setOf(DANGER)
+            "undo" -> setOf(WARN)
+            "save" -> setOf(OK)
+            else -> setOf(NORMAL)
         }
     }
 
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/utils/Utils.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/utils/Utils.kt
index 1dbd0d7..d8e9891 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/utils/Utils.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/utils/Utils.kt
@@ -10,7 +10,7 @@ object Utils {
         var output = ""
         val words = input.split(" ")
         for (w in words) {
-            output = output + w.capitalize()
+            output += w.capitalize()
         }
         return decapitalize(output)
     }
@@ -22,26 +22,18 @@ object Utils {
 
     fun deCamel(input: String): String {
         var output = ""
-        var i = 0
-        for (c in input) {
+        for ((i, c) in input.withIndex()) {
+            val cuc = c.toUpperCase()
             if (i == 0) {
-                output += c.toUpperCase()
+                output += cuc
             } else {
-                val o = if (c.toUpperCase() == c) {
-                    " $c"
-                } else {
-                    c.toString()
-                }
+                val o = if (cuc == c) " $c" else c.toString()
                 output += o
             }
-            i++
         }
         // Skip acronyms like OK, USA
         val outputWithoutWhiteSpace = output.replace("\\s".toRegex(), "")
-        if (input.equals(outputWithoutWhiteSpace)) {
-            return input
-        }
-        return output
+        return if (input == outputWithoutWhiteSpace) input else output
     }
 
     fun removeHexCode(input: String): String {
@@ -50,11 +42,7 @@ object Utils {
         //split string by "/" and remove parts longer than 40chars
         list.forEach { s ->
             output += "/"
-            output += if (s.length > 40) {
-                "..."
-            } else {
-                s
-            }
+            output += if (s.length > 40) "..." else s
         }
         return output
     }
@@ -102,9 +90,7 @@ object Utils {
             start: String,
             sep: String,
             end: String): String {
-        if (args.isNullOrEmpty()) {
-            return ""
-        } else {
+        return if (args.isNullOrEmpty()) "" else {
             var answer = start
             args.forEach { kv ->
                 val arg = kv.value!!
@@ -112,7 +98,7 @@ object Utils {
             }
             val len = answer.length
             answer = answer.replaceRange(len - 1, len, end)
-            return answer
+            answer
         }
     }
 
@@ -121,9 +107,7 @@ object Utils {
             start: String,
             sep: String,
             end: String): String {
-        if (args.isNullOrEmpty()) {
-            return ""
-        } else {
+        return if (args.isNullOrEmpty()) "" else {
             var answer = start
             args.forEach { kv ->
                 val arg = kv.value!!
@@ -131,13 +115,13 @@ object Utils {
             }
             val len = answer.length
             answer = answer.replaceRange(len - 1, len, end)
-            return answer
+            answer
         }
     }
 
     internal fun asBody(arg: Argument): String {
         var v = arg.value!!
-        val isHttp = v.startsWith("http")
+        val isHttp = isUrl(v)
         v = quote(v)
         if (isHttp) {
             v = enbrace("href", v)
@@ -145,6 +129,10 @@ object Utils {
         return quote(arg.key) + ": " + enbrace("value", v)
     }
 
+    fun isUrl(s: String): Boolean {
+        return s.startsWith("http")
+    }
+
     private fun enbrace(k: String, v: String): String {
         return "{" + quote(k) + ": " + v + "}"
     }
@@ -158,4 +146,10 @@ object Utils {
         return JSON.stringify(s1, null, 2)
     }
 
+    fun extractTitle(title: String): String {
+        val strList = title.split("/")
+        val len = strList.size
+        return if (len > 2) strList[len - 2] else ""
+    }
+
 }
diff --git a/incubator/clients/kroviz/src/main/resources/css/kroviz.css b/incubator/clients/kroviz/src/main/resources/css/kroviz.css
index cc16a33..b2e24ed 100644
--- a/incubator/clients/kroviz/src/main/resources/css/kroviz.css
+++ b/incubator/clients/kroviz/src/main/resources/css/kroviz.css
@@ -71,7 +71,7 @@ label.control-label {
 }
 
 pre.highlight {
-    margin: 7px 0px;
+    margin: 7px 0;
     padding: 14px;
     background: #FDF6E3;
 }
@@ -118,7 +118,7 @@ textarea {
 }
 
 div {
-   /* font-family: Chicago, sans-serif;*/
+    /* font-family: Chicago, sans-serif;*/
 }
 
 .logo-button-image:before {
@@ -128,10 +128,10 @@ div {
     display: inline-block;
     vertical-align: text-top;
     background-color: transparent;
-    background-position : center center;
-    background-repeat:no-repeat;
+    background-position: center center;
+    background-repeat: no-repeat;
     background-size: contain, cover;
-    background-image : url("https://svn.apache.org/repos/asf/comdev/project-logos/originals/isis.svg");
+    background-image: url("https://svn.apache.org/repos/asf/comdev/project-logos/originals/isis.svg");
 }
 
 /*background-image: url("https://www.apache.org/img/ASF20thAnniversary.jpg");*/
@@ -142,5 +142,27 @@ https://svn.apache.org/repos/asf/comdev/project-logos/originals/isis.svg
 */
 
 .kv-window {
-  /* background-color: rgba(255,255,255, 0) !important;*/
+    /* background-color: rgba(255,255,255, 0) !important;*/
+}
+
+.icon-bar-object > .btn {
+    color: #007bff;
+}
+
+.icon-bar-factory > .btn {
+    color: green;
+}
+
+.icon-bar-action {
+    color: orange !important;
+    padding-left: 12px !important;
+    padding-right: 12px !important;
+}
+
+.icon-bar {
+    margin-top: 40px;
+    width: 40px;
+    height: calc(100vh - 80px);
+    scroll-behavior: auto;
+    background: GHOSTWHITE;
 }


[isis] 09/09: Merge remote-tracking branch 'origin/master'

Posted by jo...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

joergrade pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git

commit a52d01bd63a4b9afb669da97688aef7388689a19
Merge: e40663b c81c658
Author: Jörg Rade <jo...@kuehne-nagel.com>
AuthorDate: Sat Jun 20 22:25:26 2020 +0200

    Merge remote-tracking branch 'origin/master'

 .../apache/isis/core/config/IsisConfiguration.java |  10 ++
 .../i18n/po/TranslationServicePo.java              |  12 +-
 .../i18n/po/TranslationServicePoMenu.java          |  40 +++++--
 .../demoapp/dom/_infra/AsciiDocReaderService.java  |   2 +-
 .../_infra/DefaultTitleProvider.java}              |  31 ++++--
 .../{ => asciidocdesc}/HasAsciiDocDescription.java |   2 +-
 .../asciidocdesc/HasAsciiDocDescription.svg}       |   0
 .../HasAsciiDocDescription_description.java        |   4 +-
 .../HasAsciiDocDescription_sources.java            |   4 +-
 .../_infra/utils/HtmlUtils.java}                   |  21 ++--
 .../_infra/utils/LogUtils.java}                    |   7 +-
 .../{ => dom/_infra}/utils/ThereCanBeOnlyOne.java  |  20 +++-
 ....adoc => AssociatedActionDemo-description.adoc} |   0
 .../dom/actions/assoc/AssociatedActionDemo.java    |  27 +++--
 .../dom/actions/assoc/AssociatedActionMenu.java    |  18 ++-
 ...nDemo.adoc => AsyncActionDemo-description.adoc} |   0
 .../demoapp/dom/actions/async/AsyncActionDemo.java |   8 +-
 .../demoapp/dom/actions/async/AsyncActionMenu.java |   4 +-
 ...oc => DependentArgsActionDemo-description.adoc} |   0
 .../actions/depargs/DependentArgsActionDemo.java   |  12 +-
 .../actions/depargs/DependentArgsActionMenu.java   |   8 +-
 .../{ErrorDemo.adoc => ErrorDemo-description.adoc} |   0
 .../src/main/java/demoapp/dom/error/ErrorDemo.java |  10 +-
 .../src/main/java/demoapp/dom/error/ErrorMenu.java |   4 +-
 .../demoapp/dom/events/DemoEventSubscriber.java    |   2 +-
 ...EventsDemo.adoc => EventsDemo-description.adoc} |   0
 .../main/java/demoapp/dom/events/EventsDemo.java   |  10 +-
 .../java/demoapp/dom/events/EventsDemoMenu.java    |   4 +-
 .../java/demoapp/dom/homepage/DemoHomePage.java    |   2 +-
 .../{utils => dom/jee}/DemoRequestScopedBean.java  |   2 +-
 .../jee/{JeeDemo.adoc => JeeDemo-description.adoc} |   0
 .../src/main/java/demoapp/dom/jee/JeeDemo.java     |  11 +-
 .../src/main/java/demoapp/dom/jee/JeeMenu.java     |   1 -
 .../main/java/demoapp/dom/mixins/MixinDemo.java    |  18 +--
 .../main/java/demoapp/dom/mixins/MixinMenu.java    |  10 +-
 ...yDemo.adoc => MixinLegacyDemo-description.adoc} |   0
 .../demoapp/dom/mixins/legacy/MixinLegacyDemo.java |  19 +---
 .../demoapp/dom/mixins/legacy/MixinLegacyMenu.java |  12 +-
 .../domain/src/main/java/demoapp/dom/package.jdo   |   4 +
 .../{TabDemo.adoc => TabDemo-description.adoc}     |   0
 .../src/main/java/demoapp/dom/tabs/TabDemo.java    |  10 +-
 .../src/main/java/demoapp/dom/tabs/TabMenu.java    |   4 +-
 ...oltipDemo.adoc => TooltipDemo-description.adoc} |   0
 .../main/java/demoapp/dom/tooltip/TooltipDemo.java |  17 +--
 .../main/java/demoapp/dom/tooltip/TooltipMenu.java |  10 +-
 .../{TreeDemo.adoc => TreeDemo-description.adoc}   |   0
 .../src/main/java/demoapp/dom/tree/TreeDemo.java   |   8 +-
 .../main/java/demoapp/dom/tree/TreeDemoMenu.java   |  10 +-
 .../java/demoapp/dom/types/FeaturedTypesMenu.java  |  76 +++++++++++--
 .../{BlobDemo.adoc => BlobDemo-description.adoc}   |   0
 .../main/java/demoapp/dom/types/blob/BlobDemo.java |  21 +---
 .../{ClobDemo.adoc => ClobDemo-description.adoc}   |   0
 .../main/java/demoapp/dom/types/clob/ClobDemo.java |  23 +---
 ...MarkupDemo.adoc => MarkupDemo-description.adoc} |   0
 .../java/demoapp/dom/types/markup/MarkupDemo.java  |  22 +---
 ...esDemo.adoc => PrimitivesDemo-description.adoc} |   0
 .../dom/types/primitive/PrimitivesDemo.java        |  21 +---
 .../{TextDemo.adoc => TextDemo-description.adoc}   |   0
 .../main/java/demoapp/dom/types/text/TextDemo.java |  15 +--
 ...oralDemo.adoc => TemporalDemo-description.adoc} |   0
 .../java/demoapp/dom/types/time/TemporalDemo.java  |  18 +--
 .../{TupleDemo.adoc => TupleDemo-description.adoc} |   0
 .../java/demoapp/dom/types/tuple/TupleDemo.java    |  13 +--
 .../demoapp/dom/types/tuple/TupleDemoMenu.java     |  12 +-
 .../{UuidDemo.adoc => UuidDemo-description.adoc}   |   0
 .../main/java/demoapp/dom/types/uuid/UuidDemo.java |  13 +--
 .../dom/viewmodels/StatefulViewModelUsingJaxb.java |  53 ---------
 .../java/demoapp/dom/viewmodels/ViewModels.java    |  15 ++-
 .../viewmodels/jaxbrefentity/ChildEntities.java    |  36 ++++++
 .../dom/viewmodels/jaxbrefentity/ChildEntity.java  |  35 ++++++
 ...tatefulViewModelJaxbRefsEntity-description.adoc |   3 +
 .../StatefulViewModelJaxbRefsEntity.java           | 122 +++++++++++++++++++++
 .../StatefulViewModelJaxbRefsEntity.layout.xml}    |   3 +-
 .../fixtures/ChildEntitySeedService.java           |  44 ++++++++
 .../StatefulViewModelUsingJaxb-description.adoc    |  54 +++++++++
 .../usingjaxb/StatefulViewModelUsingJaxb.java      |  99 +++++++++++++++++
 .../StatefulViewModelUsingJaxb.layout.xml          |   6 +-
 .../src/main/java/demoapp/utils/DemoStub.java      | 110 -------------------
 .../main/java/demoapp/webapp/DemoAppManifest.java  |   6 +-
 .../main/java/demoapp/webapp/menubars.layout.xml   |  17 +--
 .../webapp/{ => notifications}/Notification.java   |   2 +-
 .../{ => notifications}/NotificationsResource.java |   3 +-
 examples/demo/jee/pom.xml                          |  50 ++++++++-
 .../main/java/demoapp/webapp/jee/DemoAppJee.java}  |   9 +-
 .../java/demoapp/webapp/jee/DemoAppSetupCdi.java   |  26 +++++
 .../demo/jee/src/main/resources/log4j2-spring.xml  |  60 ++++++++++
 .../java/demoapp/webapp/vaadin/DemoAppVaadin.java  |   2 +-
 examples/demo/wicket/pom.xml                       |   2 +-
 .../java/demoapp/webapp/wicket/DemoAppWicket.java  |   2 +-
 .../jdo/dom/user/ApplicationUserRepository.java    |  14 ++-
 .../shiro/IsisModuleExtSecmanShiroRealm.java       |  22 ++--
 .../adoc/modules/ROOT/pages/ro-spec.adoc           |   2 +-
 92 files changed, 898 insertions(+), 531 deletions(-)


[isis] 04/09: Merge branch 'ISIS-2374'

Posted by jo...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

joergrade pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git

commit fe1716e46e10b4ad2f716b85de13f499a8eda0da
Merge: 5b7d978 e45a763
Author: Jörg Rade <jo...@kuehne-nagel.com>
AuthorDate: Thu Jun 18 13:55:52 2020 +0200

    Merge branch 'ISIS-2374'

 api/applib/build.gradle                            |  24 --
 api/build.gradle                                   |   6 -
 api/gradle/wrapper/gradle-wrapper.properties       |   5 -
 api/gradlew                                        | 172 -------------
 api/gradlew.bat                                    |  84 -------
 api/schema/build.gradle                            |  12 -
 api/settings.gradle                                |  10 -
 build.gradle                                       |  27 ---
 .../gradle/wrapper/gradle-wrapper.properties       |   5 -
 core/codegen-bytebuddy/build.gradle                |  17 --
 core/commons/build.gradle                          |  26 --
 core/config/build.gradle                           |  17 --
 core/internaltestsupport/build.gradle              |  42 ----
 core/metamodel/build.gradle                        |  32 ---
 core/runtime/build.gradle                          |  17 --
 core/runtimeservices/build.gradle                  |  16 --
 core/security/build.gradle                         |  18 --
 core/webapp/build.gradle                           |  18 --
 examples/demo/domain/build.gradle                  |   2 -
 examples/demo/wicket/build.gradle                  |   5 -
 examples/smoketests/build.gradle                   |  22 --
 extensions/core/flyway/impl/build.gradle           |  15 --
 extensions/core/model-annotation/build.gradle      |  14 --
 extensions/security/secman/api/build.gradle        |   8 -
 .../secman/encryption-jbcrypt/build.gradle         |  14 --
 extensions/security/secman/model/build.gradle      |  13 -
 .../security/secman/persistence-jdo/build.gradle   |  16 --
 .../security/secman/shiro-realm/build.gradle       |  14 --
 .../security/shiro-realm-ldap/impl/build.gradle    |  12 -
 extensions/vro/cors/impl/build.gradle              |  14 --
 extensions/vw/exceldownload/ui/build.gradle        |  16 --
 extensions/vw/fullcalendar/applib/build.gradle     |  12 -
 extensions/vw/fullcalendar/ui/build.gradle         |  13 -
 extensions/vw/pdfjs/applib/build.gradle            |  12 -
 extensions/vw/pdfjs/metamodel/build.gradle         |  13 -
 extensions/vw/pdfjs/ui/build.gradle                |  12 -
 gradle/wrapper/gradle-wrapper.properties           |   6 -
 gradlew                                            | 172 -------------
 gradlew.bat                                        |  84 -------
 .../isis/client/kroviz/core/event/EventStore.kt    |   9 +
 .../isis/client/kroviz/core/model/DisplayModel.kt  |   9 -
 .../apache/isis/client/kroviz/ui/kv/ChartTab.kt    | 121 ++++++++++
 .../isis/client/kroviz/ui/kv/ColumnFactory.kt      |  10 +-
 .../apache/isis/client/kroviz/ui/kv/Constants.kt   |   8 +
 .../isis/client/kroviz/ui/kv/EventLogTable.kt      |   6 +-
 .../apache/isis/client/kroviz/ui/kv/MenuFactory.kt | 127 ++++++++--
 .../org/apache/isis/client/kroviz/ui/kv/RoApp.kt   |   2 +-
 .../apache/isis/client/kroviz/ui/kv/RoIconBar.kt   | 134 +++++++++++
 .../apache/isis/client/kroviz/ui/kv/RoMenuBar.kt   |  17 +-
 .../isis/client/kroviz/ui/kv/RoSimplePanel.kt      |  11 -
 .../org/apache/isis/client/kroviz/ui/kv/RoTable.kt |   7 +-
 .../apache/isis/client/kroviz/ui/kv/RoToolPanel.kt |  90 -------
 .../apache/isis/client/kroviz/ui/kv/UiManager.kt   |   5 +-
 .../apache/isis/client/kroviz/utils/IconManager.kt |  24 +-
 .../org/apache/isis/client/kroviz/utils/Utils.kt   |  50 ++--
 .../kroviz/src/main/resources/css/kroviz.css       |  34 ++-
 incubator/mappings/microprofile/build.gradle       |  18 --
 incubator/viewers/build.gradle                     |   6 -
 .../gradle/wrapper/gradle-wrapper.properties       |   5 -
 incubator/viewers/gradlew                          | 172 -------------
 incubator/viewers/gradlew.bat                      |  84 -------
 incubator/viewers/settings.gradle                  |  10 -
 incubator/viewers/vaadin/model/build.gradle        |  16 --
 incubator/viewers/vaadin/ui/build.gradle           |  17 --
 incubator/viewers/vaadin/viewer/build.gradle       |  11 -
 legacy/extensions/core/applib/build.gradle         |  17 --
 legacy/extensions/core/commons/build.gradle        |  17 --
 legacy/extensions/core/metamodel/build.gradle      |  20 --
 legacy/extensions/core/runtime/build.gradle        |  20 --
 legacy/mappings/restclient/build.gradle            |  14 --
 mappings/jaxrsclient/api/build.gradle              |  11 -
 mappings/restclient/api/build.gradle               |  13 -
 persistence/jdo/applib/build.gradle                |  14 --
 persistence/jdo/datanucleus-5/build.gradle         |  22 --
 persistence/jpa/applib/build.gradle                |  12 -
 persistence/jpa/model/build.gradle                 |  17 --
 security/bypass/build.gradle                       |  11 -
 security/keycloak/build.gradle                     |  14 --
 security/shiro/build.gradle                        |  18 --
 settings.gradle                                    | 268 ---------------------
 subdomains/base/applib/build.gradle                |  17 --
 subdomains/docx/applib/build.gradle                |  11 -
 subdomains/excel/applib/build.gradle               |  18 --
 subdomains/excel/fixture/build.gradle              |  15 --
 subdomains/excel/integtests/build.gradle           |  15 --
 subdomains/excel/testing/build.gradle              |  11 -
 subdomains/freemarker/applib/build.gradle          |  11 -
 subdomains/ognl/applib/build.gradle                |  11 -
 subdomains/pdfbox/applib/build.gradle              |  11 -
 subdomains/spring/applib/build.gradle              |  13 -
 subdomains/xdocreport/applib/build.gradle          |  18 --
 subdomains/zip/applib/build.gradle                 |  12 -
 testing/fakedata/applib/build.gradle               |  16 --
 testing/fakedata/fixtures/build.gradle             |  15 --
 testing/fakedata/integtests/build.gradle           |  13 -
 testing/fixtures/applib/build.gradle               |  17 --
 testing/h2console/ui/build.gradle                  |  12 -
 testing/hsqldbmgr/ui/build.gradle                  |  12 -
 testing/integtestsupport/applib/build.gradle       |  28 ---
 testing/specsupport/applib/build.gradle            |  17 --
 testing/unittestsupport/applib/build.gradle        |  33 ---
 valuetypes/asciidoc/applib/build.gradle            |  12 -
 valuetypes/asciidoc/ui/vaadin/build.gradle         |  12 -
 valuetypes/asciidoc/ui/wicket/build.gradle         |  12 -
 valuetypes/markdown/applib/build.gradle            |  12 -
 valuetypes/markdown/ui/build.gradle                |  17 --
 valuetypes/sse/applib/build.gradle                 |  14 --
 valuetypes/sse/metamodel/build.gradle              |  12 -
 valuetypes/sse/ui/build.gradle                     |  15 --
 viewers/common/build.gradle                        |  14 --
 viewers/restfulobjects/applib/build.gradle         |  14 --
 .../restfulobjects/jaxrs-resteasy-4/build.gradle   |  21 --
 viewers/restfulobjects/rendering/build.gradle      |  13 -
 viewers/restfulobjects/viewer/build.gradle         |  17 --
 viewers/wicket/model/build.gradle                  |  21 --
 viewers/wicket/ui/build.gradle                     |  80 ------
 viewers/wicket/viewer/build.gradle                 |  38 ---
 117 files changed, 462 insertions(+), 2716 deletions(-)


[isis] 05/09: ISIS-2350 Colours changed in SampleChart

Posted by jo...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

joergrade pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git

commit 8ee559a493f298704bb430d4d0d6ca93d8d34e92
Author: Jörg Rade <jo...@kuehne-nagel.com>
AuthorDate: Thu Jun 18 14:07:08 2020 +0200

    ISIS-2350 Colours changed in SampleChart
---
 .../src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/ChartTab.kt   | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/ChartTab.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/ChartTab.kt
index 4276382..52aedbb 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/ChartTab.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/ChartTab.kt
@@ -21,8 +21,8 @@ class ChartTab : SimplePanel() {
                             ChartType.SCATTER,
                             listOf(
                                     DataSets(
-                                            pointBorderColor = listOf(Color.name(Col.RED)),
-                                            backgroundColor = listOf(Color.name(Col.LIGHTGREEN)),
+                                            pointBorderColor = listOf(Color.hex(0xC0504D)),
+                                            backgroundColor = listOf(Color.hex(0x9BBB59)),
                                             data = (-60..60).map {
                                                 obj {
                                                     x = it.toDouble() / 10