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 2021/09/10 11:01:17 UTC
[isis] branch master updated (93e759e -> 4b97e55)
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 93e759e ISIS-2774: fixes annotation processing if having both field and getter annotated
new f463470 ISIS-2846 Create a LinkTreeDiagram (via PlantUML mindmap) from History/LogEntry
new c7a3900 ISIS-2846 Referrer introduced for easier link tree re-construction
new f848f38 ISIS-2846 link tree diagram works
new d80c042 ISIS-2846 link tree diagram works correctly
new 8ce7c80 ISIS-2846 link tree diagram works correctly, including extension properties
new 290c681 ISIS-2846 link tree diagram / clean up
new 4b97e55 Merge branch 'master' of https://github.com/apache/isis
The 7 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:
.../kroviz/core/aggregator/ActionDispatcher.kt | 19 +--
.../kroviz/core/aggregator/AggregatorWithLayout.kt | 24 ++-
.../kroviz/core/aggregator/BaseAggregator.kt | 11 +-
.../kroviz/core/aggregator/CollectionAggregator.kt | 44 +++---
.../core/aggregator/DomainTypesAggregator.kt | 4 +-
.../kroviz/core/aggregator/ObjectAggregator.kt | 22 +--
.../kroviz/core/aggregator/RestfulDispatcher.kt | 4 +-
.../isis/client/kroviz/core/event/EventStore.kt | 4 +-
.../isis/client/kroviz/core/event/LogEntry.kt | 18 ++-
.../client/kroviz/core/event/LogEntryDecorator.kt | 161 ---------------------
.../isis/client/kroviz/core/event/ResourceProxy.kt | 48 +++---
.../kroviz/core/event/ResourceSpecification.kt | 3 +-
.../client/kroviz/ui/diagram/LinkTreeDiagram.kt | 116 +++++++++++----
.../isis/client/kroviz/ui/diagram/PumlCode.kt | 97 +++++++++++++
.../apache/isis/client/kroviz/ui/diagram/Tree.kt | 53 ++++---
.../isis/client/kroviz/ui/dialog/DiagramDialog.kt | 27 +++-
.../isis/client/kroviz/ui/dialog/EventLogDetail.kt | 43 ++----
.../client/kroviz/ui/panel/DynamicMenuBuilder.kt | 15 +-
.../apache/isis/client/kroviz/utils/StringUtils.kt | 12 ++
.../kroviz/core/event/LogEntryDecoratorTest.kt | 4 +-
.../isis/client/kroviz/core/event/LogEntryTest.kt | 4 +-
.../isis/client/kroviz/ui/diagram/TreeTest.kt | 56 +++++++
.../isis/client/kroviz/util/StringUtilsTest.kt | 24 +++
23 files changed, 472 insertions(+), 341 deletions(-)
delete mode 100644 incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/event/LogEntryDecorator.kt
create mode 100644 incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/diagram/PumlCode.kt
copy core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/validator/MetaModelValidatorForAmbiguousMixinAnnotations.java => incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/diagram/Tree.kt (51%)
copy api/applib/src/test/java/org/apache/isis/applib/SomeDomainClass.java => incubator/clients/kroviz/src/test/kotlin/org/apache/isis/client/kroviz/core/event/LogEntryDecoratorTest.kt (91%)
create mode 100644 incubator/clients/kroviz/src/test/kotlin/org/apache/isis/client/kroviz/ui/diagram/TreeTest.kt
create mode 100644 incubator/clients/kroviz/src/test/kotlin/org/apache/isis/client/kroviz/util/StringUtilsTest.kt
[isis] 02/07: ISIS-2846 Referrer introduced for easier link tree
re-construction
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 c7a3900a8a50d42f00209a4c93caf18b3934474b
Author: Jörg Rade <jo...@kuehne-nagel.com>
AuthorDate: Mon Sep 6 15:23:24 2021 +0200
ISIS-2846 Referrer introduced for easier link tree re-construction
---
.../kroviz/core/aggregator/ActionDispatcher.kt | 19 +++---
.../kroviz/core/aggregator/AggregatorWithLayout.kt | 22 ++++--
.../kroviz/core/aggregator/BaseAggregator.kt | 11 ++-
.../kroviz/core/aggregator/CollectionAggregator.kt | 44 ++++++------
.../core/aggregator/DomainTypesAggregator.kt | 4 +-
.../kroviz/core/aggregator/ObjectAggregator.kt | 22 +++---
.../kroviz/core/aggregator/RestfulDispatcher.kt | 4 +-
.../isis/client/kroviz/core/event/EventStore.kt | 4 +-
.../isis/client/kroviz/core/event/LogEntry.kt | 16 ++---
.../client/kroviz/core/event/LogEntryDecorator.kt | 35 ++++++++++
.../isis/client/kroviz/core/event/ResourceProxy.kt | 16 +++--
.../kroviz/core/event/ResourceSpecification.kt | 3 +-
.../client/kroviz/ui/diagram/LinkTreeDiagram.kt | 55 ++++++++++-----
.../apache/isis/client/kroviz/ui/diagram/Node.kt | 30 +++++++++
.../isis/client/kroviz/ui/diagram/PumlCode.kt | 78 ++++++++++++++++++++++
15 files changed, 277 insertions(+), 86 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 aaf1ec0..68603d9 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
@@ -20,8 +20,8 @@ package org.apache.isis.client.kroviz.core.aggregator
import org.apache.isis.client.kroviz.core.event.LogEntry
import org.apache.isis.client.kroviz.to.*
-import org.apache.isis.client.kroviz.ui.dialog.ActionPrompt
import org.apache.isis.client.kroviz.ui.core.Constants
+import org.apache.isis.client.kroviz.ui.dialog.ActionPrompt
import org.apache.isis.client.kroviz.utils.Point
import org.apache.isis.client.kroviz.utils.StringUtils
@@ -29,14 +29,15 @@ class ActionDispatcher(private val at: Point = Point(100, 100)) : BaseAggregator
override fun update(logEntry: LogEntry, subType: String) {
val to = logEntry.getTransferObject()
+ val referrer = logEntry.url
when {
to is Action -> {
to.links.forEach { link ->
if (link.isInvokeAction()) {
when (link.method) {
- Method.GET.name -> process(to, link)
- Method.POST.name -> invoke(to, link)
- Method.PUT.name -> process(to, link)
+ Method.GET.name -> process(to, link, referrer = referrer)
+ Method.POST.name -> invoke(to, link, referrer = referrer)
+ Method.PUT.name -> process(to, link, referrer = referrer)
}
}
}
@@ -54,17 +55,17 @@ class ActionDispatcher(private val at: Point = Point(100, 100)) : BaseAggregator
}
}
- private fun process(action: Action, link: Link, aggregator: BaseAggregator = this) {
+ private fun process(action: Action, link: Link, aggregator: BaseAggregator = this, referrer: String) {
when {
link.hasArguments() -> ActionPrompt(action = action).open(at)
- link.relation() == Relation.INVOKE -> invoke(action, link)
- else -> invoke(link, aggregator)
+ link.relation() == Relation.INVOKE -> invoke(action, link, referrer)
+ else -> invoke(link, aggregator, referrer = referrer)
}
}
- private fun invoke(action: Action, link: Link) {
+ private fun invoke(action: Action, link: Link, referrer: String) {
val title = StringUtils.deCamel(action.id)
- invoke(link, ObjectAggregator(title))
+ invoke(link, ObjectAggregator(title), referrer = referrer)
}
/**
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/aggregator/AggregatorWithLayout.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/aggregator/AggregatorWithLayout.kt
index 46998dc..4bea388 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/aggregator/AggregatorWithLayout.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/aggregator/AggregatorWithLayout.kt
@@ -1,5 +1,6 @@
package org.apache.isis.client.kroviz.core.aggregator
+import org.apache.isis.client.kroviz.core.event.LogEntry
import org.apache.isis.client.kroviz.core.model.DisplayModelWithLayout
import org.apache.isis.client.kroviz.layout.Layout
import org.apache.isis.client.kroviz.to.Represention
@@ -7,8 +8,15 @@ import org.apache.isis.client.kroviz.to.TObject
import org.apache.isis.client.kroviz.ui.core.Constants
abstract class AggregatorWithLayout : BaseAggregator() {
+ // parentUrl is to be set in update
+ // and to be used in subsequent invocations
+ var parentUrl: String? = null
- protected fun handleLayout(layout: Layout, dm: DisplayModelWithLayout) {
+ override fun update(logEntry: LogEntry, subType: String) {
+ parentUrl = logEntry.url
+ }
+
+ protected fun handleLayout(layout: Layout, dm: DisplayModelWithLayout, referrer: String) {
if (dm.layout == null) {
dm.addLayout(layout)
dm.properties.propertyLayoutList.forEach { p ->
@@ -19,25 +27,25 @@ abstract class AggregatorWithLayout : BaseAggregator() {
val isDn = l.href.contains("datanucleus")
if (!isDn) {
//invoking DN links leads to an error
- invoke(l, this)
+ invoke(l, this, referrer = referrer)
}
}
}
}
}
- protected fun invokeLayoutLink(obj: TObject, aggregator: AggregatorWithLayout) {
+ protected fun invokeLayoutLink(obj: TObject, aggregator: AggregatorWithLayout, referrer :String) {
val l = obj.getLayoutLink()
if (l.representation() == Represention.OBJECT_LAYOUT_BS3) {
- invoke(l, aggregator, Constants.subTypeXml)
+ invoke(l, aggregator, Constants.subTypeXml, referrer)
} else {
- invoke(l, aggregator)
+ invoke(l, aggregator, referrer = referrer)
}
}
- protected fun invokeIconLink(obj: TObject, aggregator: AggregatorWithLayout) {
+ protected fun invokeIconLink(obj: TObject, aggregator: AggregatorWithLayout, referrer: String) {
val l = obj.getIconLink()!!
- invoke(l, aggregator)
+ invoke(l, aggregator, referrer = referrer)
}
}
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 46f4262..edbe93b 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
@@ -58,7 +58,8 @@ abstract class BaseAggregator {
logEntry.setUndefined("no handler found")
console.log("[BaseAggregator.log] ")
console.log(logEntry)
- throw Throwable("no handler found: ${this::class.simpleName}")
+ val className = this::class.simpleName
+ throw Throwable("no handler found: $className")
}
fun TObject.getLayoutLink(): Link? {
@@ -82,8 +83,12 @@ abstract class BaseAggregator {
return href.isNotEmpty() && href.endsWith("object-icon")
}
- protected fun invoke(link: Link, aggregator: BaseAggregator, subType: String = Constants.subTypeJson) {
- ResourceProxy().fetch(link, aggregator, subType)
+ protected fun invoke(
+ link: Link,
+ aggregator: BaseAggregator,
+ subType: String = Constants.subTypeJson,
+ referrer: String) {
+ ResourceProxy().fetch(link, aggregator, subType, referrer = referrer)
}
}
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/aggregator/CollectionAggregator.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/aggregator/CollectionAggregator.kt
index 99f19b2..fe833c6 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/aggregator/CollectionAggregator.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/aggregator/CollectionAggregator.kt
@@ -21,6 +21,7 @@ package org.apache.isis.client.kroviz.core.aggregator
import org.apache.isis.client.kroviz.core.event.EventState
import org.apache.isis.client.kroviz.core.event.LogEntry
import org.apache.isis.client.kroviz.core.event.ResourceProxy
+import org.apache.isis.client.kroviz.core.event.ResourceSpecification
import org.apache.isis.client.kroviz.core.model.CollectionDM
import org.apache.isis.client.kroviz.layout.Layout
import org.apache.isis.client.kroviz.to.*
@@ -41,20 +42,21 @@ class CollectionAggregator(actionTitle: String, val parent: ObjectAggregator? =
}
override fun update(logEntry: LogEntry, subType: String) {
-
+ super.update(logEntry, subType)
if (logEntry.state == EventState.DUPLICATE) {
console.log("[CollectionAggregator.update] TODO duplicates should not be propagated to handlers")
//TODO this may not hold true for changed and deleted objects - object version required to deal with it?
} else {
+ val referrer = logEntry.url
when (val obj = logEntry.getTransferObject()) {
null -> log(logEntry)
- is ResultList -> handleList(obj)
- is TObject -> handleObject(obj)
- is DomainType -> handleDomainType(obj)
- is Layout -> handleLayout(obj, dpm as CollectionDM)
+ is ResultList -> handleList(obj, referrer)
+ is TObject -> handleObject(obj, referrer)
+ is DomainType -> handleDomainType(obj, referrer)
+ is Layout -> handleLayout(obj, dpm as CollectionDM, referrer)
is Grid -> handleGrid(obj)
- is Property -> handleProperty(obj)
- is Collection -> handleCollection(obj)
+ is Property -> handleProperty(obj, referrer)
+ is Collection -> handleCollection(obj, referrer)
is Icon -> handleIcon(obj)
else -> log(logEntry)
}
@@ -64,41 +66,41 @@ class CollectionAggregator(actionTitle: String, val parent: ObjectAggregator? =
UiManager.openCollectionView(this)
}
} else {
- val le = LogEntry("")
+ val le = LogEntry(ResourceSpecification(""))
parent.update(le, subType)
}
}
}
- private fun handleList(resultList: ResultList) {
+ private fun handleList(resultList: ResultList, referrer: String) {
if (resultList.resulttype != ResultType.VOID.type) {
val result = resultList.result!!
result.value.forEach {
- invoke(it, this)
+ invoke(it, this, referrer = referrer)
}
}
}
- private fun handleObject(obj: TObject) {
+ private fun handleObject(obj: TObject, referrer: String) {
dpm.addData(obj)
- invokeLayoutLink(obj, this)
- invokeIconLink(obj, this)
+ invokeLayoutLink(obj, this, referrer = referrer)
+ invokeIconLink(obj, this, referrer = referrer)
}
private fun handleIcon(obj: TransferObject?) {
(dpm as CollectionDM).addIcon(obj)
}
- private fun handleDomainType(obj: DomainType) {
+ private fun handleDomainType(obj: DomainType, referrer: String) {
obj.links.forEach {
if (it.relation() == Relation.LAYOUT) {
- invoke(it, this)
+ invoke(it, this, referrer = referrer)
}
}
obj.members.forEach {
val m = it.value
if (m.isProperty()) {
- invoke(m, this)
+ invoke(m, this, referrer = referrer)
}
}
}
@@ -107,7 +109,7 @@ class CollectionAggregator(actionTitle: String, val parent: ObjectAggregator? =
(dpm as CollectionDM).grid = grid
}
- private fun handleProperty(p: Property) {
+ private fun handleProperty(p: Property, referrer: String) {
val dm = dpm as CollectionDM
if (p.isPropertyDescription()) {
dm.addPropertyDescription(p)
@@ -115,19 +117,19 @@ class CollectionAggregator(actionTitle: String, val parent: ObjectAggregator? =
dm.addProperty(p)
val pdl = p.descriptionLink()
if (pdl != null) {
- invoke(pdl, this)
+ invoke(pdl, this, referrer = referrer)
}
}
}
- private fun handleCollection(collection: Collection) {
+ private fun handleCollection(collection: Collection, referrer: String) {
collection.links.forEach {
if (it.relation() == Relation.DESCRIBED_BY) {
- ResourceProxy().fetch(it, this)
+ ResourceProxy().fetch(it, this, referrer = referrer)
}
}
collection.value.forEach {
- ResourceProxy().fetch(it, this)
+ ResourceProxy().fetch(it, this, referrer = referrer)
}
}
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 a3b2fc6..07be0ed 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
@@ -63,7 +63,7 @@ class DomainTypesAggregator(val url: String) : BaseAggregator() {
}
(dpm as DiagramDM).incNumberOfProperties(propertyList.size)
propertyList.forEach {
- invoke(it.value, this)
+ invoke(it.value, this, referrer = "")
}
}
}
@@ -102,7 +102,7 @@ class DomainTypesAggregator(val url: String) : BaseAggregator() {
}
(dpm as DiagramDM).numberOfClasses = domainTypeLinkList.size
domainTypeLinkList.forEach {
- invoke(it, this)
+ invoke(it, this, referrer = "")
}
}
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 c09a0e3..80225fd 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
@@ -43,12 +43,14 @@ class ObjectAggregator(val actionTitle: String) : AggregatorWithLayout() {
}
override fun update(logEntry: LogEntry, subType: String) {
+ super.update(logEntry, subType)
if (!logEntry.isUpdatedFromParentedCollection()) {
+ val referrer = logEntry.url
when (val obj = logEntry.getTransferObject()) {
- is TObject -> handleObject(obj)
+ is TObject -> handleObject(obj, referrer)
is ResultObject -> handleResultObject(obj)
is Property -> handleProperty(obj)
- is Layout -> handleLayout(obj, dpm as ObjectDM)
+ is Layout -> handleLayout(obj, dpm as ObjectDM, referrer)
is Grid -> handleGrid(obj)
is HttpError -> ErrorDialog(logEntry).open()
else -> log(logEntry)
@@ -71,25 +73,25 @@ class ObjectAggregator(val actionTitle: String) : AggregatorWithLayout() {
}
}
- fun handleObject(obj: TObject) {
+ fun handleObject(obj: TObject, referrer : String) {
// After ~/action/invoke is called, the actual object instance (containing properties) needs to be invoked as well.
// Note that rel.self/href is identical and both are of type TObject. logEntry.url is different, though.
if (obj.getProperties().size == 0) {
- invokeInstance(obj)
+ invokeInstance(obj, referrer)
} else {
dpm.addData(obj)
}
if (collectionMap.isEmpty()) {
- handleCollections(obj)
+ handleCollections(obj, referrer)
}
- invokeLayoutLink(obj, this)
+ invokeLayoutLink(obj, this, referrer = referrer)
}
- private fun invokeInstance(obj: TObject) {
+ private fun invokeInstance(obj: TObject, referrer: String) {
val selfLink = obj.links.find { l ->
l.relation() == Relation.SELF
}
- invoke(selfLink!!, this)
+ invoke(selfLink!!, this, referrer = referrer)
}
fun handleResultObject(resultObject: ResultObject) {
@@ -100,13 +102,13 @@ class ObjectAggregator(val actionTitle: String) : AggregatorWithLayout() {
return dpm.getObject()
}
- private fun handleCollections(obj: TObject) {
+ private fun handleCollections(obj: TObject, referrer: String) {
obj.getCollections().forEach {
val key = it.id
val aggregator = CollectionAggregator(key, this)
collectionMap.put(key, aggregator)
val link = it.links.first()
- ResourceProxy().fetch(link, aggregator)
+ ResourceProxy().fetch(link, aggregator, referrer = referrer)
}
}
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/aggregator/RestfulDispatcher.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/aggregator/RestfulDispatcher.kt
index 1412c7f..13214f0 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/aggregator/RestfulDispatcher.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/aggregator/RestfulDispatcher.kt
@@ -40,11 +40,11 @@ class RestfulDispatcher() : BaseAggregator() {
}
private fun invokeNavigation(it: Link) {
- invoke(it, NavigationDispatcher())
+ invoke(it, NavigationDispatcher(), referrer = "")
}
private fun invokeSystem(it: Link) {
- invoke(it, SystemAggregator())
+ invoke(it, SystemAggregator(), referrer = "")
}
}
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 b8fa60a..80f212f 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
@@ -52,7 +52,7 @@ object EventStore {
method: String,
body: String = "",
aggregator: BaseAggregator? = null): LogEntry {
- val entry = LogEntry(reSpec.url, method, request = body, subType = reSpec.subType)
+ val entry = LogEntry(reSpec, method, request = body)
if (aggregator != null) {
entry.addAggregator(aggregator)
}
@@ -62,7 +62,7 @@ object EventStore {
}
fun add(reSpec: ResourceSpecification) {
- val entry = LogEntry(url = reSpec.url)
+ val entry = LogEntry(reSpec)
log(entry)
updateStatus(entry)
}
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 a7db164..b53d774 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
@@ -52,11 +52,13 @@ enum class EventState(val id: String, val iconName: String, val style: ButtonSty
@Serializable
data class LogEntry(
- val url: String,
+ @Contextual val rs: ResourceSpecification,
val method: String? = "",
val request: String = "",
- val subType: String = Constants.subTypeJson,
@Contextual val createdAt: Date = Date()) {
+ val url:String = rs.url
+ val referrer = rs.referrerUrl
+ val subType = rs.subType
var state = EventState.INITIAL
var title: String = ""
var requestLength: Int = 0 // must be accessible (public) for LogEntryTable
@@ -99,7 +101,7 @@ data class LogEntry(
// alternative constructor for UI events (eg. from user interaction)
@JsName("secondaryConstructor")
- constructor(title: String, aggregator: BaseAggregator) : this("", "", "") {
+ constructor(title: String, aggregator: BaseAggregator) : this(ResourceSpecification(""), "", "") {
this.title = title
this.addAggregator(aggregator)
state = EventState.VIEW
@@ -178,7 +180,6 @@ data class LogEntry(
}
}
-
// region response
/**
* This is for access from the views only.
@@ -250,12 +251,9 @@ data class LogEntry(
return null
}
- fun upLink(): Link? {
- getLinks().forEach { if (it.relation() == Relation.UP) return it }
- return null
- }
-
fun getLinks(): List<Link> {
+// console.log("[LE.getLinks]")
+// console.log(obj)
return if (obj is HasLinks) {
(obj as HasLinks).getLinks()
} else {
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/event/LogEntryDecorator.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/event/LogEntryDecorator.kt
index 68e9626..f891eeb 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/event/LogEntryDecorator.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/event/LogEntryDecorator.kt
@@ -73,6 +73,39 @@ class LogEntryDecorator(val logEntry: LogEntry) {
return children
}
+ fun findChildrenOfLogEntry(): List<LogEntry> {
+ console.log("[LED.findChildrenOfLogEntry]")
+ val children = mutableListOf<LogEntry>()
+ val links = logEntry.getLinks()
+ console.log("[links] ->")
+ console.log(links)
+ console.log(links.size)
+ links.forEach {
+ console.log(it.toString())
+ when (it.relation()) {
+ Relation.UP -> {
+ }
+ Relation.SELF -> {
+ }
+ else -> {
+ val url = it.href
+ console.log(url)
+ val rsj = ResourceSpecification(url, Constants.subTypeJson)
+ var le = EventStore.findBy(rsj)
+ if (le == null) {
+ val rsx = ResourceSpecification(url, Constants.subTypeXml)
+ le = EventStore.findBy(rsx)
+ }
+ console.log(le.toString())
+ if (le != null) children.add(le)
+ }
+ }
+ }
+ console.log("[children] ->")
+ console.log(children)
+ return children
+ }
+
private fun findChildrenByReference(): Set<LogEntry> {
val str = logEntry.response
val children = mutableSetOf<LogEntry>()
@@ -86,6 +119,7 @@ class LogEntryDecorator(val logEntry: LogEntry) {
fun findChildrenIn(aggregatedList: List<LogEntry>): List<LogEntry> {
console.log("[LED.findChildrenIn]")
+ console.log(aggregatedList)
val selfUrl = href
val children = mutableListOf<LogEntry>()
aggregatedList.forEach {
@@ -93,6 +127,7 @@ class LogEntryDecorator(val logEntry: LogEntry) {
children.add(it)
}
}
+ console.log(children)
return children
}
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/event/ResourceProxy.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/event/ResourceProxy.kt
index 733a1de..92d60a1 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/event/ResourceProxy.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/event/ResourceProxy.kt
@@ -26,6 +26,7 @@ import org.apache.isis.client.kroviz.handler.ResponseHandler
import org.apache.isis.client.kroviz.to.Link
import org.apache.isis.client.kroviz.to.TObject
import org.apache.isis.client.kroviz.ui.core.Constants
+import org.apache.isis.client.kroviz.ui.diagram.Node
/**
* Facade for RoXmlHttpRequest. If a resource is being fetched, it:
@@ -39,7 +40,7 @@ class ResourceProxy {
// there may be more than one aggt - which may break this code
// we are coming from a parented collection ...
- // we can assume the object hat been loaded as part of the collection before
+ // we can assume the object has been loaded before as part of the collection
fun load(tObject: TObject) {
val aggregator = ObjectAggregator(tObject.title)
// ASSUMPTION: there can be max one LogEntry for an Object
@@ -65,15 +66,22 @@ class ResourceProxy {
fun fetch(link: Link,
aggregator: BaseAggregator? = null,
subType: String = Constants.subTypeJson,
- isRest: Boolean = true) {
- val rs = ResourceSpecification(link.href)
+ isRest: Boolean = true,
+ referrer: String = "") {
+ val rs = ResourceSpecification(link.href, referrerUrl = referrer)
val isCached = when (val le = EventStore.findBy(rs)) {
null -> false
else -> le.isCached(rs, link.method)
}
when {
isCached -> processCached(rs, aggregator)
- !isCached && isRest -> RoXmlHttpRequest(aggregator).process(link, subType)
+ !isCached && isRest -> {
+ if (aggregator is AggregatorWithLayout) {
+ val child = Node(link.href)
+//FIXME aggregator.root.add(child)
+ }
+ RoXmlHttpRequest(aggregator).process(link, subType)
+ }
!isCached && !isRest -> RoXmlHttpRequest(aggregator).processNonREST(link, subType)
}
}
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 90e8395..ee18faf 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
@@ -23,7 +23,8 @@ import org.apache.isis.client.kroviz.utils.StringUtils
class ResourceSpecification(
val url: String,
- val subType: String = Constants.subTypeJson) {
+ val subType: String = Constants.subTypeJson,
+ val referrerUrl: String = "") {
fun isRedundant(): Boolean {
return when {
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/diagram/LinkTreeDiagram.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/diagram/LinkTreeDiagram.kt
index c6f6533..9e6c480 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/diagram/LinkTreeDiagram.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/diagram/LinkTreeDiagram.kt
@@ -1,3 +1,21 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
package org.apache.isis.client.kroviz.ui.diagram
import org.apache.isis.client.kroviz.core.aggregator.BaseAggregator
@@ -21,13 +39,12 @@ object LinkTreeDiagram {
val entryList: List<LogEntry> = EventStore.findAllBy(aggregator)
val root = findRoot(entryList)
if (root == null) {
- code += "* /$NL"
+ code += "* / $NL"
code += createNodes(entryList, 2)
} else {
code += root.asPumlNode(1)
val led = LogEntryDecorator(root)
- val childList = led.findChildrenIn(entryList)
- console.log("[LTD.build]")
+ val childList = led.findChildrenOfLogEntry()
console.log(aggregator)
console.log(entryList)
code += createChildNodes(childList, 2)
@@ -41,8 +58,8 @@ object LinkTreeDiagram {
childList.forEach {
code += createNode(it, level)
val led = LogEntryDecorator(it)
- val kidSet = led.findChildrenIn(childList)
- code += createChildNodes(kidSet, level +1)
+ val kidSet = led.findChildrenOfLogEntry()
+ code += createChildNodes(kidSet, level + 1)
}
return code
}
@@ -82,26 +99,32 @@ object LinkTreeDiagram {
fun LogEntry.asPumlNode(level: Int): String {
val led = LogEntryDecorator(this)
- val title = StringUtils.shortTitle(this.url, protocolHostPort)
+ val url = this.url
+ val title = StringUtils.shortTitle(url, protocolHostPort)
val type = led.selfType()
val depth = "*".repeat(level)
- var answer = "$depth:..//<<$type>>//..$NL**$title**$NL"
- answer += "----$NL"
- answer += traceInfo(this)
- return answer + ";" + NL
+ val pc = PumlCode()
+ pc.add(depth).add(":")
+ pc.addStereotype(type)
+ pc.addLink(url, title)
+ pc.addHorizontalLine()
+ pc.add(traceInfo(this))
+ pc.addLine(";")
+ return pc.code
}
- private fun traceInfo(logEntry: LogEntry) : String {
+ private fun traceInfo(logEntry: LogEntry): String {
val obj = logEntry.obj!!
- var answer = "__" + obj::class.simpleName + "__" + NL
+ val className = obj::class.simpleName!!
+ val pc = PumlCode().addClass(className)
if (obj is HasLinks) {
obj.links.forEach {
- answer += StringUtils.shortTitle(it.href, protocolHostPort) + NL
+ val url = it.href
+ val title = StringUtils.shortTitle(url, protocolHostPort)
+ pc.addLink(url, title)
}
}
- console.log("[LTD.traceInfo]")
- console.log(answer)
- return answer
+ return pc.code
}
}
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/diagram/Node.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/diagram/Node.kt
new file mode 100644
index 0000000..19bc68c
--- /dev/null
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/diagram/Node.kt
@@ -0,0 +1,30 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.isis.client.kroviz.ui.diagram
+
+class Node(val key: String) {
+
+ var parent: Node? = null
+ val children = mutableListOf<Node>()
+
+ fun add(child: Node) {
+ children.add(child)
+ }
+
+}
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/diagram/PumlCode.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/diagram/PumlCode.kt
new file mode 100644
index 0000000..ac5ea8d
--- /dev/null
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/diagram/PumlCode.kt
@@ -0,0 +1,78 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.isis.client.kroviz.ui.diagram
+
+class PumlCode() {
+
+ private val NL = "\n"
+
+ var code = ""
+
+ fun add(s: String): PumlCode {
+ code += s
+ return this
+ }
+
+ fun addLine(s: String): PumlCode {
+ code += s + NL
+ return this
+ }
+
+ fun addStereotype(s: String): PumlCode {
+ var result = "<<" + s + ">>"
+ result = italic(result)
+ result = center(result)
+ code += result + NL
+ return this
+ }
+
+ fun addLink(url: String, title: String): PumlCode {
+ var result = "[[" + url + " "+ title + "]]"
+ result = bold(result)
+ code += result + NL
+ return this
+ }
+
+ fun addClass(s: String): PumlCode {
+ val result = underline("(C) "+ s)
+ code += result + NL
+ return this
+ }
+
+ private fun center(s: String): String {
+ return ".." + s + ".."
+ }
+
+ private fun italic(s: String): String {
+ return "//" + s + "//"
+ }
+
+ private fun bold(s: String): String {
+ return "**" + s + "**"
+ }
+
+ private fun underline(s: String): String {
+ return "__" + s + "__"
+ }
+
+ fun addHorizontalLine(): PumlCode {
+ code += "----" + NL
+ return this
+ }
+}
[isis] 03/07: ISIS-2846 link tree diagram works
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 f848f38abbc4ec553bce83cae6315d483d48f4d4
Author: Jörg Rade <jo...@kuehne-nagel.com>
AuthorDate: Wed Sep 8 18:28:05 2021 +0200
ISIS-2846 link tree diagram works
---
.../kroviz/core/aggregator/AggregatorWithLayout.kt | 2 +
.../client/kroviz/core/event/LogEntryDecorator.kt | 156 ---------------------
.../isis/client/kroviz/core/event/ResourceProxy.kt | 46 +++---
.../client/kroviz/ui/diagram/LinkTreeDiagram.kt | 131 +++++++----------
.../apache/isis/client/kroviz/ui/diagram/Node.kt | 7 +-
.../isis/client/kroviz/ui/diagram/PumlCode.kt | 5 +
.../client/kroviz/ui/diagram/{Node.kt => Tree.kt} | 28 +++-
.../isis/client/kroviz/ui/dialog/EventLogDetail.kt | 8 +-
.../isis/client/kroviz/core/event/LogEntryTest.kt | 4 +-
.../isis/client/kroviz/ui/diagram/TreeTest.kt | 56 ++++++++
10 files changed, 163 insertions(+), 280 deletions(-)
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/aggregator/AggregatorWithLayout.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/aggregator/AggregatorWithLayout.kt
index 4bea388..32ed837 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/aggregator/AggregatorWithLayout.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/aggregator/AggregatorWithLayout.kt
@@ -6,11 +6,13 @@ import org.apache.isis.client.kroviz.layout.Layout
import org.apache.isis.client.kroviz.to.Represention
import org.apache.isis.client.kroviz.to.TObject
import org.apache.isis.client.kroviz.ui.core.Constants
+import org.apache.isis.client.kroviz.ui.diagram.Tree
abstract class AggregatorWithLayout : BaseAggregator() {
// parentUrl is to be set in update
// and to be used in subsequent invocations
var parentUrl: String? = null
+ var tree: Tree? = null
override fun update(logEntry: LogEntry, subType: String) {
parentUrl = logEntry.url
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/event/LogEntryDecorator.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/event/LogEntryDecorator.kt
deleted file mode 100644
index f891eeb..0000000
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/event/LogEntryDecorator.kt
+++ /dev/null
@@ -1,156 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.isis.client.kroviz.core.event
-
-import org.apache.isis.client.kroviz.to.Link
-import org.apache.isis.client.kroviz.to.Relation
-import org.apache.isis.client.kroviz.ui.core.Constants
-
-class LogEntryDecorator(val logEntry: LogEntry) {
-
- val href: String = logEntry.selfHref()
- val links: List<Link> = logEntry.getLinks()
- val linked: List<LogEntry> = EventStore.getLinked()
-
- fun findChildren(): Set<LogEntry> {
- val children = findChildrenByUpRelation()
- children.plus(findChildrenByReference())
- children.plus(findChildrenByLinks())
- return children
- }
-
- private fun findChildrenByUpRelation(): Set<LogEntry> {
- val children = mutableSetOf<LogEntry>()
- linked.forEach {
- it.getLinks().forEach { l ->
- if ((l.relation() == Relation.UP) && (l.href == href)) {
- children.add(it)
- }
- }
- }
- return children
- }
-
- private fun findChildrenByLinks(): Set<LogEntry> {
- console.log("[LED.findChildrenByLinks]")
- val children = mutableSetOf<LogEntry>()
- links.forEach {
- console.log(it.toString())
- val rel = it.relation()
- when {
- (rel == Relation.UP) -> {
- }
- (rel == Relation.SELF) -> {
- }
- else -> {
- val rsj = ResourceSpecification(it.href, Constants.subTypeJson)
- var le = EventStore.findBy(rsj)
- if (le == null) {
- val rsx = ResourceSpecification(it.href, Constants.subTypeXml)
- le = EventStore.findBy(rsx)
- }
- console.log(le.toString())
- if (le != null) children.add(le)
- }
- }
- }
- return children
- }
-
- fun findChildrenOfLogEntry(): List<LogEntry> {
- console.log("[LED.findChildrenOfLogEntry]")
- val children = mutableListOf<LogEntry>()
- val links = logEntry.getLinks()
- console.log("[links] ->")
- console.log(links)
- console.log(links.size)
- links.forEach {
- console.log(it.toString())
- when (it.relation()) {
- Relation.UP -> {
- }
- Relation.SELF -> {
- }
- else -> {
- val url = it.href
- console.log(url)
- val rsj = ResourceSpecification(url, Constants.subTypeJson)
- var le = EventStore.findBy(rsj)
- if (le == null) {
- val rsx = ResourceSpecification(url, Constants.subTypeXml)
- le = EventStore.findBy(rsx)
- }
- console.log(le.toString())
- if (le != null) children.add(le)
- }
- }
- }
- console.log("[children] ->")
- console.log(children)
- return children
- }
-
- private fun findChildrenByReference(): Set<LogEntry> {
- val str = logEntry.response
- val children = mutableSetOf<LogEntry>()
- linked.forEach {
- if (it != logEntry && str.contains(it.url)) {
- children.add(it)
- }
- }
- return children
- }
-
- fun findChildrenIn(aggregatedList: List<LogEntry>): List<LogEntry> {
- console.log("[LED.findChildrenIn]")
- console.log(aggregatedList)
- val selfUrl = href
- val children = mutableListOf<LogEntry>()
- aggregatedList.forEach {
- if (it.url != selfUrl && it.response.contains(selfUrl)) {
- children.add(it)
- }
- }
- console.log(children)
- return children
- }
-
- fun selfType(): String {
- val selfLink = logEntry.selfLink()
- return if (selfLink != null) {
- selfLink.representation().type
- } else {
- console.log("[LED.selfType]")
- console.log(logEntry)
- ""
- }
- }
-
- fun findParent(): LogEntry? {
- val url = logEntry.url
- linked.forEach {
- when {
- it.selfHref() == url -> return null
- it.response.contains(url) -> return it
- }
- }
- return null
- }
-
-}
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/event/ResourceProxy.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/event/ResourceProxy.kt
index 92d60a1..ad596a0 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/event/ResourceProxy.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/event/ResourceProxy.kt
@@ -27,6 +27,7 @@ import org.apache.isis.client.kroviz.to.Link
import org.apache.isis.client.kroviz.to.TObject
import org.apache.isis.client.kroviz.ui.core.Constants
import org.apache.isis.client.kroviz.ui.diagram.Node
+import org.apache.isis.client.kroviz.ui.diagram.Tree
/**
* Facade for RoXmlHttpRequest. If a resource is being fetched, it:
@@ -51,18 +52,6 @@ class ResourceProxy {
}
}
- private fun processCached(rs: ResourceSpecification, aggregator: BaseAggregator?) {
- val le = EventStore.findBy(rs)!!
- le.retrieveResponse()
- if (aggregator == null) {
- ResponseHandler.handle(le)
- } else {
- aggregator.update(le, le.subType)
- }
- le.setCached()
- EventStore.updateStatus(le)
- }
-
fun fetch(link: Link,
aggregator: BaseAggregator? = null,
subType: String = Constants.subTypeJson,
@@ -75,25 +64,36 @@ class ResourceProxy {
}
when {
isCached -> processCached(rs, aggregator)
- !isCached && isRest -> {
- if (aggregator is AggregatorWithLayout) {
- val child = Node(link.href)
-//FIXME aggregator.root.add(child)
- }
- RoXmlHttpRequest(aggregator).process(link, subType)
- }
+ !isCached && isRest -> process(aggregator, link, subType, referrer)
!isCached && !isRest -> RoXmlHttpRequest(aggregator).processNonREST(link, subType)
}
}
- private fun isNotRenderedYet(aggregator: BaseAggregator?): Boolean {
- if (aggregator != null && aggregator is AggregatorWithLayout) {
- return !aggregator.dpm.isRendered
+ private fun process(aggregator: BaseAggregator?, link: Link, subType: String, referrer: String) {
+ if (aggregator is AggregatorWithLayout) {
+ if (aggregator.tree == null) {
+ val root = Node(referrer, null)
+ aggregator.tree = Tree(root)
+ }
+ aggregator.tree!!.addChildToParent(link.href, referrer)
+
+ }
+ RoXmlHttpRequest(aggregator).process(link, subType)
+ }
+
+ private fun processCached(rs: ResourceSpecification, aggregator: BaseAggregator?) {
+ val le = EventStore.findBy(rs)!!
+ le.retrieveResponse()
+ if (aggregator == null) {
+ ResponseHandler.handle(le)
} else {
- return false
+ aggregator.update(le, le.subType)
}
+ le.setCached()
+ EventStore.updateStatus(le)
}
+
fun invokeKroki(pumlCode: String, aggregator: SvgDispatcher) {
RoXmlHttpRequest(aggregator).invokeKroki(pumlCode)
}
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/diagram/LinkTreeDiagram.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/diagram/LinkTreeDiagram.kt
index 9e6c480..bc3789d 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/diagram/LinkTreeDiagram.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/diagram/LinkTreeDiagram.kt
@@ -18,10 +18,10 @@
*/
package org.apache.isis.client.kroviz.ui.diagram
+import org.apache.isis.client.kroviz.core.aggregator.AggregatorWithLayout
import org.apache.isis.client.kroviz.core.aggregator.BaseAggregator
import org.apache.isis.client.kroviz.core.event.EventStore
import org.apache.isis.client.kroviz.core.event.LogEntry
-import org.apache.isis.client.kroviz.core.event.LogEntryDecorator
import org.apache.isis.client.kroviz.core.event.ResourceSpecification
import org.apache.isis.client.kroviz.to.HasLinks
import org.apache.isis.client.kroviz.ui.core.UiManager
@@ -29,102 +29,71 @@ import org.apache.isis.client.kroviz.utils.StringUtils
object LinkTreeDiagram {
- private const val NL = "\n"
- private const val prolog = "@startmindmap$NL"
- private const val epilog = "@endmindmap$NL"
private val protocolHostPort = UiManager.getUrl()
fun build(aggregator: BaseAggregator): String {
- var code = prolog
- val entryList: List<LogEntry> = EventStore.findAllBy(aggregator)
- val root = findRoot(entryList)
- if (root == null) {
- code += "* / $NL"
- code += createNodes(entryList, 2)
- } else {
- code += root.asPumlNode(1)
- val led = LogEntryDecorator(root)
- val childList = led.findChildrenOfLogEntry()
- console.log(aggregator)
- console.log(entryList)
- code += createChildNodes(childList, 2)
- }
- code += epilog
- return code
- }
-
- private fun createChildNodes(childList: List<LogEntry>, level: Int): String {
- var code = ""
- childList.forEach {
- code += createNode(it, level)
- val led = LogEntryDecorator(it)
- val kidSet = led.findChildrenOfLogEntry()
- code += createChildNodes(kidSet, level + 1)
- }
- return code
- }
-
- private fun createNode(le: LogEntry, level: Int): String {
- var code = ""
- if (isInEventStore(le.url)) {
- code += le.asPumlNode(level)
- }
- return code
- }
-
- private fun createNodes(entryList: List<LogEntry>, level: Int): String {
- var code = ""
- entryList.forEach {
- code += createNode(it, level)
- }
- return code
- }
-
- private fun findRoot(entryList: List<LogEntry>): LogEntry? {
- entryList.forEach {
- val led = LogEntryDecorator(it)
- val parent = led.findParent()
- if (parent != null && !entryList.contains(parent)) {
- return parent
- }
+ console.log("[LTD.build]")
+ val pc = PumlCode()
+ if (aggregator is AggregatorWithLayout) {
+ val tree = aggregator.tree!!
+ val root = tree.root
+ console.log(root)
+ pc.code += toPumlCode(root, 1)
}
- return null
+ pc.mindmap()
+ console.log(pc.code)
+ return pc.code
}
- private fun isInEventStore(url: String): Boolean {
+ private fun toPumlCode(node: Node, level: Int): String {
+ val url = node.key
val rs = ResourceSpecification(url)
val le = EventStore.findBy(rs)
- return (le != null)
- }
-
- fun LogEntry.asPumlNode(level: Int): String {
- val led = LogEntryDecorator(this)
- val url = this.url
- val title = StringUtils.shortTitle(url, protocolHostPort)
- val type = led.selfType()
- val depth = "*".repeat(level)
val pc = PumlCode()
- pc.add(depth).add(":")
- pc.addStereotype(type)
- pc.addLink(url, title)
- pc.addHorizontalLine()
- pc.add(traceInfo(this))
- pc.addLine(";")
+ if (le != null) {
+ val title = StringUtils.shortTitle(url, protocolHostPort)
+ val type = le.selfType()
+ val depth = "*".repeat(level)
+ pc.add(depth).add(":")
+ pc.addStereotype(type)
+ pc.addLink(url, title)
+ pc.addHorizontalLine()
+ pc.add(traceInfo(le))
+ pc.addLine(";")
+ node.children.forEach {
+ val childCode = toPumlCode(it, level + 1)
+ pc.add(childCode)
+ }
+ }
return pc.code
}
private fun traceInfo(logEntry: LogEntry): String {
- val obj = logEntry.obj!!
- val className = obj::class.simpleName!!
- val pc = PumlCode().addClass(className)
- if (obj is HasLinks) {
- obj.links.forEach {
- val url = it.href
- val title = StringUtils.shortTitle(url, protocolHostPort)
- pc.addLink(url, title)
+ val pc = PumlCode()
+ val obj = logEntry.obj
+ if (obj != null) {
+ val className = obj::class.simpleName!!
+ pc.addClass(className)
+ if (obj is HasLinks) {
+ obj.links.forEach {
+ val url = it.href
+ val title = StringUtils.shortTitle(url, protocolHostPort)
+ pc.addLink(url, title)
+ }
}
}
return pc.code
}
+ private fun LogEntry.selfType(): String {
+ val selfLink = this.selfLink()
+ return if (selfLink != null) {
+ selfLink.representation().type
+ } else {
+ console.log("[LE.selfType]")
+ console.log(this)
+ ""
+ }
+ }
+
}
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/diagram/Node.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/diagram/Node.kt
index 19bc68c..79c0930 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/diagram/Node.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/diagram/Node.kt
@@ -18,13 +18,8 @@
*/
package org.apache.isis.client.kroviz.ui.diagram
-class Node(val key: String) {
+class Node(val key: String, val parent: Node?) {
- var parent: Node? = null
val children = mutableListOf<Node>()
- fun add(child: Node) {
- children.add(child)
- }
-
}
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/diagram/PumlCode.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/diagram/PumlCode.kt
index ac5ea8d..86410eb 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/diagram/PumlCode.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/diagram/PumlCode.kt
@@ -55,6 +55,11 @@ class PumlCode() {
return this
}
+ fun mindmap(): PumlCode {
+ code += "@startmindmap$NL" + code + "@endmindmap$NL"
+ return this
+ }
+
private fun center(s: String): String {
return ".." + s + ".."
}
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/diagram/Node.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/diagram/Tree.kt
similarity index 57%
copy from incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/diagram/Node.kt
copy to incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/diagram/Tree.kt
index 19bc68c..922bc94 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/diagram/Node.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/diagram/Tree.kt
@@ -18,13 +18,31 @@
*/
package org.apache.isis.client.kroviz.ui.diagram
-class Node(val key: String) {
+class Tree(val root: Node) {
- var parent: Node? = null
- val children = mutableListOf<Node>()
+ fun addChildToParent(childUrl: String, parentUrl: String) {
+ var p = find(parentUrl, root)
+ if (p == null) {
+ p = root
+ }
+ val c = Node(childUrl, p)
+ p.children.add(c)
+ }
- fun add(child: Node) {
- children.add(child)
+ fun find(url: String, node: Node): Node? {
+ if (node.key == url) {
+ return node
+ } else {
+ var answer: Node? = null
+ node.children.forEach {
+ if (it.key == url) {
+ answer = it
+ } else {
+ answer = find(url, it)
+ }
+ }
+ return answer
+ }
}
}
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/dialog/EventLogDetail.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/dialog/EventLogDetail.kt
index 6eb29f6..e72da92 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/dialog/EventLogDetail.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/dialog/EventLogDetail.kt
@@ -20,7 +20,6 @@ package org.apache.isis.client.kroviz.ui.dialog
import org.apache.isis.client.kroviz.core.event.EventStore
import org.apache.isis.client.kroviz.core.event.LogEntry
-import org.apache.isis.client.kroviz.core.event.LogEntryDecorator
import org.apache.isis.client.kroviz.core.event.ResourceSpecification
import org.apache.isis.client.kroviz.to.ValueType
import org.apache.isis.client.kroviz.to.bs3.Grid
@@ -41,7 +40,7 @@ class EventLogDetail(val logEntryFromTabulator: LogEntry) : Command() {
// For a yet unknown reason, aggregators are not transmitted via tabulator.
// As a WORKAROUND, we fetch the full blown LogEntry from the EventStore again.
val rs = ResourceSpecification(logEntryFromTabulator.title)
- logEntry = EventStore.findBy(rs)?: logEntryFromTabulator // in case of xml, we use the entry passed in
+ logEntry = EventStore.findBy(rs) ?: logEntryFromTabulator // in case of xml, we use the entry passed in
}
// callback parameter
@@ -55,15 +54,10 @@ class EventLogDetail(val logEntryFromTabulator: LogEntry) : Command() {
XmlHelper.format(logEntry.response)
}
- val led = LogEntryDecorator(logEntry)
- val children = led.findChildren()
- var kids = ""
- children.forEach { kids += it.url + "\n" }
val formItems = mutableListOf<FormItem>()
formItems.add(FormItem("Url", ValueType.TEXT, logEntry.title))
formItems.add(FormItem("Response", ValueType.TEXT_AREA, responseStr, 10))
formItems.add(FormItem("Aggregators", ValueType.TEXT, content = logEntry.aggregators))
- formItems.add(FormItem("Children", ValueType.TEXT_AREA, kids, size = 5))
formItems.add(FormItem("Link Tree Diagram", ValueType.BUTTON, null, callBack = this, callBackAction = LNK))
formItems.add(FormItem("Console", ValueType.BUTTON, null, callBack = this, callBackAction = LOG))
diff --git a/incubator/clients/kroviz/src/test/kotlin/org/apache/isis/client/kroviz/core/event/LogEntryTest.kt b/incubator/clients/kroviz/src/test/kotlin/org/apache/isis/client/kroviz/core/event/LogEntryTest.kt
index 9ff7b10..dea66af 100644
--- a/incubator/clients/kroviz/src/test/kotlin/org/apache/isis/client/kroviz/core/event/LogEntryTest.kt
+++ b/incubator/clients/kroviz/src/test/kotlin/org/apache/isis/client/kroviz/core/event/LogEntryTest.kt
@@ -30,7 +30,7 @@ class LogEntryTest {
val url = "https://kroki.io"
// when
- val le = LogEntry(url)
+ val le = LogEntry(ResourceSpecification(url))
// then
assertFalse(le.title.startsWith("/"))
@@ -39,7 +39,7 @@ class LogEntryTest {
@Test
fun testCalculate() {
// given
- val le = LogEntry("http://test/url")
+ val le = LogEntry(ResourceSpecification("http://test/url"))
// when
le.setSuccess()
diff --git a/incubator/clients/kroviz/src/test/kotlin/org/apache/isis/client/kroviz/ui/diagram/TreeTest.kt b/incubator/clients/kroviz/src/test/kotlin/org/apache/isis/client/kroviz/ui/diagram/TreeTest.kt
new file mode 100644
index 0000000..712bc86
--- /dev/null
+++ b/incubator/clients/kroviz/src/test/kotlin/org/apache/isis/client/kroviz/ui/diagram/TreeTest.kt
@@ -0,0 +1,56 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.isis.client.kroviz.ui.diagram
+
+import kotlin.test.*
+
+class TreeTest {
+
+ @BeforeTest
+ fun setup() {
+ }
+
+ @Test
+ fun testAddChildToParent() {
+ //given
+ val url_0 = "root"
+ val url_1 = "level_1"
+ val url_1_1 = "level_1_1"
+ val url_1_2 = "level_1_2"
+ val root = Node(url_0, null)
+ val tree = Tree(root)
+
+ //when
+ tree.addChildToParent(url_1, url_0)
+ tree.addChildToParent(url_1_1, url_1)
+ tree.addChildToParent(url_1_2, url_1)
+
+ //then
+ val r = tree.find(url_0, root)!!
+ assertEquals(1, r.children.size)
+ assertNull(r.parent)
+
+ val c = tree.find(url_1, root)!!
+ assertNotNull(c.parent)
+ assertEquals(2, c.children.size)
+ assertEquals(url_1_1, c.children.first().key)
+ assertEquals(url_1_2, c.children.last().key)
+ }
+
+}
[isis] 07/07: Merge branch 'master' of
https://github.com/apache/isis
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 4b97e5535048ef6639e0b245dfe1dd533c30a827
Merge: 290c681 93e759e
Author: Jörg Rade <jo...@kuehne-nagel.com>
AuthorDate: Fri Sep 10 13:00:42 2021 +0200
Merge branch 'master' of https://github.com/apache/isis
.../ci-build-artifacts-no-push-gradle.yml | 2 +-
.gitignore | 3 +
STATUS | 2 +
.../modules/ROOT/pages/cutting-a-release.adoc | 46 +-
.../ROOT/pages/post-release-successful.adoc | 2 +-
.../powered-by/commapp/screenshot-1.png | Bin 670918 -> 0 bytes
.../powered-by/commapp/screenshot-2.png | Bin 56933 -> 0 bytes
.../powered-by/cqnz/cqnz-advert.png | Bin 759997 -> 0 bytes
.../powered-by/estatio/est-home-page.png | Bin 1650322 -> 0 bytes
.../powered-by/estatio/est-invoice.png | Bin 1065937 -> 0 bytes
.../estatio/est-payment-batch-manager.png | Bin 1133462 -> 0 bytes
.../powered-by/estatio/estatio-1.png | Bin 261553 -> 0 bytes
.../gesconsultor-grc/fig-1-custom-viewer.png | Bin 1169636 -> 0 bytes
.../fig-2-custom-drag-n-drop-interface.png | Bin 1495279 -> 0 bytes
.../fig-3-custom-ui-analyzing-risk-scenarios.png | Bin 2218476 -> 0 bytes
.../gesconsultor-grc/fig-4-managing-projects.png | Bin 995701 -> 0 bytes
.../transportplanner/TransportDemand.png | Bin 429799 -> 0 bytes
.../resources/attachments/IsisCheatSheet.docx | Bin 25748 -> 0 bytes
.../resources/attachments/IsisCheatSheet.odt | Bin 0 -> 37885 bytes
.../resources/attachments/IsisCheatSheet.pdf | Bin 194943 -> 104881 bytes
.../modules/resources/images/IsisCheatSheet.png | Bin 384831 -> 712251 bytes
.../docs/modules/resources/pages/cheatsheet.adoc | 4 +-
.../docs/modules/support/images/slack/040.png | Bin 2878486 -> 485188 bytes
.../applib/pages/index/clock/VirtualClock.adoc | 22 +
.../applib/pages/index/graph/tree/TreeNode.adoc | 10 +-
.../index/services/i18n/TranslationService.adoc | 4 +-
.../services/iactnlayer/InteractionContext.adoc | 6 +-
.../applib/pages/index/types/TargetActionType.adoc | 2 +-
.../applib/pages/index/types/TargetClassType.adoc | 2 +-
.../index/util/schema/InteractionDtoUtils.adoc | 4 +-
.../modules/applib/pages/index/value/Blob.adoc | 10 +-
.../index/secman/applib/SecmanConfiguration.adoc | 13 +-
...PermissionsEvaluationServiceAllowBeatsVeto.adoc | 2 +-
...PermissionsEvaluationServiceVetoBeatsAllow.adoc | 2 +-
.../IsisModulePersistenceJdoDatanucleus.adoc | 2 +-
.../applib/classrules/ArchitectureDomainRules.adoc | 14 +
antora/components/relnotes/modules/ROOT/nav.adoc | 1 +
.../modules/ROOT/pages/2020/2.0.0-M3/relnotes.adoc | 149 +++++-
.../modules/ROOT/pages/2020/2.0.0-M4/relnotes.adoc | 17 +-
.../modules/ROOT/pages/2021/2.0.0-M5/relnotes.adoc | 30 +-
.../modules/ROOT/pages/2021/2.0.0-M6/mignotes.adoc | 6 +-
.../modules/ROOT/pages/2021/2.0.0-M6/relnotes.adoc | 291 +++++++++++-
.../modules/ROOT/pages/2021/2.0.0-M7/mignotes.adoc | 71 +++
.../modules/ROOT/pages/2021/2.0.0-M7/relnotes.adoc | 8 +
.../relnotes/modules/ROOT/pages/about.adoc | 20 +-
antora/playbooks/site.yml | 4 +-
antora/supplemental-ui/doap_isis.rdf | 8 +
.../img/home/built-with/EclipseLink.png | Bin 0 -> 3365 bytes
antora/supplemental-ui/index.html | 108 ++---
antora/supplemental-ui/js/home/main.js | 1 +
.../org/apache/isis/applib/AbstractViewModel.java | 1 -
.../java/org/apache/isis/applib/Identifier.java | 10 +-
.../isis/applib/RecreatableDomainObject.java | 1 -
.../java/org/apache/isis/applib/ViewModel.java | 13 +-
.../adapters/AbstractValueSemanticsProvider.java | 1 -
.../isis/applib/adapters/DefaultsProvider.java | 1 -
.../isis/applib/adapters/EncoderDecoder.java | 1 -
.../isis/applib/adapters/EncodingException.java | 1 -
.../org/apache/isis/applib/adapters/Parser.java | 1 -
.../isis/applib/adapters/ParsingException.java | 1 -
.../org/apache/isis/applib/annotation/Action.java | 26 +-
.../isis/applib/annotation/ActionLayout.java | 8 +-
.../apache/isis/applib/annotation/Collection.java | 2 +-
.../isis/applib/annotation/CollectionLayout.java | 12 +-
.../apache/isis/applib/annotation/Defaulted.java | 1 -
.../org/apache/isis/applib/annotation/Domain.java | 81 ++++
.../isis/applib/annotation/DomainObject.java | 20 +-
.../isis/applib/annotation/DomainObjectLayout.java | 1 -
.../isis/applib/annotation/DomainService.java | 12 -
.../applib/annotation/DomainServiceLayout.java | 1 -
.../org/apache/isis/applib/annotation/Facets.java | 65 ---
.../isis/applib/annotation/Introspection.java | 142 ++++++
.../isis/applib/annotation/MemberSupport.java | 11 +-
.../isis/applib/annotation/ObjectLifecycle.java | 50 ++
.../isis/applib/annotation/ObjectSupport.java | 50 ++
.../apache/isis/applib/annotation/Parameter.java | 1 -
.../isis/applib/annotation/ParameterLayout.java | 13 -
.../isis/applib/annotation/PriorityPrecedence.java | 1 -
.../isis/applib/annotation/Programmatic.java | 3 +
.../apache/isis/applib/annotation/Projecting.java | 5 +-
.../apache/isis/applib/annotation/Property.java | 2 +-
.../isis/applib/annotation/PropertyLayout.java | 6 +-
.../apache/isis/applib/annotation/SemanticsOf.java | 8 -
.../org/apache/isis/applib/annotation/Title.java | 3 +-
.../org/apache/isis/applib/annotation/Where.java | 1 -
.../isis/applib/domain/DomainObjectList.java | 3 +-
.../events/ActionArgumentUsabilityEvent.java | 1 -
.../events/ActionArgumentVisibilityEvent.java | 1 -
.../applib/exceptions/RecoverableException.java | 1 -
.../applib/exceptions/UnrecoverableException.java | 1 -
.../recoverable/InteractionException.java | 1 -
.../recoverable/InvalidEntryException.java | 1 -
.../recoverable/TextEntryParseException.java | 1 -
.../unrecoverable/DomainModelException.java | 1 -
.../unrecoverable/MetaModelException.java | 1 -
.../unrecoverable/NoAuthenticatorException.java | 1 -
.../unrecoverable/ObjectNotFoundException.java | 1 -
.../unrecoverable/ObjectPersistenceException.java | 1 -
.../unrecoverable/ReflectiveActionException.java | 1 -
.../unrecoverable/RepositoryException.java | 1 -
.../unrecoverable/UnexpectedCallException.java | 1 -
.../unrecoverable/UnknownTypeException.java | 1 -
.../isis/applib/jaxb/JodaTimeJaxbAdapters.java | 4 +-
.../layout/component/CollectionLayoutData.java | 2 +-
.../layout/component/PropertyLayoutData.java | 2 +-
.../isis/applib/mixins/dto/Dto_downloadXml.java | 6 +-
.../isis/applib/mixins/dto/Dto_downloadXsd.java | 7 +-
.../mixins/layout/Object_downloadLayoutXml.java | 9 +-
.../metamodel/Object_downloadMetamodelXml.java | 6 +-
.../mixins/metamodel/Object_rebuildMetamodel.java | 3 +-
.../applib/mixins/rest/Object_openRestApi.java | 3 +-
.../DomainChangeRecord_openTargetObject.java | 9 +-
.../java/org/apache/isis/applib/query/Query.java | 1 -
.../applib/query/_AllInstancesQueryDefault.java | 1 -
.../apache/isis/applib/query/_QueryAbstract.java | 1 -
.../services/appfeatui/ApplicationFeatureMenu.java | 2 +
.../appfeatui/ApplicationFeatureViewModel.java | 11 +-
.../services/appfeatui/ApplicationNamespace.java | 3 +-
.../appfeatui/ApplicationTypeProperty.java | 7 +-
.../apache/isis/applib/services/bookmark/Oid.java | 9 -
.../services/bookmarkui/BookmarkUiService.java | 1 -
.../isis/applib/services/command/package-info.java | 1 -
.../services/confview/ConfigurationMenu.java | 20 +-
.../services/confview/ConfigurationProperty.java | 1 -
.../confview/ConfigurationViewService.java | 1 -
.../services/confview/ConfigurationViewmodel.java | 3 +-
.../applib/services/factory/FactoryService.java | 42 +-
.../applib/services/i18n/TranslationContext.java | 38 +-
.../isis/applib/services/iactn/Interaction.java | 1 -
.../services/iactnlayer/InteractionContext.java | 14 +-
.../applib/services/layout/LayoutServiceMenu.java | 60 ++-
.../applib/services/message/MessageService.java | 1 -
.../isis/applib/services/metamodel/BeanSort.java | 7 +-
.../services/metamodel/MetaModelServiceMenu.java | 373 +++++++--------
.../applib/services/registry/ServiceRegistry.java | 1 -
.../services/repository/RepositoryService.java | 33 +-
.../isis/applib/services/title/TitleService.java | 1 -
.../isis/applib/services/user/ImpersonateMenu.java | 148 +++---
.../applib/services/user/ImpersonateStopMenu.java | 24 +-
.../isis/applib/services/userui/UserMenu.java | 21 +-
.../applib/services/wrapper/InvalidException.java | 1 -
.../applib/services/wrapper/WrapperFactory.java | 1 -
.../applib/services/wrapper/WrappingObject.java | 1 -
.../services/wrapper/control/AsyncControl.java | 12 +-
.../services/wrapper/events/AccessEvent.java | 1 -
.../wrapper/events/ActionArgumentEvent.java | 1 -
.../wrapper/events/ActionInvocationEvent.java | 1 -
.../wrapper/events/ActionUsabilityEvent.java | 1 -
.../wrapper/events/ActionVisibilityEvent.java | 1 -
.../wrapper/events/CollectionAccessEvent.java | 1 -
.../wrapper/events/CollectionAddToEvent.java | 1 -
.../wrapper/events/CollectionMethodEvent.java | 1 -
.../wrapper/events/CollectionRemoveFromEvent.java | 1 -
.../wrapper/events/CollectionUsabilityEvent.java | 1 -
.../wrapper/events/CollectionVisibilityEvent.java | 1 -
.../services/wrapper/events/InteractionEvent.java | 1 -
.../services/wrapper/events/ObjectTitleEvent.java | 1 -
.../wrapper/events/ObjectValidityEvent.java | 1 -
.../wrapper/events/ObjectVisibilityEvent.java | 1 -
.../services/wrapper/events/ParseValueEvent.java | 1 -
.../wrapper/events/PropertyAccessEvent.java | 1 -
.../wrapper/events/PropertyModifyEvent.java | 1 -
.../wrapper/events/PropertyUsabilityEvent.java | 1 -
.../wrapper/events/PropertyVisibilityEvent.java | 1 -
.../services/wrapper/events/UsabilityEvent.java | 1 -
.../services/wrapper/events/ValidityEvent.java | 1 -
.../services/wrapper/events/VisibilityEvent.java | 1 -
.../wrapper/listeners/InteractionAdapter.java | 1 -
.../wrapper/listeners/InteractionListener.java | 1 -
.../applib/services/xactn/TransactionService.java | 1 -
.../snapshot/SnapshottableWithInclusions.java | 1 -
.../isis/applib/spec/AbstractSpecification.java | 23 +-
.../isis/applib/spec/AbstractSpecification2.java | 21 +-
.../org/apache/isis/applib/spec/Specification.java | 1 -
.../apache/isis/applib/spec/Specification2.java | 1 -
.../apache/isis/applib/spec/SpecificationAnd.java | 1 -
.../apache/isis/applib/spec/SpecificationNot.java | 1 -
.../apache/isis/applib/spec/SpecificationOr.java | 1 -
.../java/org/apache/isis/applib/util/Enums.java | 1 -
.../isis/applib/util/ObjectContract_Empty.java | 1 -
.../isis/applib/util/ObjectContract_Impl.java | 1 -
.../isis/applib/util/ObjectContract_Parser.java | 1 -
.../apache/isis/applib/util/ObjectContracts.java | 27 +-
.../org/apache/isis/applib/util/ReasonBuffer.java | 1 -
.../java/org/apache/isis/applib/util/Reasons.java | 1 -
.../org/apache/isis/applib/util/TitleBuffer.java | 1 -
.../isis/applib/util/TitleBufferException.java | 1 -
.../java/org/apache/isis/applib/value/Blob.java | 1 -
.../java/org/apache/isis/applib/value/Clob.java | 1 -
.../isis/applib/value/LocalResourcePath.java | 25 +-
.../java/org/apache/isis/applib/value/Markup.java | 1 -
.../isis/applib/value/NamedWithMimeType.java | 1 -
.../org/apache/isis/applib/value/Password.java | 1 -
.../org/apache/isis/applib/IdentifierTests.java | 1 -
.../org/apache/isis/applib/SomeDomainClass.java | 1 -
.../commons/internal/reflection/ReflectTest.java | 1 -
.../isis/applib/events/InteractionEventTest.java | 1 -
.../applib/services/bookmark/BookmarkTest.java | 26 +-
.../exceprecog/ExceptionRecognizerForTypeTest.java | 1 -
.../exceprecog/ExceptionRecognizerGeneralTest.java | 1 -
.../applib/spec/AbstractSpecification2Test.java | 1 -
.../applib/spec/AbstractSpecificationTest.java | 1 -
.../org/apache/isis/applib/util/EnumsTest.java | 1 -
.../apache/isis/applib/util/ReasonBufferTest.java | 1 -
.../org/apache/isis/applib/util/ReasonsTest.java | 1 -
.../apache/isis/applib/util/TitleBufferTest.java | 1 -
.../apache/isis/applib/util/TitleTestObject.java | 1 -
.../isis/applib/value/Blob_constructor_Test.java | 1 -
.../isis/applib/value/Clob_constructor_Test.java | 1 -
.../apache/isis/applib/value/Password_Test.java | 1 -
.../org/apache/isis/commons/collections/Can.java | 119 +++--
.../apache/isis/commons/collections/Can_Empty.java | 15 +-
.../isis/commons/collections/Can_Multiple.java | 25 +-
.../isis/commons/collections/Can_Singleton.java | 18 +-
.../isis/commons/collections/ImmutableEnumSet.java | 12 +
.../isis/commons/collections/_CanFactory.java | 69 +++
.../apache/isis/commons/internal/_Constants.java | 1 -
.../isis/commons/internal/assertions/_Assert.java | 1 -
.../isis/commons/internal/base/_Blackhole.java | 1 -
.../apache/isis/commons/internal/base/_Bytes.java | 1 -
.../internal/base/_Bytes_GZipCompressor.java | 1 -
.../internal/base/_Bytes_GZipCompressorSmart.java | 1 -
.../apache/isis/commons/internal/base/_Casts.java | 1 -
.../apache/isis/commons/internal/base/_Either.java | 1 -
.../apache/isis/commons/internal/base/_Lazy.java | 1 -
.../isis/commons/internal/base/_Lazy_Simple.java | 1 -
.../commons/internal/base/_Lazy_ThreadSafe.java | 1 -
.../isis/commons/internal/base/_NullSafe.java | 5 +-
.../isis/commons/internal/base/_Optionals.java | 20 +-
.../apache/isis/commons/internal/base/_Refs.java | 5 +-
.../isis/commons/internal/base/_Strings.java | 43 +-
.../internal/base/_Strings_HtmlEscaper.java | 1 -
.../internal/base/_Strings_KeyValuePair.java | 29 +-
.../internal/base/_Strings_NaturalNames.java | 1 -
.../internal/base/_Strings_SplitIterator.java | 1 -
.../apache/isis/commons/internal/base/_Text.java | 1 -
.../apache/isis/commons/internal/base/_Timing.java | 1 -
.../apache/isis/commons/internal/base/_Tuples.java | 1 -
.../apache/isis/commons/internal/base/_With.java | 48 +-
.../isis/commons/internal/collections/_Arrays.java | 1 -
.../internal/collections/_Arrays_Collector.java | 1 -
.../collections/_Arrays_CollectorUnknownSize.java | 1 -
.../commons/internal/collections/_Collections.java | 1 -
.../collections/_Collections_Collector.java | 1 -
.../collections/_Collections_SortedSetOfList.java | 1 -
.../isis/commons/internal/collections/_Lists.java | 1 -
.../isis/commons/internal/collections/_Maps.java | 1 -
.../commons/internal/collections/_Multimaps.java | 1 -
.../isis/commons/internal/collections/_Sets.java | 1 -
.../commons/internal/collections/_Streams.java | 1 -
.../commons/internal/compare/_Comparators.java | 1 -
.../isis/commons/internal/context/_Context.java | 1 -
.../internal/context/_Context_ThreadLocal.java | 1 -
.../isis/commons/internal/context/_Plugin.java | 1 -
.../apache/isis/commons/internal/debug/_Probe.java | 1 -
.../commons/internal/exceptions/_Exceptions.java | 1 -
.../factory/_InstanceCreationClassException.java | 1 -
.../factory/_InstanceCreationException.java | 1 -
.../commons/internal/factory/_InstanceUtil.java | 1 -
.../factory/_UnavailableClassException.java | 1 -
.../apache/isis/commons/internal/hash/_Hashes.java | 1 -
.../isis/commons/internal/memento/_Mementos.java | 1 -
.../internal/memento/_Mementos_MementoDefault.java | 1 -
.../commons/internal/reflection/_Annotations.java | 65 +--
.../commons/internal/reflection/_ClassCache.java | 297 ++++++++++++
.../commons/internal/reflection/_MethodCache.java | 106 -----
.../isis/commons/internal/reflection/_Reflect.java | 168 +++++--
.../commons/internal/resources/_Serializables.java | 84 ++++
.../internal/testing/_SerializationTester.java | 29 +-
.../apache/isis/commons/collections/CanTest.java | 64 ++-
.../isis/commons/internal/base/BytesTest.java | 1 -
.../isis/commons/internal/base/NullSafeTest.java | 1 -
.../isis/commons/internal/base/ReductionTest.java | 1 -
.../isis/commons/internal/base/StringsTest.java | 1 -
.../commons/internal/compare/ComparatorsTest.java | 1 -
.../commons/internal/reflection/ReflectTest.java | 94 ++++
core/adoc/modules/_overview/pages/about.adoc | 477 ++-----------------
.../apache/isis/core/config/IsisConfiguration.java | 34 +-
.../isis/core/config/IsisModuleCoreConfig.java | 2 +-
.../IsisBeanFactoryPostProcessorForSpring.java | 7 +-
.../config/beans/IsisBeanTypeClassifierImpl.java | 19 +-
.../isis/core/config/messages/MessageRegistry.java | 1 -
.../progmodel/ProgrammingModelConstants.java | 365 +++++++++++++++
.../isis/core/config/util/LogicalTypeNameUtil.java | 54 ---
.../isis/core/config/viewer/web/DialogMode.java | 26 ++
.../core/config/viewer/web/WebAppContextPath.java | 159 +++++++
.../isis/core/config/viewer/wicket/DialogMode.java | 26 --
.../config/viewer/wicket/WebAppContextPath.java | 140 ------
.../WebAppContextPath_setContextPath_Test.java | 2 +
.../core/interaction/session/MessageBroker.java | 1 -
.../interaction/InteractionDefaultTest_next.java | 1 -
.../config/IsisConfigurationLegacy.java | 3 +-
.../jmocking/InjectIntoJMockAction.java | 1 -
.../_testing/MetaModelContext_forTesting.java | 8 +-
.../_testing/MethodRemoverForTesting.java | 8 +-
.../core/metamodel/commons/ArrayExtensions.java | 1 -
.../isis/core/metamodel/commons/CanBeVoid.java | 1 -
.../metamodel/commons/CanonicalParameterUtil.java | 27 +-
.../core/metamodel/commons/ClassExtensions.java | 1 -
.../isis/core/metamodel/commons/ClassUtil.java | 2 +-
.../core/metamodel/commons/DateExtensions.java | 1 -
.../metamodel/commons/InputStreamExtensions.java | 1 -
.../core/metamodel/commons/ListExtensions.java | 1 -
.../isis/core/metamodel/commons/LocaleUtil.java | 1 -
.../isis/core/metamodel/commons/MapUtil.java | 1 -
.../core/metamodel/commons/MethodExtensions.java | 1 -
.../isis/core/metamodel/commons/MethodUtil.java | 35 +-
.../core/metamodel/commons/ObjectExtensions.java | 1 -
.../isis/core/metamodel/commons/ResourceUtil.java | 1 -
.../core/metamodel/commons/StringExtensions.java | 65 +--
.../metamodel/commons/ThrowableExtensions.java | 1 -
.../isis/core/metamodel/commons/ToString.java | 1 -
.../apache/isis/core/metamodel/consent/Allow.java | 18 +-
.../isis/core/metamodel/consent/Consent.java | 1 -
.../core/metamodel/consent/ConsentAbstract.java | 1 -
.../core/metamodel/consent/InteractionAdvisor.java | 1 -
.../metamodel/consent/InteractionContextType.java | 1 -
.../metamodel/consent/InteractionInitiatedBy.java | 1 -
.../core/metamodel/consent/InteractionResult.java | 1 -
.../metamodel/consent/InteractionResultSet.java | 1 -
.../apache/isis/core/metamodel/consent/Veto.java | 1 -
.../apache/isis/core/metamodel/facetapi/Facet.java | 4 -
.../core/metamodel/facetapi/FacetAbstract.java | 44 +-
.../isis/core/metamodel/facetapi/FacetHolder.java | 8 +-
.../metamodel/facetapi/FacetHolderAbstract.java | 15 +-
.../isis/core/metamodel/facetapi/FacetUtil.java | 1 -
.../metamodel/facetapi/FacetWithAttributes.java | 1 -
.../isis/core/metamodel/facetapi/FeatureType.java | 1 -
.../core/metamodel/facetapi/HasFacetHolder.java | 13 +-
.../core/metamodel/facetapi/MetaModelRefiner.java | 1 -
.../core/metamodel/facetapi/MethodRemover.java | 1 -
.../isis/core/metamodel/facets/ActionSupport.java | 91 ++--
.../isis/core/metamodel/facets/Annotations.java | 237 ----------
.../core/metamodel/facets/DomainEventHelper.java | 15 +-
.../isis/core/metamodel/facets/Evaluators.java | 202 ++++++++
.../isis/core/metamodel/facets/FacetFactory.java | 91 ++--
.../metamodel/facets/FacetFactoryAbstract.java | 7 +-
.../isis/core/metamodel/facets/FacetedMethod.java | 3 +-
.../core/metamodel/facets/HasImperativeAspect.java | 40 ++
.../facets/HasPostConstructMethodCache.java | 58 +++
.../core/metamodel/facets/ImperativeAspect.java | 63 +++
.../core/metamodel/facets/ImperativeFacet.java | 17 -
.../metamodel/facets/ImperativeFacetMulti.java | 34 --
.../metamodel/facets/ObjectTypeFacetFactory.java | 22 +-
.../core/metamodel/facets/ParameterSupport.java | 152 ++----
.../metamodel/facets/PostConstructMethodCache.java | 30 --
...ropertyOrCollectionIdentifyingFacetFactory.java | 3 +-
...rCollectionIdentifyingFacetFactoryAbstract.java | 5 +-
.../metamodel/facets/SingleClassValueFacet.java | 1 -
.../facets/SingleClassValueFacetAbstract.java | 1 -
.../core/metamodel/facets/SingleIntValueFacet.java | 1 -
.../facets/SingleIntValueFacetAbstract.java | 1 -
.../metamodel/facets/SingleStringValueFacet.java | 1 -
.../facets/SingleStringValueFacetAbstract.java | 10 -
.../core/metamodel/facets/SingleValueFacet.java | 1 -
.../metamodel/facets/SingleValueFacetAbstract.java | 1 -
.../isis/core/metamodel/facets/TypedHolder.java | 1 -
.../core/metamodel/facets/WhereValueFacet.java | 1 -
.../metamodel/facets/WhereValueFacetAbstract.java | 6 -
.../facets/actcoll/typeof/TypeOfFacet.java | 25 +-
.../facets/actcoll/typeof/TypeOfFacetAbstract.java | 1 -
.../actcoll/typeof/TypeOfFacetDefaultToObject.java | 1 -
.../typeof/TypeOfFacetInferredFromArray.java | 3 +-
.../typeof/TypeOfFacetInferredFromGenerics.java | 3 +-
.../action/ActionAnnotationFacetFactory.java | 23 +-
...nChoicesForCollectionParameterFacetFactory.java | 3 +-
.../action/associateWith/ChoicesFromFacet.java | 1 -
.../associateWith/ChoicesFromFacetAbstract.java | 1 -
.../ChoicesFromFacetForActionAnnotation.java | 1 -
.../action/explicit/ActionExplicitFacet.java | 1 -
.../explicit/ActionExplicitFacetAbstract.java | 1 -
.../ActionExplicitFacetForActionAnnotation.java | 1 -
.../hidden/HiddenFacetForActionAnnotation.java | 1 -
.../action/invocation/ActionDomainEventFacet.java | 1 -
.../invocation/ActionDomainEventFacetAbstract.java | 1 -
.../invocation/ActionDomainEventFacetDefault.java | 1 -
.../ActionDomainEventFacetForActionAnnotation.java | 1 -
.../action/invocation/ActionInvocationFacet.java | 1 -
.../invocation/ActionInvocationFacetAbstract.java | 1 -
...ctionInvocationFacetForDomainEventAbstract.java | 49 +-
...ionFacetForDomainEventFromActionAnnotation.java | 1 -
...onInvocationFacetForDomainEventFromDefault.java | 1 -
.../actions/action/invocation/CommandUtil.java | 1 -
.../PrototypeFacetForActionAnnotation.java | 1 -
...ctionSemanticsFacetFallbackToNonIdempotent.java | 1 -
.../ActionSemanticsFacetForActionAnnotation.java | 1 -
.../typeof/TypeOfFacetForActionAnnotation.java | 1 -
.../actions/contributing/ContributingFacet.java | 1 -
.../contributing/ContributingFacetAbstract.java | 1 -
...tributingFacetDerivedFromMixinFacetFactory.java | 1 -
.../actions/defaults/ActionDefaultsFacet.java | 35 --
.../defaults/ActionDefaultsFacetAbstract.java | 42 --
.../method/ActionDefaultsFacetViaMethod.java | 89 ----
.../ActionDefaultsFacetViaMethodFactory.java | 84 ----
.../FileAcceptFacetForActionAnnotation.java | 1 -
.../facets/actions/homepage/HomePageFacet.java | 1 -
.../actions/homepage/HomePageFacetAbstract.java | 1 -
.../facets/actions/homepage/HomePageFacetImpl.java | 1 -
.../annotation/HomePageFacetAnnotation.java | 1 -
.../annotation/HomePageFacetAnnotationFactory.java | 1 -
...tionPositionFacetForActionLayoutAnnotation.java | 1 -
.../layout/ActionPositionFacetForActionXml.java | 1 -
...okmarkPolicyFacetForActionLayoutAnnotation.java | 1 -
.../layout/BookmarkPolicyFacetForActionXml.java | 1 -
.../CssClassFaFacetForActionLayoutAnnotation.java | 1 -
.../layout/CssClassFaFacetForActionXml.java | 1 -
.../layout/CssClassFaFacetForMenuBarXml.java | 1 -
.../CssClassFacetForActionLayoutAnnotation.java | 1 -
.../actions/layout/CssClassFacetForActionXml.java | 1 -
.../actions/layout/CssClassFacetForMenuBarXml.java | 1 -
.../HiddenFacetForActionLayoutAnnotation.java | 1 -
.../actions/layout/HiddenFacetForActionXml.java | 1 -
...berDescribedFacetForActionLayoutAnnotation.java | 1 -
.../layout/MemberDescribedFacetForActionXml.java | 1 -
.../layout/MemberDescribedFacetForMenuBarXml.java | 1 -
.../layout/MemberNamedFacetForActionXml.java | 1 -
.../layout/MemberNamedFacetForMenuBarXml.java | 1 -
.../NamedFacetForActionLayoutAnnotation.java | 1 -
.../PromptStyleFacetForActionLayoutAnnotation.java | 1 -
.../layout/PromptStyleFacetForActionXml.java | 1 -
.../RedirectFacetFromActionLayoutAnnotation.java | 1 -
.../actions/layout/RedirectFacetFromActionXml.java | 1 -
.../notinservicemenu/NotInServiceMenuFacet.java | 1 -
.../NotInServiceMenuFacetAbstract.java | 1 -
...uFacetDerivedFromDomainServiceFacetFactory.java | 1 -
.../actions/position/ActionPositionFacet.java | 1 -
.../position/ActionPositionFacetAbstract.java | 6 -
.../position/ActionPositionFacetFallback.java | 1 -
.../facets/actions/prototype/PrototypeFacet.java | 1 -
.../actions/prototype/PrototypeFacetAbstract.java | 1 -
.../facets/actions/redirect/RedirectFacet.java | 1 -
.../actions/redirect/RedirectFacetAbstract.java | 6 -
.../actions/redirect/RedirectFacetFallback.java | 1 -
.../actions/semantics/ActionSemanticsFacet.java | 1 -
.../semantics/ActionSemanticsFacetAbstract.java | 1 -
.../validate/ActionParameterValidationFacet.java | 1 -
.../ActionParameterValidationFacetAbstract.java | 1 -
.../actions/validate/ActionValidationFacet.java | 1 -
.../validate/ActionValidationFacetAbstract.java | 1 -
.../ActionParameterValidationFacetViaMethod.java | 7 -
.../method/ActionValidationFacetViaMethod.java | 27 +-
.../ActionValidationFacetViaMethodFactory.java | 50 +-
.../core/metamodel/facets/all/help/HelpFacet.java | 1 -
.../facets/all/help/HelpFacetAbstract.java | 1 -
.../metamodel/facets/all/hide/HiddenFacet.java | 1 -
.../named/MemberNamedFacetForStaticMemberName.java | 1 -
.../facets/collections/CollectionFacet.java | 21 +-
.../collections/CollectionFacetAbstract.java | 1 -
.../CollectionAccessorFacetViaAccessor.java | 7 -
.../CollectionAccessorFacetViaAccessorFactory.java | 13 +-
.../CollectionAnnotationFacetFactory.java | 7 +-
.../collection/defaultview/DefaultViewFacet.java | 1 -
.../defaultview/DefaultViewFacetAbstract.java | 1 -
.../hidden/HiddenFacetForCollectionAnnotation.java | 1 -
.../modify/CollectionDomainEventFacet.java | 1 -
.../modify/CollectionDomainEventFacetAbstract.java | 1 -
.../modify/CollectionDomainEventFacetDefault.java | 1 -
...ionDomainEventFacetForCollectionAnnotation.java | 1 -
...fFacetOnCollectionFromCollectionAnnotation.java | 1 -
.../javautilcollection/CollectionFacetFactory.java | 9 +-
.../javautilcollection/JavaArrayFacet.java | 1 -
.../javautilcollection/JavaCollectionFacet.java | 1 -
...CssClassFacetForCollectionLayoutAnnotation.java | 1 -
.../layout/CssClassFacetForCollectionXml.java | 1 -
...aultViewFacetForCollectionLayoutAnnotation.java | 1 -
.../layout/DefaultViewFacetForCollectionXml.java | 1 -
.../HiddenFacetForCollectionLayoutAnnotation.java | 1 -
.../layout/HiddenFacetForCollectionXml.java | 1 -
...escribedFacetForCollectionLayoutAnnotation.java | 1 -
.../MemberDescribedFacetForCollectionXml.java | 1 -
...berNamedFacetForCollectionLayoutAnnotation.java | 1 -
.../layout/MemberNamedFacetForCollectionXml.java | 1 -
.../PagedFacetForCollectionLayoutAnnotation.java | 1 -
.../layout/PagedFacetForCollectionXml.java | 1 -
...SortedByFacetForCollectionLayoutAnnotation.java | 1 -
.../layout/SortedByFacetForCollectionXml.java | 1 -
.../parented/ParentedCollectionFacetDefault.java | 1 -
.../ParentedFacetSinceCollectionFactory.java | 1 -
.../facets/collections/sortedby/SortedByFacet.java | 1 -
.../sortedby/SortedByFacetAbstract.java | 1 -
.../annotation/SortedByFacetAnnotationFactory.java | 1 -
.../collparam/semantics/CollectionSemantics.java | 4 +-
.../semantics/CollectionSemanticsFacet.java | 1 -
.../semantics/CollectionSemanticsFacetDefault.java | 1 -
.../facets/fallback/ActionChoicesFacetNone.java | 42 --
.../facets/fallback/ActionDefaultsFacetNone.java | 37 --
.../facets/fallback/FallbackFacetFactory.java | 6 +-
.../metamodel/facets/fallback/HelpFacetNone.java | 1 -
.../facets/fallback/MaxLengthFacetUnlimited.java | 1 -
.../facets/fallback/MultiLineFacetNone.java | 1 -
.../fallback/NamedFacetFallbackFromMemberName.java | 1 -
.../metamodel/facets/fallback/TitleFacetNone.java | 1 -
.../metamodel/facets/jaxb/JaxbFacetFactory.java | 1 -
.../facets/jaxb/XmlAccessorTypeFacet.java | 1 -
.../facets/jaxb/XmlAccessorTypeFacetAbstract.java | 1 -
.../facets/jaxb/XmlAccessorTypeFacetDefault.java | 1 -
.../facets/jaxb/XmlJavaTypeAdapterFacet.java | 1 -
.../jaxb/XmlJavaTypeAdapterFacetAbstract.java | 1 -
.../jaxb/XmlJavaTypeAdapterFacetDefault.java | 1 -
.../metamodel/facets/jaxb/XmlTransientFacet.java | 1 -
.../facets/jaxb/XmlTransientFacetAbstract.java | 1 -
.../facets/jaxb/XmlTransientFacetDefault.java | 1 -
.../facets/members/cssclass/CssClassFacet.java | 1 -
.../members/cssclass/CssClassFacetAbstract.java | 1 -
.../members/cssclass/CssClassFacetSimple.java | 1 -
.../CssClassFacetOnActionFromConfiguredRegex.java | 1 -
...assFacetOnActionFromConfiguredRegexFactory.java | 1 -
.../facets/members/cssclassfa/CssClassFaFacet.java | 1 -
.../cssclassfa/CssClassFaImperativeFacet.java | 1 -
.../CssClassFaImperativeFacetAbstract.java | 1 -
.../members/cssclassfa/CssClassFaStaticFacet.java | 1 -
.../cssclassfa/CssClassFaStaticFacetAbstract.java | 1 -
...CssClassFaFacetOnMemberFromConfiguredRegex.java | 1 -
.../CssClassFaFacetOnMemberPostProcessor.java | 1 -
.../DescribedAsFacetOnMemberFromProperties.java | 1 -
.../DescribedAsFacetOnMemberInferredFromType.java | 1 -
.../DescribedAsFacetForMemberViaMethodFactory.java | 54 +--
.../facets/members/disabled/DisabledFacet.java | 1 -
.../members/disabled/DisabledFacetAbstract.java | 1 -
.../disabled/DisabledFacetForContributee.java | 1 -
.../disabled/method/DisableForContextFacet.java | 1 -
.../method/DisableForContextFacetAbstract.java | 1 -
.../method/DisableForContextFacetNone.java | 1 -
.../method/DisableForContextFacetViaMethod.java | 17 +-
.../DisableForContextFacetViaMethodFactory.java | 76 +--
.../facets/members/hidden/HiddenFacetAbstract.java | 1 -
.../HiddenFacetAbstractAlwaysEverywhere.java | 1 -
.../members/hidden/HiddenFacetAbstractImpl.java | 1 -
.../HiddenFacetFromLayoutPropertiesAbstract.java | 1 -
.../members/hidden/method/HideForContextFacet.java | 1 -
.../hidden/method/HideForContextFacetAbstract.java | 1 -
.../hidden/method/HideForContextFacetNone.java | 1 -
.../method/HideForContextFacetViaMethod.java | 7 -
.../HideForContextFacetViaMethodFactory.java | 70 +--
.../members/layout/group/GroupIdAndName.java | 13 +-
...utOrderFacetFromCollectionLayoutAnnotation.java | 1 -
...youtOrderFacetFromPropertyLayoutAnnotation.java | 1 -
.../NamedFacetForMemberViaMethodFactory.java | 53 +--
.../facets/members/navigation/NavigationFacet.java | 1 -
.../publish/command/CommandPublishingFacet.java | 1 -
.../command/CommandPublishingFacetAbstract.java | 1 -
.../CommandPublishingFacetFromConfiguration.java | 1 -
...onPublishingActionFacetForActionAnnotation.java | 1 -
...ActionFacetForActionAnnotationAsConfigured.java | 1 -
...tionPublishingActionFacetFromConfiguration.java | 1 -
.../execution/ExecutionPublishingFacet.java | 1 -
.../ExecutionPublishingFacetAbstract.java | 1 -
...blishingPropertyFacetForPropertyAnnotation.java | 1 -
...onPublishingPropertyFacetFromConfiguration.java | 1 -
...mberAndPropertySupportFacetFactoryAbstract.java | 48 ++
.../support/MemberSupportFacetFactoryAbstract.java | 85 ++++
.../object/autocomplete/AutoCompleteFacet.java | 1 -
.../autocomplete/AutoCompleteFacetAbstract.java | 1 -
.../BookmarkPolicyFacetFallbackFactory.java | 1 -
.../facets/object/callbacks/CallbackFacet.java | 5 +-
.../object/callbacks/CallbackFacetAbstract.java | 40 +-
.../object/callbacks/CallbackFacetFactory.java | 86 ++++
.../object/callbacks/CreatedCallbackFacet.java | 1 -
.../callbacks/CreatedCallbackFacetAbstract.java | 10 +-
.../callbacks/CreatedCallbackFacetFactory.java | 55 ---
.../callbacks/CreatedCallbackFacetViaMethod.java | 9 +-
.../callbacks/CreatedLifecycleEventFacet.java | 1 -
...fecycleEventFacetForDomainObjectAnnotation.java | 1 -
.../object/callbacks/LifecycleEventFacet.java | 1 -
.../object/callbacks/LoadCallbackFacetFactory.java | 59 ---
.../object/callbacks/LoadedCallbackFacet.java | 1 -
.../callbacks/LoadedCallbackFacetAbstract.java | 10 +-
.../callbacks/LoadedCallbackFacetViaMethod.java | 13 +-
.../callbacks/LoadedLifecycleEventFacet.java | 1 -
...fecycleEventFacetForDomainObjectAnnotation.java | 1 -
.../callbacks/PersistCallbackFacetFactory.java | 83 ----
.../PersistCallbackViaSaveMethodFacetFactory.java | 83 ----
.../object/callbacks/PersistedCallbackFacet.java | 1 -
.../callbacks/PersistedCallbackFacetAbstract.java | 10 +-
.../callbacks/PersistedCallbackFacetViaMethod.java | 13 +-
.../callbacks/PersistedLifecycleEventFacet.java | 1 -
...fecycleEventFacetForDomainObjectAnnotation.java | 1 -
.../object/callbacks/PersistingCallbackFacet.java | 1 -
.../callbacks/PersistingCallbackFacetAbstract.java | 10 +-
.../PersistingCallbackFacetViaMethod.java | 13 +-
.../callbacks/PersistingLifecycleEventFacet.java | 1 -
...fecycleEventFacetForDomainObjectAnnotation.java | 1 -
.../callbacks/RemoveCallbackFacetFactory.java | 71 ---
.../RemoveCallbackViaDeleteMethodFacetFactory.java | 70 ---
.../object/callbacks/RemovingCallbackFacet.java | 1 -
.../callbacks/RemovingCallbackFacetAbstract.java | 10 +-
.../callbacks/RemovingCallbackFacetViaMethod.java | 13 +-
.../callbacks/RemovingLifecycleEventFacet.java | 1 -
...fecycleEventFacetForDomainObjectAnnotation.java | 1 -
.../callbacks/UpdateCallbackFacetFactory.java | 73 ---
.../object/callbacks/UpdatedCallbackFacet.java | 1 -
.../callbacks/UpdatedCallbackFacetAbstract.java | 10 +-
.../callbacks/UpdatedCallbackFacetViaMethod.java | 13 +-
.../callbacks/UpdatedLifecycleEventFacet.java | 1 -
...fecycleEventFacetForDomainObjectAnnotation.java | 1 -
.../object/callbacks/UpdatingCallbackFacet.java | 1 -
.../callbacks/UpdatingCallbackFacetAbstract.java | 10 +-
.../callbacks/UpdatingCallbackFacetViaMethod.java | 12 +-
.../callbacks/UpdatingLifecycleEventFacet.java | 1 -
...fecycleEventFacetForDomainObjectAnnotation.java | 1 -
.../choices/ChoicesFacetFromBoundedAbstract.java | 1 -
.../object/choices/enums/ChoicesFacetEnum.java | 1 -
.../facets/object/choices/enums/EnumFacet.java | 1 -
...ingValueFacetUsingSemanticsProviderFactory.java | 6 +-
.../choices/enums/EnumValueSemanticsProvider.java | 48 +-
.../cssclass/method/CssClassFacetMethod.java | 65 ---
.../method/CssClassFacetMethodFactory.java | 56 ---
.../method/CssClassFacetViaCssClassMethod.java | 72 +++
...ssClassFaFacetForDomainObjectLayoutFactory.java | 1 -
.../facets/object/defaults/DefaultedFacet.java | 4 +-
.../object/defaults/DefaultedFacetAbstract.java | 6 -
.../DefaultedFacetUsingDefaultsProvider.java | 1 -
.../object/defaults/DefaultsProviderUtil.java | 1 -
.../annotcfg/DefaultedFacetAnnotation.java | 1 -
...tedFacetAnnotationElseConfigurationFactory.java | 24 +-
.../annotcfg/DefaultedFacetFromConfiguration.java | 1 -
.../object/disabled/DisabledObjectFacet.java | 1 -
.../disabled/DisabledObjectFacetAbstract.java | 9 +-
.../method/DisabledObjectFacetViaMethod.java | 67 ++-
.../DisabledObjectFacetViaMethodFactory.java | 94 ----
.../DomainObjectAnnotationFacetFactory.java | 44 +-
...AutoCompleteFacetForDomainObjectAnnotation.java | 1 -
.../ChoicesFacetForDomainObjectAnnotation.java | 1 -
...EventDefaultFacetForDomainObjectAnnotation.java | 1 -
...EventDefaultFacetForDomainObjectAnnotation.java | 1 -
...EventDefaultFacetForDomainObjectAnnotation.java | 1 -
...itingEnabledFacetForDomainObjectAnnotation.java | 1 -
.../ImmutableFacetForDomainObjectAnnotation.java | 1 -
...FacetForDomainObjectAnnotationAsConfigured.java | 1 -
.../editing/ImmutableFacetFromConfiguration.java | 1 -
...ectionPolicyFacetForDomainObjectAnnotation.java | 58 +++
.../LogicalTypeFacetForDomainObjectAnnotation.java | 50 ++
.../LogicalTypeFacetForDomainObjectAnnotation.java | 52 ---
...atableObjectFacetForDomainObjectAnnotation.java | 7 +-
.../BookmarkPolicyFacetForDomainObjectXml.java | 1 -
...lassFaFacetForDomainObjectLayoutAnnotation.java | 1 -
.../CssClassFaFacetForDomainObjectXml.java | 1 -
...sClassFacetForDomainObjectLayoutAnnotation.java | 4 +-
.../CssClassFacetForDomainObjectXml.java | 1 -
...ObjectLayoutAnnotationUsingCssClassUiEvent.java | 1 -
.../DescribedAsFacetForDomainObjectXml.java | 1 -
...mainObjectLayoutAnnotationUsingIconUiEvent.java | 1 -
...inObjectLayoutAnnotationUsingLayoutUiEvent.java | 1 -
.../ObjectNamedFacetForDomainObjectXml.java | 1 -
...ainObjectLayoutAnnotationUsingTitleUiEvent.java | 1 -
.../facets/object/encodeable/EncodableFacet.java | 1 -
.../object/encodeable/EncodableFacetAbstract.java | 13 +-
.../object/encodeable/EncoderDecoderUtil.java | 1 -
.../annotcfg/EncodableFacetFromConfiguration.java | 1 -
.../encoder/EncodableFacetUsingEncoderDecoder.java | 12 +-
.../facets/object/entity/EntityFacet.java | 1 -
.../facets/object/facets/FacetsFacet.java | 47 --
.../facets/object/facets/FacetsFacetAbstract.java | 100 ----
.../facets/annotation/FacetsFacetAnnotation.java | 33 --
.../annotation/FacetsFacetAnnotationFactory.java | 59 ---
.../facets/object/hidden/HiddenInstanceFacet.java | 1 -
.../facets/object/hidden/HiddenObjectFacet.java | 1 -
.../object/hidden/HiddenObjectFacetAbstract.java | 5 +-
.../facets/object/hidden/HiddenTypeFacet.java | 1 -
.../HiddenTypeFacetDerivedFromAuthorization.java | 1 -
...enTypeFacetDerivedFromAuthorizationFactory.java | 1 -
.../hidden/method/HiddenObjectFacetViaMethod.java | 38 +-
.../method/HiddenObjectFacetViaMethodFactory.java | 98 ----
.../metamodel/facets/object/icon/IconFacet.java | 1 -
.../facets/object/icon/IconFacetAbstract.java | 1 -
.../facets/object/icon/method/IconFacetMethod.java | 57 ---
.../object/icon/method/IconFacetMethodFactory.java | 58 ---
.../icon/method/IconFacetViaIconNameMethod.java | 72 +++
.../RemoveAnnotatedMethodsFacetFactory.java | 9 +-
...oveDatanucleusPersistableTypesFacetFactory.java | 8 +-
.../RemoveDnPrefixedMethodsFacetFactory.java | 15 +-
.../javalang/IteratorFilteringFacetFactory.java | 1 -
.../ignore/javalang/RemoveMethodsFacetFactory.java | 32 +-
.../jdo/RemoveJdoEnhancementTypesFacetFactory.java | 11 +-
.../jdo/RemoveJdoPrefixedMethodsFacetFactory.java | 16 +-
.../object/immutable/EditingEnabledFacet.java | 1 -
.../facets/object/immutable/ImmutableFacet.java | 1 -
.../object/immutable/ImmutableFacetAbstract.java | 1 -
.../CopyImmutableFacetOntoMembersFactory.java | 1 -
.../introspection/IntrospectionPolicyFacet.java | 57 +++
.../IntrospectionPolicyFacetAbstract.java | 61 +++
.../facets/object/layout/LayoutFacet.java | 1 -
.../facets/object/layout/LayoutFacetAbstract.java | 1 -
.../facets/object/layout/LayoutFacetFactory.java | 58 ---
.../facets/object/layout/LayoutFacetFallback.java | 1 -
.../facets/object/layout/LayoutFacetMethod.java | 57 ---
.../object/layout/LayoutFacetViaLayoutMethod.java | 78 ++++
.../logicaltype/LogicalTypeFacetAbstract.java | 1 -
...ogicalTypeFacetDerivedFromClassNameFactory.java | 1 -
.../LogicalTypeFacetInferredFromClassName.java | 1 -
...icalTypeFacetInferredFromIoCNamingStrategy.java | 1 -
.../LogicalTypeFacetOnStandaloneList.java | 1 -
.../metamodel/facets/object/mixin/MixinFacet.java | 1 -
.../facets/object/mixin/MixinFacetAbstract.java | 1 -
.../mixin/MixinFacetForDomainObjectAnnotation.java | 1 -
.../object/navparent/NavigableParentFacet.java | 1 -
.../navparent/NavigableParentFacetAbstract.java | 5 +-
.../NavigableParentAnnotationFacetFactory.java | 93 ++--
.../method/NavigableParentFacetMethod.java | 60 ---
.../NavigableParentFacetViaGetterMethod.java | 62 +++
.../ObjectValidPropertiesFacet.java | 1 -
.../ObjectValidPropertiesFacetAbstract.java | 1 -
.../impl/ObjectValidPropertiesFacetImpl.java | 1 -
.../ObjectValidPropertiesFacetImplFactory.java | 1 -
.../metamodel/facets/object/paged/PagedFacet.java | 1 -
.../facets/object/paged/PagedFacetAbstract.java | 1 -
.../PagedFacetForPagedAnnotationOnType.java | 1 -
.../object/parented/ParentedCollectionFacet.java | 1 -
.../parented/ParentedCollectionFacetAbstract.java | 1 -
.../facets/object/parseable/ParseableFacet.java | 1 -
.../object/parseable/ParseableFacetAbstract.java | 8 +-
.../facets/object/parseable/ParserUtil.java | 1 -
.../annotcfg/ParseableFacetFromConfiguration.java | 1 -
.../parser/ParseableFacetUsingParser.java | 11 +-
.../facets/object/projection/ProjectionFacet.java | 1 -
.../object/projection/ProjectionFacetAbstract.java | 1 -
.../ProjectionFacetFromProjectingProperty.java | 1 -
.../CssClassFacetInferredFromProjectionFacet.java | 1 -
.../ident/IconFacetDerivedFromProjectionFacet.java | 1 -
.../TitleFacetDerivedFromProjectionFacet.java | 1 -
.../object/promptStyle/PromptStyleFacet.java | 1 -
.../promptStyle/PromptStyleFacetAbstract.java | 1 -
.../promptStyle/PromptStyleFacetAsConfigured.java | 1 -
...tyDerivedFromRecreatableObjectFacetFactory.java | 57 ---
...cetOnPropertyInferredFromRecreatableObject.java | 51 --
.../RecreatableObjectFacetAbstract.java | 36 +-
...ObjectFacetDeclarativeInitializingAbstract.java | 5 +-
.../recreatable/RecreatableObjectFacetFactory.java | 19 +-
...ctFacetForRecreatableDomainObjectInterface.java | 5 +-
...eObjectFacetForRecreatableObjectAnnotation.java | 5 +-
...leObjectFacetForRecreatableObjectInterface.java | 5 +-
...ableObjectFacetForXmlRootElementAnnotation.java | 23 +-
.../metamodel/facets/object/recreatable/Util.java | 33 --
.../object/support/ObjectSupportFacetAbstract.java | 8 +
.../object/support/ObjectSupportFacetFactory.java | 149 ++++++
.../metamodel/facets/object/title/TitleFacet.java | 1 -
.../facets/object/title/TitleFacetAbstract.java | 33 +-
.../annotation/TitleAnnotationFacetFactory.java | 150 ++----
.../annotation/TitleFacetViaTitleAnnotation.java | 223 ++++++---
.../TitleFacetInferredFromToStringMethod.java | 46 +-
.../title/methods/TitleFacetViaMethodsFactory.java | 118 -----
.../title/methods/TitleFacetViaTitleMethod.java | 47 +-
.../object/title/parser/TitleFacetUsingParser.java | 17 +-
.../validateobject/ValidateObjectFacet.java | 55 ---
.../ValidateObjectFacetAbstract.java | 48 --
.../method/ValidateObjectFacetMethod.java | 79 ----
.../method/ValidateObjectFacetMethodFactory.java | 67 ---
.../facets/object/value/EqualByContentFacet.java | 1 -
.../object/value/EqualByContentFacetAbstract.java | 1 -
.../EqualByContentFacetViaValueSemantics.java | 1 -
.../value/ImmutableFacetViaValueSemantics.java | 1 -
.../object/value/MaxLengthFacetUsingParser.java | 9 +-
.../value/TypicalLengthFacetUsingParser.java | 8 +-
.../metamodel/facets/object/value/ValueFacet.java | 1 -
.../facets/object/value/ValueFacetAbstract.java | 2 +-
.../facets/object/value/ValueFacetSimple.java | 1 -
.../value/annotcfg/ValueFacetAnnotation.java | 1 -
...ValueFacetAnnotationOrConfigurationFactory.java | 1 -
.../annotcfg/ValueFacetFromConfiguration.java | 1 -
.../vsp/ValueFacetUsingSemanticsProvider.java | 1 -
.../ValueFacetUsingSemanticsProviderFactory.java | 1 -
.../ValueSemanticsProviderAndFacetAbstract.java | 1 -
.../value/vsp/ValueSemanticsProviderUtil.java | 1 -
.../facets/object/viewmodel/ViewModelFacet.java | 34 +-
.../facets/object/wizard/WizardFacet.java | 41 --
.../facets/object/wizard/WizardFacetAbstract.java | 36 --
.../facets/objectvalue/choices/ChoicesFacet.java | 1 -
.../objectvalue/choices/ChoicesFacetAbstract.java | 1 -
.../objectvalue/fileaccept/FileAcceptFacet.java | 1 -
.../fileaccept/FileAcceptFacetAbstract.java | 1 -
.../facets/objectvalue/labelat/LabelAtFacet.java | 1 -
.../objectvalue/labelat/LabelAtFacetAbstract.java | 10 +-
.../LabelAtFacetInferredFromMultiLineFacet.java | 1 -
.../objectvalue/mandatory/MandatoryFacet.java | 1 -
.../mandatory/MandatoryFacetAbstract.java | 1 -
.../mandatory/MandatoryFacetDefault.java | 1 -
.../facets/objectvalue/maxlen/MaxLengthFacet.java | 1 -
.../objectvalue/maxlen/MaxLengthFacetAbstract.java | 8 +-
.../objectvalue/multiline/MultiLineFacet.java | 1 -
.../multiline/MultiLineFacetAbstract.java | 6 -
.../MustSatisfySpecificationFacet.java | 1 -
.../MustSatisfySpecificationFacetAbstract.java | 1 -
.../facets/objectvalue/regex/RegExFacet.java | 1 -
.../objectvalue/regex/RegExFacetAbstract.java | 1 -
.../renderedadjusted/RenderedAdjustedFacet.java | 1 -
.../RenderedAdjustedFacetAbstract.java | 15 +-
.../objectvalue/typicallen/TypicalLengthFacet.java | 1 -
.../typicallen/TypicalLengthFacetAbstract.java | 22 +-
.../ActionParameterAutoCompleteFacet.java | 1 -
.../ActionParameterAutoCompleteFacetAbstract.java | 1 -
.../ActionParameterAutoCompleteFacetViaMethod.java | 20 +-
...ParameterAutoCompleteFacetViaMethodFactory.java | 77 +---
.../facets/param/choices/ActionChoicesFacet.java | 39 --
.../param/choices/ActionChoicesFacetAbstract.java | 42 --
.../param/choices/ActionParameterChoicesFacet.java | 1 -
.../ActionParameterChoicesFacetAbstract.java | 1 -
.../choices/ActionParameterChoicesFacetNone.java | 1 -
...ChoicesFacetDerivedFromChoicesFacetFactory.java | 1 -
...ameterChoicesFacetInferredFromChoicesFacet.java | 1 -
.../method/ActionChoicesFacetViaMethod.java | 109 -----
.../method/ActionChoicesFacetViaMethodFactory.java | 97 ----
.../ActionParameterChoicesFacetViaMethod.java | 17 +-
...ctionParameterChoicesFacetViaMethodFactory.java | 78 +---
.../defaults/ActionParameterDefaultsFacet.java | 1 -
.../ActionParameterDefaultsFacetAbstract.java | 1 -
...arameterDefaultFacetDerivedFromTypeFactory.java | 69 ---
...arameterDefaultFacetInferredFromTypeFacets.java | 63 ---
.../ActionParameterDefaultsFacetViaMethod.java | 21 +-
...tionParameterDefaultsFacetViaMethodFactory.java | 79 +---
...escribedAsFacetOnParameterInferredFromType.java | 1 -
.../disable/ActionParameterDisabledFacet.java | 1 -
.../ActionParameterDisabledFacetAbstract.java | 1 -
.../ActionParameterDisabledFacetViaMethod.java | 27 +-
...tionParameterDisabledFacetViaMethodFactory.java | 74 +--
.../param/hide/ActionParameterHiddenFacet.java | 1 -
.../hide/ActionParameterHiddenFacetAbstract.java | 1 -
.../ActionParameterHiddenFacetViaMethod.java | 19 +-
...ActionParameterHiddenFacetViaMethodFactory.java | 70 +--
.../CssClassFacetForParameterLayoutAnnotation.java | 1 -
...scribedAsFacetForParameterLayoutAnnotation.java | 1 -
.../LabelAtFacetForParameterLayoutAnnotation.java | 1 -
...MultiLineFacetForParameterLayoutAnnotation.java | 1 -
.../NamedFacetForParameterLayoutAnnotation.java | 1 -
.../param/layout/ParameterLayoutFacetFactory.java | 1 -
...dAdjustedFacetForParameterLayoutAnnotation.java | 1 -
...calLengthFacetForParameterLayoutAnnotation.java | 1 -
.../MandatoryFacetOnParametersDefaultFactory.java | 1 -
.../parameter/ParameterAnnotationFacetFactory.java | 1 -
.../FileAcceptFacetForParameterAnnotation.java | 1 -
.../MandatoryFacetForParameterAnnotation.java | 1 -
...cetInvertedByNullableAnnotationOnParameter.java | 1 -
.../MaxLengthFacetForParameterAnnotation.java | 1 -
...fySpecificationFacetForParameterAnnotation.java | 1 -
.../regex/RegExFacetForParameterAnnotation.java | 1 -
.../RegExFacetForPatternAnnotationOnParameter.java | 1 -
...ActionParameterSupportFacetFactoryAbstract.java | 94 ++++
...icalLengthFacetOnParameterInferredFromType.java | 1 -
.../validate/ActionParameterValidationFacet.java | 1 -
.../ActionParameterValidationFacetAbstract.java | 1 -
.../ActionParameterValidationFacetViaMethod.java | 27 +-
...onParameterValidationFacetViaMethodFactory.java | 76 +--
.../PropertyOrCollectionAccessorFacet.java | 1 -
.../PropertyOrCollectionAccessorFacetAbstract.java | 1 -
.../propcoll/memserexcl/SnapshotExcludeFacet.java | 1 -
.../memserexcl/SnapshotExcludeFacetAbstract.java | 1 -
.../accessor/PropertyAccessorFacetViaAccessor.java | 7 -
.../PropertyAccessorFacetViaAccessorFactory.java | 32 +-
.../autocomplete/PropertyAutoCompleteFacet.java | 1 -
.../PropertyAutoCompleteFacetAbstract.java | 1 -
.../method/PropertyAutoCompleteFacetMethod.java | 7 -
.../PropertyAutoCompleteFacetMethodFactory.java | 57 +--
.../properties/businesskey/BusinessKeyFacet.java | 1 -
.../businesskey/BusinessKeyFacetAbstract.java | 1 -
.../properties/choices/PropertyChoicesFacet.java | 1 -
.../choices/PropertyChoicesFacetAbstract.java | 1 -
...ropertyChoicesFacetDerivedFromChoicesFacet.java | 1 -
...ChoicesFacetDerivedFromChoicesFacetFactory.java | 1 -
.../method/PropertyChoicesFacetViaMethod.java | 8 -
.../PropertyChoicesFacetViaMethodFactory.java | 56 +--
.../properties/defaults/PropertyDefaultFacet.java | 1 -
.../defaults/PropertyDefaultFacetAbstract.java | 1 -
.../defaults/PropertyDefaultFacetNone.java | 1 -
...pertyDefaultFacetDerivedFromDefaultedFacet.java | 1 -
...PropertyDefaultFacetDerivedFromTypeFactory.java | 1 -
.../method/PropertyDefaultFacetViaMethod.java | 7 -
.../PropertyDefaultFacetViaMethodFactory.java | 61 +--
...FacetOnPropertyDerivedFromImmutableFactory.java | 1 -
...sabledFacetOnPropertyInferredFromImmutable.java | 1 -
.../DisabledFacetOnPropertyInferredFactory.java | 1 -
...edFacetOnPropertyInferredFromMissingSetter.java | 1 -
.../MandatoryFacetOnProperyDefaultFactory.java | 1 -
.../properties/projection/ProjectingFacet.java | 1 -
.../projection/ProjectingFacetAbstract.java | 1 -
.../ProjectingFacetFromPropertyAnnotation.java | 1 -
.../property/PropertyAnnotationFacetFactory.java | 5 +-
.../DisabledFacetForPropertyAnnotation.java | 1 -
...acetForPropertyAnnotationInvertedSemantics.java | 1 -
.../EntityPropertyChangePublishingPolicyFacet.java | 1 -
...ropertyChangePublishingPolicyFacetAbstract.java | 1 -
...PublishingPolicyFacetForPropertyAnnotation.java | 1 -
.../FileAcceptFacetForPropertyAnnotation.java | 1 -
.../hidden/HiddenFacetForPropertyAnnotation.java | 1 -
.../MandatoryFacetForPropertyAnnotation.java | 1 -
...acetInvertedByNullableAnnotationOnProperty.java | 1 -
.../MaxLengthFacetForPropertyAnnotation.java | 1 -
...ropertyClearFacetForDomainEventFromDefault.java | 1 -
...rFacetForDomainEventFromPropertyAnnotation.java | 1 -
.../property/modify/PropertyDomainEventFacet.java | 1 -
.../modify/PropertyDomainEventFacetAbstract.java | 1 -
.../modify/PropertyDomainEventFacetDefault.java | 1 -
...pertyDomainEventFacetForPropertyAnnotation.java | 1 -
...opertySetterFacetForDomainEventFromDefault.java | 1 -
...rFacetForDomainEventFromPropertyAnnotation.java | 1 -
...tySetterOrClearFacetForDomainEventAbstract.java | 21 +-
...sfySpecificationFacetForPropertyAnnotation.java | 1 -
.../RegExFacetForPatternAnnotationOnProperty.java | 1 -
.../regex/RegExFacetForPropertyAnnotation.java | 1 -
.../SnapshotExcludeFacetForPropertyAnnotation.java | 1 -
.../CssClassFacetForPropertyLayoutAnnotation.java | 1 -
.../CssClassFacetForPropertyXml.java | 1 -
...escribedAsFacetForPropertyLayoutAnnotation.java | 1 -
.../HiddenFacetForPropertyLayoutAnnotation.java | 1 -
.../propertylayout/HiddenFacetForPropertyXml.java | 1 -
.../LabelAtFacetForPropertyLayoutAnnotation.java | 1 -
.../propertylayout/LabelAtFacetForPropertyXml.java | 1 -
.../MemberDescribedFacetForPropertyXml.java | 1 -
.../MultiLineFacetForPropertyLayoutAnnotation.java | 1 -
.../MultiLineFacetForPropertyXml.java | 1 -
.../NamedFacetForPropertyLayoutAnnotation.java | 1 -
...romptStyleFacetForPropertyLayoutAnnotation.java | 1 -
.../PromptStyleFacetForPropertyXml.java | 1 -
.../propertylayout/PropertyLayoutFacetFactory.java | 1 -
...edAdjustedFacetForPropertyLayoutAnnotation.java | 1 -
.../RenderedAdjustedFacetForPropertyXml.java | 1 -
...icalLengthFacetForPropertyLayoutAnnotation.java | 1 -
.../TypicalLengthFacetForPropertyXml.java | 1 -
...UnchangingFacetForPropertyLayoutAnnotation.java | 1 -
.../UnchangingFacetForPropertyXml.java | 1 -
...nderedAsDayBeforeFacetAnnotationOnProperty.java | 1 -
.../renderunchanged/UnchangingFacet.java | 1 -
.../renderunchanged/UnchangingFacetAbstract.java | 1 -
.../properties/searchable/SearchableFacet.java | 1 -
.../searchable/SearchableFacetAbstract.java | 1 -
...picalLengthFacetOnPropertyInferredFromType.java | 1 -
.../update/PropertySetterFacetFactory.java | 74 ++-
.../update/SnapshotExcludeFacetInferred.java | 1 -
.../update/clear/PropertyClearFacet.java | 1 -
.../update/clear/PropertyClearFacetAbstract.java | 1 -
.../clear/PropertyClearFacetViaClearMethod.java | 23 +-
.../clear/PropertyClearFacetViaSetterMethod.java | 24 +-
.../update/clear/PropertyClearingAccessor.java | 1 -
.../update/init/PropertyInitializationFacet.java | 1 -
.../init/PropertyInitializationFacetAbstract.java | 1 -
...PropertyInitializationFacetViaSetterMethod.java | 7 -
.../update/modify/PropertySetterFacet.java | 1 -
.../update/modify/PropertySetterFacetAbstract.java | 1 -
.../modify/PropertySetterFacetViaSetterMethod.java | 23 +-
.../update/modify/PropertySettingAccessor.java | 1 -
.../validating/PropertyValidateFacet.java | 1 -
.../validating/PropertyValidateFacetAbstract.java | 1 -
.../validating/PropertyValidateFacetNone.java | 1 -
.../dflt/PropertyValidateFacetDefault.java | 1 -
.../dflt/PropertyValidateFacetDefaultFactory.java | 1 -
.../method/PropertyValidateFacetViaMethod.java | 10 +-
.../PropertyValidateFacetViaMethodFactory.java | 52 +--
.../facets/schema/chg/ChangesDtoValueFacet.java | 1 -
...DtoValueFacetUsingSemanticsProviderFactory.java | 1 -
.../chg/v2/ChangesDtoValueSemanticsProvider.java | 1 -
.../facets/schema/cmd/CommandDtoValueFacet.java | 1 -
...DtoValueFacetUsingSemanticsProviderFactory.java | 1 -
.../cmd/v2/CommandDtoValueSemanticsProvider.java | 1 -
.../schema/ixn/InteractionDtoValueFacet.java | 1 -
...DtoValueFacetUsingSemanticsProviderFactory.java | 1 -
.../v2/InteractionDtoValueSemanticsProvider.java | 1 -
.../core/metamodel/facets/value/JodaFunctions.java | 1 -
.../ValueSemanticsProviderAbstractTemporal.java | 1 -
.../value/bigdecimal/BigDecimalValueFacet.java | 1 -
.../bigdecimal/BigDecimalValueFacetAbstract.java | 1 -
...malValueFacetUsingSemanticsProviderFactory.java | 1 -
.../BigDecimalValueSemanticsProvider.java | 1 -
.../value/biginteger/BigIntegerValueFacet.java | 1 -
...gerValueFacetUsingSemanticsProviderFactory.java | 1 -
.../BigIntegerValueSemanticsProvider.java | 1 -
.../facets/value/blobs/BlobValueFacet.java | 1 -
...lobValueFacetUsingSemanticsProviderFactory.java | 1 -
.../value/blobs/BlobValueSemanticsProvider.java | 1 -
...iveValueFacetUsingSemanticsProviderFactory.java | 1 -
.../BooleanPrimitiveValueSemanticsProvider.java | 1 -
.../facets/value/booleans/BooleanValueFacet.java | 1 -
.../BooleanValueSemanticsProviderAbstract.java | 1 -
...perValueFacetUsingSemanticsProviderFactory.java | 1 -
.../BooleanWrapperValueSemanticsProvider.java | 1 -
...iveValueFacetUsingSemanticsProviderFactory.java | 1 -
.../bytes/BytePrimitiveValueSemanticsProvider.java | 1 -
.../facets/value/bytes/ByteValueFacet.java | 1 -
.../bytes/ByteValueSemanticsProviderAbstract.java | 1 -
...perValueFacetUsingSemanticsProviderFactory.java | 1 -
.../bytes/ByteWrapperValueSemanticsProvider.java | 1 -
...iveValueFacetUsingSemanticsProviderFactory.java | 1 -
.../chars/CharPrimitiveValueSemanticsProvider.java | 1 -
.../facets/value/chars/CharValueFacet.java | 1 -
.../chars/CharValueSemanticsProviderAbstract.java | 1 -
...perValueFacetUsingSemanticsProviderFactory.java | 1 -
.../chars/CharWrapperValueSemanticsProvider.java | 1 -
.../facets/value/clobs/ClobValueFacet.java | 1 -
...lobValueFacetUsingSemanticsProviderFactory.java | 1 -
.../value/clobs/ClobValueSemanticsProvider.java | 1 -
.../facets/value/date/DateValueFacet.java | 1 -
.../value/datejodalocal/JodaLocalDateUtil.java | 1 -
.../datejodalocal/JodaLocalDateValueFacet.java | 1 -
...ateValueFacetUsingSemanticsProviderFactory.java | 1 -
.../JodaLocalDateValueSemanticsProvider.java | 1 -
...ateValueFacetUsingSemanticsProviderFactory.java | 1 -
.../datesql/JavaSqlDateValueSemanticsProvider.java | 1 -
.../value/datetimejoda/JodaDateTimeValueFacet.java | 1 -
...imeValueFacetUsingSemanticsProviderFactory.java | 1 -
.../JodaDateTimeValueSemanticsProvider.java | 1 -
.../datetimejodalocal/JodaLocalDateTimeUtil.java | 1 -
.../JodaLocalDateTimeValueFacet.java | 1 -
...imeValueFacetUsingSemanticsProviderFactory.java | 1 -
.../JodaLocalDateTimeValueSemanticsProvider.java | 1 -
...ateValueFacetUsingSemanticsProviderFactory.java | 1 -
.../JavaUtilDateValueSemanticsProvider.java | 1 -
.../doubles/DoubleFloatingPointValueFacet.java | 1 -
...iveValueFacetUsingSemanticsProviderFactory.java | 1 -
.../DoublePrimitiveValueSemanticsProvider.java | 1 -
.../DoubleValueSemanticsProviderAbstract.java | 1 -
...perValueFacetUsingSemanticsProviderFactory.java | 1 -
.../DoubleWrapperValueSemanticsProvider.java | 1 -
...iveValueFacetUsingSemanticsProviderFactory.java | 1 -
.../FloatPrimitiveValueSemanticsProvider.java | 1 -
.../FloatValueSemanticsProviderAbstract.java | 1 -
...perValueFacetUsingSemanticsProviderFactory.java | 1 -
.../floats/FloatWrapperValueSemanticsProvider.java | 1 -
.../value/floats/FloatingPointValueFacet.java | 1 -
.../facets/value/image/ImageValueFacet.java | 1 -
.../image/ImageValueSemanticsProviderAbstract.java | 1 -
...ageValueFacetUsingSemanticsProviderFactory.java | 1 -
.../JavaAwtImageValueSemanticsProvider.java | 1 -
...iveValueFacetUsingSemanticsProviderFactory.java | 1 -
.../IntPrimitiveValueSemanticsProvider.java | 1 -
.../integer/IntValueSemanticsProviderAbstract.java | 1 -
...perValueFacetUsingSemanticsProviderFactory.java | 1 -
.../integer/IntWrapperValueSemanticsProvider.java | 1 -
.../facets/value/integer/IntegerValueFacet.java | 1 -
.../localrespath/LocalResourcePathValueFacet.java | 1 -
...athValueFacetUsingSemanticsProviderFactory.java | 1 -
.../LocalResourcePathValueSemanticsProvider.java | 11 +-
...iveValueFacetUsingSemanticsProviderFactory.java | 1 -
.../longs/LongPrimitiveValueSemanticsProvider.java | 1 -
.../facets/value/longs/LongValueFacet.java | 1 -
.../longs/LongValueSemanticsProviderAbstract.java | 1 -
...perValueFacetUsingSemanticsProviderFactory.java | 1 -
.../longs/LongWrapperValueSemanticsProvider.java | 1 -
.../facets/value/markup/MarkupValueFacet.java | 1 -
...kupValueFacetUsingSemanticsProviderFactory.java | 1 -
.../value/markup/MarkupValueSemanticsProvider.java | 1 -
.../facets/value/password/PasswordValueFacet.java | 1 -
...ordValueFacetUsingSemanticsProviderFactory.java | 1 -
.../password/PasswordValueSemanticsProvider.java | 1 -
...iveValueFacetUsingSemanticsProviderFactory.java | 1 -
.../ShortPrimitiveValueSemanticsProvider.java | 1 -
.../facets/value/shortint/ShortValueFacet.java | 1 -
.../ShortValueSemanticsProviderAbstract.java | 1 -
...perValueFacetUsingSemanticsProviderFactory.java | 1 -
.../ShortWrapperValueSemanticsProvider.java | 1 -
.../facets/value/string/StringValueFacet.java | 1 -
...ingValueFacetUsingSemanticsProviderFactory.java | 1 -
.../value/string/StringValueSemanticsProvider.java | 1 -
...ateValueFacetUsingSemanticsProviderFactory.java | 1 -
.../localdate/LocalDateValueSemanticsProvider.java | 1 -
...imeValueFacetUsingSemanticsProviderFactory.java | 1 -
.../LocalDateTimeValueSemanticsProvider.java | 1 -
...imeValueFacetUsingSemanticsProviderFactory.java | 1 -
.../localtime/LocalTimeValueSemanticsProvider.java | 1 -
...imeValueFacetUsingSemanticsProviderFactory.java | 1 -
.../OffsetDateTimeValueSemanticsProvider.java | 1 -
...imeValueFacetUsingSemanticsProviderFactory.java | 1 -
.../OffsetTimeValueSemanticsProvider.java | 1 -
...imeValueFacetUsingSemanticsProviderFactory.java | 1 -
.../ZonedDateTimeValueSemanticsProvider.java | 1 -
.../JodaLocalTimeValueFacetSimpleFactory.java | 1 -
...imeValueFacetUsingSemanticsProviderFactory.java | 1 -
.../timesql/JavaSqlTimeValueSemanticsProvider.java | 1 -
...ampValueFacetUsingSemanticsProviderFactory.java | 1 -
.../JavaSqlTimeStampValueSemanticsProvider.java | 1 -
.../facets/value/treenode/TreeNodeValueFacet.java | 1 -
...odeValueFacetUsingSemanticsProviderFactory.java | 1 -
.../treenode/TreeNodeValueSemanticsProvider.java | 1 -
.../metamodel/facets/value/url/URLValueFacet.java | 1 -
...URLValueFacetUsingSemanticsProviderFactory.java | 1 -
.../value/url/URLValueSemanticsProvider.java | 1 -
.../facets/value/uuid/UUIDValueFacet.java | 1 -
...UIDValueFacetUsingSemanticsProviderFactory.java | 1 -
.../value/uuid/UUIDValueSemanticsProvider.java | 1 -
.../metamodel/inspect/Object_inspectMetamodel.java | 3 +-
.../core/metamodel/inspect/model/ActionNode.java | 2 +-
.../metamodel/inspect/model/CollectionNode.java | 2 +-
.../metamodel/inspect/model/FacetAttrNode.java | 2 +-
.../metamodel/inspect/model/FacetGroupNode.java | 2 +-
.../core/metamodel/inspect/model/FacetNode.java | 2 +-
.../isis/core/metamodel/inspect/model/MMNode.java | 22 +-
.../metamodel/inspect/model/ParameterNode.java | 2 +-
.../core/metamodel/inspect/model/PropertyNode.java | 2 +-
.../core/metamodel/inspect/model/TypeNode.java | 2 +-
.../core/metamodel/interactions/AccessContext.java | 1 -
.../interactions/ActionArgUsabilityContext.java | 1 -
.../interactions/ActionArgValidityContext.java | 1 -
.../interactions/ActionArgVisibilityContext.java | 1 -
.../interactions/ActionInteractionContext.java | 1 -
.../interactions/ActionUsabilityContext.java | 1 -
.../interactions/ActionValidityContext.java | 1 -
.../interactions/ActionVisibilityContext.java | 1 -
.../interactions/CollectionAccessContext.java | 1 -
.../interactions/CollectionUsabilityContext.java | 1 -
.../interactions/CollectionVisibilityContext.java | 1 -
.../interactions/DisablingInteractionAdvisor.java | 1 -
.../interactions/HidingInteractionAdvisor.java | 1 -
.../interactions/InteractionAdvisorFacet.java | 1 -
.../metamodel/interactions/InteractionContext.java | 1 -
.../metamodel/interactions/InteractionUtils.java | 1 -
.../metamodel/interactions/ObjectTitleContext.java | 1 -
.../interactions/ObjectValidityContext.java | 1 -
.../interactions/ObjectVisibilityContext.java | 1 -
.../metamodel/interactions/ParseValueContext.java | 1 -
.../interactions/PropertyAccessContext.java | 1 -
.../interactions/PropertyModifyContext.java | 1 -
.../interactions/PropertyUsabilityContext.java | 1 -
.../interactions/PropertyVisibilityContext.java | 1 -
.../metamodel/interactions/ProposedHolder.java | 1 -
.../metamodel/interactions/UsabilityContext.java | 1 -
.../interactions/ValidatingInteractionAdvisor.java | 1 -
.../metamodel/interactions/ValidityContext.java | 1 -
.../metamodel/interactions/VisibilityContext.java | 1 -
.../isis/core/metamodel/layout/DeweyOrderSet.java | 1 -
.../MemberIdentifierComparator.java | 1 -
.../memberorderfacet/MemberOrderComparator.java | 1 -
.../OrderSetGroupNameComparator.java | 1 -
...tionEnforcesMetamodelContributionValidator.java | 166 +++++++
...nnotationEnforcesSupportingMethodValidator.java | 122 -----
.../methods/MethodFilteringFacetFactory.java | 1 -
.../isis/core/metamodel/methods/MethodFinder.java | 331 ++++++++-----
.../core/metamodel/methods/MethodFinderPAT.java | 89 ++++
.../core/metamodel/methods/MethodFinderUtils.java | 351 --------------
.../metamodel/methods/MethodLiteralConstants.java | 143 ------
.../methods/MethodPrefixBasedFacetFactory.java | 1 -
.../MethodPrefixBasedFacetFactoryAbstract.java | 48 +-
.../methods/OrphanedSupportingMethodValidator.java | 124 -----
.../_OrphanedSupportingMethodValidator.java | 75 +++
.../objectmanager/create/ObjectCreator.java | 1 -
.../objectmanager/identify/ObjectBookmarker.java | 1 -
.../metamodel/objectmanager/load/ObjectLoader.java | 1 -
.../objectmanager/query/ObjectBulkLoader.java | 1 -
.../DeriveMixinMembersPostProcessor.java | 1 -
.../ObjectSpecificationPostProcessor.java | 1 -
.../ObjectSpecificationPostProcessorAbstract.java | 1 -
.../DeriveDescribedAsFromTypePostProcessor.java | 1 -
.../authorization/AuthorizationFacet.java | 1 -
.../authorization/AuthorizationFacetAbstract.java | 1 -
.../authorization/AuthorizationFacetImpl.java | 1 -
.../AuthorizationFacetPostProcessor.java | 1 -
...arameterChoicesFacetFromParentedCollection.java | 1 -
...meterDefaultsFacetFromAssociatedCollection.java | 1 -
...ectionParamDefaultsAndChoicesPostProcessor.java | 1 -
.../TweakDomainEventsForMixinPostProcessor.java | 1 -
...NavigationFacetFromHiddenTypePostProcessor.java | 1 -
.../NavigationFacetDerivedFromHiddenType.java | 1 -
.../DeriveProjectionFacetsPostProcessor.java | 1 -
.../DeriveDisabledFromImmutablePostProcessor.java | 1 -
.../DeriveDisabledFromViewModelPostProcessor.java | 83 ----
...iveChoicesFromExistingChoicesPostProcessor.java | 1 -
.../DeriveDefaultFromTypePostProcessor.java | 36 +-
.../DeriveTypicalLengthFromTypePostProcessor.java | 1 -
.../core/metamodel/progmodel/ProgrammingModel.java | 1 -
.../progmodel/ProgrammingModelAbstract.java | 1 -
.../dflt/ProgrammingModelFacetsJava11.java | 385 ++++++++++++++++
.../dflt/ProgrammingModelFacetsJava8.java | 420 -----------------
.../core/metamodel/services/CollectionHelper.java | 1 -
.../classsubstitutor/ClassSubstitutor.java | 1 -
.../classsubstitutor/ClassSubstitutorAbstract.java | 9 +-
.../classsubstitutor/ClassSubstitutorDefault.java | 1 -
.../ClassSubstitutorForCollections.java | 1 -
.../ClassSubstitutorForDomainObjects.java | 1 -
.../classsubstitutor/ClassSubstitutorRegistry.java | 1 -
...ExceptionRecognizerForRecoverableException.java | 1 -
.../services/metamodel/DomainMemberDefault.java | 21 +-
.../metamodel/MetaModelServiceDefault.java | 7 +-
.../services/registry/ServiceRegistryDefault.java | 1 -
.../services/title/TitleServiceDefault.java | 1 -
.../isis/core/metamodel/spec/ActionType.java | 1 -
.../isis/core/metamodel/spec/DefaultProvider.java | 1 -
.../apache/isis/core/metamodel/spec/Described.java | 1 -
.../isis/core/metamodel/spec/Hierarchical.java | 1 -
.../isis/core/metamodel/spec/ManagedObject.java | 1 -
.../isis/core/metamodel/spec/ManagedObjects.java | 56 +--
.../spec/ObjectInstantiationException.java | 1 -
.../core/metamodel/spec/ObjectSpecification.java | 16 +-
.../spec/ObjectSpecificationException.java | 1 -
.../isis/core/metamodel/spec/Specification.java | 1 -
.../core/metamodel/spec/feature/CurrentHolder.java | 1 -
.../spec/feature/MutableCurrentHolder.java | 1 -
.../core/metamodel/spec/feature/ObjectAction.java | 21 +-
.../spec/feature/ObjectActionContainer.java | 1 -
.../spec/feature/ObjectActionParameter.java | 1 -
.../metamodel/spec/feature/ObjectAssociation.java | 1 -
.../spec/feature/ObjectAssociationContainer.java | 1 -
.../core/metamodel/spec/feature/ObjectFeature.java | 1 -
.../core/metamodel/spec/feature/ObjectMember.java | 15 +-
.../spec/feature/OneToManyActionParameter.java | 1 -
.../spec/feature/OneToManyAssociation.java | 1 -
.../metamodel/spec/feature/OneToManyFeature.java | 1 -
.../spec/feature/OneToOneActionParameter.java | 1 -
.../spec/feature/OneToOneAssociation.java | 1 -
.../metamodel/spec/feature/OneToOneFeature.java | 1 -
.../spec/feature/memento/ActionMemento.java | 1 -
.../feature/memento/ActionParameterMemento.java | 1 -
.../spec/feature/memento/CollectionMemento.java | 1 -
.../spec/feature/memento/PropertyMemento.java | 1 -
.../specloader/LogicalTypeResolverDefault.java | 1 -
.../specloader/ProgrammingModelServiceDefault.java | 4 +-
.../specloader/SpecificationCacheDefault.java | 1 -
.../specloader/SpecificationLoaderDefault.java | 6 +-
.../specloader/facetprocessor/FacetProcessor.java | 84 ++--
.../specloader/specimpl/FacetedMethodsBuilder.java | 116 ++---
.../specloader/specimpl/ObjectActionDefault.java | 109 ++---
.../specloader/specimpl/ObjectActionMixedIn.java | 12 +
.../specimpl/ObjectActionParameterAbstract.java | 7 +-
.../specimpl/ObjectAssociationAbstract.java | 1 -
.../specloader/specimpl/ObjectMemberAbstract.java | 1 -
.../specimpl/ObjectSpecificationAbstract.java | 9 +-
.../specimpl/OneToManyActionParameterDefault.java | 1 -
.../specimpl/OneToManyAssociationDefault.java | 16 +-
.../specimpl/OneToManyAssociationMixedIn.java | 13 +
.../specimpl/OneToOneActionParameterDefault.java | 1 -
.../specimpl/OneToOneAssociationDefault.java | 16 +-
.../specimpl/OneToOneAssociationMixedIn.java | 13 +
.../specimpl/_MixedInMemberNamingStrategy.java | 3 +-
.../specimpl/dflt/ObjectSpecificationDefault.java | 53 +--
.../validator/MetaModelInvalidException.java | 1 -
.../specloader/validator/MetaModelValidator.java | 1 -
.../validator/MetaModelValidatorAbstract.java | 1 -
.../core/metamodel/util/DeweyOrderComparator.java | 1 -
.../apache/isis/core/metamodel/util/EventUtil.java | 1 -
.../core/metamodel/util/pchain/ParentChain.java | 1 -
.../metamodel/util/pchain/ParentChainDefault.java | 1 -
.../isis/core/metamodel/util/snapshot/Helper.java | 1 -
.../core/metamodel/util/snapshot/IsisSchema.java | 1 -
.../isis/core/metamodel/util/snapshot/Place.java | 1 -
.../core/metamodel/util/snapshot/XmlSchema.java | 1 -
.../core/metamodel/util/snapshot/XmlSnapshot.java | 1 -
.../core/metamodel/util/snapshot/XsMetaModel.java | 1 -
.../core/metamodel/commons/IoUtils_CopyTest.java | 1 -
.../commons/JavaClassUtilsTest_getBuiltIn.java | 1 -
.../core/metamodel/commons/LocaleUtilsTest.java | 1 -
.../isis/core/metamodel/commons/NameUtilTest.java | 1 -
.../isis/core/metamodel/commons/PrintLocale.java | 1 -
.../commons/StringUtilsTest_enumTitle.java | 1 -
.../commons/StringUtils_NaturalNameTest.java | 1 -
.../commons/StringUtils_NaturalizeTest.java | 1 -
.../commons/StringUtils_NormalizedTest.java | 1 -
.../commons/StringUtils_StripLeadingSlashTest.java | 1 -
.../commons/StringUtils_StripNewLinesTest.java | 1 -
.../commons/StringUtils_camelLowerFirst.java | 1 -
.../commons/StringUtils_toLineSeparated.java | 1 -
.../commons/StringUtils_toLowerDashed.java | 1 -
.../metamodel/commons/TypesTest_filteredList.java | 1 -
.../metamodel/commons/matchers/IsisMatchers.java | 1 -
.../matchers/IsisMatchers_NonEmptyStringTest.java | 1 -
.../metamodel/consent/InteractionResultTest.java | 1 -
.../core/metamodel/facetapi/FacetAbstractTest.java | 4 +-
.../facetapi/FeatureTypeTest_identifierFor.java | 1 -
.../facets/AbstractFacetFactoryJUnit4TestCase.java | 1 -
.../metamodel/facets/AbstractFacetFactoryTest.java | 1 -
.../metamodel/facets/CollectionFacetUtilsTest.java | 40 +-
.../metamodel/facets/MethodFinderUtilsTest.java | 34 +-
.../metamodel/facets/ObjectAdapterUtilsTest.java | 1 -
.../apache/isis/core/metamodel/facets/Utils.java | 1 -
.../actions/ActionMethodsFacetFactoryTest.java | 227 +--------
.../actions/IteratorFilteringFacetFactoryTest.java | 4 +-
.../action/ActionAnnotationFacetFactoryTest.java | 6 +-
...nnotationFacetFactoryTest_ActionInvocation.java | 23 +-
.../ActionAnnotationFacetFactoryTest_Hidden.java | 6 +-
...ctionAnnotationFacetFactoryTest_Invocation.java | 29 +-
...ctionAnnotationFacetFactoryTest_RestrictTo.java | 20 +-
...ActionAnnotationFacetFactoryTest_Semantics.java | 19 +-
.../ActionAnnotationFacetFactoryTest_TypeOf.java | 18 +-
...notationFacetFactoryTest_commandPublishing.java | 22 +-
...tationFacetFactoryTest_executionPublishing.java | 49 +-
...icsFacetFallbackToNonIdempotentFactoryTest.java | 6 +-
.../PrototypeFacetAnnotationFactoryTest.java | 6 +-
...kmarkableAnnotationFacetFactoryTest_action.java | 4 +-
...nLayoutXmlLayoutAnnotationFacetFactoryTest.java | 13 +-
...etDerivedFromDomainServiceFacetFactoryTest.java | 11 +-
.../CollectionFieldMethodsFacetFactoryTest.java | 21 +-
.../collections/JavaCollectionFacetTest.java | 1 -
.../CollectionAnnotationFacetFactoryTest.java | 23 +-
...ollectionAnnotationFacetFactoryTest_typeOf.java | 12 +-
...etForCollectionLayoutAnnotationFactoryTest.java | 6 +-
.../ViewModelSemanticCheckingFacetFactoryTest.java | 4 +-
...okmarkableAnnotationFacetFactoryTest_class.java | 4 +-
.../callback/CallbackFacetFactoryTestAbstract.java | 60 +++
.../callback/CreatedCallbackFacetFactoryTest.java | 40 +-
.../callback/DeleteCallbackFacetFactoryTest.java | 68 ---
.../callback/LoadCallbackFacetFactoryTest.java | 67 ---
.../callback/LoadedCallbackFacetFactoryTest.java | 36 ++
.../PersistAndSaveCallbackFacetFactoryTest.java | 110 -----
.../callback/PersistCallbackFacetFactoryTest.java | 88 ----
.../PersistedCallbackFacetFactoryTest.java | 59 +++
.../PersistingCallbackFacetFactoryTest.java | 59 +++
.../RemoveAndDeleteCallbackFacetFactoryTest.java | 83 ----
.../callback/RemoveCallbackFacetFactoryTest.java | 68 ---
.../callback/RemovingCallbackFacetFactoryTest.java | 57 +++
.../callback/SaveCallbackFacetFactoryTest.java | 88 ----
.../callback/UpdateCallbackFacetFactoryTest.java | 88 ----
.../callback/UpdatedCallbackFacetFactoryTest.java | 36 ++
.../callback/UpdatingCallbackFacetFactoryTest.java | 36 ++
.../object/defaults/DefaultedFacetFactoryTest.java | 27 +-
.../ObjectDisabledMethodFacetFactoryTest.java | 46 +-
...oicesFacetFromBoundedAnnotationFactoryTest.java | 4 +-
.../DomainObjectAnnotationFacetFactoryTest.java | 87 ++--
.../ObjectTypeAnnotationFacetFactoryTest.java | 3 +-
.../DomainObjectLayoutFactoryTest.java | 45 +-
.../DomainServiceFacetAnnotationFactoryTest.java | 3 +-
.../DomainServiceLayoutFacetFactoryTest.java | 13 +-
.../hidden/ObjectHiddenMethodFacetFactoryTest.java | 58 +--
.../cssclass/CssClassFacetMethodFactoryTest.java | 42 +-
.../ident/cssclass/CssClassFacetMethodTest.java | 15 +-
.../CssClassFacetMethodWithProblemTest.java | 15 +-
.../ident/icon/IconFacetMethodFactoryTest.java | 43 +-
.../object/ident/icon/IconFacetMethodTest.java | 15 +-
.../ident/layout/LayoutFacetFactoryTest.java | 43 +-
.../object/ident/layout/LayoutFacetMethodTest.java | 15 +-
.../ident/title/TitleFacetViaMethodTest.java | 6 +-
.../title/TitleFacetViaMethodsFactoryTest.java | 55 +--
.../TitleAnnotationFacetFactoryTest.java | 79 +++-
.../TitleFacetViaTitleAnnotationTest.java | 42 +-
...alTypeFacetDerivedFromClassNameFactoryTest.java | 1 -
.../facets/object/mixin/MixinIntendedAs.java | 14 +-
.../navparent/NavigableParentFacetMethodTest.java | 7 +-
.../NavigableParentAnnotationFacetFactoryTest.java | 9 +-
.../RecreatableObjectFacetFactoryTest.java | 4 +-
.../ObjectSupportFacetFactoryTestAbstract.java | 77 ++++
.../ObjectValidMethodFacetFactoryTest.java | 65 ---
...eFacetAnnotationOrConfigurationFactoryTest.java | 56 ++-
.../memberorder/DeweyOrderComparatorTest.java | 1 -
.../ordering/memberorder/DeweyOrderSetTest.java | 1 -
.../ordering/memberorder/LayoutOrderTest.java | 10 +-
...cetForParameterLayoutAnnotationFactoryTest.java | 7 +-
...cetForParameterLayoutAnnotationFactoryTest.java | 7 +-
.../facets/param/name/ParameterNameFacetTest.java | 20 +-
.../ParameterAnnotationFacetFactoryTest.java | 47 +-
...lableAnnotationOnParameterFacetFactoryTest.java | 18 +-
...RegExAnnotationOnParameterFacetFactoryTest.java | 10 +-
.../PropertyMethodsFacetFactoryTest.java | 55 ++-
...sabledAnnotationOnPropertyFacetFactoryTest.java | 8 +-
.../MandatoryAnnotationFacetFactoryTest.java | 5 +-
.../PropertyAnnotationFacetFactoryTest.java | 58 ++-
...tionWithSnapshotOnPropertyFacetFactoryTest.java | 5 +-
...llableAnnotationOnPropertyFacetFactoryTest.java | 14 +-
.../RegExAnnotationOnPropertyFacetFactoryTest.java | 8 +-
...acetForPropertyLayoutAnnotationFactoryTest.java | 5 +-
...acetForPropertyLayoutAnnotationFactoryTest.java | 8 +-
...ValidationDigitsAnnotationFacetFactoryTest.java | 11 +-
.../DomainObjectWithMustSatisfyAnnotations.java | 1 -
.../DomainObjectWithoutMustSatisfyAnnotations.java | 1 -
.../SpecificationAlwaysSatisfied.java | 1 -
.../specification/SpecificationAndTests.java | 1 -
.../specification/SpecificationNeverSatisfied.java | 1 -
.../specification/SpecificationNotTests.java | 1 -
.../specification/SpecificationOrTests.java | 1 -
...cificationRequiresFirstLetterToBeUpperCase.java | 1 -
.../BigDecimalValueSemanticsProviderTest.java | 1 -
.../value/BigIntValueSemanticsProviderTest.java | 1 -
.../value/BlobValueSemanticsProviderTest.java | 1 -
.../value/BooleanValueSemanticsProviderTest.java | 1 -
.../value/ByteValueSemanticsProviderTest.java | 1 -
.../value/CharacterValueSemanticsProviderTest.java | 1 -
.../value/ClobValueSemanticsProviderTest.java | 1 -
.../value/DoubleValueSemanticsProviderTest.java | 1 -
.../value/FloatValueSemanticsProviderTest.java | 1 -
.../value/IntValueSemanticsProviderTest.java | 1 -
.../JavaSqlDateValueSemanticsProviderTest.java | 1 -
.../JavaSqlTimeValueSemanticsProviderTest.java | 1 -
.../JavaUtilDateValueSemanticsProviderTest.java | 1 -
.../value/LongValueSemanticsProviderTest.java | 1 -
.../value/PasswordValueSemanticsProviderTest.java | 1 -
.../value/ShortValueSemanticsProviderTest.java | 1 -
.../value/StringValueSemanticsProviderTest.java | 1 -
.../ValueSemanticsProviderAbstractTestCase.java | 1 -
.../interactions/InteractionUtils_isA_Test.java | 1 -
.../objects/OneToManyAssociationDefaultTest.java | 1 -
.../objects/TypeExtractorMethodReturnTest.java | 1 -
.../TypeExtractorMethodsParametersTest.java | 1 -
.../core/metamodel/objects/dom/Interface1.java | 1 -
.../objects/dom/JavaActionTestObject.java | 1 -
.../dom/JavaObjectWithBasicProgramConventions.java | 1 -
.../dom/JavaObjectWithOneToOneAssociations.java | 1 -
.../objects/dom/JavaReferencedObject.java | 1 -
.../metamodel/objects/dom/TestDomainObject.java | 1 -
.../core/metamodel/objects/dom/TestObject.java | 1 -
.../objects/dom/TestObjectAsAggregated.java | 1 -
.../metamodel/objects/dom/TestObjectAsService.java | 1 -
.../objects/dom/TestObjectWithCollection.java | 1 -
.../ServiceInjectorDefaultTest_usingFields.java | 1 -
...erviceInjectorDefaultTest_validateServices.java | 1 -
...InjectorDefaultTest_validateServices_happy.java | 18 +-
.../services/ServiceInjectorLegacyTest.java | 1 -
...zerForRecoverableException_recognizes_Test.java | 1 -
.../metamodel/specloader/ReflectorTestPojo.java | 1 -
.../SpecificationLoaderTestAbstract.java | 22 +-
.../specloader/SpecificationLoaderTest_array.java | 1 -
.../SpecificationLoaderTest_collection.java | 1 -
.../specloader/SpecificationLoaderTest_value.java | 1 -
.../ClassSubstitutorTest_getClass.java | 1 -
.../specimpl/MixedInMemberNamingStrategyTest.java | 14 +-
...ionParameterAbstractTest_getId_and_getName.java | 1 -
.../specimpl/ObjectAssociationAbstractTest.java | 22 +-
...ObjectAssociationAbstractTest_alwaysHidden.java | 6 +-
.../specimpl/OneToOneAssociationAbstractTest.java | 1 -
.../testspec/ObjectSpecificationStub.java | 11 -
core/pom.xml | 24 +-
.../core/runtime/context/IsisAppCommonContext.java | 2 +-
.../isis/core/runtime/memento/ObjectMemento.java | 1 -
.../factory/FactoryServiceDefault.java | 1 -
.../i18n/po/TranslationServicePoMenu.java | 11 +-
.../interaction/InteractionDtoFactoryDefault.java | 1 -
.../menubars/MenuBarsLoaderServiceDefault.java | 2 +-
.../publish/ExecutionPublisherDefault.java | 1 -
.../repository/RepositoryServiceDefault.java | 1 -
.../session/InteractionServiceDefault.java | 1 -
.../dispatchers/InteractionEventDispatcher.java | 1 -
.../InteractionEventDispatcherTypeSafe.java | 1 -
.../AbstractCollectionInvocationHandler.java | 1 -
.../handlers/CollectionInvocationHandler.java | 1 -
.../handlers/DelegatingInvocationHandler.java | 1 -
.../DelegatingInvocationHandlerDefault.java | 1 -
.../handlers/DomainObjectInvocationHandler.java | 1 -
.../wrapper/handlers/MapInvocationHandler.java | 1 -
.../wrapper/handlers/ProxyContextHandler.java | 1 -
.../wrapper/proxy/ProxyCreator.java | 1 -
.../runtimeservices/urlencoding/MementosTest.java | 1 -
.../wrapper/dom/claims/Approver.java | 1 -
.../wrapper/dom/claims/Claimant.java | 1 -
.../wrapper/dom/employees/Employee.java | 1 -
.../wrapper/dom/employees/EmployeeRepository.java | 1 -
.../dom/employees/EmployeeRepositoryImpl.java | 1 -
.../authentication/AuthenticationRequest.java | 1 -
.../AuthenticationRequestAbstract.java | 1 -
.../AuthenticationRequestPassword.java | 1 -
.../security/authentication/Authenticator.java | 1 -
.../AuthenticationRequestLogonFixture.java | 1 -
.../security/authentication/logout/LogoutMenu.java | 1 -
.../manager/AuthenticationManager.java | 1 -
.../authentication/manager/UserMementoRefiner.java | 1 -
.../AuthenticationRequestSingleUser.java | 1 -
.../standard/AuthenticatorAbstract.java | 1 -
.../standard/RandomCodeGenerator.java | 1 -
.../authentication/standard/Registrar.java | 1 -
.../core/security/authorization/Authorizor.java | 1 -
.../standard/AuthorizationConstants.java | 1 -
.../AuthenticationManager_authenticators_Test.java | 1 -
.../SimpleSessionEncodabilityNoRolesTest.java | 1 -
.../SimpleSessionEncodabilityTestAbstract.java | 1 -
.../SimpleSessionEncodabilityWithRolesTest.java | 1 -
...rdAuthenticationManager_AuthenticationTest.java | 1 -
.../TemplateResourceCachingFilter.java | 1 -
.../templresources/TemplateResourceServlet.java | 3 +-
...plateResourceServlet_HtmlTemplateVariables.java | 8 +-
.../core/webapp/routing/ForwardingServlet.java | 1 -
.../isis/core/webapp/routing/RedirectFilter.java | 1 -
.../isis/core/webapp/routing/RedirectServlet.java | 1 -
.../webappctx/IsisWebAppContextInitializer.java | 2 +-
examples/demo/domain/pom.xml | 5 +
.../main/java/demoapp/dom/DemoModuleCommon.java | 4 -
.../src/main/java/demoapp/dom/DemoModuleJpa.java | 2 +
.../HasAsciiDocDescription_description.java | 3 +-
.../HasAsciiDocDescription_sources.java | 3 +-
.../_infra/resources/AsciiDocReaderService.java | 74 ++-
.../_infra/resources/MarkdownReaderService.java | 3 +-
.../dom/_infra/seed/SeedServiceAbstract.java | 2 +-
.../java/demoapp/dom/_infra/utils/HtmlUtils.java | 1 -
.../java/demoapp/dom/_infra/utils/LogUtils.java | 1 -
.../domain/_commands/ExposePersistedCommands.java | 2 +-
.../dom/domain/_interactions/InteractionDtoVm.java | 5 +-
.../associateWith/ActionAssociateWithVm.java | 13 +-
.../ActionAssociateWithVm_updateOtherProperty.java | 5 +-
.../child/ActionAssociateWithChildVm.java | 5 +-
.../child/ActionAssociateWithVm_makeFavorite.java | 3 +-
.../ActionAssociateWithVm_noLongerFavorite.java | 3 +-
.../ActionAssociateWithVm_noLongerFavorites.java | 3 +-
...ommandPublishingEntity_mixinUpdateProperty.java | 7 +-
...gEntity_mixinUpdatePropertyCommandDisabled.java | 6 +-
...ngEntity_mixinUpdatePropertyMetaAnnotation.java | 5 +-
...ixinUpdatePropertyMetaAnnotationOverridden.java | 5 +-
.../jdo/ActionCommandPublishingJdo.java | 14 +-
.../jpa/ActionCommandPublishingJpa.java | 18 +-
.../Action/domainEvent/ActionDomainEventVm.java | 11 +-
.../ActionDomainEventVm_mixinUpdateText.java | 5 +-
.../ActionDomainEventVm_controlUpdateText.java | 3 +-
...nDomainEventVm_controlUpdateTextInvocation.java | 8 +-
...cutionPublishingEntity_mixinUpdateProperty.java | 7 +-
...ngEntity_mixinUpdatePropertyMetaAnnotation.java | 7 +-
...ixinUpdatePropertyMetaAnnotationOverridden.java | 7 +-
.../jdo/ActionExecutionPublishingJdo.java | 12 +-
.../jpa/ActionExecutionPublishingJpa.java | 16 +-
.../actions/Action/hidden/ActionHiddenVm.java | 17 +-
...onHiddenVm_mixinUpdateTextAndHiddenNowhere.java | 5 +-
...iddenVm_mixinUpdateTextButHiddenEverywhere.java | 5 +-
...ddenVm_mixinUpdateTextButHiddenObjectForms.java | 5 +-
...ActionHiddenVm_mixinUpdateTextNoAnnotation.java | 5 +-
.../Action/restrictTo/ActionRestrictToVm.java | 19 +-
...ctionRestrictToVm_mixinUpdateMetaAnnotated.java | 5 +-
...ictToVm_mixinUpdateMetaAnnotatedOverridden.java | 5 +-
...ActionRestrictToVm_mixinUpdateNoAnnotation.java | 5 +-
...ctToVm_mixinUpdateRestrictToNoRestrictions.java | 5 +-
...trictToVm_mixinUpdateRestrictToPrototyping.java | 5 +-
.../Action/semantics/ActionSemanticsVm.java | 21 +-
...ticsVm_mixinIncrementByAmountNonIdempotent.java | 5 +-
...tionSemanticsVm_mixinIncrementNoAnnotation.java | 5 +-
...ionSemanticsVm_mixinIncrementNonIdempotent.java | 6 +-
...csVm_mixinIncrementNonIdempotentAreYouSure.java | 6 +-
...Vm_mixinSetToValueForPropertyMetaAnnotated.java | 5 +-
...tToValueForPropertyMetaAnnotatedOverridden.java | 5 +-
...inSetToValueForPropertySemanticsIdempotent.java | 5 +-
...ueForPropertySemanticsIdempotentAreYouSure.java | 5 +-
.../actions/Action/typeOf/ActionTypeOfVm.java | 8 +-
.../Action/typeOf/child/ActionTypeOfChildVm.java | 10 +-
.../actions/ActionLayout/ActionLayoutMenu.java | 19 +-
.../position/ActionLayoutPositionVm.java | 6 +-
.../ActionLayoutPositionVm_annotatedBelow.java | 5 +-
.../ActionLayoutPositionVm_annotatedPanel.java | 5 +-
...ionLayoutPositionVm_annotatedPanelDropDown.java | 5 +-
.../ActionLayoutPositionVm_annotatedRight.java | 5 +-
.../ActionLayoutPositionVm_layoutBelow.java | 5 +-
.../ActionLayoutPositionVm_layoutPanel.java | 5 +-
...ActionLayoutPositionVm_layoutPanelDropDown.java | 5 +-
.../ActionLayoutPositionVm_layoutRight.java | 5 +-
.../promptStyle/ActionLayoutPromptStyleVm.java | 8 +-
.../ActionLayoutPromptStyleVm_annotatedInline.java | 5 +-
...ayoutPromptStyleVm_annotatedInlineAsIfEdit.java | 5 +-
.../ActionLayoutPromptStyleVm_annotatedModal.java | 5 +-
...ActionLayoutPromptStyleVm_annotatedSidebar.java | 5 +-
.../ActionLayoutPromptStyleVm_layoutDialog.java | 5 +-
.../ActionLayoutPromptStyleVm_layoutInline.java | 5 +-
...onLayoutPromptStyleVm_layoutInlineAsIfEdit.java | 5 +-
.../progmodel/assoc/AssociatedActionDemo.java | 3 +-
.../domain/actions/progmodel/assoc/DemoItem.java | 3 +-
.../domain/actions/progmodel/depargs/DemoItem.java | 3 +-
.../DependentArgsActionDemo_bulkAction.java | 18 +-
.../DependentArgsActionDemo_useAutoComplete.java | 16 +-
.../DependentArgsActionDemo_useChoices.java | 12 +-
.../DependentArgsActionDemo_useChoices2.java | 12 +-
.../DependentArgsActionDemo_useDefault.java | 6 +-
.../DependentArgsActionDemo_useDisable.java | 12 +-
.../depargs/DependentArgsActionDemo_useHide.java | 14 +-
.../DependentArgsActionDemo_useIndependent.java | 17 +-
.../domain/actions/progmodel/depargs/Parity.java | 4 +-
.../collections/Collection/CollectionMenu.java | 12 +-
.../domainEvent/CollectionDomainEventVm.java | 3 +-
.../CollectionDomainEventVm_addChild.java | 5 +-
.../CollectionDomainEventVm_removeChild.java | 12 +-
.../child/CollectionDomainEventChildVm.java | 3 +-
.../CollectionDomainEventVm_controlChildren.java | 3 +-
...ionDomainEventVm_controlChildrenVisibility.java | 8 +-
.../CollectionLayout/CollectionLayoutMenu.java | 21 +-
.../objects/DomainObject/DomainObjectMenu.java | 19 +-
...PublishingEntity_updatePropertyUsingAction.java | 7 +-
.../DomainObjectEntityChangePublishingVm.java | 3 +-
...omainObjectEntityChangePublishingVm_create.java | 26 +-
...omainObjectEntityChangePublishingVm_delete.java | 26 +-
...inObjectEntityChangePublishingVm_updateAll.java | 22 +-
...ainObjectEntityChangePublishingDisabledJpa.java | 6 +-
...mainObjectEntityChangePublishingEnabledJpa.java | 6 +-
...ityChangePublishingEnabledMetaAnnotatedJpa.java | 6 +-
...ngePublishingEnabledMetaAnnotOverriddenJpa.java | 6 +-
.../jaxbrefentity/StatefulVmJaxbRefsEntity.java | 20 +-
.../viewmodels/jaxbrefentity/jdo/JaxbRefJdo.java | 2 +-
.../viewmodels/jaxbrefentity/jpa/JaxbRefJpa.java | 6 +-
.../viewmodels/usingjaxb/StatefulVmUsingJaxb.java | 11 +-
.../DomainObjectLayout/DomainObjectLayoutMenu.java | 21 +-
.../objects/other/embedded/EmbeddedTypeVm.java | 3 +-
.../other/embedded/jdo/ComplexNumberJdo.java | 12 +-
.../other/embedded/jdo/NumberConstantJdo.java | 8 +-
.../embedded/jdo/NumberConstantJdoRepository.java | 3 +-
.../jdo/NumberConstantJdo_updateNumber.java | 5 +-
.../other/embedded/jpa/ComplexNumberJpa.java | 12 +-
.../other/embedded/jpa/NumberConstantJpa.java | 12 +-
.../embedded/jpa/NumberConstantJpaRepository.java | 3 +-
.../jpa/NumberConstantJpa_updateNumber.java | 5 +-
.../other/mixins/CountHolder_updateCount.java | 7 +-
.../objects/other/mixins/FibonacciNumberVm.java | 3 +-
.../dom/domain/objects/other/mixins/MixinVm.java | 3 +-
.../jdo/PropertyCommandPublishingJdo.java | 5 +-
.../jpa/PropertyCommandPublishingJpa.java | 9 +-
.../domainEvent/PropertyDomainEventVm.java | 8 +-
.../PropertyDomainEventVm_controlText.java | 3 +-
.../PropertyDomainEventVm_controlTextEditing.java | 8 +-
.../Property/editing/PropertyEditingVm.java | 6 +-
...tyExecutionPublishingEnabledMetaAnnotation.java | 2 +-
.../jdo/PropertyExecutionPublishingJdo.java | 5 +-
.../jpa/PropertyExecutionPublishingJpa.java | 9 +-
.../Property/fileAccept/PropertyFileAcceptVm.java | 6 +-
...FileAcceptVm_updateClobWithParameterLayout.java | 5 +-
...pertyFileAcceptVm_updateWithMetaAnnotation.java | 5 +-
...cceptVm_updateWithMetaAnnotationOverridden.java | 5 +-
...ertyFileAcceptVm_updateWithParameterLayout.java | 5 +-
.../Property/hidden/PropertyHiddenVm.java | 8 +-
.../hidden/PropertyHiddenVm_returnsChildren.java | 6 +-
.../hidden/child/PropertyHiddenChildVm.java | 10 +-
.../Property/maxLength/PropertyMaxLengthVm.java | 6 +-
...opertyMaxLengthVm_updateWithMetaAnnotation.java | 5 +-
...engthVm_updateWithMetaAnnotationOverridden.java | 5 +-
...pertyMaxLengthVm_updateWithParameterLayout.java | 5 +-
.../mustSatisfy/PropertyMustSatisfyVm.java | 6 +-
...ertyMustSatisfyVm_updateWithMetaAnnotation.java | 5 +-
...tisfyVm_updateWithMetaAnnotationOverridden.java | 5 +-
...rtyMustSatisfyVm_updateWithParameterLayout.java | 5 +-
.../optionality/PropertyOptionalityVm.java | 6 +-
...alityVm_updateMandatoryWithParameterLayout.java | 5 +-
...ertyOptionalityVm_updateWithMetaAnnotation.java | 5 +-
...alityVm_updateWithMetaAnnotationOverridden.java | 5 +-
...rtyOptionalityVm_updateWithParameterLayout.java | 5 +-
.../Property/projecting/PropertyProjectingVm.java | 8 +-
.../projecting/jpa/PropertyProjectingChildJpa.java | 6 +-
.../regexPattern/PropertyRegexPatternVm.java | 6 +-
...rtyRegexPatternVm_updateWithMetaAnnotation.java | 5 +-
...tternVm_updateWithMetaAnnotationOverridden.java | 5 +-
...tyRegexPatternVm_updateWithParameterLayout.java | 5 +-
.../Property/snapshot/PropertySnapshotVm.java | 8 +-
.../PropertySnapshotVm_takeXmlSnapshot.java | 5 +-
.../snapshot/SnapshotExcludedMetaAnnotation.java | 2 +-
.../snapshot/SnapshotIncludedMetaAnnotation.java | 2 +-
.../cssClass/PropertyLayoutCssClassVm.java | 6 +-
...yLayoutCssClassVm_updateWithMetaAnnotation.java | 5 +-
...ClassVm_updateWithMetaAnnotationOverridden.java | 5 +-
...LayoutCssClassVm_updateWithParameterLayout.java | 5 +-
.../describedAs/PropertyLayoutDescribedAsVm.java | 6 +-
...youtDescribedAsVm_updateWithMetaAnnotation.java | 5 +-
...bedAsVm_updateWithMetaAnnotationOverridden.java | 5 +-
...outDescribedAsVm_updateWithParameterLayout.java | 5 +-
.../hidden/PropertyLayoutHiddenVm.java | 8 +-
.../PropertyLayoutHiddenVm_returnsChildren.java | 6 +-
.../hidden/child/PropertyLayoutHiddenChildVm.java | 10 +-
.../PropertyLayoutLabelPositionVm.java | 6 +-
...rtyLayoutLabelPositionVm_updateVariantLeft.java | 5 +-
...rtyLayoutLabelPositionVm_updateVariantNone.java | 5 +-
...tLabelPositionVm_updateVariantNotSpecified.java | 5 +-
...tyLayoutLabelPositionVm_updateVariantRight.java | 5 +-
...ertyLayoutLabelPositionVm_updateVariantTop.java | 5 +-
...utLabelPositionVm_updateWithMetaAnnotation.java | 5 +-
...itionVm_updateWithMetaAnnotationOverridden.java | 5 +-
...tLabelPositionVm_updateWithParameterLayout.java | 5 +-
.../multiLine/PropertyLayoutMultiLineVm.java | 6 +-
...LayoutMultiLineVm_updateWithMetaAnnotation.java | 5 +-
...iLineVm_updateWithMetaAnnotationOverridden.java | 5 +-
...ayoutMultiLineVm_updateWithParameterLayout.java | 5 +-
.../named/PropertyLayoutNamedVm.java | 3 +-
...ertyLayoutNamedVm_updateWithMetaAnnotation.java | 5 +-
...NamedVm_updateWithMetaAnnotationOverridden.java | 5 +-
...rtyLayoutNamedVm_updateWithParameterLayout.java | 5 +-
.../PropertyLayout/navigable/FileNodeType.java | 3 +-
.../PropertyLayout/navigable/FileNodeVm.java | 9 +-
.../navigable/FileTreeNodeService.java | 8 +-
.../renderDay/PropertyLayoutRenderDayVm.java | 8 +-
.../PropertyLayoutRenderDayVm_downloadAsXml.java | 6 +-
...enderDayVm_updateEndDateWithMetaAnnotation.java | 5 +-
..._updateEndDateWithMetaAnnotationOverridden.java | 5 +-
...nderDayVm_updateEndDateWithParameterLayout.java | 5 +-
.../repainting/PropertyLayoutRepaintingVm.java | 6 +-
.../PropertyLayoutTypicalLengthVm.java | 6 +-
...utTypicalLengthVm_updateWithMetaAnnotation.java | 5 +-
...engthVm_updateWithMetaAnnotationOverridden.java | 5 +-
...tTypicalLengthVm_updateWithParameterLayout.java | 5 +-
.../featured/customui/vm/WhereInTheWorldMenu.java | 13 +-
.../featured/layout/describedAs/DescribedAsVm.java | 25 +-
.../demoapp/dom/featured/layout/tabs/TabDemo.java | 10 +-
.../java/demoapp/dom/homepage/DemoHomePage.java | 3 +-
.../src/main/java/demoapp/dom/menubars.layout.xml | 1 +
.../demoapp/dom/services/core/ServicesMenu.java | 5 +-
.../ErrorReportingServiceDemoVm.java | 3 +-
.../eventbusservice/EventBusServiceDemoVm.java | 3 +-
.../core/eventbusservice/EventLogEntryJdo.java | 7 +-
.../core/eventbusservice/EventLogEntryJpa.java | 7 +-
.../core/messageservice/MessageServiceDemoVm.java | 3 +-
...pperFactoryEntity_mixinUpdatePropertyAsync.java | 5 +-
...pperFactoryEntity_updatePropertyAsyncMixin.java | 5 +-
.../core/wrapperFactory/jdo/WrapperFactoryJdo.java | 15 +-
.../core/wrapperFactory/jpa/WrapperFactoryJpa.java | 19 +-
.../xmlSnapshotService/XmlSnapshotParentVm.java | 12 +-
.../XmlSnapshotParentVm_takeXmlSnapshot.java | 10 +-
.../child/XmlSnapshotChildVm.java | 3 +-
.../xmlSnapshotService/peer/XmlSnapshotPeerVm.java | 5 +-
.../peer/child/XmlSnapshotPeerChildVm.java | 3 +-
.../services/extensions/secman/ExtSecManMenu.java | 2 -
.../extensions/secman/apptenancy/AppTenancyVm.java | 12 +-
.../ApplicationTenancyEvaluatorForDemo.java | 3 +-
.../secman/apptenancy/jdo/TenantedJdo.java | 8 +-
.../secman/apptenancy/jpa/TenantedJpa.java | 12 +-
.../secman/appuser/seed/AppUserSeeding.java | 6 +-
.../demoapp/dom/types/isis/blobs/IsisBlobs.java | 8 +-
...sBlobHolder_updateReadOnlyOptionalProperty.java | 8 +-
.../IsisBlobHolder_updateReadOnlyProperty.java | 6 +-
...obHolder_updateReadOnlyPropertyWithChoices.java | 12 +-
.../dom/types/isis/blobs/jdo/IsisBlobJdo.java | 3 +-
.../dom/types/isis/blobs/jpa/IsisBlobJpa.java | 6 +-
.../dom/types/isis/blobs/vm/IsisBlobVm.java | 10 +-
.../demoapp/dom/types/isis/clobs/IsisClobs.java | 8 +-
...sClobHolder_updateReadOnlyOptionalProperty.java | 4 +-
.../IsisClobHolder_updateReadOnlyProperty.java | 6 +-
...obHolder_updateReadOnlyPropertyWithChoices.java | 12 +-
.../dom/types/isis/clobs/jdo/IsisClobJdo.java | 3 +-
.../dom/types/isis/clobs/jpa/IsisClobJpa.java | 20 +-
.../dom/types/isis/clobs/vm/IsisClobVm.java | 5 +-
.../localresourcepaths/IsisLocalResourcePaths.java | 9 +-
...ePathHolder_updateReadOnlyOptionalProperty.java | 7 +-
...lResourcePathHolder_updateReadOnlyProperty.java | 6 +-
...thHolder_updateReadOnlyPropertyWithChoices.java | 12 +-
.../jdo/IsisLocalResourcePathJdo.java | 3 +-
.../jpa/IsisLocalResourcePathJpa.java | 9 +-
.../vm/IsisLocalResourcePathVm.java | 5 +-
.../dom/types/isis/markups/IsisMarkups.java | 7 +-
...arkupHolder_updateReadOnlyOptionalProperty.java | 8 +-
.../IsisMarkupHolder_updateReadOnlyProperty.java | 6 +-
...upHolder_updateReadOnlyPropertyWithChoices.java | 12 +-
.../dom/types/isis/markups/jdo/IsisMarkupJdo.java | 9 +-
.../dom/types/isis/markups/jpa/IsisMarkupJpa.java | 12 +-
.../dom/types/isis/markups/vm/IsisMarkupVm.java | 10 +-
.../dom/types/isis/passwords/IsisPasswords.java | 9 +-
...swordHolder_updateReadOnlyOptionalProperty.java | 8 +-
.../IsisPasswordHolder_updateReadOnlyProperty.java | 6 +-
...rdHolder_updateReadOnlyPropertyWithChoices.java | 12 +-
.../types/isis/passwords/jdo/IsisPasswordJdo.java | 3 +-
.../types/isis/passwords/jpa/IsisPasswordJpa.java | 9 +-
.../types/isis/passwords/vm/IsisPasswordVm.java | 5 +-
.../dom/types/isisext/IsisExtTypesMenu.java | 9 +-
.../dom/types/isisext/asciidocs/IsisAsciiDocs.java | 7 +-
...iiDocHolder_updateReadOnlyOptionalProperty.java | 8 +-
.../IsisAsciiDocHolder_updateReadOnlyProperty.java | 6 +-
...ocHolder_updateReadOnlyPropertyWithChoices.java | 12 +-
.../isisext/asciidocs/jdo/IsisAsciiDocJdo.java | 11 +-
.../isisext/asciidocs/jpa/IsisAsciiDocJpa.java | 15 +-
.../types/isisext/asciidocs/vm/IsisAsciiDocVm.java | 10 +-
.../isisext/cal/IsisCalendarEvents-common.adoc | 68 +++
.../cal/IsisCalendarEvents-description.adoc | 31 ++
.../dom/types/isisext/cal/IsisCalendarEvents.java | 81 ++++
.../isisext/cal/IsisCalendarEvents.layout.xml | 56 +++
.../cal/holder/IsisCalendarEventHolder.java | 39 ++
.../cal/holder/IsisCalendarEventHolder2.java | 75 +++
.../IsisCalendarEventHolder_actionReturning.java | 40 ++
...endarEventHolder_actionReturningCollection.java | 51 ++
.../IsisCalendarEventHolder_mixinProperty.java | 42 ++
...EventHolder_updateReadOnlyOptionalProperty.java | 59 +++
...CalendarEventHolder_updateReadOnlyProperty.java | 54 +++
...ntHolder_updateReadOnlyPropertyWithChoices.java | 69 +++
.../isisext/cal/jdo/IsisCalendarEventEntities.java | 42 ++
.../cal/jdo/IsisCalendarEventJdo-description.adoc | 18 +
.../isisext/cal/jdo/IsisCalendarEventJdo.java | 84 ++++
.../isisext/cal/jpa/IsisCalendarEventEntities.java | 42 ++
.../cal/jpa/IsisCalendarEventJpa-description.adoc | 21 +
.../isisext/cal/jpa/IsisCalendarEventJpa.java | 96 ++++
.../cal/persistence/IsisCalendarEventEntity.java | 42 ++
.../persistence/IsisCalendarEventEntity.layout.xml | 56 +++
.../cal/persistence/IsisCalendarEventSeeding.java | 39 ++
.../cal/samples/IsisCalendarEventSamples.java | 43 ++
.../cal/vm/IsisCalendarEventVm-description.adoc | 19 +
.../types/isisext/cal/vm/IsisCalendarEventVm.java | 84 ++++
.../isisext/cal/vm/IsisCalendarEventVm.layout.xml | 56 +++
.../dom/types/isisext/markdowns/IsisMarkdowns.java | 7 +-
...kdownHolder_updateReadOnlyOptionalProperty.java | 8 +-
.../IsisMarkdownHolder_updateReadOnlyProperty.java | 6 +-
...wnHolder_updateReadOnlyPropertyWithChoices.java | 12 +-
.../isisext/markdowns/jdo/IsisMarkdownJdo.java | 8 +-
.../isisext/markdowns/jpa/IsisMarkdownJpa.java | 12 +-
.../types/isisext/markdowns/vm/IsisMarkdownVm.java | 10 +-
.../demoapp/dom/types/isisext/sse/DemoTask.java | 5 +-
.../javaawt/images/JavaAwtBufferedImages.java | 9 +-
...ImageHolder_updateReadOnlyOptionalProperty.java | 8 +-
...BufferedImageHolder_updateReadOnlyProperty.java | 6 +-
...geHolder_updateReadOnlyPropertyWithChoices.java | 12 +-
.../images/jdo/JavaAwtBufferedImageJdo.java | 8 +-
.../images/jpa/JavaAwtBufferedImageJpa.java | 12 +-
.../samples/JavaAwtBufferedImagesSamples.java | 3 +-
.../javaawt/images/vm/JavaAwtBufferedImageVm.java | 8 +-
.../types/javalang/JavaLangWrapperTypesMenu.java | 2 -
.../types/javalang/booleans/WrapperBooleans.java | 21 +-
...oleanHolder_updateReadOnlyOptionalProperty.java | 8 +-
...rapperBooleanHolder_updateReadOnlyProperty.java | 6 +-
...anHolder_updateReadOnlyPropertyWithChoices.java | 12 +-
.../javalang/booleans/jpa/WrapperBooleanJpa.java | 6 +-
.../javalang/booleans/vm/WrapperBooleanVm.java | 5 +-
.../dom/types/javalang/bytes/WrapperBytes.java | 9 +-
...rByteHolder_updateReadOnlyOptionalProperty.java | 8 +-
.../WrapperByteHolder_updateReadOnlyProperty.java | 6 +-
...teHolder_updateReadOnlyPropertyWithChoices.java | 12 +-
.../types/javalang/bytes/jpa/WrapperByteJpa.java | 6 +-
.../dom/types/javalang/bytes/vm/WrapperByteVm.java | 5 +-
.../javalang/characters/WrapperCharacters.java | 8 +-
...acterHolder_updateReadOnlyOptionalProperty.java | 7 +-
...pperCharacterHolder_updateReadOnlyProperty.java | 5 +-
...erHolder_updateReadOnlyPropertyWithChoices.java | 10 +-
.../characters/jpa/WrapperCharacterJpa.java | 6 +-
.../javalang/characters/vm/WrapperCharacterVm.java | 5 +-
.../dom/types/javalang/doubles/WrapperDoubles.java | 8 +-
...oubleHolder_updateReadOnlyOptionalProperty.java | 8 +-
...WrapperDoubleHolder_updateReadOnlyProperty.java | 6 +-
...leHolder_updateReadOnlyPropertyWithChoices.java | 12 +-
.../javalang/doubles/jpa/WrapperDoubleJpa.java | 6 +-
.../types/javalang/doubles/vm/WrapperDoubleVm.java | 5 +-
.../dom/types/javalang/floats/WrapperFloats.java | 8 +-
...FloatHolder_updateReadOnlyOptionalProperty.java | 8 +-
.../WrapperFloatHolder_updateReadOnlyProperty.java | 6 +-
...atHolder_updateReadOnlyPropertyWithChoices.java | 12 +-
.../types/javalang/floats/jpa/WrapperFloatJpa.java | 6 +-
.../types/javalang/floats/vm/WrapperFloatVm.java | 5 +-
.../types/javalang/integers/WrapperIntegers.java | 8 +-
...tegerHolder_updateReadOnlyOptionalProperty.java | 7 +-
...rapperIntegerHolder_updateReadOnlyProperty.java | 6 +-
...erHolder_updateReadOnlyPropertyWithChoices.java | 12 +-
.../javalang/integers/jpa/WrapperIntegerJpa.java | 6 +-
.../javalang/integers/vm/WrapperIntegerVm.java | 5 +-
.../dom/types/javalang/longs/WrapperLongs.java | 8 +-
...rLongHolder_updateReadOnlyOptionalProperty.java | 8 +-
.../WrapperLongHolder_updateReadOnlyProperty.java | 6 +-
...ngHolder_updateReadOnlyPropertyWithChoices.java | 12 +-
.../types/javalang/longs/jpa/WrapperLongJpa.java | 6 +-
.../dom/types/javalang/longs/vm/WrapperLongVm.java | 5 +-
.../dom/types/javalang/shorts/WrapperShorts.java | 8 +-
...ShortHolder_updateReadOnlyOptionalProperty.java | 8 +-
.../WrapperShortHolder_updateReadOnlyProperty.java | 6 +-
...rtHolder_updateReadOnlyPropertyWithChoices.java | 12 +-
.../types/javalang/shorts/jpa/WrapperShortJpa.java | 6 +-
.../types/javalang/shorts/vm/WrapperShortVm.java | 5 +-
.../types/javalang/strings/JavaLangStrings.java | 8 +-
...tringHolder_updateReadOnlyOptionalProperty.java | 8 +-
...avaLangStringHolder_updateReadOnlyProperty.java | 6 +-
...ngHolder_updateReadOnlyPropertyWithChoices.java | 12 +-
.../javalang/strings/jpa/JavaLangStringJpa.java | 6 +-
.../strings/samples/JavaLangStringSamples.java | 11 +-
.../javalang/strings/vm/JavaLangStringVm.java | 5 +-
.../dom/types/javalang/voids/JavaLangVoids.java | 7 +-
.../dom/types/javamath/JavaMathTypesMenu.java | 2 -
.../javamath/bigdecimals/JavaMathBigDecimals.java | 8 +-
...cimalHolder_updateReadOnlyOptionalProperty.java | 8 +-
...athBigDecimalHolder_updateReadOnlyProperty.java | 6 +-
...alHolder_updateReadOnlyPropertyWithChoices.java | 12 +-
.../bigdecimals/jpa/JavaMathBigDecimalJpa.java | 6 +-
.../bigdecimals/vm/JavaMathBigDecimalVm.java | 5 +-
.../javamath/bigintegers/JavaMathBigIntegers.java | 8 +-
...tegerHolder_updateReadOnlyOptionalProperty.java | 8 +-
...athBigIntegerHolder_updateReadOnlyProperty.java | 6 +-
...erHolder_updateReadOnlyPropertyWithChoices.java | 12 +-
.../bigintegers/jpa/JavaMathBigIntegerJpa.java | 6 +-
.../bigintegers/vm/JavaMathBigIntegerVm.java | 5 +-
.../dom/types/javanet/JavaNetTypesMenu.java | 2 -
.../dom/types/javanet/urls/JavaNetUrls.java | 8 +-
...etUrlHolder_updateReadOnlyOptionalProperty.java | 8 +-
.../JavaNetUrlHolder_updateReadOnlyProperty.java | 6 +-
...rlHolder_updateReadOnlyPropertyWithChoices.java | 12 +-
.../dom/types/javanet/urls/jpa/JavaNetUrlJpa.java | 6 +-
.../dom/types/javanet/urls/vm/JavaNetUrlVm.java | 5 +-
.../dom/types/javasql/JavaSqlTypesMenu.java | 2 -
.../types/javasql/javasqldate/JavaSqlDates.java | 8 +-
...lDateHolder_updateReadOnlyOptionalProperty.java | 8 +-
.../JavaSqlDateHolder_updateReadOnlyProperty.java | 6 +-
...teHolder_updateReadOnlyPropertyWithChoices.java | 12 +-
.../javasql/javasqldate/jpa/JavaSqlDateJpa.java | 6 +-
.../javasql/javasqldate/vm/JavaSqlDateVm.java | 5 +-
.../javasqltimestamp/JavaSqlTimestamps.java | 8 +-
...stampHolder_updateReadOnlyOptionalProperty.java | 8 +-
...aSqlTimestampHolder_updateReadOnlyProperty.java | 6 +-
...mpHolder_updateReadOnlyPropertyWithChoices.java | 12 +-
.../javasqltimestamp/jpa/JavaSqlTimestampJpa.java | 6 +-
.../javasqltimestamp/vm/JavaSqlTimestampVm.java | 5 +-
.../javatimelocaldate/JavaTimeLocalDates.java | 8 +-
...lDateHolder_updateReadOnlyOptionalProperty.java | 8 +-
...TimeLocalDateHolder_updateReadOnlyProperty.java | 6 +-
...teHolder_updateReadOnlyPropertyWithChoices.java | 12 +-
.../jpa/JavaTimeLocalDateJpa.java | 6 +-
.../javatimelocaldate/vm/JavaTimeLocalDateVm.java | 5 +-
.../JavaTimeLocalDateTimes.java | 8 +-
...eTimeHolder_updateReadOnlyOptionalProperty.java | 8 +-
...LocalDateTimeHolder_updateReadOnlyProperty.java | 6 +-
...meHolder_updateReadOnlyPropertyWithChoices.java | 12 +-
.../jpa/JavaTimeLocalDateTimeJpa.java | 6 +-
.../vm/JavaTimeLocalDateTimeVm.java | 5 +-
.../JavaTimeOffsetDateTimes.java | 8 +-
...eTimeHolder_updateReadOnlyOptionalProperty.java | 8 +-
...ffsetDateTimeHolder_updateReadOnlyProperty.java | 6 +-
...meHolder_updateReadOnlyPropertyWithChoices.java | 12 +-
.../jpa/JavaTimeOffsetDateTimeJpa.java | 6 +-
.../vm/JavaTimeOffsetDateTimeVm.java | 5 +-
.../javatimeoffsettime/JavaTimeOffsetTimes.java | 8 +-
...tTimeHolder_updateReadOnlyOptionalProperty.java | 8 +-
...imeOffsetTimeHolder_updateReadOnlyProperty.java | 6 +-
...meHolder_updateReadOnlyPropertyWithChoices.java | 12 +-
.../jpa/JavaTimeOffsetTimeJpa.java | 6 +-
.../vm/JavaTimeOffsetTimeVm.java | 5 +-
.../JavaTimeZonedDateTimes.java | 8 +-
...eTimeHolder_updateReadOnlyOptionalProperty.java | 8 +-
...ZonedDateTimeHolder_updateReadOnlyProperty.java | 6 +-
...meHolder_updateReadOnlyPropertyWithChoices.java | 12 +-
.../jpa/JavaTimeZonedDateTimeJpa.java | 6 +-
.../samples/JavaTimeZonedDateTimeSamples.java | 14 +-
.../vm/JavaTimeZonedDateTimeVm.java | 5 +-
.../dom/types/javautil/JavaUtilTypesMenu.java | 2 -
.../types/javautil/javautildate/JavaUtilDates.java | 8 +-
...lDateHolder_updateReadOnlyOptionalProperty.java | 8 +-
.../JavaUtilDateHolder_updateReadOnlyProperty.java | 6 +-
...teHolder_updateReadOnlyPropertyWithChoices.java | 12 +-
.../javautil/javautildate/jpa/JavaUtilDateJpa.java | 6 +-
.../javautil/javautildate/vm/JavaUtilDateVm.java | 5 +-
.../dom/types/javautil/uuids/JavaUtilUuids.java | 8 +-
...lUuidHolder_updateReadOnlyOptionalProperty.java | 8 +-
.../JavaUtilUuidHolder_updateReadOnlyProperty.java | 6 +-
...idHolder_updateReadOnlyPropertyWithChoices.java | 12 +-
.../types/javautil/uuids/jpa/JavaUtilUuidJpa.java | 6 +-
.../types/javautil/uuids/vm/JavaUtilUuidVm.java | 5 +-
.../dom/types/jodatime/JodaTimeTypesMenu.java | 12 +-
.../types/jodatime/jodadatetime/JodaDateTimes.java | 8 +-
...eTimeHolder_updateReadOnlyOptionalProperty.java | 8 +-
.../JodaDateTimeHolder_updateReadOnlyProperty.java | 6 +-
...meHolder_updateReadOnlyPropertyWithChoices.java | 12 +-
.../jodatime/jodadatetime/vm/JodaDateTimeVm.java | 5 +-
.../jodatime/jodalocaldate/JodaLocalDates.java | 8 +-
...lDateHolder_updateReadOnlyOptionalProperty.java | 8 +-
...JodaLocalDateHolder_updateReadOnlyProperty.java | 6 +-
...teHolder_updateReadOnlyPropertyWithChoices.java | 12 +-
.../jodatime/jodalocaldate/vm/JodaLocalDateVm.java | 5 +-
.../jodalocaldatetime/JodaLocalDateTimes.java | 8 +-
...eTimeHolder_updateReadOnlyOptionalProperty.java | 8 +-
...LocalDateTimeHolder_updateReadOnlyProperty.java | 6 +-
...meHolder_updateReadOnlyPropertyWithChoices.java | 12 +-
.../jodalocaldatetime/vm/JodaLocalDateTimeVm.java | 5 +-
.../jodatime/jodalocaltime/JodaLocalTimes.java | 8 +-
...lTimeHolder_updateReadOnlyOptionalProperty.java | 8 +-
...JodaLocalTimeHolder_updateReadOnlyProperty.java | 6 +-
...meHolder_updateReadOnlyPropertyWithChoices.java | 12 +-
.../jodatime/jodalocaltime/vm/JodaLocalTimeVm.java | 5 +-
.../primitive/booleans/PrimitiveBooleans.java | 8 +-
...mitiveBooleanHolder_updateReadOnlyProperty.java | 6 +-
...anHolder_updateReadOnlyPropertyWithChoices.java | 12 +-
.../booleans/jpa/PrimitiveBooleanJpa.java | 6 +-
.../primitive/booleans/vm/PrimitiveBooleanVm.java | 5 +-
.../dom/types/primitive/bytes/PrimitiveBytes.java | 8 +-
...PrimitiveByteHolder_updateReadOnlyProperty.java | 6 +-
...teHolder_updateReadOnlyPropertyWithChoices.java | 15 +-
.../primitive/bytes/jpa/PrimitiveByteJpa.java | 6 +-
.../types/primitive/bytes/vm/PrimitiveByteVm.java | 5 +-
.../dom/types/primitive/chars/PrimitiveChars.java | 8 +-
...PrimitiveCharHolder_updateReadOnlyProperty.java | 6 +-
...arHolder_updateReadOnlyPropertyWithChoices.java | 15 +-
.../primitive/chars/jpa/PrimitiveCharJpa.java | 6 +-
.../types/primitive/chars/vm/PrimitiveCharVm.java | 5 +-
.../types/primitive/doubles/PrimitiveDoubles.java | 8 +-
...imitiveDoubleHolder_updateReadOnlyProperty.java | 6 +-
...leHolder_updateReadOnlyPropertyWithChoices.java | 15 +-
.../primitive/doubles/jpa/PrimitiveDoubleJpa.java | 6 +-
.../primitive/doubles/vm/PrimitiveDoubleVm.java | 5 +-
.../types/primitive/floats/PrimitiveFloats.java | 8 +-
...rimitiveFloatHolder_updateReadOnlyProperty.java | 6 +-
...atHolder_updateReadOnlyPropertyWithChoices.java | 15 +-
.../primitive/floats/jpa/PrimitiveFloatJpa.java | 6 +-
.../primitive/floats/vm/PrimitiveFloatVm.java | 5 +-
.../dom/types/primitive/ints/PrimitiveInts.java | 8 +-
.../PrimitiveIntHolder_updateReadOnlyProperty.java | 6 +-
...ntHolder_updateReadOnlyPropertyWithChoices.java | 15 +-
.../types/primitive/ints/jpa/PrimitiveIntJpa.java | 6 +-
.../types/primitive/ints/vm/PrimitiveIntVm.java | 5 +-
.../dom/types/primitive/longs/PrimitiveLongs.java | 8 +-
...PrimitiveLongHolder_updateReadOnlyProperty.java | 6 +-
...ngHolder_updateReadOnlyPropertyWithChoices.java | 15 +-
.../primitive/longs/jpa/PrimitiveLongJpa.java | 6 +-
.../types/primitive/longs/vm/PrimitiveLongVm.java | 5 +-
.../types/primitive/shorts/PrimitiveShorts.java | 8 +-
...rimitiveShortHolder_updateReadOnlyProperty.java | 6 +-
...rtHolder_updateReadOnlyPropertyWithChoices.java | 15 +-
.../primitive/shorts/jpa/PrimitiveShortJpa.java | 6 +-
.../primitive/shorts/vm/PrimitiveShortVm.java | 5 +-
.../demo/domain/src/main/resources/application.yml | 2 +-
examples/demo/pom.xml | 4 +-
examples/demo/vaadin/pom.xml | 6 +-
.../PrototypeActionsVisibilityAdvisor.java | 19 +-
examples/demo/wicket/common/pom.xml | 5 +
.../wicket/common/ui/DemoAppWicketCommon.java | 38 ++
.../common/ui/custom/WhereInTheWorldPanel.java | 1 -
.../webapp/wicket/jdo/DemoAppWicketJdo.java | 15 +-
examples/demo/wicket/jpa/pom.xml | 20 -
.../webapp/wicket/jpa/DemoAppWicketJpa.java | 15 +-
.../commandlog/model/command/CommandModel.java | 20 +-
.../commandlog/jdo/entities/CommandJdo.java | 25 +-
.../jdo/mixins/Object_recentCommands.java | 6 +-
.../commandlog/jdo/ui/CommandServiceMenu.java | 13 +-
.../commandlog/jpa/entities/CommandJpa.java | 17 +-
.../primary/mixins/Object_openOnSecondary.java | 11 +-
.../primary/ui/CommandReplayOnPrimaryService.java | 194 ++++----
.../ui/CommandReplayOnSecondaryService.java | 51 +-
extensions/pom.xml | 8 -
.../secman/applib/SecmanAutoConfiguration.java | 2 +-
.../feature/api/ApplicationFeatureChoices.java | 12 +-
.../app/ApplicationOrphanedPermissionManager.java | 4 +-
...OrphanedPermissionManager_relocateSelected.java | 5 +-
.../permission/dom/ApplicationPermission.java | 5 +-
.../dom/mixins/ApplicationPermission_allow.java | 5 +-
.../dom/mixins/ApplicationPermission_changing.java | 5 +-
.../dom/mixins/ApplicationPermission_delete.java | 3 +-
.../dom/mixins/ApplicationPermission_feature.java | 12 +-
.../mixins/ApplicationPermission_updateRole.java | 12 +-
.../dom/mixins/ApplicationPermission_veto.java | 6 +-
.../dom/mixins/ApplicationPermission_viewing.java | 5 +-
.../permission/menu/ApplicationPermissionMenu.java | 39 +-
.../secman/applib/role/dom/ApplicationRole.java | 5 +-
.../dom/mixins/ApplicationRole_addPermission.java | 15 +-
.../role/dom/mixins/ApplicationRole_addUser.java | 6 +-
.../role/dom/mixins/ApplicationRole_delete.java | 6 +-
.../mixins/ApplicationRole_removePermissions.java | 3 +-
.../dom/mixins/ApplicationRole_removeUsers.java | 7 +-
.../mixins/ApplicationRole_updateDescription.java | 8 +-
.../dom/mixins/ApplicationRole_updateName.java | 7 +-
.../applib/role/menu/ApplicationRoleMenu.java | 70 +--
.../seed/IsisAppFeatureRoleAndPermissions.java | 7 -
.../seed/IsisConfigurationRoleAndPermissions.java | 2 -
.../applib/tenancy/dom/ApplicationTenancy.java | 5 +-
.../dom/mixins/ApplicationTenancy_addChild.java | 3 +-
.../dom/mixins/ApplicationTenancy_addUser.java | 6 +-
.../dom/mixins/ApplicationTenancy_delete.java | 3 +-
.../dom/mixins/ApplicationTenancy_removeChild.java | 12 +-
.../dom/mixins/ApplicationTenancy_removeUser.java | 12 +-
.../dom/mixins/ApplicationTenancy_updateName.java | 8 +-
.../dom/mixins/ApplicationTenancy_users.java | 3 +-
.../tenancy/menu/ApplicationTenancyMenu.java | 78 ++--
.../applib/user/app/ApplicationUserManager.java | 3 +-
.../mixins/ApplicationUserManager_allUsers.java | 3 +-
.../ApplicationUserManager_newDelegateUser.java | 6 +-
.../ApplicationUserManager_newLocalUser.java | 9 +-
.../user/contributions/HasUsername_open.java | 15 +-
.../secman/applib/user/dom/ApplicationUser.java | 15 +-
.../dom/ApplicationUserRepositoryAbstract.java | 5 +-
.../user/dom/mixins/ApplicationUser_addRole.java | 9 +-
.../user/dom/mixins/ApplicationUser_delete.java | 6 +-
.../user/dom/mixins/ApplicationUser_duplicate.java | 7 +-
.../user/dom/mixins/ApplicationUser_lock.java | 6 +-
.../dom/mixins/ApplicationUser_removeRoles.java | 3 +-
.../dom/mixins/ApplicationUser_resetPassword.java | 9 +-
.../user/dom/mixins/ApplicationUser_unlock.java | 6 +-
.../mixins/ApplicationUser_updateAccountType.java | 7 +-
.../dom/mixins/ApplicationUser_updateAtPath.java | 6 +-
.../mixins/ApplicationUser_updateEmailAddress.java | 9 +-
.../mixins/ApplicationUser_updateFaxNumber.java | 12 +-
.../dom/mixins/ApplicationUser_updateName.java | 27 +-
.../dom/mixins/ApplicationUser_updatePassword.java | 18 +-
.../mixins/ApplicationUser_updatePhoneNumber.java | 12 +-
.../dom/mixins/ApplicationUser_updateUsername.java | 8 +-
...ApplicationUser_effectiveMemberPermissions.java | 3 +-
...ationUser_filterEffectiveMemberPermissions.java | 6 +-
.../dom/mixins/perms/UserPermissionViewModel.java | 8 +-
.../applib/user/menu/ApplicationUserMenu.java | 38 +-
.../secman/applib/user/menu/MeService.java | 48 +-
.../TableColumnVisibilityServiceForSecman.java | 6 +-
.../fullcalendar/applib/CalendarEventable.java | 5 +-
.../fullcalendar/applib/Calendarable.java | 4 +-
.../spi/CalendarableDereferencingService.java | 10 +-
.../fullcalendar/applib/value/CalendarEvent.java | 113 +++--
.../value/CalendarEventSemanticsProvider.java | 8 +-
extensions/vw/fullcalendar/ui/pom.xml | 6 +
...g.apache.isis.viewer.wicket.ui.ComponentFactory | 2 -
.../ui/component/EventProviderAbstract.java | 16 +-
.../ui/component/IsisModuleExtFullCalendarUi.java | 7 +-
.../CalendarableCollectionAsFullCalendar.java | 3 +-
...alendarableCollectionAsFullCalendarFactory.java | 8 +-
.../CalendarEventableCollectionAsFullCalendar.java | 3 +-
...arEventableCollectionAsFullCalendarFactory.java | 8 +-
.../demomodule/dom/PdfJsDemoObjectWithBlob.java | 10 +-
.../examples/facets/jsr303/Jsr303FacetFactory.java | 1 -
.../facets/jsr303/Jsr303ProgModelFacets.java | 1 -
.../jsr303/Jsr303PropertyValidationFacet.java | 1 -
.../examples/facets/jsr303/CustomPattern.java | 1 -
.../facets/jsr303/CustomPatternValidator.java | 1 -
.../examples/facets/jsr303/CustomPatterns.java | 1 -
.../facets/jsr303/DomainObjectVanilla.java | 1 -
.../jsr303/DomainObjectWithBuiltInValidation.java | 1 -
.../jsr303/DomainObjectWithCustomValidation.java | 1 -
.../facets/jsr303/Jsr303FacetFacetHolder.java | 1 -
.../jsr303/Jsr303FacetFactoryFeatureTypes.java | 1 -
.../jsr303/Jsr303FacetFactoryInstantiation.java | 1 -
.../jsr303/Jsr303FacetFactoryProcessObject.java | 1 -
.../jsr303/Jsr303FacetFactoryProcessProperty.java | 1 -
.../facets/jsr303/Jsr303FacetInstantiation.java | 1 -
.../jsr303/Jsr303FacetValidatingInteraction.java | 1 -
.../vaadin/ui/pages/login/VaadinLoginView.java | 2 +-
.../viewer/IsisModuleIncViewerVaadinViewer.java | 1 -
isis-parent/pom.xml | 6 +-
mappings/pom.xml | 8 -
.../restclient/auth/BasicAuthFilter.java | 16 +-
mavendeps/adoc/modules/mavendeps/pages/about.adoc | 129 +-----
.../setup-and-configure-mavendeps-jdo.adoc | 4 +-
.../setup-and-configure-mavendeps-jpa.adoc | 4 +-
.../typesafe-queries-and-fetchgroups.adoc | 4 +-
.../datanucleus/config/JdoEntityTypeRegistry.java | 98 ----
.../entities/DnObjectProviderForIsis.java | 2 +-
.../jdosupport/JdoSupportServiceDefault.java | 1 -
.../datanucleus/metamodel/JdoMetamodelUtil.java | 63 ---
.../metamodel/facets/entity/JdoEntityFacet.java | 4 +-
.../mixins/Persistable_downloadJdoMetadata.java | 5 +-
.../applib/IsisLocalResourcePathConverter.java | 6 +-
.../changetracking/_SimpleChangingEntities.java | 1 -
.../jdo/metamodel/beans/JdoBeanTypeClassifier.java | 6 +-
.../JdoDiscriminatorAnnotationFacetFactory.java | 1 -
...nferredFromJdoPersistenceCapableAnnotation.java | 1 -
.../version/JdoVersionAnnotationFacetFactory.java | 1 -
.../MandatoryFacetFromJdoColumnAnnotation.java | 1 -
...etInferredFromAbsenceOfJdoColumnAnnotation.java | 1 -
.../jdo/metamodel/menu/JdoMetamodelMenu.java | 19 +-
...atastoreIdentityAnnotationFacetFactoryTest.java | 17 +-
...JdoDiscriminatorAnnotationFacetFactoryTest.java | 11 +-
...GivenJdoPersistenceCapableFacetFactoryTest.java | 21 +-
.../JdoVersionAnnotationFacetFactoryTest.java | 11 +-
...vedFromJdoColumnAnnotationFacetFactoryTest.java | 17 +-
...vedFromJdoColumnAnnotationFacetFactoryTest.java | 26 +-
...JdoNotPersistentAnnotationFacetFactoryTest.java | 11 +-
...venJdoPrimaryKeyAnnotationFacetFactoryTest.java | 17 +-
.../ObjectReflectorDefaultTest_object.java | 9 +-
.../SpecificationLoaderTestAbstract.java | 22 +-
.../testing/AbstractFacetFactoryTest.java | 1 -
.../persistence/jdo/metamodel/testing/Utils.java | 1 -
.../JpaEntityInjectionPointResolver.java | 79 ----
.../jpa/applib/types/BlobJpaEmbeddable.java | 1 -
.../jpa/applib/types/ClobJpaEmbeddable.java | 1 -
.../jpa/eclipselink/config/ElSettings.java | 7 +-
.../isis/testdomain/config/IsisConfigBeanTest.java | 9 +-
.../config/IsisConfigBeanTest_usingHeadless.java | 6 +-
.../resources/application-config-test.properties | 2 +-
.../DomainModelTest_usingBadDomain.java | 89 ++--
...nModelTest_usingBadDomain_noActionEnforced.java | 90 ----
...elTest_usingBadDomain_noAnnotationEnforced.java | 84 ++++
.../DomainModelTest_usingGoodDomain.java | 163 ++++++-
.../testdomain/conf/Configuration_headless.java | 14 +-
.../isis/testdomain/jdo/entities/JdoProduct.java | 3 +-
.../isis/testdomain/jpa/entities/JpaProduct.java | 3 +-
.../isis/testdomain/model/bad/AmbiguousTitle.java | 4 +-
.../model/bad/InvalidOrphanedActionSupport.java | 3 +-
.../bad/InvalidOrphanedCollectionSupport.java | 3 +-
.../model/bad/InvalidOrphanedPropertySupport.java | 3 +-
...validOrphanedActionSupportNoActionEnforced.java | 32 --
...dOrphanedActionSupportNoAnnotationEnforced.java | 32 ++
.../isis/testdomain/model/good/MixinConcrete.java | 6 +-
.../ProperActionWithNameStartingWithSetOrGet.java | 6 +-
.../testdomain/model/good/ProperFullyAbstract.java | 52 +++
.../testdomain/model/good/ProperFullyImpl.java | 74 +++
.../good/ProperMemberInheritanceAbstract.java | 23 +-
.../good/ProperMemberInheritanceInterface.java | 5 +-
.../testdomain/model/good/ProperMemberSupport.java | 116 ++---
.../model/good/ProperMemberSupport_action.java | 35 +-
.../model/good/ProperMemberSupport_action2.java | 35 +-
.../model/good/ProperMemberSupport_action3.java | 35 +-
.../model/good/ProperMemberSupport_action4.java | 33 +-
.../model/good/ProperMemberSupport_action5.java | 8 +-
.../model/good/ProperMemberSupport_collection.java | 12 +-
.../good/ProperMemberSupport_collection2.java | 12 +-
.../good/ProperMemberSupport_collection3.java | 9 +-
.../model/good/ProperMemberSupport_property.java | 15 +-
.../model/good/ProperMemberSupport_property2.java | 15 +-
.../model/good/ProperMemberSupport_property3.java | 9 +-
.../model/good/ProperParameterSupport.java | 45 +-
.../model/good/ProperPrefixedMember.java | 3 +-
.../model/good/ProperServiceWithMixin.java | 3 +-
...lWithAnnotationOptionalUsingPrivateSupport.java | 108 +++++
.../good/ViewModelWithEncapsulatedMembers.java | 82 ++++
.../interaction/InteractionDemo_biArgDisabled.java | 6 +-
.../interaction/InteractionDemo_biArgEnabled.java | 9 +-
.../InteractionDemo_biListOfString.java | 15 +-
.../interaction/InteractionDemo_multiEnum.java | 12 +-
.../interaction/InteractionDemo_multiInt.java | 21 +-
.../interaction/InteractionDemo_negotiate.java | 6 +-
.../interaction/InteractionDemo_noArgDisabled.java | 6 +-
.../interaction/InteractionDemo_noArgEnabled.java | 3 +-
.../InteractionNpmDemo_biArgDisabled.java | 12 +-
.../InteractionNpmDemo_biArgEnabled.java | 9 +-
.../interaction/DomainObjectTesterFactory.java | 513 +++++++++++++++++++++
.../testdomain/util/rest/RestEndpointService.java | 2 +-
scripts/jira-release-notes.sh | 20 +-
scripts/verify-isis-release.sh | 7 +-
.../bypass/authentication/AuthenticatorBypass.java | 1 -
.../bypass/authorization/AuthorizorBypass.java | 1 -
.../shiro/IsisPermissionTest_setParts.java | 1 -
starters/pom.xml | 10 +-
.../BulkUpdateManagerForDemoToDoItem.java | 19 +-
.../demoapp/todomodule/dom/ExcelDemoToDoItem.java | 8 +-
subdomains/pom.xml | 8 -
.../adoc/modules/archtestsupport/pages/about.adoc | 12 +
.../applib/classrules/ArchitectureDomainRules.java | 66 ++-
.../applib/classrules/ArchitectureJdoRules.java | 65 ++-
.../applib/classrules/ArchitectureJpaRules.java | 17 +-
.../applib/classrules/CommonPredicates.java | 24 +
.../applib/entity/jpa/dom/JpaEntity2.java | 4 +-
.../demomodule/dom/FakeDataDemoObjectWithAll.java | 63 +--
.../IsisIntegrationTestAbstractWithFixtures.java | 5 +-
.../applib/events/FixturesInstalledEvent.java | 1 -
.../applib/events/FixturesInstallingEvent.java | 1 -
.../applib/fixturescripts/FixtureScripts.java | 61 +--
.../h2console/ui/services/H2ManagerMenu.java | 4 +-
.../applib/validate/DomainModelValidator.java | 63 ++-
testing/pom.xml | 8 -
.../applib/jmocking/InjectIntoJMockAction.java | 1 -
.../CollaboratingUsingConstructorInjection.java | 1 -
.../CollaboratingUsingSetterInjection.java | 1 -
.../applib/jmocking/Collaborator.java | 1 -
.../jmocking/JMockActionsTest_returnArgument.java | 1 -
.../jmocking/JMockActionsTest_returnEach.java | 1 -
.../applib/jmocking/JUnitRuleMockery2Test.java | 1 -
..._autoWiring_constructorInjection_happyCase.java | 1 -
...y2Test_autoWiring_sadCase_noClassUnderTest.java | 1 -
...est_autoWiring_sadCase_twoClassesUnderTest.java | 1 -
...2Test_autoWiring_setterInjection_happyCase.java | 1 -
...RuleMockery2Test_mockAnnotatedWithAllowing.java | 1 -
...RuleMockery2Test_mockAnnotatedWithIgnoring.java | 1 -
...kery2Test_mockAnnotatedWithNever_happyCase.java | 1 -
...ockery2Test_mockAnnotatedWithNever_sadCase.java | 1 -
...ockery2Test_mockAnnotatedWithOne_happyCase.java | 1 -
...eMockery2Test_mockAnnotatedWithOne_sadCase.java | 1 -
tooling/javamodel/pom.xml | 2 +-
tooling/pom.xml | 2 +-
.../valuetypes/asciidoc/applib/value/AsciiDoc.java | 10 +-
.../asciidoc/applib/value/Converter.java | 52 ++-
.../metamodel/facets/AsciiDocValueFacet.java | 1 -
.../facets/AsciiDocValueSemanticsProvider.java | 1 -
valuetypes/asciidoc/persistence/jdo-dn5/pom.xml | 38 --
valuetypes/asciidoc/persistence/jdo/pom.xml | 38 ++
.../IsisModuleValAsciidocPersistenceJdoDn5.java | 0
.../jdo/dn5/converters/IsisAsciiDocConverter.java | 0
.../src/main/resources/META-INF/MANIFEST.MF | 0
.../{jdo-dn5 => jdo}/src/main/resources/plugin.xml | 0
valuetypes/asciidoc/persistence/pom.xml | 2 +-
valuetypes/asciidoc/ui/pom.xml | 4 +-
.../wkt/components/AsciiDocPanelFactoriesWkt.java | 1 -
.../schema/chg/v2/ChangesDtoPanelFactoriesWkt.java | 1 -
.../schema/cmd/v2/CommandDtoPanelFactoriesWkt.java | 1 -
.../ixn/v2/InteractionDtoPanelFactoriesWkt.java | 1 -
valuetypes/jodatime/applib/pom.xml | 49 ++
.../applib/IsisModuleValJodatimeApplib.java | 28 ++
.../jodatime/applib/jaxb/JodatimeJaxbAdapters.java | 175 +++++++
.../jodatime/applib/value/JodatimeConverters.java | 128 +++++
valuetypes/jodatime/pom.xml | 33 ++
.../valuetypes/markdown/applib/value/Markdown.java | 4 -
.../metamodel/facets/MarkdownValueFacet.java | 1 -
.../facets/MarkdownValueSemanticsProvider.java | 1 -
valuetypes/markdown/persistence/jdo-dn5/pom.xml | 42 --
valuetypes/markdown/persistence/jdo/pom.xml | 42 ++
.../IsisModuleValMarkdownPersistenceJdoDn5.java | 0
.../jdo/dn5/converters/IsisMarkdownConverter.java | 0
.../src/main/resources/META-INF/MANIFEST.MF | 0
.../{jdo-dn5 => jdo}/src/main/resources/plugin.xml | 0
valuetypes/markdown/persistence/pom.xml | 2 +-
.../MarkdownPanelFactoriesForWicket.java | 1 -
valuetypes/pom.xml | 19 +-
.../sse/applib/annotations/SseSource.java | 1 -
.../valuetypes/sse/applib/service/SseChannel.java | 1 -
.../facets/SseAnnotationFacetFactory.java | 1 -
.../sse/metamodel/facets/SseObserveFacet.java | 1 -
.../metamodel/facets/SseObserveFacetAbstract.java | 1 -
...eObserveFacetForServerSentEventsAnnotation.java | 1 -
.../ui/wkt/markup/ListeningMarkupComponent.java | 2 +-
.../markup/ListeningMarkupComponent_observing.java | 5 +-
.../ListeningMarkupPanelFactoriesForWicket.java | 1 -
.../ui/wkt/webmodule/ServerSentEventsServlet.java | 13 +-
.../common/applib/mixins/Object_impersonate.java | 18 +-
.../applib/mixins/Object_impersonateWithRoles.java | 24 +-
.../restfulobjects/applib/JsonRepresentation.java | 40 +-
.../isis/viewer/restfulobjects/applib/Rel.java | 29 +-
.../restfulobjects/applib/RepresentationType.java | 12 +-
.../applib/dtos/ScalarValueDtoV1.java | 46 --
.../restfulobjects/applib/util/MediaTypes.java | 1 -
.../viewer/restfulobjects/applib/util/Parser.java | 22 +-
.../restfulobjects/rendering/IResourceContext.java | 11 +-
.../restfulobjects/rendering/LinkBuilder.java | 8 +-
.../domainobjects/DomainObjectReprRenderer.java | 2 +-
.../rendering/domainobjects/JsonValueEncoder.java | 36 +-
.../domainobjects/ObjectActionReprRenderer.java | 4 +-
.../AbstractTypeFeatureReprRenderer.java | 3 +
.../domaintypes/DomainTypeReprRenderer.java | 2 +-
.../service/swagger/SwaggerServiceDefault.java | 2 +-
.../service/swagger/SwaggerServiceMenu.java | 83 ++--
..._ensureCompatibleAcceptHeader_ContractTest.java | 34 +-
.../IsisModuleViewerRestfulObjectsViewer.java | 1 -
.../viewer/context/ResourceContext.java | 26 +-
.../restfulobjects/viewer/mappers/FailureUtil.java | 36 +-
.../resources/DomainObjectResourceServerside.java | 8 +-
.../viewer/resources/HomePageReprRenderer.java | 40 +-
.../resources/MenuBarsResourceServerside.java | 2 +-
.../viewer/resources/ResourceAbstract.java | 40 +-
.../IsisRestfulObjectsInteractionFilter.java | 15 +-
.../webmodule/auth/AuthenticationStrategy.java | 1 -
.../auth/AuthenticationStrategyDefault.java | 1 -
.../context/ResourceContext_getArg_Test.java | 10 +-
.../wicket/model/common/OnSelectionHandler.java | 1 -
.../wicket/model/isis/WicketViewerSettings.java | 1 -
.../model/isis/WicketViewerSettingsAccessor.java | 1 -
.../wicket/model/mementos/PageParameterNames.java | 1 -
.../wicket/model/modelhelpers/WhereAmIHelper.java | 1 -
.../viewer/wicket/model/models/AboutModel.java | 1 -
.../viewer/wicket/model/models/ActionModel.java | 7 +-
.../viewer/wicket/model/models/ActionPrompt.java | 1 -
.../wicket/model/models/BookmarkTreeNode.java | 1 -
.../model/models/BookmarkTreeNodeComparator.java | 1 -
.../wicket/model/models/BookmarkableModel.java | 1 -
.../wicket/model/models/BookmarkedPagesModel.java | 1 -
.../viewer/wicket/model/models/EntityModel.java | 30 +-
.../viewer/wicket/model/models/FormExecutor.java | 1 -
.../wicket/model/models/FormExecutorContext.java | 1 -
.../wicket/model/models/ImageResourceCache.java | 1 -
.../viewer/wicket/model/models/ModelAbstract.java | 1 -
.../isis/viewer/wicket/model/models/PageType.java | 1 -
.../viewer/wicket/model/models/ScalarModel.java | 14 +-
.../wicket/model/models/ScalarPropertyModel.java | 4 -
.../wicket/model/models/ServiceActionsModel.java | 1 -
.../viewer/wicket/model/models/ValueModel.java | 1 -
.../isis/viewer/wicket/model/models/VoidModel.java | 1 -
.../viewer/wicket/model/models/WelcomeModel.java | 1 -
.../wicket/model/models/ActionModelTest.java | 1 -
.../models/LowestCommonSuperclassClosureTest.java | 1 -
.../isis/viewer/wicket/ui/ComponentFactory.java | 1 -
.../viewer/wicket/ui/ComponentFactoryAbstract.java | 1 -
.../isis/viewer/wicket/ui/ComponentType.java | 1 -
.../actionresponse/ActionResultResponseType.java | 83 ++--
.../ui/app/registry/ComponentFactoryRegistrar.java | 1 -
.../ui/app/registry/ComponentFactoryRegistry.java | 1 -
.../registry/ComponentFactoryRegistryAccessor.java | 1 -
.../viewer/wicket/ui/components/LabelBase.java | 2 +-
.../wicket/ui/components/WebComponentBase.java | 2 +-
.../wicket/ui/components/about/AboutPanel.java | 1 -
.../ui/components/about/AboutPanelFactory.java | 1 -
.../ui/components/about/JarManifestPanel.java | 1 -
.../ui/components/actioninfo/ActionInfoPanel.java | 1 -
.../actioninfo/ActionInfoPanelFactory.java | 1 -
.../AdditionalLinksAsDropDownPanel.java | 1 -
.../AdditionalLinksAsListInlinePanel.java | 1 -
.../entityactions/AdditionalLinksPanel.java | 1 -
.../entityactions/EntityActionLinkFactory.java | 1 -
.../serviceactions/CssMenuItemPanelAbstract.java | 1 -
.../serviceactions/CssSubMenuItemsPanel.java | 1 -
.../serviceactions/MenuActionLinkFactory.java | 1 -
.../serviceactions/ServiceActionUtil.java | 1 -
.../serviceactions/ServiceActionsPanelFactory.java | 1 -
.../serviceactions/TertiaryMenuPanelFactory.java | 1 -
.../actions/ActionParametersFormPanel.java | 1 -
.../actions/ActionParametersFormPanelFactory.java | 1 -
.../components/actions/ActionParametersPanel.java | 1 -
.../actions/ActionParametersPanelFactory.java | 1 -
.../bookmarkedpages/BookmarkedPagesPanel.java | 1 -
.../ui/components/collection/CollectionPanel.java | 1 -
.../selector/CollectionSelectorHelper.java | 1 -
.../selector/CollectionSelectorPanel.java | 1 -
.../CollectionContentsAsAjaxTablePanel.java | 1 -
.../CollectionContentsAsAjaxTablePanelFactory.java | 1 -
.../CollectionContentsSortableDataProvider.java | 1 -
.../ajaxtable/columns/ColumnAbstract.java | 1 -
.../columns/ObjectAdapterPropertyColumn.java | 1 -
.../columns/ObjectAdapterTitleColumn.java | 1 -
.../columns/ObjectAdapterToggleboxColumn.java | 1 -
.../icons/CollectionContentsAsIconsPanel.java | 1 -
.../CollectionContentsAsIconsPanelFactory.java | 1 -
.../CollectionContentsMultipleViewsPanel.java | 1 -
...ollectionContentsMultipleViewsPanelFactory.java | 1 -
.../summary/CollectionContentsAsSummary.java | 1 -
.../CollectionContentsAsSummaryFactory.java | 1 -
.../unresolved/CollectionContentsHiddenPanel.java | 1 -
.../CollectionContentsHiddenPanelFactory.java | 1 -
.../ui/components/empty/EmptyCollectionPanel.java | 1 -
.../empty/EmptyCollectionPanelFactory.java | 1 -
.../entity/EntityComponentFactoryAbstract.java | 21 +-
.../entity/collection/EntityCollectionPanel.java | 1 -
.../collection/EntityCollectionPanelFactory.java | 1 -
.../entity/header/EntityHeaderPanel.java | 1 -
.../entity/header/EntityHeaderPanelFactory.java | 1 -
.../entity/icontitle/EntityIconAndTitlePanel.java | 1 -
.../icontitle/EntityIconAndTitlePanelFactory.java | 1 -
.../icontitle/EntityIconTitleAndCopyLinkPanel.java | 1 -
.../EntityIconTitleAndCopyLinkPanelFactory.java | 1 -
.../ui/components/footer/FooterPanelFactory.java | 1 -
.../ui/components/header/HeaderPanelFactory.java | 1 -
.../ui/components/layout/bs3/BS3GridPanel.java | 1 -
.../components/layout/bs3/Bs3GridPanelFactory.java | 1 -
.../wicket/ui/components/layout/bs3/Util.java | 1 -
.../components/property/PropertyEditFormPanel.java | 1 -
.../property/PropertyEditFormPanelFactory.java | 1 -
.../ui/components/property/PropertyEditPanel.java | 1 -
.../property/PropertyEditPanelFactory.java | 1 -
.../scalars/ComponentFactoryScalarAbstract.java | 1 -
.../ui/components/scalars/ScalarPanelAbstract.java | 1 -
.../scalars/ScalarPanelSelectAbstract.java | 1 -
.../scalars/ScalarPanelTextFieldAbstract.java | 1 -
.../ScalarPanelTextFieldDatePickerAbstract.java | 1 -
.../scalars/ScalarPanelTextFieldNumeric.java | 1 -
.../ScalarPanelTextFieldParseableAbstract.java | 1 -
.../components/scalars/blobclob/IsisBlobPanel.java | 1 -
.../scalars/blobclob/IsisBlobPanelFactory.java | 1 -
.../components/scalars/blobclob/IsisClobPanel.java | 1 -
.../scalars/blobclob/IsisClobPanelFactory.java | 1 -
.../components/scalars/bookmark/BookmarkPanel.java | 1 -
.../scalars/bookmark/BookmarkPanelFactory.java | 1 -
.../scalars/image/JavaAwtImagePanel.java | 1 -
.../scalars/image/JavaAwtImagePanelFactory.java | 1 -
.../scalars/jdk8time/Jdk8LocalDatePanel.java | 1 -
.../jdk8time/Jdk8LocalDatePanelFactory.java | 1 -
.../scalars/jdk8time/Jdk8LocalDateTimePanel.java | 1 -
.../jdk8time/Jdk8LocalDateTimePanelFactory.java | 1 -
.../scalars/jdk8time/Jdk8OffsetDateTimePanel.java | 1 -
.../jdk8time/Jdk8OffsetDateTimePanelFactory.java | 1 -
.../scalars/jdkdates/JavaSqlDatePanel.java | 1 -
.../scalars/jdkdates/JavaSqlDatePanelFactory.java | 1 -
.../scalars/jdkdates/JavaSqlTimePanel.java | 1 -
.../scalars/jdkdates/JavaSqlTimePanelFactory.java | 1 -
.../scalars/jdkdates/JavaSqlTimestampPanel.java | 1 -
.../jdkdates/JavaSqlTimestampPanelFactory.java | 1 -
.../scalars/jdkdates/JavaUtilDatePanel.java | 1 -
.../scalars/jdkdates/JavaUtilDatePanelFactory.java | 1 -
.../scalars/jdkmath/JavaMathBigDecimalPanel.java | 1 -
.../jdkmath/JavaMathBigDecimalPanelFactory.java | 1 -
.../scalars/jdkmath/JavaMathBigIntegerPanel.java | 1 -
.../jdkmath/JavaMathBigIntegerPanelFactory.java | 1 -
.../jodatime/ConverterForJodaLocalTime.java | 1 -
.../scalars/jodatime/JodaDateTimePanel.java | 1 -
.../scalars/jodatime/JodaDateTimePanelFactory.java | 1 -
.../scalars/jodatime/JodaLocalDatePanel.java | 1 -
.../jodatime/JodaLocalDatePanelFactory.java | 1 -
.../scalars/jodatime/JodaLocalDateTimePanel.java | 1 -
.../jodatime/JodaLocalDateTimePanelFactory.java | 1 -
.../scalars/jodatime/JodaLocalTimePanel.java | 1 -
.../jodatime/JodaLocalTimePanelFactory.java | 1 -
.../components/scalars/markup/MarkupComponent.java | 1 -
.../scalars/markup/MarkupPanelFactories.java | 1 -
.../scalars/markup/ParentedMarkupPanel.java | 1 -
.../scalars/markup/StandaloneMarkupPanel.java | 1 -
.../ui/components/scalars/oiddto/OidDtoPanel.java | 1 -
.../scalars/oiddto/OidDtoPanelFactory.java | 1 -
.../scalars/passwd/IsisPasswordPanel.java | 1 -
.../scalars/passwd/IsisPasswordPanelFactory.java | 1 -
.../components/scalars/primitive/BooleanPanel.java | 1 -
.../scalars/primitive/BooleanPanelFactory.java | 1 -
.../ui/components/scalars/primitive/BytePanel.java | 1 -
.../scalars/primitive/BytePanelFactory.java | 1 -
.../scalars/primitive/CharacterPanel.java | 1 -
.../scalars/primitive/CharacterPanelFactory.java | 1 -
.../components/scalars/primitive/DoublePanel.java | 1 -
.../scalars/primitive/DoublePanelFactory.java | 1 -
.../components/scalars/primitive/FloatPanel.java | 1 -
.../scalars/primitive/FloatPanelFactory.java | 1 -
.../components/scalars/primitive/IntegerPanel.java | 1 -
.../scalars/primitive/IntegerPanelFactory.java | 1 -
.../ui/components/scalars/primitive/LongPanel.java | 1 -
.../scalars/primitive/LongPanelFactory.java | 1 -
.../components/scalars/primitive/ShortPanel.java | 1 -
.../scalars/primitive/ShortPanelFactory.java | 1 -
.../scalars/reference/EntityLinkSelect2Panel.java | 1 -
.../scalars/reference/ReferencePanel.java | 1 -
.../scalars/reference/ReferencePanelFactory.java | 1 -
.../scalars/string/MultiLineStringPanel.java | 1 -
.../ui/components/scalars/string/StringPanel.java | 1 -
.../scalars/string/StringPanelFactory.java | 1 -
.../ui/components/scalars/uuid/UuidPanel.java | 1 -
.../components/scalars/uuid/UuidPanelFactory.java | 1 -
.../ui/components/scalars/value/ValuePanel.java | 1 -
.../scalars/value/ValuePanelFactory.java | 1 -
.../ValueChoicesSelect2PanelFactory.java | 1 -
.../StandaloneCollectionPanel.java | 1 -
.../StandaloneCollectionPanelFactory.java | 1 -
.../components/tree/IsisToWicketTreeAdapter.java | 82 ++--
.../ui/components/tree/StandaloneTreePanel.java | 1 -
.../wicket/ui/components/tree/TreePanel.java | 1 -
.../ui/components/tree/TreePanelFactories.java | 1 -
.../components/tree/themes/TreeThemeProvider.java | 1 -
.../tree/themes/TreeThemeProviderDefault.java | 1 -
.../unknown/UnknownModelPanelFactory.java | 1 -
.../ui/components/value/StandaloneValuePanel.java | 1 -
.../value/StandaloneValuePanelFactory.java | 1 -
.../ui/components/voidreturn/VoidReturnPanel.java | 1 -
.../voidreturn/VoidReturnPanelFactory.java | 1 -
.../wicket/ui/components/welcome/WelcomePanel.java | 6 +-
.../ui/components/welcome/WelcomePanelFactory.java | 1 -
.../widgets/buttons/ContainedButtonPanel.java | 1 -
.../widgets/buttons/ToggleButtonsPanel.java | 1 -
.../widgets/checkbox/ContainedToggleboxPanel.java | 1 -
.../entitysimplelink/EntityLinkSimplePanel.java | 1 -
.../EntityLinkSimplePanelFactory.java | 1 -
.../widgets/formcomponent/CancelHintRequired.java | 1 -
.../formcomponent/FormComponentPanelAbstract.java | 1 -
.../widgets/formcomponent/FormFeedbackPanel.java | 1 -
.../widgets/linkandlabel/ActionLink.java | 1 -
.../wicket/ui/errors/ExceptionStackTracePanel.java | 1 -
.../ui/pages/BookmarkedPagesModelProvider.java | 1 -
.../isis/viewer/wicket/ui/pages/PageAbstract.java | 2 +-
.../isis/viewer/wicket/ui/pages/PageClassList.java | 1 -
.../viewer/wicket/ui/pages/PageClassRegistry.java | 1 -
.../wicket/ui/pages/PageClassRegistryAccessor.java | 1 -
.../wicket/ui/pages/PageClassRegistrySpi.java | 1 -
.../wicket/ui/pages/PageNavigationService.java | 1 -
.../isis/viewer/wicket/ui/pages/WebPageBase.java | 2 +-
.../viewer/wicket/ui/pages/about/AboutPage.java | 1 -
.../accmngt/AccountManagementPageAbstract.java | 1 -
.../password_reset/PasswordResetEmailPanel.java | 1 -
.../accmngt/password_reset/PasswordResetPage.java | 1 -
.../accmngt/password_reset/PasswordResetPanel.java | 1 -
.../ui/pages/accmngt/register/RegisterPage.java | 1 -
.../pages/accmngt/signup/RegistrationFormPage.java | 1 -
.../accmngt/signup/RegistrationFormPanel.java | 1 -
.../viewer/wicket/ui/pages/entity/EntityPage.java | 1 -
.../viewer/wicket/ui/pages/error/ErrorPage.java | 1 -
.../isis/viewer/wicket/ui/pages/home/HomePage.java | 1 -
.../wicket/ui/pages/login/IsisSignInPanel.java | 1 -
.../wicket/ui/pages/login/WicketLogoutPage.java | 1 -
.../wicket/ui/pages/login/WicketSignInPage.java | 1 -
.../wicket/ui/pages/mmverror/MmvErrorPage.java | 1 -
.../StandaloneCollectionPage.java | 1 -
.../viewer/wicket/ui/pages/value/ValuePage.java | 1 -
.../wicket/ui/pages/voidreturn/VoidReturnPage.java | 1 -
.../isis/viewer/wicket/ui/panels/FormAbstract.java | 1 -
.../ui/panels/HasDynamicallyVisibleContent.java | 1 -
.../viewer/wicket/ui/panels/PanelAbstract.java | 1 -
.../isis/viewer/wicket/ui/panels/PanelBase.java | 2 +-
.../wicket/ui/panels/PromptFormPanelAbstract.java | 1 -
.../isis/viewer/wicket/ui/util/Components.java | 1 -
.../viewer/wicket/ui/util/CssClassAppender.java | 1 -
.../viewer/wicket/ui/util/CssClassRemover.java | 1 -
.../isis/viewer/wicket/ui/util/CssIdAppender.java | 1 -
.../isis/viewer/wicket/ui/util/SSESupport.java | 1 -
.../isis/viewer/wicket/ui/util/Tooltips.java | 1 -
.../wicket/ui/ComponentType_ConstantsTest.java | 1 -
.../isis/viewer/wicket/ui/fixtures/Customers.java | 1 -
.../viewer/IsisModuleViewerWicketViewer.java | 1 -
.../AuthenticatedWebSessionForIsis.java | 1 -
.../integration/ConverterForObjectAdapter.java | 1 -
.../ConverterForObjectAdapterMemento.java | 1 -
.../viewer/integration/IsisResourceSettings.java | 1 -
.../viewer/integration/WebRequestCycleForIsis.java | 1 -
.../ComponentFactoryRegistrarDefault.java | 1 -
.../ComponentFactoryRegistryDefault.java | 1 -
.../registries/pages/PageClassListDefault.java | 1 -
.../registries/pages/PageClassRegistryDefault.java | 1 -
.../pages/PageNavigationServiceDefault.java | 1 -
.../services/WicketViewerSettingsDefault.java | 1 -
.../viewer/services/mementos/ObjectMementoWkt.java | 91 ++--
.../viewer/wicketapp/IsisWicketApplication.java | 20 +-
.../IsisWicketApplication_newPageFactory.java | 1 -
.../IsisWicketApplication_newSession.java | 1 -
...ionForIsis_DownCastsInheritedFunctionality.java | 1 -
...thenticatedWebSessionForIsis_Instantiation.java | 1 -
.../AuthenticatedWebSessionForIsis_SignIn.java | 1 -
...uthenticatedWebSessionForIsis_TestAbstract.java | 1 -
.../pages/PageClassListDefault_Instantiation.java | 1 -
...ageClassListDefault_RegistrationAndCaching.java | 1 -
.../wicketapp/IsisWicketApplication_Defaults.java | 1 -
.../wicketapp/IsisWicketApplication_Pages.java | 1 -
2531 files changed, 15300 insertions(+), 15986 deletions(-)
[isis] 06/07: ISIS-2846 link tree diagram / clean up
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 290c6817a7f436bcf70ca5cb9394b0c96c6f96e5
Author: Jörg Rade <jo...@kuehne-nagel.com>
AuthorDate: Fri Sep 10 12:56:48 2021 +0200
ISIS-2846 link tree diagram / clean up
---
.../apache/isis/client/kroviz/core/event/LogEntry.kt | 4 ++--
.../isis/client/kroviz/ui/diagram/LinkTreeDiagram.kt | 19 +++++++++----------
.../apache/isis/client/kroviz/ui/diagram/PumlCode.kt | 16 +++++++++++++++-
3 files changed, 26 insertions(+), 13 deletions(-)
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 61e53c1..6e16d20 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
@@ -180,8 +180,8 @@ data class LogEntry(
}
}
if (type == "") {
- console.log("[LE.initType]")
- console.log(this)
+ val stringList = url.split("/")
+ type = stringList.last()
}
}
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/diagram/LinkTreeDiagram.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/diagram/LinkTreeDiagram.kt
index 48685f4..e11cfc8 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/diagram/LinkTreeDiagram.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/diagram/LinkTreeDiagram.kt
@@ -26,6 +26,7 @@ import org.apache.isis.client.kroviz.core.event.ResourceSpecification
import org.apache.isis.client.kroviz.to.HasLinks
import org.apache.isis.client.kroviz.to.Property
import org.apache.isis.client.kroviz.to.Relation
+import org.apache.isis.client.kroviz.to.Represention
import org.apache.isis.client.kroviz.ui.core.UiManager
import org.apache.isis.client.kroviz.utils.StringUtils
@@ -40,7 +41,7 @@ object LinkTreeDiagram {
val root = tree.root
pc.code += toPumlCode(root, 1)
}
- pc.mindmap()
+ pc.toMindmap()
return pc.code
}
@@ -51,18 +52,16 @@ object LinkTreeDiagram {
val pc = PumlCode()
if (le != null) {
val title = StringUtils.shortTitle(url, protocolHostPort)
- val depth = "*".repeat(level)
- pc.add(depth).add(":")
pc.addStereotype(le.type)
pc.addLink(url, title)
pc.addHorizontalLine()
pc.add(linkInfo(le))
- pc.addLine(";")
+ pc.toMindmapNode(level)
node.children.forEach {
val childCode = toPumlCode(it, level + 1)
pc.add(childCode)
}
- if (le.type == "property-description") {
+ if (le.type == Represention.PROPERTY_DESCRIPTION.type) {
val pdCode = propertyDescriptionInfo(le, level + 1)
pc.add(pdCode)
}
@@ -86,19 +85,19 @@ object LinkTreeDiagram {
}
}
}
+ pc.trim()
return pc.code
}
- private fun propertyDescriptionInfo(logEntry: LogEntry, level: Int) : String {
+ private fun propertyDescriptionInfo(logEntry: LogEntry, level: Int): String {
val pc = PumlCode()
val obj = logEntry.obj
if (obj != null) {
- val depth = "*".repeat(level)
- pc.add(depth).add(":")
val ets = (obj as Property).extensions!!
pc.addLine("friendlyName: " + ets.friendlyName)
- pc.addLine("descriptions: " + ets.description)
- pc.addLine(";")
+ pc.addHorizontalLine()
+ pc.add("descriptions: " + ets.description)
+ pc.toMindmapNode(level)
}
return pc.code
}
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/diagram/PumlCode.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/diagram/PumlCode.kt
index 86410eb..ebc57e6 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/diagram/PumlCode.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/diagram/PumlCode.kt
@@ -55,11 +55,17 @@ class PumlCode() {
return this
}
- fun mindmap(): PumlCode {
+ fun toMindmap(): PumlCode {
code += "@startmindmap$NL" + code + "@endmindmap$NL"
return this
}
+ fun toMindmapNode(level:Int): PumlCode {
+ val depth = "*".repeat(level)
+ code = depth + ":" + code + ";" + NL
+ return this
+ }
+
private fun center(s: String): String {
return ".." + s + ".."
}
@@ -80,4 +86,12 @@ class PumlCode() {
code += "----" + NL
return this
}
+
+ fun trim(): PumlCode {
+ if (code.endsWith(NL)) {
+ code = code.dropLast(1)
+ }
+ return this
+ }
+
}
[isis] 05/07: ISIS-2846 link tree diagram works correctly,
including extension properties
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 8ce7c80b3ff75d6e2f520d1b6321f31e6c1839ae
Author: Jörg Rade <jo...@kuehne-nagel.com>
AuthorDate: Thu Sep 9 18:20:46 2021 +0200
ISIS-2846 link tree diagram works correctly, including extension properties
---
.../isis/client/kroviz/core/event/LogEntry.kt | 11 +++++--
.../client/kroviz/ui/diagram/LinkTreeDiagram.kt | 34 ++++++++++++----------
2 files changed, 27 insertions(+), 18 deletions(-)
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 b53d774..61e53c1 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
@@ -56,8 +56,9 @@ data class LogEntry(
val method: String? = "",
val request: String = "",
@Contextual val createdAt: Date = Date()) {
- val url:String = rs.url
- val referrer = rs.referrerUrl
+ val url: String = rs.url
+
+ // val referrer = rs.referrerUrl
val subType = rs.subType
var state = EventState.INITIAL
var title: String = ""
@@ -175,9 +176,13 @@ data class LogEntry(
val self = (obj as HasLinks).getLinks().firstOrNull() { it.relation() == Relation.SELF }
if (self != null) {
val t = self.type.removePrefix("application/json;profile=\"urn:org.restfulobjects:repr-types/")
- this.type = t.removeSuffix("\"")
+ type = t.removeSuffix("\"")
}
}
+ if (type == "") {
+ console.log("[LE.initType]")
+ console.log(this)
+ }
}
// region response
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/diagram/LinkTreeDiagram.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/diagram/LinkTreeDiagram.kt
index 4a09ec3..48685f4 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/diagram/LinkTreeDiagram.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/diagram/LinkTreeDiagram.kt
@@ -24,6 +24,7 @@ import org.apache.isis.client.kroviz.core.event.EventStore
import org.apache.isis.client.kroviz.core.event.LogEntry
import org.apache.isis.client.kroviz.core.event.ResourceSpecification
import org.apache.isis.client.kroviz.to.HasLinks
+import org.apache.isis.client.kroviz.to.Property
import org.apache.isis.client.kroviz.to.Relation
import org.apache.isis.client.kroviz.ui.core.UiManager
import org.apache.isis.client.kroviz.utils.StringUtils
@@ -33,16 +34,13 @@ object LinkTreeDiagram {
private val protocolHostPort = UiManager.getUrl()
fun build(aggregator: BaseAggregator): String {
- console.log("[LTD.build]")
val pc = PumlCode()
if (aggregator is AggregatorWithLayout) {
val tree = aggregator.tree!!
val root = tree.root
- console.log(root)
pc.code += toPumlCode(root, 1)
}
pc.mindmap()
- console.log(pc.code)
return pc.code
}
@@ -53,23 +51,26 @@ object LinkTreeDiagram {
val pc = PumlCode()
if (le != null) {
val title = StringUtils.shortTitle(url, protocolHostPort)
- val type = le.selfType()
val depth = "*".repeat(level)
pc.add(depth).add(":")
- pc.addStereotype(type)
+ pc.addStereotype(le.type)
pc.addLink(url, title)
pc.addHorizontalLine()
- pc.add(traceInfo(le))
+ pc.add(linkInfo(le))
pc.addLine(";")
node.children.forEach {
val childCode = toPumlCode(it, level + 1)
pc.add(childCode)
}
+ if (le.type == "property-description") {
+ val pdCode = propertyDescriptionInfo(le, level + 1)
+ pc.add(pdCode)
+ }
}
return pc.code
}
- private fun traceInfo(logEntry: LogEntry): String {
+ private fun linkInfo(logEntry: LogEntry): String {
val pc = PumlCode()
val obj = logEntry.obj
if (obj != null) {
@@ -88,15 +89,18 @@ object LinkTreeDiagram {
return pc.code
}
- private fun LogEntry.selfType(): String {
- val selfLink = this.selfLink()
- return if (selfLink != null) {
- selfLink.representation().type
- } else {
- console.log("[LE.selfType]")
- console.log(this)
- ""
+ private fun propertyDescriptionInfo(logEntry: LogEntry, level: Int) : String {
+ val pc = PumlCode()
+ val obj = logEntry.obj
+ if (obj != null) {
+ val depth = "*".repeat(level)
+ pc.add(depth).add(":")
+ val ets = (obj as Property).extensions!!
+ pc.addLine("friendlyName: " + ets.friendlyName)
+ pc.addLine("descriptions: " + ets.description)
+ pc.addLine(";")
}
+ return pc.code
}
}
[isis] 01/07: ISIS-2846 Create a LinkTreeDiagram (via PlantUML
mindmap) from History/LogEntry
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 f46347040f2abaadadf4bbec99bececd1a7462a4
Author: Jörg Rade <jo...@kuehne-nagel.com>
AuthorDate: Tue Aug 31 14:06:48 2021 +0200
ISIS-2846 Create a LinkTreeDiagram (via PlantUML mindmap) from History/LogEntry
---
.../isis/client/kroviz/core/event/LogEntry.kt | 5 +
.../client/kroviz/core/event/LogEntryDecorator.kt | 84 ++++------------
.../client/kroviz/ui/diagram/LinkTreeDiagram.kt | 112 ++++++++++++++++-----
.../isis/client/kroviz/ui/dialog/DiagramDialog.kt | 27 ++++-
.../isis/client/kroviz/ui/dialog/EventLogDetail.kt | 35 +++----
.../client/kroviz/ui/panel/DynamicMenuBuilder.kt | 15 +--
.../apache/isis/client/kroviz/utils/StringUtils.kt | 12 +++
.../kroviz/core/event/LogEntryDecoratorTest.kt | 23 +++++
.../isis/client/kroviz/util/StringUtilsTest.kt | 24 +++++
9 files changed, 212 insertions(+), 125 deletions(-)
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 2fe5973..a7db164 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
@@ -250,6 +250,11 @@ data class LogEntry(
return null
}
+ fun upLink(): Link? {
+ getLinks().forEach { if (it.relation() == Relation.UP) return it }
+ return null
+ }
+
fun getLinks(): List<Link> {
return if (obj is HasLinks) {
(obj as HasLinks).getLinks()
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/event/LogEntryDecorator.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/event/LogEntryDecorator.kt
index b5e41ac..68e9626 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/event/LogEntryDecorator.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/event/LogEntryDecorator.kt
@@ -21,41 +21,12 @@ package org.apache.isis.client.kroviz.core.event
import org.apache.isis.client.kroviz.to.Link
import org.apache.isis.client.kroviz.to.Relation
import org.apache.isis.client.kroviz.ui.core.Constants
-import org.apache.isis.client.kroviz.utils.StringUtils
class LogEntryDecorator(val logEntry: LogEntry) {
- val href: String
- val links: List<Link>
- val linked: List<LogEntry>
-
- init {
- href = logEntry.selfHref()
- links = logEntry.getLinks()
- linked = EventStore.getLinked()
- }
-
- fun findOrphans(children: Set<LogEntry>): Set<String> {
- console.log("[LED.findOrphans] $href")
- val kids = children.map { it.url }
- val orphans = mutableSetOf<String>()
- links.forEach {
-// console.log(it)
- val rel = it.relation()
- when {
- (rel == Relation.UP) -> {
- }
- (rel == Relation.SELF) -> {
- }
- else -> {
- val url = it.href
- if (!kids.contains(url))
- orphans.add(url)
- }
- }
- }
- return orphans
- }
+ val href: String = logEntry.selfHref()
+ val links: List<Link> = logEntry.getLinks()
+ val linked: List<LogEntry> = EventStore.getLinked()
fun findChildren(): Set<LogEntry> {
val children = findChildrenByUpRelation()
@@ -77,7 +48,7 @@ class LogEntryDecorator(val logEntry: LogEntry) {
}
private fun findChildrenByLinks(): Set<LogEntry> {
- console.log("[LED.findChildrenByLinks] $href")
+ console.log("[LED.findChildrenByLinks]")
val children = mutableSetOf<LogEntry>()
links.forEach {
console.log(it.toString())
@@ -113,29 +84,30 @@ class LogEntryDecorator(val logEntry: LogEntry) {
return children
}
- fun selfType(): String {
- val selfLink = logEntry.selfLink()
- if (selfLink != null) {
- return selfLink.representation().type
- } else return ""
- }
-
- private fun hasUp(): Boolean {
- links.forEach {
- if (it.relation() == Relation.UP) {
- return true
+ fun findChildrenIn(aggregatedList: List<LogEntry>): List<LogEntry> {
+ console.log("[LED.findChildrenIn]")
+ val selfUrl = href
+ val children = mutableListOf<LogEntry>()
+ aggregatedList.forEach {
+ if (it.url != selfUrl && it.response.contains(selfUrl)) {
+ children.add(it)
}
}
- return false
+ return children
}
- fun hasParent(): Boolean {
- val answer = hasUp()
- if (answer) return true
- return findParent() != null
+ fun selfType(): String {
+ val selfLink = logEntry.selfLink()
+ return if (selfLink != null) {
+ selfLink.representation().type
+ } else {
+ console.log("[LED.selfType]")
+ console.log(logEntry)
+ ""
+ }
}
- private fun findParent(): LogEntry? {
+ fun findParent(): LogEntry? {
val url = logEntry.url
linked.forEach {
when {
@@ -146,16 +118,4 @@ class LogEntryDecorator(val logEntry: LogEntry) {
return null
}
- fun shortTitle(): String {
- var result = logEntry.url
- val signature = Constants.restInfix
- if (logEntry.url.contains(signature)) {
- // strip off protocol, host, port
- // val protocolHostPort = UiManager.getUrl()
-// result = result.replace(protocolHostPort + signature, "")
- result = StringUtils.removeHexCode(result)
- }
- return result
- }
-
}
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/diagram/LinkTreeDiagram.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/diagram/LinkTreeDiagram.kt
index d49321c..c6f6533 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/diagram/LinkTreeDiagram.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/diagram/LinkTreeDiagram.kt
@@ -1,45 +1,107 @@
package org.apache.isis.client.kroviz.ui.diagram
+import org.apache.isis.client.kroviz.core.aggregator.BaseAggregator
import org.apache.isis.client.kroviz.core.event.EventStore
import org.apache.isis.client.kroviz.core.event.LogEntry
import org.apache.isis.client.kroviz.core.event.LogEntryDecorator
+import org.apache.isis.client.kroviz.core.event.ResourceSpecification
+import org.apache.isis.client.kroviz.to.HasLinks
+import org.apache.isis.client.kroviz.ui.core.UiManager
+import org.apache.isis.client.kroviz.utils.StringUtils
object LinkTreeDiagram {
- private val NL = "\n"
- private val SEP = " | "
- private val OPEN = "{"
- private val CLOSE = "}"
- private val PLUS = "+"
-
- fun build(): String {
- var code = "@startsalt$NL$OPEN$NL$OPEN T#$NL"
- val roots: List<LogEntry> = findRoots()
- roots.forEach {
- code += iterateOverChildren(it, PLUS)
+ private const val NL = "\n"
+ private const val prolog = "@startmindmap$NL"
+ private const val epilog = "@endmindmap$NL"
+ private val protocolHostPort = UiManager.getUrl()
+
+ fun build(aggregator: BaseAggregator): String {
+ var code = prolog
+ val entryList: List<LogEntry> = EventStore.findAllBy(aggregator)
+ val root = findRoot(entryList)
+ if (root == null) {
+ code += "* /$NL"
+ code += createNodes(entryList, 2)
+ } else {
+ code += root.asPumlNode(1)
+ val led = LogEntryDecorator(root)
+ val childList = led.findChildrenIn(entryList)
+ console.log("[LTD.build]")
+ console.log(aggregator)
+ console.log(entryList)
+ code += createChildNodes(childList, 2)
+ }
+ code += epilog
+ return code
+ }
+
+ private fun createChildNodes(childList: List<LogEntry>, level: Int): String {
+ var code = ""
+ childList.forEach {
+ code += createNode(it, level)
+ val led = LogEntryDecorator(it)
+ val kidSet = led.findChildrenIn(childList)
+ code += createChildNodes(kidSet, level +1)
}
- code += "$CLOSE$NL$CLOSE$NL@endsalt"
return code
}
- private fun findRoots(): List<LogEntry> {
- val rootSet = mutableListOf<LogEntry>()
- EventStore.getLinked().forEach { le ->
- val led = LogEntryDecorator(le)
- if (!led.hasParent()) rootSet.add(le) // this may still include
+ private fun createNode(le: LogEntry, level: Int): String {
+ var code = ""
+ if (isInEventStore(le.url)) {
+ code += le.asPumlNode(level)
}
- return rootSet
+ return code
}
- private fun iterateOverChildren(logEntry: LogEntry, prefix: String): String {
- val led = LogEntryDecorator(logEntry)
- val children = led.findChildren()
- val orphans = led.findOrphans(children)
- var code = prefix + " " + led.shortTitle() + SEP + led.selfType() + SEP + orphans.toString() + NL
- children.forEach {
- code += iterateOverChildren(it, prefix + PLUS)
+ private fun createNodes(entryList: List<LogEntry>, level: Int): String {
+ var code = ""
+ entryList.forEach {
+ code += createNode(it, level)
}
return code
}
+ private fun findRoot(entryList: List<LogEntry>): LogEntry? {
+ entryList.forEach {
+ val led = LogEntryDecorator(it)
+ val parent = led.findParent()
+ if (parent != null && !entryList.contains(parent)) {
+ return parent
+ }
+ }
+ return null
+ }
+
+ private fun isInEventStore(url: String): Boolean {
+ val rs = ResourceSpecification(url)
+ val le = EventStore.findBy(rs)
+ return (le != null)
+ }
+
+ fun LogEntry.asPumlNode(level: Int): String {
+ val led = LogEntryDecorator(this)
+ val title = StringUtils.shortTitle(this.url, protocolHostPort)
+ val type = led.selfType()
+ val depth = "*".repeat(level)
+ var answer = "$depth:..//<<$type>>//..$NL**$title**$NL"
+ answer += "----$NL"
+ answer += traceInfo(this)
+ return answer + ";" + NL
+ }
+
+ private fun traceInfo(logEntry: LogEntry) : String {
+ val obj = logEntry.obj!!
+ var answer = "__" + obj::class.simpleName + "__" + NL
+ if (obj is HasLinks) {
+ obj.links.forEach {
+ answer += StringUtils.shortTitle(it.href, protocolHostPort) + NL
+ }
+ }
+ console.log("[LTD.traceInfo]")
+ console.log(answer)
+ return answer
+ }
+
}
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/dialog/DiagramDialog.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/dialog/DiagramDialog.kt
index 447b97a..750c3b1 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/dialog/DiagramDialog.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/dialog/DiagramDialog.kt
@@ -56,7 +56,7 @@ class DiagramDialog(
)
}
- override fun execute(action:String?) {
+ override fun execute(action: String?) {
pin()
}
@@ -84,14 +84,35 @@ class DiagramDialog(
fun buildMenu(): List<KvisionHtmlLink> {
val menu = mutableListOf<KvisionHtmlLink>()
+ menu.add(buildPinAction())
+ menu.add(buildDownloadAction())
+ return menu
+ }
+
+ private fun buildPinAction(): io.kvision.html.Link {
val action = MenuFactory.buildActionLink(
label = "Pin",
menuTitle = "Pin")
action.onClick {
pin()
}
- menu.add(action)
- return menu
+ return action
+ }
+
+ private fun buildDownloadAction(): io.kvision.html.Link {
+ val action = MenuFactory.buildActionLink(
+ label = "Download",
+ menuTitle = "Download")
+ action.onClick {
+ download()
+ }
+ return action
+ }
+
+ private fun download() {
+ val svgCode = getDiagramCode()
+ DownloadDialog(fileName = "diagram.svg", svgCode).open()
+ dialog.close()
}
}
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/dialog/EventLogDetail.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/dialog/EventLogDetail.kt
index f73a26a..6eb29f6 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/dialog/EventLogDetail.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/dialog/EventLogDetail.kt
@@ -18,7 +18,6 @@
*/
package org.apache.isis.client.kroviz.ui.dialog
-import org.apache.isis.client.kroviz.core.aggregator.CollectionAggregator
import org.apache.isis.client.kroviz.core.event.EventStore
import org.apache.isis.client.kroviz.core.event.LogEntry
import org.apache.isis.client.kroviz.core.event.LogEntryDecorator
@@ -30,11 +29,13 @@ import org.apache.isis.client.kroviz.ui.core.FormItem
import org.apache.isis.client.kroviz.ui.core.RoDialog
import org.apache.isis.client.kroviz.ui.diagram.JsonDiagram
import org.apache.isis.client.kroviz.ui.diagram.LayoutDiagram
+import org.apache.isis.client.kroviz.ui.diagram.LinkTreeDiagram
import org.apache.isis.client.kroviz.utils.StringUtils
import org.apache.isis.client.kroviz.utils.XmlHelper
class EventLogDetail(val logEntryFromTabulator: LogEntry) : Command() {
private var logEntry: LogEntry
+ private lateinit var dialog: RoDialog
init {
// For a yet unknown reason, aggregators are not transmitted via tabulator.
@@ -45,7 +46,7 @@ class EventLogDetail(val logEntryFromTabulator: LogEntry) : Command() {
// callback parameter
private val LOG: String = "log"
- private val OBJ: String = "obj"
+ private val LNK: String = "lnk"
fun open() {
val responseStr = if (logEntry.subType == Constants.subTypeJson) {
@@ -58,23 +59,21 @@ class EventLogDetail(val logEntryFromTabulator: LogEntry) : Command() {
val children = led.findChildren()
var kids = ""
children.forEach { kids += it.url + "\n" }
- var orphans = ""
- led.findOrphans(children).forEach { orphans += it + "\n" }
val formItems = mutableListOf<FormItem>()
formItems.add(FormItem("Url", ValueType.TEXT, logEntry.title))
formItems.add(FormItem("Response", ValueType.TEXT_AREA, responseStr, 10))
formItems.add(FormItem("Aggregators", ValueType.TEXT, content = logEntry.aggregators))
formItems.add(FormItem("Children", ValueType.TEXT_AREA, kids, size = 5))
- formItems.add(FormItem("Orphans", ValueType.TEXT_AREA, orphans, size = 5))
- formItems.add(FormItem("Object Diagram", ValueType.BUTTON, null, callBack = this, callBackAction = OBJ))
+ formItems.add(FormItem("Link Tree Diagram", ValueType.BUTTON, null, callBack = this, callBackAction = LNK))
formItems.add(FormItem("Console", ValueType.BUTTON, null, callBack = this, callBackAction = LOG))
- RoDialog(
+ dialog = RoDialog(
caption = "Details :" + logEntry.title,
items = formItems,
command = this,
defaultAction = "Diagram",
- widthPerc = 60).open()
+ widthPerc = 60)
+ dialog.open()
}
override fun execute(action: String?) {
@@ -83,8 +82,8 @@ class EventLogDetail(val logEntryFromTabulator: LogEntry) : Command() {
action == LOG -> {
console.log(logEntry)
}
- action == OBJ -> {
- objectDiagram()
+ action == LNK -> {
+ linkTreeDiagram()
}
else -> {
console.log(logEntry)
@@ -93,18 +92,12 @@ class EventLogDetail(val logEntryFromTabulator: LogEntry) : Command() {
}
}
- private fun objectDiagram() {
+ private fun linkTreeDiagram() {
logEntry.aggregators.forEach {
- console.log(it)
- if (it is CollectionAggregator) {
- val displayModel = it.dpm
- // https://github.com/moll/json-stringify-safe/blob/master/stringify.js
- val jsonStr = JSON.stringify(displayModel)
- console.log(jsonStr)
- val pumlCode = JsonDiagram.build(jsonStr)
- DiagramDialog("Object Diagram", pumlCode).open()
- }
+ val code = LinkTreeDiagram.build(it)
+ DiagramDialog("Link Tree Diagram", code).open()
}
+ dialog.close()
}
private fun defaultAction() {
@@ -118,7 +111,7 @@ class EventLogDetail(val logEntryFromTabulator: LogEntry) : Command() {
JsonDiagram.build(str)
else -> "{}"
}
- DiagramDialog("Response Diagram", pumlCode).open()
+ DiagramDialog("Layout Diagram", pumlCode).open()
}
}
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/panel/DynamicMenuBuilder.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/panel/DynamicMenuBuilder.kt
index 055df30..7f01d61 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/panel/DynamicMenuBuilder.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/panel/DynamicMenuBuilder.kt
@@ -25,8 +25,6 @@ import org.apache.isis.client.kroviz.core.event.ResourceProxy
import org.apache.isis.client.kroviz.to.TObject
import org.apache.isis.client.kroviz.ui.chart.ChartFactory
import org.apache.isis.client.kroviz.ui.core.UiManager
-import org.apache.isis.client.kroviz.ui.diagram.LinkTreeDiagram
-import org.apache.isis.client.kroviz.ui.dialog.DiagramDialog
import org.apache.isis.client.kroviz.ui.dialog.EventExportDialog
import org.apache.isis.client.kroviz.utils.IconManager
import org.apache.isis.client.kroviz.utils.StringUtils
@@ -40,7 +38,7 @@ class DynamicMenuBuilder {
val title = StringUtils.deCamel(it.id)
val icon = IconManager.find(title)
val invokeLink = it.getInvokeLink()!!
- val command = { ResourceProxy().fetch(invokeLink) }
+ val command = { ResourceProxy().fetch(invokeLink) }
val me = buildMenuEntry(icon, title, command)
menu.add(me)
}
@@ -50,10 +48,6 @@ class DynamicMenuBuilder {
fun buildTableMenu(table: EventLogTable): dynamic {
val menu = mutableListOf<dynamic>()
- val a1 = buildMenuEntry("Hierarchy", "Link Tree Diagram",
- { this.linkTreeDiagram() })
- menu.add(a1)
-
val a2 = buildMenuEntry("Export", "Export Events ...", {
EventExportDialog().open()
})
@@ -82,13 +76,6 @@ class DynamicMenuBuilder {
}
}
- private fun linkTreeDiagram() {
- val code = LinkTreeDiagram.build()
- console.log("[DMB.linkTreeDiagram]")
- console.log(code)
- DiagramDialog("Link Tree Diagram", code).open()
- }
-
private fun downLoadCsv(table: EventLogTable) {
table.tabulator.downloadCSV("data.csv")
}
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/utils/StringUtils.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/utils/StringUtils.kt
index 311b8d7..a042665 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/utils/StringUtils.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/utils/StringUtils.kt
@@ -21,6 +21,7 @@ package org.apache.isis.client.kroviz.utils
import org.apache.isis.client.kroviz.to.Argument
import org.apache.isis.client.kroviz.to.Link
import org.apache.isis.client.kroviz.to.TObject
+import org.apache.isis.client.kroviz.ui.core.Constants
object StringUtils {
@@ -62,6 +63,17 @@ object StringUtils {
return if (input == outputWithoutWhiteSpace) input else output
}
+ fun shortTitle(url: String, protocolHostPort: String): String {
+ var title = url
+ val signature = Constants.restInfix
+ if (title.contains(signature)) {
+ // strip off protocol, host, port
+ title = title.replace(protocolHostPort + signature, "")
+ title = StringUtils.removeHexCode(title)
+ }
+ return title
+ }
+
fun removeHexCode(input: String): String {
var output = ""
val list: List<String> = input.split("/")
diff --git a/incubator/clients/kroviz/src/test/kotlin/org/apache/isis/client/kroviz/core/event/LogEntryDecoratorTest.kt b/incubator/clients/kroviz/src/test/kotlin/org/apache/isis/client/kroviz/core/event/LogEntryDecoratorTest.kt
new file mode 100644
index 0000000..2aa8a54
--- /dev/null
+++ b/incubator/clients/kroviz/src/test/kotlin/org/apache/isis/client/kroviz/core/event/LogEntryDecoratorTest.kt
@@ -0,0 +1,23 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.isis.client.kroviz.core.event
+
+class LogEntryDecoratorTest {
+
+}
diff --git a/incubator/clients/kroviz/src/test/kotlin/org/apache/isis/client/kroviz/util/StringUtilsTest.kt b/incubator/clients/kroviz/src/test/kotlin/org/apache/isis/client/kroviz/util/StringUtilsTest.kt
new file mode 100644
index 0000000..ba15e96
--- /dev/null
+++ b/incubator/clients/kroviz/src/test/kotlin/org/apache/isis/client/kroviz/util/StringUtilsTest.kt
@@ -0,0 +1,24 @@
+package org.apache.isis.client.kroviz.util
+
+import org.apache.isis.client.kroviz.ui.core.Constants
+import org.apache.isis.client.kroviz.ui.core.UiManager
+import org.apache.isis.client.kroviz.utils.StringUtils
+import kotlin.test.Test
+import kotlin.test.assertEquals
+
+class StringUtilsTest {
+ @Test
+ fun testShortTitle() {
+ // given
+ UiManager.login(Constants.demoUrl, Constants.demoUser, Constants.demoPass)
+ val url = "http://localhost:8080/restful/domain-types/demo.JavaLangStrings/collections/entities"
+
+ // when
+ val actual = StringUtils.shortTitle(url, UiManager.getUrl())
+
+ // then
+ val expected = "/domain-types/demo.JavaLangStrings/collections/entities"
+ assertEquals(expected, actual)
+ }
+
+}
[isis] 04/07: ISIS-2846 link tree diagram works correctly
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 d80c042343fe57798af6bbe5708262430800af36
Author: Jörg Rade <jo...@kuehne-nagel.com>
AuthorDate: Thu Sep 9 17:14:13 2021 +0200
ISIS-2846 link tree diagram works correctly
---
.../client/kroviz/ui/diagram/LinkTreeDiagram.kt | 11 +++++----
.../apache/isis/client/kroviz/ui/diagram/Node.kt | 25 ---------------------
.../apache/isis/client/kroviz/ui/diagram/Tree.kt | 26 ++++++++++++++--------
.../isis/client/kroviz/ui/diagram/TreeTest.kt | 8 +++----
4 files changed, 28 insertions(+), 42 deletions(-)
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/diagram/LinkTreeDiagram.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/diagram/LinkTreeDiagram.kt
index bc3789d..4a09ec3 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/diagram/LinkTreeDiagram.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/diagram/LinkTreeDiagram.kt
@@ -24,6 +24,7 @@ import org.apache.isis.client.kroviz.core.event.EventStore
import org.apache.isis.client.kroviz.core.event.LogEntry
import org.apache.isis.client.kroviz.core.event.ResourceSpecification
import org.apache.isis.client.kroviz.to.HasLinks
+import org.apache.isis.client.kroviz.to.Relation
import org.apache.isis.client.kroviz.ui.core.UiManager
import org.apache.isis.client.kroviz.utils.StringUtils
@@ -46,7 +47,7 @@ object LinkTreeDiagram {
}
private fun toPumlCode(node: Node, level: Int): String {
- val url = node.key
+ val url = node.name
val rs = ResourceSpecification(url)
val le = EventStore.findBy(rs)
val pc = PumlCode()
@@ -76,9 +77,11 @@ object LinkTreeDiagram {
pc.addClass(className)
if (obj is HasLinks) {
obj.links.forEach {
- val url = it.href
- val title = StringUtils.shortTitle(url, protocolHostPort)
- pc.addLink(url, title)
+ if (it.relation() != Relation.SELF) {
+ val url = it.href
+ val title = StringUtils.shortTitle(url, protocolHostPort)
+ pc.addLink(url, title)
+ }
}
}
}
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/diagram/Node.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/diagram/Node.kt
deleted file mode 100644
index 79c0930..0000000
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/diagram/Node.kt
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.isis.client.kroviz.ui.diagram
-
-class Node(val key: String, val parent: Node?) {
-
- val children = mutableListOf<Node>()
-
-}
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/diagram/Tree.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/diagram/Tree.kt
index 922bc94..4990d1b 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/diagram/Tree.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/diagram/Tree.kt
@@ -21,28 +21,36 @@ package org.apache.isis.client.kroviz.ui.diagram
class Tree(val root: Node) {
fun addChildToParent(childUrl: String, parentUrl: String) {
- var p = find(parentUrl, root)
+ var p = find(root, parentUrl)
if (p == null) {
+ console.log("[Tree.addChildToParent] nothing found for parentUrl")
+ console.log(childUrl)
+ console.log(parentUrl)
p = root
}
val c = Node(childUrl, p)
p.children.add(c)
}
- fun find(url: String, node: Node): Node? {
- if (node.key == url) {
+ fun find(node: Node, url: String): Node? {
+ if (node.name == url) {
return node
} else {
- var answer: Node? = null
node.children.forEach {
- if (it.key == url) {
- answer = it
- } else {
- answer = find(url, it)
+ val result: Node? = find(it, url)
+ if (result != null) {
+ return result
}
}
- return answer
+ return null
}
}
}
+
+class Node(val name: String, val parent: Node?) {
+
+ val children = mutableListOf<Node>()
+
+}
+
diff --git a/incubator/clients/kroviz/src/test/kotlin/org/apache/isis/client/kroviz/ui/diagram/TreeTest.kt b/incubator/clients/kroviz/src/test/kotlin/org/apache/isis/client/kroviz/ui/diagram/TreeTest.kt
index 712bc86..c906173 100644
--- a/incubator/clients/kroviz/src/test/kotlin/org/apache/isis/client/kroviz/ui/diagram/TreeTest.kt
+++ b/incubator/clients/kroviz/src/test/kotlin/org/apache/isis/client/kroviz/ui/diagram/TreeTest.kt
@@ -42,15 +42,15 @@ class TreeTest {
tree.addChildToParent(url_1_2, url_1)
//then
- val r = tree.find(url_0, root)!!
+ val r = tree.find(root, url_0, )!!
assertEquals(1, r.children.size)
assertNull(r.parent)
- val c = tree.find(url_1, root)!!
+ val c = tree.find(root, url_1, )!!
assertNotNull(c.parent)
assertEquals(2, c.children.size)
- assertEquals(url_1_1, c.children.first().key)
- assertEquals(url_1_2, c.children.last().key)
+ assertEquals(url_1_1, c.children.first().name)
+ assertEquals(url_1_2, c.children.last().name)
}
}