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/01/27 16:03:11 UTC
[isis] 01/03: ObjectAggregator invokes object instance link to
access properties
This is an automated email from the ASF dual-hosted git repository.
joergrade pushed a commit to branch ISIS-2465_Kroviz-Demo_Menu_Actions_Show_No_Output
in repository https://gitbox.apache.org/repos/asf/isis.git
commit efb6d006e80a74e4f704b63937646621e793e6de
Author: Jörg Rade <jo...@kuehne-nagel.com>
AuthorDate: Wed Jan 27 16:53:13 2021 +0100
ObjectAggregator invokes object instance link to access properties
---
.../kotlin/org/apache/isis/client/kroviz/App.kt | 1 +
.../kroviz/core/aggregator/ActionDispatcher.kt | 5 +-
.../kroviz/core/aggregator/BaseAggregator.kt | 6 +
.../core/aggregator/DomainTypesAggregator.kt | 38 ++-
.../kroviz/core/aggregator/ListAggregator.kt | 36 +-
.../kroviz/core/aggregator/ObjectAggregator.kt | 53 +--
.../kroviz/core/aggregator/RestfulDispatcher.kt | 11 +-
.../client/kroviz/core/event/RoXmlHttpRequest.kt | 25 +-
.../isis/client/kroviz/core/model/ObjectDM.kt | 48 ++-
.../isis/client/kroviz/to/PlainTransferObjects.kt | 3 +-
.../org/apache/isis/client/kroviz/to/TObject.kt | 10 +-
.../apache/isis/client/kroviz/ui/EventLogDetail.kt | 8 +-
.../client/kroviz/ui/builder/FieldSetBuilder.kt | 17 +-
.../isis/client/kroviz/ui/kv/EventLogTable.kt | 2 +-
.../apache/isis/client/kroviz/ui/kv/LoginPrompt.kt | 2 +-
.../apache/isis/client/kroviz/ui/kv/RoDialog.kt | 4 +-
.../apache/isis/client/kroviz/ui/kv/UiManager.kt | 2 +-
.../apache/isis/client/kroviz/utils/IconManager.kt | 2 +
.../org/apache/isis/client/kroviz/TestUtil.kt | 3 +-
.../client/kroviz/snapshots/FR_OBJECT_LAYOUT.json | 248 --------------
.../isis/client/kroviz/snapshots/LAYOUT.adoc | 380 ---------------------
.../kroviz/snapshots/ResponseRegressionTest.kt | 71 ++++
.../isis/client/kroviz/snapshots/SyncRequest.kt | 27 ++
.../snapshots/demo2_0_0/ACTIONS_STRINGS_INVOKE.kt | 140 ++++++--
.../client/kroviz/snapshots/demo2_0_0/RESTFUL.kt | 61 ++++
.../kroviz/snapshots/demo2_0_0/Response2Handler.kt | 50 +++
.../isis/client/kroviz/snapshots/sample.json | 159 +++++++--
.../apache/isis/client/kroviz/snapshots/sample.svg | 65 ----
.../apache/isis/client/kroviz/snapshots/sample.xml | 88 -----
.../snapshots/{action_string.json => sample2.json} | 121 +++++--
.../kroviz/snapshots/simpleapp1_16_0/UrlsTest.kt | 74 ----
.../org/apache/isis/client/kroviz/to/LinkTest.kt | 28 +-
.../apache/isis/client/kroviz/to/TObjectTest.kt | 13 +-
33 files changed, 714 insertions(+), 1087 deletions(-)
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/App.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/App.kt
index 55b5cba..c2acf28 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/App.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/App.kt
@@ -31,6 +31,7 @@ class App : Application() {
init {
require("css/kroviz.css")
+ require("lodash")
}
override fun start() {
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 fc1e3cf..5ee6df8 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
@@ -19,7 +19,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.event.RoXmlHttpRequest
import org.apache.isis.client.kroviz.to.Action
import org.apache.isis.client.kroviz.to.Link
import org.apache.isis.client.kroviz.to.Method
@@ -47,13 +46,13 @@ class ActionDispatcher(private val at: Point = Point(100, 100)) : BaseAggregator
when {
link.hasArguments() -> ActionPrompt(action = action).open(at)
link.relation() == Relation.INVOKE -> invoke(action, link)
- else -> RoXmlHttpRequest().invoke(link, aggregator)
+ else -> invoke(link, aggregator)
}
}
private fun invoke(action: Action, link: Link) {
val title = Utils.deCamel(action.id)
- RoXmlHttpRequest().invoke(link, ObjectAggregator(title))
+ invoke(link, ObjectAggregator(title))
}
/**
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 7544be9..8815925 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
@@ -19,9 +19,11 @@
package org.apache.isis.client.kroviz.core.aggregator
import org.apache.isis.client.kroviz.core.event.LogEntry
+import org.apache.isis.client.kroviz.core.event.RoXmlHttpRequest
import org.apache.isis.client.kroviz.core.model.DisplayModel
import org.apache.isis.client.kroviz.to.Link
import org.apache.isis.client.kroviz.to.TObject
+import org.apache.isis.client.kroviz.ui.kv.Constants
/**
* An Aggregator:
@@ -70,4 +72,8 @@ abstract class BaseAggregator {
return href.isNotEmpty() && href.contains("layout")
}
+ protected fun invoke(link:Link, aggregator: BaseAggregator, subType :String = Constants.subTypeJson) {
+ RoXmlHttpRequest().invoke(link, aggregator, subType)
+ }
+
}
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 aeee107..a23ccce 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
@@ -19,7 +19,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.event.RoXmlHttpRequest
import org.apache.isis.client.kroviz.core.model.DiagramDM
import org.apache.isis.client.kroviz.to.*
import org.apache.isis.client.kroviz.ui.kv.RoStatusBar
@@ -65,7 +64,7 @@ class DomainTypesAggregator(val url: String) : BaseAggregator() {
}
(dpm as DiagramDM).incNumberOfProperties(propertyList.size)
propertyList.forEach { p ->
- RoXmlHttpRequest().invoke(p,this)
+ invoke(p, this)
}
}
}
@@ -75,17 +74,28 @@ class DomainTypesAggregator(val url: String) : BaseAggregator() {
obj.values.forEach { link ->
val it = link.href
when {
- it.contains("/org.apache.isis") -> {}
- it.contains("/isisApplib") -> {}
- it.contains("/java") -> {}
- it.contains("/void") -> {}
- it.contains("/boolean") -> {}
- it.contains("fixture") -> {}
- it.contains("service") -> {}
- it.contains("/homepage") -> {}
- it.endsWith("Menu") -> {}
- it.startsWith("demoapp.dom.annot") -> {}
- it.startsWith("demoapp.dom.types.javatime") -> {}
+ it.contains("/org.apache.isis") -> {
+ }
+ it.contains("/isisApplib") -> {
+ }
+ it.contains("/java") -> {
+ }
+ it.contains("/void") -> {
+ }
+ it.contains("/boolean") -> {
+ }
+ it.contains("fixture") -> {
+ }
+ it.contains("service") -> {
+ }
+ it.contains("/homepage") -> {
+ }
+ it.endsWith("Menu") -> {
+ }
+ it.startsWith("demoapp.dom.annot") -> {
+ }
+ it.startsWith("demoapp.dom.types.javatime") -> {
+ }
else -> {
domainTypeLinkList.add(link)
}
@@ -93,7 +103,7 @@ class DomainTypesAggregator(val url: String) : BaseAggregator() {
}
(dpm as DiagramDM).numberOfClasses = domainTypeLinkList.size
domainTypeLinkList.forEach {
- RoXmlHttpRequest().invoke(it,this)
+ invoke(it, this)
}
}
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/aggregator/ListAggregator.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/aggregator/ListAggregator.kt
index 0668c45..7832d17 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/aggregator/ListAggregator.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/aggregator/ListAggregator.kt
@@ -20,7 +20,6 @@ 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.RoXmlHttpRequest
import org.apache.isis.client.kroviz.core.model.ListDM
import org.apache.isis.client.kroviz.layout.Layout
import org.apache.isis.client.kroviz.to.*
@@ -43,8 +42,9 @@ class ListAggregator(actionTitle: String) : BaseAggregator() {
override fun update(logEntry: LogEntry, subType: String) {
- //TODO duplicates should no be propagated to handlers at all: IMPROVE
- if (logEntry.state != EventState.DUPLICATE) {
+ if (logEntry.state == EventState.DUPLICATE) {
+ console.log("[LA.update] TODO duplicates should not be propagated to handlers")
+ } else {
when (val obj = logEntry.getTransferObject()) {
null -> log(logEntry)
is ResultList -> handleList(obj)
@@ -62,10 +62,10 @@ class ListAggregator(actionTitle: String) : BaseAggregator() {
}
private fun handleList(resultList: ResultList) {
- if (resultList.resulttype != "void") {
+ if (resultList.resulttype != ResultType.VOID.type) {
val result = resultList.result!!
result.value.forEach {
- RoXmlHttpRequest().invoke(it,this)
+ invoke(it, this)
}
}
}
@@ -73,10 +73,11 @@ class ListAggregator(actionTitle: String) : BaseAggregator() {
private fun handleObject(obj: TObject) {
dpm.addData(obj)
val l = obj.getLayoutLink()!!
- // Json.Layout is invoked first
- RoXmlHttpRequest().invoke(l,this)
- // then Xml.Layout is to be invoked as well
- RoXmlHttpRequest().invoke(l,this, Constants.subTypeXml)
+ if (l.representation() == Represention.OBJECT_LAYOUT_BS3) {
+ invoke(l, this, Constants.subTypeXml)
+ } else {
+ invoke(l, this)
+ }
}
//TODO same code in ObjectAggregator? -> pullup refactoring to be applied
@@ -93,7 +94,7 @@ class ListAggregator(actionTitle: String) : BaseAggregator() {
dm.addPropertyDescription(id, id)
if (!isDn) {
//invoking DN links leads to an error
- RoXmlHttpRequest().invoke(l,this)
+ invoke(l, this)
}
}
}
@@ -109,7 +110,7 @@ class ListAggregator(actionTitle: String) : BaseAggregator() {
dm.addPropertyDescription(p)
} else {
dm.addProperty(p)
- RoXmlHttpRequest().invoke(p.descriptionLink()!!,this)
+ invoke(p.descriptionLink()!!, this)
}
}
@@ -124,18 +125,11 @@ class ListAggregator(actionTitle: String) : BaseAggregator() {
}
}
- /**
- * property-description's have extensions.friendlyName whereas
- * plain properties don't have them cf.:
- * FR_PROPERTY_DESCRIPTION
- * FR_OBJECT_PROPERTY_
- */
private fun Property.isPropertyDescription(): Boolean {
- val hasExtensions = extensions != null
- if (!hasExtensions) {
- return false
+ val selfLink = this.links.find { l ->
+ l.relation() == Relation.SELF
}
- return extensions!!.friendlyName.isNotEmpty()
+ return selfLink!!.representation() == Represention.PROPERTY_DESCRIPTION
}
}
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 83b1228..c335ea5 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
@@ -19,7 +19,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.event.RoXmlHttpRequest
import org.apache.isis.client.kroviz.core.model.ObjectDM
import org.apache.isis.client.kroviz.layout.Layout
import org.apache.isis.client.kroviz.to.*
@@ -28,6 +27,13 @@ import org.apache.isis.client.kroviz.ui.ErrorDialog
import org.apache.isis.client.kroviz.ui.kv.Constants
import org.apache.isis.client.kroviz.ui.kv.UiManager
+/** sequence of operations:
+ * (0) Menu Action User clicks BasicTypes.String -> handled by ActionDispatcher
+ * (1) OBJECT TObjectHandler -> invoke() -> passed on to ObjectAggregator
+ * (2) OBJECT_LAYOUT layoutHandler -> invoke(layout.getProperties()[].getLink()) link can be null?
+ * (3) ???_OBJECT_PROPERTY PropertyHandler -> invoke()
+ * (4) ???_PROPERTY_DESCRIPTION <PropertyDescriptionHandler>
+ */
class ObjectAggregator(val actionTitle: String) : BaseAggregator() {
init {
@@ -35,20 +41,20 @@ class ObjectAggregator(val actionTitle: String) : BaseAggregator() {
}
override fun update(logEntry: LogEntry, subType: String) {
-
- when (val obj = logEntry.getTransferObject()) {
+ val obj = logEntry.getTransferObject()
+ when (obj) {
is TObject -> handleObject(obj)
is ResultObject -> handleResultObject(obj)
is Property -> handleProperty(obj)
- is Collection -> handleCollection(obj)
is Layout -> handleLayout(obj)
is Grid -> handleGrid(obj)
is HttpError -> ErrorDialog(logEntry).open()
else -> log(logEntry)
}
- console.log("[ObjectAggregator.update]")
- console.log(logEntry.getTransferObject())
+ console.log("[OA.update]")
+ console.log(obj)
+ console.log(dpm)
if (dpm.canBeDisplayed()) {
UiManager.openObjectView(this)
@@ -56,23 +62,31 @@ class ObjectAggregator(val actionTitle: String) : BaseAggregator() {
}
fun handleObject(obj: TObject) {
- dpm.addData(obj)
+ // After ~/action/invoke is called, the actual object instance (containing properties) needs to be invoked as well.
+ // Note that rel.self/href is identical in both cases and both are of type TObject. logEntry.url is different, though.
+ if (obj.getProperties().size == 0) {
+ invokeInstance(obj)
+ } else {
+ dpm.addData(obj)
+ }
val l = obj.getLayoutLink()!!
- // Json.Layout is invoked first
- RoXmlHttpRequest().invoke(l, this)
- // then Xml.Layout is to be invoked as well
- RoXmlHttpRequest().invoke(l, this, Constants.subTypeXml)
+ if (l.representation() == Represention.OBJECT_LAYOUT_BS3) {
+ invoke(l, this, Constants.subTypeXml)
+ } else {
+ invoke(l, this)
+ }
}
- fun handleCollection(obj: Collection) {
- // TODO dsp.addData(obj)
- console.log("[ObjectAggregator.handleCollection] TODO")
- console.log(obj)
+ private fun invokeInstance(obj: TObject) {
+ val selfLink = obj.links.find { l ->
+ l.relation() == Relation.SELF
+ }
+ invoke(selfLink!!, this)
}
+
fun handleResultObject(obj: ResultObject) {
- // TODO dsp.addData(obj)
- console.log("[ObjectAggregator.handleResultObject] TODO")
+ console.log("[OA.handleResultObject] TODO implement")
console.log(obj)
}
@@ -81,8 +95,7 @@ class ObjectAggregator(val actionTitle: String) : BaseAggregator() {
}
private fun handleProperty(property: Property) {
- //TODO yet to be implemented
- console.log("[ObjectAggregator.handleProperty] TODO")
+ console.log("[OA.handleProperty] TODO implement")
console.log(property)
}
@@ -95,7 +108,7 @@ class ObjectAggregator(val actionTitle: String) : BaseAggregator() {
val isDn = l.href.contains("datanucleus")
if (isDn) {
//invoking DN links leads to an error
- RoXmlHttpRequest().invoke(l, this)
+ invoke(l, this)
}
}
}
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 970f585..1412c7f 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
@@ -19,7 +19,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.event.RoXmlHttpRequest
import org.apache.isis.client.kroviz.to.Link
import org.apache.isis.client.kroviz.to.Relation
import org.apache.isis.client.kroviz.to.Restful
@@ -31,19 +30,21 @@ class RestfulDispatcher() : BaseAggregator() {
restful.links.forEach {
when {
it.rel.endsWith("/menuBars") -> invokeNavigation(it)
- it.relation() == Relation.SELF -> {}
- it.rel.endsWith("/services") -> {}
+ it.relation() == Relation.SELF -> {
+ }
+ it.rel.endsWith("/services") -> {
+ }
else -> invokeSystem(it)
}
}
}
private fun invokeNavigation(it: Link) {
- RoXmlHttpRequest().invoke(it, NavigationDispatcher())
+ invoke(it, NavigationDispatcher())
}
private fun invokeSystem(it: Link) {
- RoXmlHttpRequest().invoke(it, SystemAggregator())
+ invoke(it, SystemAggregator())
}
}
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/event/RoXmlHttpRequest.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/event/RoXmlHttpRequest.kt
index a958aee..8f35b4d 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/event/RoXmlHttpRequest.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/event/RoXmlHttpRequest.kt
@@ -69,25 +69,26 @@ class RoXmlHttpRequest {
val rs = buildResourceSpecificationAndSetupHandler(url, subType, xhr)
- var body = ""
+ val body = buildBody(link, aggregator)
when {
- link.hasArguments() -> body = Utils.argumentsAsBody(link)
+ body.isEmpty() -> xhr.send()
+ else -> xhr.send(body)
+ }
+ EventStore.start(rs, method, body, aggregator)
+ }
+
+ private fun buildBody(link: Link, aggregator: BaseAggregator?): String {
+ return when {
+ link.hasArguments() -> Utils.argumentsAsBody(link)
link.method == Method.PUT.operation -> {
val logEntry = EventStore.findBy(aggregator!!)
when (val obj = logEntry?.obj) {
- is TObject -> body = Utils.propertiesAsBody(obj)
- else -> {
- }
+ is TObject -> Utils.propertiesAsBody(obj)
+ else -> ""
}
}
- else -> {
- }
- }
- when {
- body.isEmpty() -> xhr.send()
- else -> xhr.send(body)
+ else -> ""
}
- EventStore.start(rs, method, body, aggregator)
}
fun invokeAnonymous(link: Link, aggregator: BaseAggregator?, subType: String = Constants.subTypeXml) {
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/model/ObjectDM.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/model/ObjectDM.kt
index fbe7be4..5f64014 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/model/ObjectDM.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/model/ObjectDM.kt
@@ -18,14 +18,10 @@
*/
package org.apache.isis.client.kroviz.core.model
-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.ResourceSpecification
import org.apache.isis.client.kroviz.core.event.RoXmlHttpRequest
-import org.apache.isis.client.kroviz.to.Link
-import org.apache.isis.client.kroviz.to.Method
-import org.apache.isis.client.kroviz.to.TObject
-import org.apache.isis.client.kroviz.to.TransferObject
+import org.apache.isis.client.kroviz.to.*
class ObjectDM(override val title: String) : DisplayModelWithLayout() {
var data: Exposer? = null
@@ -34,11 +30,8 @@ class ObjectDM(override val title: String) : DisplayModelWithLayout() {
override fun canBeDisplayed(): Boolean {
return when {
isRendered -> false
- layout == null -> false
- grid == null -> false
- else -> {
- true
- }
+ (layout == null) && (grid == null) -> false
+ else -> true
}
}
@@ -47,11 +40,24 @@ class ObjectDM(override val title: String) : DisplayModelWithLayout() {
}
override fun addData(obj: TransferObject) {
- val exo = Exposer(obj as TObject)
+ console.log("[ODM.addData]")
+ (obj as TObject)
+ console.log(obj)
+ console.log(obj.members)
+ console.log(obj.getActions())
+ console.log(obj.getCollections())
+ console.log(obj.getProperties())
+ val exo = Exposer(obj)
data = exo.dynamise() as? Exposer
+ obj.getProperties().forEach { m ->
+ console.log(m)
+ val p = createPropertyFrom(m)
+ console.log(p)
+ addProperty(p)
+ }
}
- override fun getObject(): TObject? {
+ override fun getObject(): TObject {
return (data as Exposer).delegate
}
@@ -68,10 +74,10 @@ class ObjectDM(override val title: String) : DisplayModelWithLayout() {
val putLink = Link(method = Method.PUT.operation, href = href)
val logEntry = EventStore.find(reSpec)
val aggregator = logEntry?.getAggregator()!!
- putLink.invokeWith(aggregator)
+ RoXmlHttpRequest().invoke(putLink, aggregator)
// now data should be reloaded - wait for invoking PUT?
- getLink.invokeWith(aggregator)
+ RoXmlHttpRequest().invoke(getLink, aggregator)
//refresh of display to be triggered?
}
}
@@ -82,8 +88,18 @@ class ObjectDM(override val title: String) : DisplayModelWithLayout() {
}
}
- fun Link.invokeWith(aggregator: BaseAggregator) {
- RoXmlHttpRequest().invoke(this, aggregator)
+ private fun createPropertyFrom(m: Member): Property {
+ return Property(
+ id = m.id,
+ memberType = m.memberType,
+ links = m.links,
+ optional = m.optional,
+ title = m.id,
+ value = m.value,
+ extensions = m.extensions,
+ format = m.format,
+ disabledReason = m.disabledReason
+ )
}
}
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/to/PlainTransferObjects.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/to/PlainTransferObjects.kt
index 1aca714..a0b62c8 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/to/PlainTransferObjects.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/to/PlainTransferObjects.kt
@@ -158,7 +158,8 @@ data class ResultObjectResult(
enum class ResultType(val type: String) {
LIST("list"),
SCALARVALUE("scalarvalue"),
- DOMAINOBJECT("domainobject")
+ DOMAINOBJECT("domainobject"),
+ VOID("void")
}
@Serializable
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/to/TObject.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/to/TObject.kt
index e4f2bb8..211ede8 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/to/TObject.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/to/TObject.kt
@@ -30,21 +30,21 @@ data class TObject(override val links: List<Link> = emptyList(),
) : TransferObject, HasLinks {
fun getProperties(): MutableList<Member> {
- return getMembersOfType(MemberType.PROPERTY.type)
+ return getMembersOfType(MemberType.PROPERTY)
}
fun getActions(): MutableList<Member> {
- return getMembersOfType(MemberType.ACTION.type)
+ return getMembersOfType(MemberType.ACTION)
}
fun getCollections(): MutableList<Member> {
- return getMembersOfType(MemberType.COLLECTION.type)
+ return getMembersOfType(MemberType.COLLECTION)
}
- private fun getMembersOfType(type: String): MutableList<Member> {
+ private fun getMembersOfType(memberType: MemberType): MutableList<Member> {
val result = mutableListOf<Member>()
members.forEach {
- if (it.value.memberType == type) {
+ if (it.value.memberType == memberType.type) {
result.add(it.value)
}
}
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/EventLogDetail.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/EventLogDetail.kt
index 1717264..ef2f5d2 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/EventLogDetail.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/EventLogDetail.kt
@@ -44,11 +44,15 @@ class EventLogDetail(val logEntry: LogEntry) : Command() {
formItems.add(FormItem("Aggregators", ValueType.TEXT_AREA, aggtStr, 5))
RoDialog(
- caption = "Error :" + logEntry.title,
+ caption = "Details :" + logEntry.title,
items = formItems,
command = this,
- defaultAction = "Visualize",
+ defaultAction = "Debug",
widthPerc = 60).open()
}
+ override fun execute() {
+ console.log(logEntry)
+ }
+
}
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/builder/FieldSetBuilder.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/builder/FieldSetBuilder.kt
index 4d0eb7b..fa47548 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/builder/FieldSetBuilder.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/builder/FieldSetBuilder.kt
@@ -20,7 +20,6 @@ package org.apache.isis.client.kroviz.ui.builder
import org.apache.isis.client.kroviz.to.TObject
import org.apache.isis.client.kroviz.to.TypeMapper
-import org.apache.isis.client.kroviz.to.ValueType
import org.apache.isis.client.kroviz.to.bs3.FieldSet
import org.apache.isis.client.kroviz.ui.FormItem
import org.apache.isis.client.kroviz.ui.kv.FormPanelFactory
@@ -35,28 +34,32 @@ class FieldSetBuilder {
tab: RoDisplay
): FormPanel<String>? {
+ console.log("[FSB.init]")
val members = tObject.getProperties()
val items = mutableListOf<FormItem>()
+ console.log("Members: " + members.size)
+ console.log("Layout-Properties: " + fieldSetLayout.propertyList.size)
+
for (p in fieldSetLayout.propertyList) {
val label = p.id
val member = members.firstOrNull() { it.id == label }
if (member != null) {
- var size = 1
- if (p.multiLine > 1) {
- member.type = ValueType.TEXT_AREA.type
- size = p.multiLine
- }
+ val memberType = TypeMapper().forType(member.type!!)
+
+ val size = maxOf(1, p.multiLine)
val fi = FormItem(
label = label,
- type = TypeMapper().forType(member.type!!),
+ type = memberType,
content = member.value?.content,
size = size,
description = p.describedAs,
member = member,
dspl = tab)
+ console.log(fi)
+
items.add(fi)
}
}
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/EventLogTable.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/EventLogTable.kt
index 12ad2a6..ba494a9 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/EventLogTable.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/EventLogTable.kt
@@ -104,7 +104,7 @@ class EventLogTable(val model: List<LogEntry>) : VPanel() {
private fun buildActionButton(data: LogEntry): Button {
val b = Button(
text = "",
- icon = "fa fa-ellipsis-v",
+ icon = "fa fa-info-circle",
style = data.state.style)
return b
}
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/LoginPrompt.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/LoginPrompt.kt
index 38052b3..908dd43 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/LoginPrompt.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/LoginPrompt.kt
@@ -31,7 +31,7 @@ class LoginPrompt : Command() {
private lateinit var form: RoDialog
//Default values
- private var url = "http://localhost:8080/"
+ private var url = "http://localhost:8080/"
// private var url = "https://demo-wicket.isis.incode.work/"
private var username = "sven"
private var password = "pass"
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/RoDialog.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/RoDialog.kt
index 83bc7ed..256b8ee 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/RoDialog.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/RoDialog.kt
@@ -27,12 +27,12 @@ import org.apache.isis.client.kroviz.utils.Direction
import org.apache.isis.client.kroviz.utils.IconManager
import org.apache.isis.client.kroviz.utils.Point
import pl.treksoft.kvision.core.CssSize
+import pl.treksoft.kvision.core.JustifyContent
import pl.treksoft.kvision.core.UNIT
import pl.treksoft.kvision.core.Widget
import pl.treksoft.kvision.form.FormPanel
import pl.treksoft.kvision.html.Button
import pl.treksoft.kvision.html.ButtonStyle
-import pl.treksoft.kvision.panel.FlexJustify
import pl.treksoft.kvision.panel.HPanel
import pl.treksoft.kvision.panel.vPanel
import pl.treksoft.kvision.utils.perc
@@ -90,7 +90,7 @@ class RoDialog(
contentWidth = CssSize(widthPerc, UNIT.perc)
contentHeight = CssSize(heightPerc, UNIT.perc)
- vPanel(justify = FlexJustify.SPACEBETWEEN) {
+ vPanel(justify = JustifyContent.SPACEBETWEEN) {
height = 100.perc
formPanel = FormPanelFactory(items).panel
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/UiManager.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/UiManager.kt
index ba7eb96..444889b 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/UiManager.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/UiManager.kt
@@ -18,6 +18,7 @@
*/
package org.apache.isis.client.kroviz.ui.kv
+import kotlinx.browser.window
import org.apache.isis.client.kroviz.core.Session
import org.apache.isis.client.kroviz.core.aggregator.BaseAggregator
import org.apache.isis.client.kroviz.core.aggregator.ObjectAggregator
@@ -36,7 +37,6 @@ import pl.treksoft.kvision.core.Widget
import pl.treksoft.kvision.dropdown.ContextMenu
import pl.treksoft.kvision.panel.SimplePanel
import pl.treksoft.kvision.utils.ESC_KEY
-import kotlin.browser.window
/**
* Single point of contact for view components consisting of:
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/utils/IconManager.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/utils/IconManager.kt
index c6c0c3a..35dfa89 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/utils/IconManager.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/utils/IconManager.kt
@@ -40,7 +40,9 @@ object IconManager {
"Configuration" to "wrench",
"Connect" to "plug",
"Create" to "plus",
+ "Debug" to "bug",
"Delete" to "trash",
+ "Details" to "info-circle",
"Diagram" to "project-diagram",
"Download" to "download",
"Factory" to "industry",
diff --git a/incubator/clients/kroviz/src/test/kotlin/org/apache/isis/client/kroviz/TestUtil.kt b/incubator/clients/kroviz/src/test/kotlin/org/apache/isis/client/kroviz/TestUtil.kt
index 1ae740b..8450316 100644
--- a/incubator/clients/kroviz/src/test/kotlin/org/apache/isis/client/kroviz/TestUtil.kt
+++ b/incubator/clients/kroviz/src/test/kotlin/org/apache/isis/client/kroviz/TestUtil.kt
@@ -18,8 +18,7 @@
*/
package org.apache.isis.client.kroviz
-import pl.treksoft.jquery.jQuery
-import kotlin.browser.document
+import kotlinx.browser.document
interface TestSpec {
fun beforeTest()
diff --git a/incubator/clients/kroviz/src/test/kotlin/org/apache/isis/client/kroviz/snapshots/FR_OBJECT_LAYOUT.json b/incubator/clients/kroviz/src/test/kotlin/org/apache/isis/client/kroviz/snapshots/FR_OBJECT_LAYOUT.json
deleted file mode 100644
index deb0cc7..0000000
--- a/incubator/clients/kroviz/src/test/kotlin/org/apache/isis/client/kroviz/snapshots/FR_OBJECT_LAYOUT.json
+++ /dev/null
@@ -1,248 +0,0 @@
-{
- "row": [
- {
- "cols": [
- {
- "col": {
- "domainObject": {
- "named": null,
- "describedAs": null,
- "plural": null,
- "metadataError": null,
- "link": {
- "rel": "urn:org.restfulobjects:rels/element",
- "method": "GET",
- "href": "http://localhost:8080/restful/objects/isisApplib.FixtureResult/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPG1lbWVudG8-PGtleT5kb21haW4tYXBwLWRlbW8vcGVyc2lzdC1hbGwvaXRlbS01PC9rZXk-PG9iamVjdC5ib29rbWFyaz5zaW1wbGUuU2ltcGxlT2JqZWN0OjExNDwvb2JqZWN0LmJvb2ttYXJrPjwvbWVtZW50bz4=",
- "type": "application/jsonprofile=\"urn:org.restfulobjects:repr-types/object\""
- },
- "bookmarking": null,
- "cssClass": null,
- "cssClassFa": null,
- "cssClassFaPosition": null,
- "namedEscaped": null
- },
- "action": [
- {
- "named": null,
- "describedAs": null,
- "metadataError": null,
- "link": {
- "rel": "urn:org.restfulobjects:rels/action",
- "method": "GET",
- "href": "http://localhost:8080/restful/objects/isisApplib.FixtureResult/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPG1lbWVudG8-PGtleT5kb21haW4tYXBwLWRlbW8vcGVyc2lzdC1hbGwvaXRlbS01PC9rZXk-PG9iamVjdC5ib29rbWFyaz5zaW1wbGUuU2ltcGxlT2JqZWN0OjExNDwvb2JqZWN0LmJvb2ttYXJrPjwvbWVtZW50bz4=/actions/clearHints",
- "type": "application/jsonprofile=\"urn:org.restfulobjects:repr-types/object-action\""
- },
- "id": "clearHints",
- "bookmarking": null,
- "cssClass": null,
- "cssClassFa": null,
- "cssClassFaPosition": null,
- "hidden": null,
- "namedEscaped": null,
- "position": null,
- "promptStyle": null
- },
- {
- "named": null,
- "describedAs": null,
- "metadataError": null,
- "link": {
- "rel": "urn:org.restfulobjects:rels/action",
- "method": "GET",
- "href": "http://localhost:8080/restful/objects/isisApplib.FixtureResult/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPG1lbWVudG8-PGtleT5kb21haW4tYXBwLWRlbW8vcGVyc2lzdC1hbGwvaXRlbS01PC9rZXk-PG9iamVjdC5ib29rbWFyaz5zaW1wbGUuU2ltcGxlT2JqZWN0OjExNDwvb2JqZWN0LmJvb2ttYXJrPjwvbWVtZW50bz4=/actions/downloadLayoutXml",
- "type": "application/jsonprofile=\"urn:org.restfulobjects:repr-types/object-action\""
- },
- "id": "downloadLayoutXml",
- "bookmarking": null,
- "cssClass": null,
- "cssClassFa": null,
- "cssClassFaPosition": null,
- "hidden": null,
- "namedEscaped": null,
- "position": null,
- "promptStyle": null
- },
- {
- "named": null,
- "describedAs": null,
- "metadataError": null,
- "link": {
- "rel": "urn:org.restfulobjects:rels/action",
- "method": "GET",
- "href": "http://localhost:8080/restful/objects/isisApplib.FixtureResult/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPG1lbWVudG8-PGtleT5kb21haW4tYXBwLWRlbW8vcGVyc2lzdC1hbGwvaXRlbS01PC9rZXk-PG9iamVjdC5ib29rbWFyaz5zaW1wbGUuU2ltcGxlT2JqZWN0OjExNDwvb2JqZWN0LmJvb2ttYXJrPjwvbWVtZW50bz4=/actions/rebuildMetamodel",
- "type": "application/jsonprofile=\"urn:org.restfulobjects:repr-types/object-action\""
- },
- "id": "rebuildMetamodel",
- "bookmarking": null,
- "cssClass": null,
- "cssClassFa": null,
- "cssClassFaPosition": null,
- "hidden": null,
- "namedEscaped": null,
- "position": null,
- "promptStyle": null
- },
- {
- "named": null,
- "describedAs": null,
- "metadataError": null,
- "link": {
- "rel": "urn:org.restfulobjects:rels/action",
- "method": "GET",
- "href": "http://localhost:8080/restful/objects/isisApplib.FixtureResult/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPG1lbWVudG8-PGtleT5kb21haW4tYXBwLWRlbW8vcGVyc2lzdC1hbGwvaXRlbS01PC9rZXk-PG9iamVjdC5ib29rbWFyaz5zaW1wbGUuU2ltcGxlT2JqZWN0OjExNDwvb2JqZWN0LmJvb2ttYXJrPjwvbWVtZW50bz4=/actions/openRestApi",
- "type": "application/jsonprofile=\"urn:org.restfulobjects:repr-types/object-action\""
- },
- "id": "openRestApi",
- "bookmarking": null,
- "cssClass": null,
- "cssClassFa": null,
- "cssClassFaPosition": null,
- "hidden": null,
- "namedEscaped": null,
- "position": null,
- "promptStyle": null
- }
- ],
- "metadataError": null,
- "cssClass": null,
- "size": null,
- "id": null,
- "span": 12,
- "unreferencedActions": true,
- "unreferencedCollections": null
- }
- }
- ],
- "metadataError": null,
- "cssClass": null,
- "id": null
- },
- {
- "cols": [
- {
- "col": {
- "domainObject": null,
- "fieldSet": [
- {
- "name": "General",
- "property": [
- {
- "named": null,
- "describedAs": null,
- "metadataError": null,
- "link": {
- "rel": "urn:org.restfulobjects:rels/property",
- "method": "GET",
- "href": "http://localhost:8080/restful/objects/isisApplib.FixtureResult/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPG1lbWVudG8-PGtleT5kb21haW4tYXBwLWRlbW8vcGVyc2lzdC1hbGwvaXRlbS01PC9rZXk-PG9iamVjdC5ib29rbWFyaz5zaW1wbGUuU2ltcGxlT2JqZWN0OjExNDwvb2JqZWN0LmJvb2ttYXJrPjwvbWVtZW50bz4=/properties/className",
- "type": "application/jsonprofile=\"urn:org.restfulobjects:repr-types/object-property\""
- },
- "id": "className",
- "cssClass": null,
- "hidden": null,
- "labelPosition": null,
- "multiLine": null,
- "namedEscaped": null,
- "promptStyle": null,
- "renderedAsDayBefore": null,
- "typicalLength": null,
- "unchanging": null
- },
- {
- "named": null,
- "describedAs": null,
- "metadataError": null,
- "link": {
- "rel": "urn:org.restfulobjects:rels/property",
- "method": "GET",
- "href": "http://localhost:8080/restful/objects/isisApplib.FixtureResult/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPG1lbWVudG8-PGtleT5kb21haW4tYXBwLWRlbW8vcGVyc2lzdC1hbGwvaXRlbS01PC9rZXk-PG9iamVjdC5ib29rbWFyaz5zaW1wbGUuU2ltcGxlT2JqZWN0OjExNDwvb2JqZWN0LmJvb2ttYXJrPjwvbWVtZW50bz4=/properties/fixtureScriptClassName",
- "type": "application/jsonprofile=\"urn:org.restfulobjects:repr-types/object-property\""
- },
- "id": "fixtureScriptClassName",
- "cssClass": null,
- "hidden": null,
- "labelPosition": null,
- "multiLine": null,
- "namedEscaped": null,
- "promptStyle": null,
- "renderedAsDayBefore": null,
- "typicalLength": null,
- "unchanging": null
- },
- {
- "named": null,
- "describedAs": null,
- "metadataError": null,
- "link": {
- "rel": "urn:org.restfulobjects:rels/property",
- "method": "GET",
- "href": "http://localhost:8080/restful/objects/isisApplib.FixtureResult/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPG1lbWVudG8-PGtleT5kb21haW4tYXBwLWRlbW8vcGVyc2lzdC1hbGwvaXRlbS01PC9rZXk-PG9iamVjdC5ib29rbWFyaz5zaW1wbGUuU2ltcGxlT2JqZWN0OjExNDwvb2JqZWN0LmJvb2ttYXJrPjwvbWVtZW50bz4=/properties/key",
- "type": "application/jsonprofile=\"urn:org.restfulobjects:repr-types/object-property\""
- },
- "id": "key",
- "cssClass": null,
- "hidden": null,
- "labelPosition": null,
- "multiLine": null,
- "namedEscaped": null,
- "promptStyle": null,
- "renderedAsDayBefore": null,
- "typicalLength": null,
- "unchanging": null
- },
- {
- "named": null,
- "describedAs": null,
- "metadataError": null,
- "link": {
- "rel": "urn:org.restfulobjects:rels/property",
- "method": "GET",
- "href": "http://localhost:8080/restful/objects/isisApplib.FixtureResult/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPG1lbWVudG8-PGtleT5kb21haW4tYXBwLWRlbW8vcGVyc2lzdC1hbGwvaXRlbS01PC9rZXk-PG9iamVjdC5ib29rbWFyaz5zaW1wbGUuU2ltcGxlT2JqZWN0OjExNDwvb2JqZWN0LmJvb2ttYXJrPjwvbWVtZW50bz4=/properties/object",
- "type": "application/jsonprofile=\"urn:org.restfulobjects:repr-types/object-property\""
- },
- "id": "object",
- "cssClass": null,
- "hidden": null,
- "labelPosition": null,
- "multiLine": null,
- "namedEscaped": null,
- "promptStyle": null,
- "renderedAsDayBefore": null,
- "typicalLength": null,
- "unchanging": null
- }
- ],
- "metadataError": null,
- "id": "general",
- "unreferencedActions": null,
- "unreferencedProperties": true
- }
- ],
- "metadataError": null,
- "cssClass": null,
- "size": null,
- "id": null,
- "span": 4,
- "unreferencedActions": null,
- "unreferencedCollections": null
- }
- },
- {
- "col": {
- "domainObject": null,
- "metadataError": null,
- "cssClass": null,
- "size": null,
- "id": null,
- "span": 8,
- "unreferencedActions": null,
- "unreferencedCollections": true
- }
- }
- ],
- "metadataError": null,
- "cssClass": null,
- "id": null
- }
- ],
- "cssClass": null
-}
diff --git a/incubator/clients/kroviz/src/test/kotlin/org/apache/isis/client/kroviz/snapshots/LAYOUT.adoc b/incubator/clients/kroviz/src/test/kotlin/org/apache/isis/client/kroviz/snapshots/LAYOUT.adoc
deleted file mode 100644
index a0ab5e2..0000000
--- a/incubator/clients/kroviz/src/test/kotlin/org/apache/isis/client/kroviz/snapshots/LAYOUT.adoc
+++ /dev/null
@@ -1,380 +0,0 @@
-[plantuml,file="LAYOUT.png"]
---
-
-@startuml
-class "root" as root {
-.. Properties ..
-cssClass: null
-.. Objects ..
-row: [Array]
-}
-class "row" as root.row {
-.. Properties ..
-.. Objects ..
-0: [object Object]
-1: [object Object]
-}
-class "0" as root.row.0 {
-.. Properties ..
-metadataError: null
-cssClass: null
-id: null
-.. Objects ..
-cols: [Array]
-}
-class "cols" as root.row.0.cols {
-.. Properties ..
-.. Objects ..
-0: [object Object]
-}
-class "0" as root.row.0.cols.0 {
-.. Properties ..
-.. Objects ..
-col: [object Object]
-}
-class "col" as root.row.0.cols.0.col {
-.. Properties ..
-metadataError: null
-cssClass: null
-size: null
-id: null
-span: 12
-unreferencedActions: true
-unreferencedCollections: null
-.. Objects ..
-domainObject: [object Object]
-action: [Array]
-}
-class "domainObject" as root.row.0.cols.0.col.domainObject {
-.. Properties ..
-named: null
-describedAs: null
-plural: null
-metadataError: null
-bookmarking: null
-cssClass: null
-cssClassFa: null
-cssClassFaPosition: null
-namedEscaped: null
-.. Objects ..
-link: [object Object]
-}
-class "link" as root.row.0.cols.0.col.domainObject.link {
-.. Properties ..
-rel: urn:org.restfulobjects:rels/element
-method: GET
-href: http://localhost:8080/restful/objects/isisApplib.FixtureResult/;
-type: application/jsonprofile="urn:org.restfulobjects:repr-types/object"
-}
-class "action" as root.row.0.cols.0.col.action {
-.. Properties ..
-.. Objects ..
-0: [object Object]
-1: [object Object]
-2: [object Object]
-3: [object Object]
-}
-class "0" as root.row.0.cols.0.col.action.0 {
-.. Properties ..
-named: null
-describedAs: null
-metadataError: null
-id: clearHints
-bookmarking: null
-cssClass: null
-cssClassFa: null
-cssClassFaPosition: null
-hidden: null
-namedEscaped: null
-position: null
-promptStyle: null
-.. Objects ..
-link: [object Object]
-}
-class "link" as root.row.0.cols.0.col.action.0.link {
-.. Properties ..
-rel: urn:org.restfulobjects:rels/action
-method: GET
-href: http://localhost:8080/restful/objects/isisApplib.FixtureResult/;/actions/clearHints
-type: application/jsonprofile="urn:org.restfulobjects:repr-types/object-action"
-}
-class "1" as root.row.0.cols.0.col.action.1 {
-.. Properties ..
-named: null
-describedAs: null
-metadataError: null
-id: downloadLayoutXml
-bookmarking: null
-cssClass: null
-cssClassFa: null
-cssClassFaPosition: null
-hidden: null
-namedEscaped: null
-position: null
-promptStyle: null
-.. Objects ..
-link: [object Object]
-}
-class "link" as root.row.0.cols.0.col.action.1.link {
-.. Properties ..
-rel: urn:org.restfulobjects:rels/action
-method: GET
-href: http://localhost:8080/restful/objects/isisApplib.FixtureResult/;/actions/downloadLayoutXml
-type: application/jsonprofile="urn:org.restfulobjects:repr-types/object-action"
-}
-class "2" as root.row.0.cols.0.col.action.2 {
-.. Properties ..
-named: null
-describedAs: null
-metadataError: null
-id: rebuildMetamodel
-bookmarking: null
-cssClass: null
-cssClassFa: null
-cssClassFaPosition: null
-hidden: null
-namedEscaped: null
-position: null
-promptStyle: null
-.. Objects ..
-link: [object Object]
-}
-class "link" as root.row.0.cols.0.col.action.2.link {
-.. Properties ..
-rel: urn:org.restfulobjects:rels/action
-method: GET
-href: http://localhost:8080/restful/objects/isisApplib.FixtureResult/;/actions/rebuildMetamodel
-type: application/jsonprofile="urn:org.restfulobjects:repr-types/object-action"
-}
-class "3" as root.row.0.cols.0.col.action.3 {
-.. Properties ..
-named: null
-describedAs: null
-metadataError: null
-id: openRestApi
-bookmarking: null
-cssClass: null
-cssClassFa: null
-cssClassFaPosition: null
-hidden: null
-namedEscaped: null
-position: null
-promptStyle: null
-.. Objects ..
-link: [object Object]
-}
-class "link" as root.row.0.cols.0.col.action.3.link {
-.. Properties ..
-rel: urn:org.restfulobjects:rels/action
-method: GET
-href: http://localhost:8080/restful/objects/isisApplib.FixtureResult/;/actions/openRestApi
-type: application/jsonprofile="urn:org.restfulobjects:repr-types/object-action"
-}
-class "1" as root.row.1 {
-.. Properties ..
-metadataError: null
-cssClass: null
-id: null
-.. Objects ..
-cols: [Array]
-}
-class "cols" as root.row.1.cols {
-.. Properties ..
-.. Objects ..
-0: [object Object]
-1: [object Object]
-}
-class "0" as root.row.1.cols.0 {
-.. Properties ..
-.. Objects ..
-col: [object Object]
-}
-class "col" as root.row.1.cols.0.col {
-.. Properties ..
-domainObject: null
-metadataError: null
-cssClass: null
-size: null
-id: null
-span: 4
-unreferencedActions: null
-unreferencedCollections: null
-.. Objects ..
-fieldSet: [Array]
-}
-class "fieldSet" as root.row.1.cols.0.col.fieldSet {
-.. Properties ..
-.. Objects ..
-0: [object Object]
-}
-class "0" as root.row.1.cols.0.col.fieldSet.0 {
-.. Properties ..
-name: General
-metadataError: null
-id: general
-unreferencedActions: null
-unreferencedProperties: true
-.. Objects ..
-property: [Array]
-}
-class "property" as root.row.1.cols.0.col.fieldSet.0.property {
-.. Properties ..
-.. Objects ..
-0: [object Object]
-1: [object Object]
-2: [object Object]
-3: [object Object]
-}
-class "0" as root.row.1.cols.0.col.fieldSet.0.property.0 {
-.. Properties ..
-named: null
-describedAs: null
-metadataError: null
-id: className
-cssClass: null
-hidden: null
-labelPosition: null
-multiLine: null
-namedEscaped: null
-promptStyle: null
-renderedAsDayBefore: null
-typicalLength: null
-unchanging: null
-.. Objects ..
-link: [object Object]
-}
-class "link" as root.row.1.cols.0.col.fieldSet.0.property.0.link {
-.. Properties ..
-rel: urn:org.restfulobjects:rels/property
-method: GET
-href: http://localhost:8080/restful/objects/isisApplib.FixtureResult/;/properties/className
-type: application/jsonprofile="urn:org.restfulobjects:repr-types/object-property"
-}
-class "1" as root.row.1.cols.0.col.fieldSet.0.property.1 {
-.. Properties ..
-named: null
-describedAs: null
-metadataError: null
-id: fixtureScriptClassName
-cssClass: null
-hidden: null
-labelPosition: null
-multiLine: null
-namedEscaped: null
-promptStyle: null
-renderedAsDayBefore: null
-typicalLength: null
-unchanging: null
-.. Objects ..
-link: [object Object]
-}
-class "link" as root.row.1.cols.0.col.fieldSet.0.property.1.link {
-.. Properties ..
-rel: urn:org.restfulobjects:rels/property
-method: GET
-href: http://localhost:8080/restful/objects/isisApplib.FixtureResult/;/properties/fixtureScriptClassName
-type: application/jsonprofile="urn:org.restfulobjects:repr-types/object-property"
-}
-class "2" as root.row.1.cols.0.col.fieldSet.0.property.2 {
-.. Properties ..
-named: null
-describedAs: null
-metadataError: null
-id: key
-cssClass: null
-hidden: null
-labelPosition: null
-multiLine: null
-namedEscaped: null
-promptStyle: null
-renderedAsDayBefore: null
-typicalLength: null
-unchanging: null
-.. Objects ..
-link: [object Object]
-}
-class "link" as root.row.1.cols.0.col.fieldSet.0.property.2.link {
-.. Properties ..
-rel: urn:org.restfulobjects:rels/property
-method: GET
-href: http://localhost:8080/restful/objects/isisApplib.FixtureResult/;/properties/key
-type: application/jsonprofile="urn:org.restfulobjects:repr-types/object-property"
-}
-class "3" as root.row.1.cols.0.col.fieldSet.0.property.3 {
-.. Properties ..
-named: null
-describedAs: null
-metadataError: null
-id: object
-cssClass: null
-hidden: null
-labelPosition: null
-multiLine: null
-namedEscaped: null
-promptStyle: null
-renderedAsDayBefore: null
-typicalLength: null
-unchanging: null
-.. Objects ..
-link: [object Object]
-}
-class "link" as root.row.1.cols.0.col.fieldSet.0.property.3.link {
-.. Properties ..
-rel: urn:org.restfulobjects:rels/property
-method: GET
-href: http://localhost:8080/restful/objects/isisApplib.FixtureResult/;/properties/object
-type: application/jsonprofile="urn:org.restfulobjects:repr-types/object-property"
-}
-class "1" as root.row.1.cols.1 {
-.. Properties ..
-.. Objects ..
-col: [object Object]
-}
-class "col" as root.row.1.cols.1.col {
-.. Properties ..
-domainObject: null
-metadataError: null
-cssClass: null
-size: null
-id: null
-span: 8
-unreferencedActions: null
-unreferencedCollections: true
-}
-root.row.0.cols.0.col.domainObject -- root.row.0.cols.0.col.domainObject.link
-root.row.0.cols.0.col.action.0 -- root.row.0.cols.0.col.action.0.link
-root.row.0.cols.0.col.action.1 -- root.row.0.cols.0.col.action.1.link
-root.row.0.cols.0.col.action.2 -- root.row.0.cols.0.col.action.2.link
-root.row.0.cols.0.col.action.3 -- root.row.0.cols.0.col.action.3.link
-root.row.0.cols.0.col.action -- root.row.0.cols.0.col.action.0
-root.row.0.cols.0.col.action -- root.row.0.cols.0.col.action.1
-root.row.0.cols.0.col.action -- root.row.0.cols.0.col.action.2
-root.row.0.cols.0.col.action -- root.row.0.cols.0.col.action.3
-root.row.0.cols.0.col -- root.row.0.cols.0.col.domainObject
-root.row.0.cols.0.col -- root.row.0.cols.0.col.action
-root.row.0.cols.0 -- root.row.0.cols.0.col
-root.row.0.cols -- root.row.0.cols.0
-root.row.0 -- root.row.0.cols
-root.row.1.cols.0.col.fieldSet.0.property.0 -- root.row.1.cols.0.col.fieldSet.0.property.0.link
-root.row.1.cols.0.col.fieldSet.0.property.1 -- root.row.1.cols.0.col.fieldSet.0.property.1.link
-root.row.1.cols.0.col.fieldSet.0.property.2 -- root.row.1.cols.0.col.fieldSet.0.property.2.link
-root.row.1.cols.0.col.fieldSet.0.property.3 -- root.row.1.cols.0.col.fieldSet.0.property.3.link
-root.row.1.cols.0.col.fieldSet.0.property -- root.row.1.cols.0.col.fieldSet.0.property.0
-root.row.1.cols.0.col.fieldSet.0.property -- root.row.1.cols.0.col.fieldSet.0.property.1
-root.row.1.cols.0.col.fieldSet.0.property -- root.row.1.cols.0.col.fieldSet.0.property.2
-root.row.1.cols.0.col.fieldSet.0.property -- root.row.1.cols.0.col.fieldSet.0.property.3
-root.row.1.cols.0.col.fieldSet.0 -- root.row.1.cols.0.col.fieldSet.0.property
-root.row.1.cols.0.col.fieldSet -- root.row.1.cols.0.col.fieldSet.0
-root.row.1.cols.0.col -- root.row.1.cols.0.col.fieldSet
-root.row.1.cols.0 -- root.row.1.cols.0.col
-root.row.1.cols.1 -- root.row.1.cols.1.col
-root.row.1.cols -- root.row.1.cols.0
-root.row.1.cols -- root.row.1.cols.1
-root.row.1 -- root.row.1.cols
-root.row -- root.row.0
-root.row -- root.row.1
-root -- root.row
-@enduml
-
---
-
diff --git a/incubator/clients/kroviz/src/test/kotlin/org/apache/isis/client/kroviz/snapshots/ResponseRegressionTest.kt b/incubator/clients/kroviz/src/test/kotlin/org/apache/isis/client/kroviz/snapshots/ResponseRegressionTest.kt
new file mode 100644
index 0000000..6fcdb38
--- /dev/null
+++ b/incubator/clients/kroviz/src/test/kotlin/org/apache/isis/client/kroviz/snapshots/ResponseRegressionTest.kt
@@ -0,0 +1,71 @@
+/*
+ * 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.snapshots
+
+import org.apache.isis.client.kroviz.snapshots.demo2_0_0.Response2Handler
+import org.apache.isis.client.kroviz.to.Link
+import org.apache.isis.client.kroviz.to.Method
+import org.apache.isis.client.kroviz.ui.kv.UiManager
+import kotlin.test.BeforeTest
+import kotlin.test.Test
+import kotlin.test.assertEquals
+import kotlin.test.assertTrue
+
+/**
+ * This is an integration test that requires <Demo> running on http://localhost:8080
+ * automate via -> @link https://bmuschko.com/blog/docker-integration-testing/
+ * compare json -> @link https://stackoverflow.com/questions/26049303/how-to-compare-two-json-have-the-same-properties-without-order
+ */
+class ResponseRegressionTest {
+
+ @BeforeTest
+ fun setup() {
+ val user = "sven"
+ val pw = "pass"
+ val url = "http://${user}:${pw}@localhost:8080/restful/"
+ UiManager.login(url, user, pw)
+ }
+
+ //@Test // invoking HttpRequest does not work - yet
+ fun testCompareSnapshotWithResponse() {
+ //given
+ val map = Response2Handler.map
+ val credentials = UiManager.getCredentials()
+ //when
+ console.log("[RRT.testCompareSnapshotWithResponse]")
+ map.forEach { rh ->
+ val handler = rh.value
+ val jsonStr = rh.key.str
+ val expected = handler.parse(jsonStr)
+
+ val href = rh.key.url
+ console.log(href)
+
+ val link = Link(method = Method.GET.operation, href = href)
+ val response = SyncRequest().invoke(link, credentials)
+
+ val actual = handler.parse(response)
+
+ assertEquals(expected, actual)
+ }
+ //then
+ assertTrue(true, "no exception in loop")
+ }
+
+}
diff --git a/incubator/clients/kroviz/src/test/kotlin/org/apache/isis/client/kroviz/snapshots/SyncRequest.kt b/incubator/clients/kroviz/src/test/kotlin/org/apache/isis/client/kroviz/snapshots/SyncRequest.kt
new file mode 100644
index 0000000..38859ec
--- /dev/null
+++ b/incubator/clients/kroviz/src/test/kotlin/org/apache/isis/client/kroviz/snapshots/SyncRequest.kt
@@ -0,0 +1,27 @@
+package org.apache.isis.client.kroviz.snapshots
+
+import org.apache.isis.client.kroviz.IntegrationTest
+import org.apache.isis.client.kroviz.to.Link
+import org.apache.isis.client.kroviz.ui.kv.Constants
+import org.w3c.xhr.XMLHttpRequest
+
+class SyncRequest : IntegrationTest() {
+
+ fun invoke(link: Link, credentials: String): String {
+ val method = link.method
+ val url = link.href
+
+ val xhr = XMLHttpRequest()
+ xhr.open(method, url, false)
+ xhr.setRequestHeader("Authorization", "Basic $credentials")
+ xhr.setRequestHeader("Content-Type", Constants.stdMimeType)
+ xhr.setRequestHeader("Accept", Constants.svgMimeType)
+
+ xhr.send()
+ while (xhr.readyState != XMLHttpRequest.DONE) {
+ wait(100)
+ console.log("[SyncRequest.invoke] wait")
+ }
+ return (xhr.responseText);
+ }
+}
diff --git a/incubator/clients/kroviz/src/test/kotlin/org/apache/isis/client/kroviz/snapshots/demo2_0_0/ACTIONS_STRINGS_INVOKE.kt b/incubator/clients/kroviz/src/test/kotlin/org/apache/isis/client/kroviz/snapshots/demo2_0_0/ACTIONS_STRINGS_INVOKE.kt
index f372abc..cfc56fb 100644
--- a/incubator/clients/kroviz/src/test/kotlin/org/apache/isis/client/kroviz/snapshots/demo2_0_0/ACTIONS_STRINGS_INVOKE.kt
+++ b/incubator/clients/kroviz/src/test/kotlin/org/apache/isis/client/kroviz/snapshots/demo2_0_0/ACTIONS_STRINGS_INVOKE.kt
@@ -22,36 +22,37 @@ import org.apache.isis.client.kroviz.snapshots.Response
object ACTIONS_STRINGS_INVOKE : Response() {
override val url = "http://localhost:8080/restful/objects/demo.JavaLangTypesMenu/1/actions/strings/invoke"
- override val str = """{
+ override val str = """
+{
"links": [
{
"rel": "self",
- "href": "https://localhost:8080/restful/objects/demo.JavaLangStrings/PADw_eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiBzdGFuZGFsb25lPSJ5ZXMiPz4KPERlbW8vPgo=",
+ "href": "https://demo-wicket.isis.incode.work/restful/objects/demo.JavaLangStrings/PADw_eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiBzdGFuZGFsb25lPSJ5ZXMiPz4KPERlbW8vPgo=",
"method": "GET",
"type": "application/json;profile=\"urn:org.restfulobjects:repr-types/object\"",
"title": "String data type"
},
{
"rel": "describedby",
- "href": "https://localhost:8080/restful/domain-types/demo.JavaLangStrings",
+ "href": "https://demo-wicket.isis.incode.work/restful/domain-types/demo.JavaLangStrings",
"method": "GET",
"type": "application/json;profile=\"urn:org.restfulobjects:repr-types/domain-type\""
},
{
"rel": "urn:org.apache.isis.restfulobjects:rels/object-layout",
- "href": "https://localhost:8080/restful/objects/demo.JavaLangStrings/PADw_eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiBzdGFuZGFsb25lPSJ5ZXMiPz4KPERlbW8vPgo=/object-layout",
+ "href": "https://demo-wicket.isis.incode.work/restful/objects/demo.JavaLangStrings/PADw_eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiBzdGFuZGFsb25lPSJ5ZXMiPz4KPERlbW8vPgo=/object-layout",
"method": "GET",
"type": "application/json;profile=\"urn:org.restfulobjects:repr-types/object-layout-bs3\""
},
{
"rel": "urn:org.apache.isis.restfulobjects:rels/object-icon",
- "href": "https://localhost:8080/restful/objects/demo.JavaLangStrings/PADw_eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiBzdGFuZGFsb25lPSJ5ZXMiPz4KPERlbW8vPgo=/image",
+ "href": "https://demo-wicket.isis.incode.work/restful/objects/demo.JavaLangStrings/PADw_eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiBzdGFuZGFsb25lPSJ5ZXMiPz4KPERlbW8vPgo=/image",
"method": "GET",
"type": "image/png"
},
{
"rel": "urn:org.restfulobjects:rels/update",
- "href": "https://localhost:8080/restful/objects/demo.JavaLangStrings:PADw_eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiBzdGFuZGFsb25lPSJ5ZXMiPz4KPERlbW8vPgo=",
+ "href": "https://demo-wicket.isis.incode.work/restful/objects/demo.JavaLangStrings:PADw_eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiBzdGFuZGFsb25lPSJ5ZXMiPz4KPERlbW8vPgo=",
"method": "PUT",
"type": "application/json;profile=\"urn:org.restfulobjects:repr-types/object\"",
"arguments": {}
@@ -66,18 +67,87 @@ object ACTIONS_STRINGS_INVOKE : Response() {
"domainType": "demo.JavaLangStrings",
"instanceId": "PADw_eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiBzdGFuZGFsb25lPSJ5ZXMiPz4KPERlbW8vPgo=",
"members": {
+ "description": {
+ "id": "description",
+ "memberType": "property",
+ "links": [
+ {
+ "rel": "urn:org.restfulobjects:rels/details;property=\"description\"",
+ "href": "https://demo-wicket.isis.incode.work/restful/objects/demo.JavaLangStrings/PADw_eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiBzdGFuZGFsb25lPSJ5ZXMiPz4KPERlbW8vPgo=/properties/description",
+ "method": "GET",
+ "type": "application/json;profile=\"urn:org.restfulobjects:repr-types/object-property\""
+ }
+ ],
+ "value": "<div class=\"paragraph\">\n<p>The framework has built-in support for the <code>String</code> data type.</p>\n</div>\n<div class=\"paragraph\">\n<p>From here you can:</p>\n</div>\n<div class=\"ulist\">\n<ul>\n<li>\n<p>navigate to an entity that uses the <code>String</code> datatype</p>\n</li>\n<li>\n<p>open a view model that uses the <code>String</code> datatype</p>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>Some properties on these domain objects are mandatory, [...]
+ "format": "string",
+ "extensions": {
+ "x-isis-format": "string"
+ },
+ "disabledReason": "Contributed property"
+ },
+ "objectType": {
+ "id": "objectType",
+ "memberType": "property",
+ "links": [
+ {
+ "rel": "urn:org.restfulobjects:rels/details;property=\"objectType\"",
+ "href": "https://demo-wicket.isis.incode.work/restful/objects/demo.JavaLangStrings/PADw_eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiBzdGFuZGFsb25lPSJ5ZXMiPz4KPERlbW8vPgo=/properties/objectType",
+ "method": "GET",
+ "type": "application/json;profile=\"urn:org.restfulobjects:repr-types/object-property\""
+ }
+ ],
+ "value": "demo.JavaLangStrings",
+ "extensions": {
+ "x-isis-format": "string"
+ },
+ "disabledReason": "Contributed property"
+ },
+ "objectIdentifier": {
+ "id": "objectIdentifier",
+ "memberType": "property",
+ "links": [
+ {
+ "rel": "urn:org.restfulobjects:rels/details;property=\"objectIdentifier\"",
+ "href": "https://demo-wicket.isis.incode.work/restful/objects/demo.JavaLangStrings/PADw_eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiBzdGFuZGFsb25lPSJ5ZXMiPz4KPERlbW8vPgo=/properties/objectIdentifier",
+ "method": "GET",
+ "type": "application/json;profile=\"urn:org.restfulobjects:repr-types/object-property\""
+ }
+ ],
+ "value": "»1a9012b0",
+ "extensions": {
+ "x-isis-format": "string"
+ },
+ "disabledReason": "Contributed property"
+ },
+ "sources": {
+ "id": "sources",
+ "memberType": "property",
+ "links": [
+ {
+ "rel": "urn:org.restfulobjects:rels/details;property=\"sources\"",
+ "href": "https://demo-wicket.isis.incode.work/restful/objects/demo.JavaLangStrings/PADw_eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiBzdGFuZGFsb25lPSJ5ZXMiPz4KPERlbW8vPgo=/properties/sources",
+ "method": "GET",
+ "type": "application/json;profile=\"urn:org.restfulobjects:repr-types/object-property\""
+ }
+ ],
+ "value": "<div class=\"paragraph\">\n<p><a href=\"https://github.com/apache/isis/tree/master/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/strings\">Sources</a> for this demo</p>\n</div>",
+ "format": "string",
+ "extensions": {
+ "x-isis-format": "string"
+ },
+ "disabledReason": "Contributed property"
+ },
"entities": {
"id": "entities",
"memberType": "collection",
"links": [
{
"rel": "urn:org.restfulobjects:rels/details;collection=\"entities\"",
- "href": "https://localhost:8080/restful/objects/demo.JavaLangStrings/PADw_eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiBzdGFuZGFsb25lPSJ5ZXMiPz4KPERlbW8vPgo=/collections/entities",
+ "href": "https://demo-wicket.isis.incode.work/restful/objects/demo.JavaLangStrings/PADw_eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiBzdGFuZGFsb25lPSJ5ZXMiPz4KPERlbW8vPgo=/collections/entities",
"method": "GET",
"type": "application/json;profile=\"urn:org.restfulobjects:repr-types/object-collection\""
}
- ],
- "disabledReason": "Immutable"
+ ]
},
"openViewModel": {
"id": "openViewModel",
@@ -85,7 +155,7 @@ object ACTIONS_STRINGS_INVOKE : Response() {
"links": [
{
"rel": "urn:org.restfulobjects:rels/details;action=\"openViewModel\"",
- "href": "https://localhost:8080/restful/objects/demo.JavaLangStrings/PADw_eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiBzdGFuZGFsb25lPSJ5ZXMiPz4KPERlbW8vPgo=/actions/openViewModel",
+ "href": "https://demo-wicket.isis.incode.work/restful/objects/demo.JavaLangStrings/PADw_eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiBzdGFuZGFsb25lPSJ5ZXMiPz4KPERlbW8vPgo=/actions/openViewModel",
"method": "GET",
"type": "application/json;profile=\"urn:org.restfulobjects:repr-types/object-action\""
}
@@ -97,79 +167,79 @@ object ACTIONS_STRINGS_INVOKE : Response() {
"links": [
{
"rel": "urn:org.restfulobjects:rels/details;action=\"clearHints\"",
- "href": "https://localhost:8080/restful/objects/demo.JavaLangStrings/PADw_eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiBzdGFuZGFsb25lPSJ5ZXMiPz4KPERlbW8vPgo=/actions/clearHints",
+ "href": "https://demo-wicket.isis.incode.work/restful/objects/demo.JavaLangStrings/PADw_eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiBzdGFuZGFsb25lPSJ5ZXMiPz4KPERlbW8vPgo=/actions/clearHints",
"method": "GET",
"type": "application/json;profile=\"urn:org.restfulobjects:repr-types/object-action\""
}
]
},
- "openRestApi": {
- "id": "openRestApi",
+ "downloadMetamodelXml": {
+ "id": "downloadMetamodelXml",
"memberType": "action",
"links": [
{
- "rel": "urn:org.restfulobjects:rels/details;action=\"openRestApi\"",
- "href": "https://localhost:8080/restful/objects/demo.JavaLangStrings/PADw_eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiBzdGFuZGFsb25lPSJ5ZXMiPz4KPERlbW8vPgo=/actions/openRestApi",
+ "rel": "urn:org.restfulobjects:rels/details;action=\"downloadMetamodelXml\"",
+ "href": "https://demo-wicket.isis.incode.work/restful/objects/demo.JavaLangStrings/PADw_eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiBzdGFuZGFsb25lPSJ5ZXMiPz4KPERlbW8vPgo=/actions/downloadMetamodelXml",
"method": "GET",
"type": "application/json;profile=\"urn:org.restfulobjects:repr-types/object-action\""
}
]
},
- "downloadLayoutXml": {
- "id": "downloadLayoutXml",
+ "rebuildMetamodel": {
+ "id": "rebuildMetamodel",
"memberType": "action",
"links": [
{
- "rel": "urn:org.restfulobjects:rels/details;action=\"downloadLayoutXml\"",
- "href": "https://localhost:8080/restful/objects/demo.JavaLangStrings/PADw_eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiBzdGFuZGFsb25lPSJ5ZXMiPz4KPERlbW8vPgo=/actions/downloadLayoutXml",
+ "rel": "urn:org.restfulobjects:rels/details;action=\"rebuildMetamodel\"",
+ "href": "https://demo-wicket.isis.incode.work/restful/objects/demo.JavaLangStrings/PADw_eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiBzdGFuZGFsb25lPSJ5ZXMiPz4KPERlbW8vPgo=/actions/rebuildMetamodel",
"method": "GET",
"type": "application/json;profile=\"urn:org.restfulobjects:repr-types/object-action\""
}
]
},
- "rebuildMetamodel": {
- "id": "rebuildMetamodel",
+ "downloadLayoutXml": {
+ "id": "downloadLayoutXml",
"memberType": "action",
"links": [
{
- "rel": "urn:org.restfulobjects:rels/details;action=\"rebuildMetamodel\"",
- "href": "https://localhost:8080/restful/objects/demo.JavaLangStrings/PADw_eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiBzdGFuZGFsb25lPSJ5ZXMiPz4KPERlbW8vPgo=/actions/rebuildMetamodel",
+ "rel": "urn:org.restfulobjects:rels/details;action=\"downloadLayoutXml\"",
+ "href": "https://demo-wicket.isis.incode.work/restful/objects/demo.JavaLangStrings/PADw_eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiBzdGFuZGFsb25lPSJ5ZXMiPz4KPERlbW8vPgo=/actions/downloadLayoutXml",
"method": "GET",
"type": "application/json;profile=\"urn:org.restfulobjects:repr-types/object-action\""
}
]
},
- "recentCommands": {
- "id": "recentCommands",
+ "openRestApi": {
+ "id": "openRestApi",
"memberType": "action",
"links": [
{
- "rel": "urn:org.restfulobjects:rels/details;action=\"recentCommands\"",
- "href": "https://localhost:8080/restful/objects/demo.JavaLangStrings/PADw_eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiBzdGFuZGFsb25lPSJ5ZXMiPz4KPERlbW8vPgo=/actions/recentCommands",
+ "rel": "urn:org.restfulobjects:rels/details;action=\"openRestApi\"",
+ "href": "https://demo-wicket.isis.incode.work/restful/objects/demo.JavaLangStrings/PADw_eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiBzdGFuZGFsb25lPSJ5ZXMiPz4KPERlbW8vPgo=/actions/openRestApi",
"method": "GET",
"type": "application/json;profile=\"urn:org.restfulobjects:repr-types/object-action\""
}
]
},
- "downloadMetamodelXml": {
- "id": "downloadMetamodelXml",
+ "inspectMetamodel": {
+ "id": "inspectMetamodel",
"memberType": "action",
"links": [
{
- "rel": "urn:org.restfulobjects:rels/details;action=\"downloadMetamodelXml\"",
- "href": "https://localhost:8080/restful/objects/demo.JavaLangStrings/PADw_eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiBzdGFuZGFsb25lPSJ5ZXMiPz4KPERlbW8vPgo=/actions/downloadMetamodelXml",
+ "rel": "urn:org.restfulobjects:rels/details;action=\"inspectMetamodel\"",
+ "href": "https://demo-wicket.isis.incode.work/restful/objects/demo.JavaLangStrings/PADw_eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiBzdGFuZGFsb25lPSJ5ZXMiPz4KPERlbW8vPgo=/actions/inspectMetamodel",
"method": "GET",
"type": "application/json;profile=\"urn:org.restfulobjects:repr-types/object-action\""
}
]
},
- "inspectMetamodel": {
- "id": "inspectMetamodel",
+ "recentCommands": {
+ "id": "recentCommands",
"memberType": "action",
"links": [
{
- "rel": "urn:org.restfulobjects:rels/details;action=\"inspectMetamodel\"",
- "href": "https://localhost:8080/restful/objects/demo.JavaLangStrings/PADw_eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiBzdGFuZGFsb25lPSJ5ZXMiPz4KPERlbW8vPgo=/actions/inspectMetamodel",
+ "rel": "urn:org.restfulobjects:rels/details;action=\"recentCommands\"",
+ "href": "https://demo-wicket.isis.incode.work/restful/objects/demo.JavaLangStrings/PADw_eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiBzdGFuZGFsb25lPSJ5ZXMiPz4KPERlbW8vPgo=/actions/recentCommands",
"method": "GET",
"type": "application/json;profile=\"urn:org.restfulobjects:repr-types/object-action\""
}
diff --git a/incubator/clients/kroviz/src/test/kotlin/org/apache/isis/client/kroviz/snapshots/demo2_0_0/RESTFUL.kt b/incubator/clients/kroviz/src/test/kotlin/org/apache/isis/client/kroviz/snapshots/demo2_0_0/RESTFUL.kt
new file mode 100644
index 0000000..8cb4c89
--- /dev/null
+++ b/incubator/clients/kroviz/src/test/kotlin/org/apache/isis/client/kroviz/snapshots/demo2_0_0/RESTFUL.kt
@@ -0,0 +1,61 @@
+/*
+ * 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.snapshots.demo2_0_0
+
+import org.apache.isis.client.kroviz.snapshots.Response
+
+object RESTFUL : Response(){
+ override val url = "http://localhost:8080/restful/"
+ override val str = """
+{
+ "links" : [ {
+ "rel" : "self",
+ "href" : "http://localhost:8080/restful/",
+ "method" : "GET",
+ "type" : "application/json;profile=\"urn:org.restfulobjects:repr-types/homepage\""
+ }, {
+ "rel" : "urn:org.restfulobjects:rels/user",
+ "href" : "http://localhost:8080/restful/user",
+ "method" : "GET",
+ "type" : "application/json;profile=\"urn:org.restfulobjects:repr-types/user\""
+ }, {
+ "rel" : "urn:org.apache.isis.restfulobjects:rels/menuBars",
+ "href" : "http://localhost:8080/restful/menuBars",
+ "method" : "GET",
+ "type" : "application/json;profile=\"urn:org.restfulobjects:repr-types/layout-menubars\""
+ }, {
+ "rel" : "urn:org.restfulobjects:rels/services",
+ "href" : "http://localhost:8080/restful/services",
+ "method" : "GET",
+ "type" : "application/json;profile=\"urn:org.restfulobjects:repr-types/list\""
+ }, {
+ "rel" : "urn:org.restfulobjects:rels/version",
+ "href" : "http://localhost:8080/restful/version",
+ "method" : "GET",
+ "type" : "application/json;profile=\"urn:org.restfulobjects:repr-types/version\""
+ }, {
+ "rel" : "urn:org.restfulobjects:rels/domain-types",
+ "href" : "http://localhost:8080/restful/domain-types",
+ "method" : "GET",
+ "type" : "application/json;profile=\"urn:org.restfulobjects:repr-types/type-list\""
+ } ],
+ "extensions" : { }
+}
+ """
+}
diff --git a/incubator/clients/kroviz/src/test/kotlin/org/apache/isis/client/kroviz/snapshots/demo2_0_0/Response2Handler.kt b/incubator/clients/kroviz/src/test/kotlin/org/apache/isis/client/kroviz/snapshots/demo2_0_0/Response2Handler.kt
new file mode 100644
index 0000000..84cb1f5
--- /dev/null
+++ b/incubator/clients/kroviz/src/test/kotlin/org/apache/isis/client/kroviz/snapshots/demo2_0_0/Response2Handler.kt
@@ -0,0 +1,50 @@
+/*
+ * 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.snapshots.demo2_0_0
+
+import org.apache.isis.client.kroviz.handler.*
+
+object Response2Handler {
+
+ val map = mapOf(
+ RESTFUL to RestfulHandler(),
+ ACTIONS_STRINGS to ActionHandler(),
+ ACTIONS_STRINGS_INVOKE to TObjectHandler(),
+ ACTIONS_TEXT_INVOKE to TObjectHandler(),
+ ASSOCIATED_ACTION_OBJECT_LAYOUT to LayoutHandler(),
+ COLLECTIONS_ENTITIES to CollectionHandler(),
+ DOMAIN_TYPES_PROPERTY to PropertyHandler(),
+ FILE_NODE to DomainTypeHandler(),
+ HTTP_ERROR_405 to HttpErrorHandler(),
+ HTTP_ERROR_500 to HttpErrorHandler(),
+ MENUBARS to MenuBarsHandler(),
+ OBJECT_LAYOUT to LayoutHandler(),
+ PRIMITIVES to TObjectHandler(),
+ PROPERTY to PropertyHandler(),
+ PROPERTY_DESCRIPTION to PropertyHandler(),
+ RESTFUL_DOMAIN_TYPES to DomainTypesHandler(),
+ TAB_OBJECT_LAYOUT to LayoutHandler(),
+ TAB_LAYOUT_XML to LayoutXmlHandler(),
+ TEMPORALS to TObjectHandler(),
+ TEXT_LAYOUT to LayoutHandler(),
+ TOOLTIP_OBJECT_LAYOUT to LayoutHandler(),
+ TUPLE_OBJECT_LAYOUT to LayoutHandler(),
+ )
+
+}
diff --git a/incubator/clients/kroviz/src/test/kotlin/org/apache/isis/client/kroviz/snapshots/sample.json b/incubator/clients/kroviz/src/test/kotlin/org/apache/isis/client/kroviz/snapshots/sample.json
index 748e11b..d83647d 100644
--- a/incubator/clients/kroviz/src/test/kotlin/org/apache/isis/client/kroviz/snapshots/sample.json
+++ b/incubator/clients/kroviz/src/test/kotlin/org/apache/isis/client/kroviz/snapshots/sample.json
@@ -1,45 +1,154 @@
{
- "id": "entities",
- "memberType": "collection",
"links": [
{
"rel": "self",
- "href": "http://localhost:8080/restful/objects/demo.JavaLangStrings/PADw_eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiBzdGFuZGFsb25lPSJ5ZXMiPz4KPERlbW8vPgo=/collections/entities",
- "method": "GET",
- "type": "application/json;profile=\"urn:org.restfulobjects:repr-types/object-collection\""
- },
- {
- "rel": "up",
- "href": "http://localhost:8080/restful/objects/demo.JavaLangStrings/PADw_eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiBzdGFuZGFsb25lPSJ5ZXMiPz4KPERlbW8vPgo=",
+ "href": "https://demo-wicket.isis.incode.work/restful/objects/demo.JavaLangStrings/PADw_eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiBzdGFuZGFsb25lPSJ5ZXMiPz4KPERlbW8vPgo=",
"method": "GET",
"type": "application/json;profile=\"urn:org.restfulobjects:repr-types/object\"",
"title": "String data type"
},
{
"rel": "describedby",
- "href": "http://localhost:8080/restful/domain-types/demo.JavaLangStrings/collections/entities",
+ "href": "https://demo-wicket.isis.incode.work/restful/domain-types/demo.JavaLangStrings",
"method": "GET",
- "type": "application/json;profile=\"urn:org.restfulobjects:repr-types/collection-description\""
- }
- ],
- "extensions": {
- "collectionSemantics": "list"
- },
- "value": [
+ "type": "application/json;profile=\"urn:org.restfulobjects:repr-types/domain-type\""
+ },
{
- "rel": "urn:org.restfulobjects:rels/value",
- "href": "http://localhost:8080/restful/objects/demo.JavaLangStringJdo/1",
+ "rel": "urn:org.apache.isis.restfulobjects:rels/object-layout",
+ "href": "https://demo-wicket.isis.incode.work/restful/objects/demo.JavaLangStrings/PADw_eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiBzdGFuZGFsb25lPSJ5ZXMiPz4KPERlbW8vPgo=/object-layout",
"method": "GET",
- "type": "application/json;profile=\"urn:org.restfulobjects:repr-types/object\"",
- "title": "StringJDO entity: Hello"
+ "type": "application/json;profile=\"urn:org.restfulobjects:repr-types/object-layout-bs3\""
},
{
- "rel": "urn:org.restfulobjects:rels/value",
- "href": "http://localhost:8080/restful/objects/demo.JavaLangStringJdo/2",
+ "rel": "urn:org.apache.isis.restfulobjects:rels/object-icon",
+ "href": "https://demo-wicket.isis.incode.work/restful/objects/demo.JavaLangStrings/PADw_eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiBzdGFuZGFsb25lPSJ5ZXMiPz4KPERlbW8vPgo=/image",
"method": "GET",
+ "type": "image/png"
+ },
+ {
+ "rel": "urn:org.restfulobjects:rels/update",
+ "href": "https://demo-wicket.isis.incode.work/restful/objects/demo.JavaLangStrings:PADw_eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiBzdGFuZGFsb25lPSJ5ZXMiPz4KPERlbW8vPgo=",
+ "method": "PUT",
"type": "application/json;profile=\"urn:org.restfulobjects:repr-types/object\"",
- "title": "StringJDO entity: world"
+ "arguments": {}
}
],
- "disabledReason": "Immutable"
+ "extensions": {
+ "oid": "demo.JavaLangStrings:PADw_eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiBzdGFuZGFsb25lPSJ5ZXMiPz4KPERlbW8vPgo=",
+ "isService": false,
+ "isPersistent": true
+ },
+ "title": "String data type",
+ "domainType": "demo.JavaLangStrings",
+ "instanceId": "PADw_eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiBzdGFuZGFsb25lPSJ5ZXMiPz4KPERlbW8vPgo=",
+ "members": {
+ "entities": {
+ "id": "entities",
+ "memberType": "collection",
+ "links": [
+ {
+ "rel": "urn:org.restfulobjects:rels/details;collection=\"entities\"",
+ "href": "https://demo-wicket.isis.incode.work/restful/objects/demo.JavaLangStrings/PADw_eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiBzdGFuZGFsb25lPSJ5ZXMiPz4KPERlbW8vPgo=/collections/entities",
+ "method": "GET",
+ "type": "application/json;profile=\"urn:org.restfulobjects:repr-types/object-collection\""
+ }
+ ]
+ },
+ "openViewModel": {
+ "id": "openViewModel",
+ "memberType": "action",
+ "links": [
+ {
+ "rel": "urn:org.restfulobjects:rels/details;action=\"openViewModel\"",
+ "href": "https://demo-wicket.isis.incode.work/restful/objects/demo.JavaLangStrings/PADw_eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiBzdGFuZGFsb25lPSJ5ZXMiPz4KPERlbW8vPgo=/actions/openViewModel",
+ "method": "GET",
+ "type": "application/json;profile=\"urn:org.restfulobjects:repr-types/object-action\""
+ }
+ ]
+ },
+ "clearHints": {
+ "id": "clearHints",
+ "memberType": "action",
+ "links": [
+ {
+ "rel": "urn:org.restfulobjects:rels/details;action=\"clearHints\"",
+ "href": "https://demo-wicket.isis.incode.work/restful/objects/demo.JavaLangStrings/PADw_eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiBzdGFuZGFsb25lPSJ5ZXMiPz4KPERlbW8vPgo=/actions/clearHints",
+ "method": "GET",
+ "type": "application/json;profile=\"urn:org.restfulobjects:repr-types/object-action\""
+ }
+ ]
+ },
+ "inspectMetamodel": {
+ "id": "inspectMetamodel",
+ "memberType": "action",
+ "links": [
+ {
+ "rel": "urn:org.restfulobjects:rels/details;action=\"inspectMetamodel\"",
+ "href": "https://demo-wicket.isis.incode.work/restful/objects/demo.JavaLangStrings/PADw_eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiBzdGFuZGFsb25lPSJ5ZXMiPz4KPERlbW8vPgo=/actions/inspectMetamodel",
+ "method": "GET",
+ "type": "application/json;profile=\"urn:org.restfulobjects:repr-types/object-action\""
+ }
+ ]
+ },
+ "downloadLayoutXml": {
+ "id": "downloadLayoutXml",
+ "memberType": "action",
+ "links": [
+ {
+ "rel": "urn:org.restfulobjects:rels/details;action=\"downloadLayoutXml\"",
+ "href": "https://demo-wicket.isis.incode.work/restful/objects/demo.JavaLangStrings/PADw_eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiBzdGFuZGFsb25lPSJ5ZXMiPz4KPERlbW8vPgo=/actions/downloadLayoutXml",
+ "method": "GET",
+ "type": "application/json;profile=\"urn:org.restfulobjects:repr-types/object-action\""
+ }
+ ]
+ },
+ "rebuildMetamodel": {
+ "id": "rebuildMetamodel",
+ "memberType": "action",
+ "links": [
+ {
+ "rel": "urn:org.restfulobjects:rels/details;action=\"rebuildMetamodel\"",
+ "href": "https://demo-wicket.isis.incode.work/restful/objects/demo.JavaLangStrings/PADw_eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiBzdGFuZGFsb25lPSJ5ZXMiPz4KPERlbW8vPgo=/actions/rebuildMetamodel",
+ "method": "GET",
+ "type": "application/json;profile=\"urn:org.restfulobjects:repr-types/object-action\""
+ }
+ ]
+ },
+ "recentCommands": {
+ "id": "recentCommands",
+ "memberType": "action",
+ "links": [
+ {
+ "rel": "urn:org.restfulobjects:rels/details;action=\"recentCommands\"",
+ "href": "https://demo-wicket.isis.incode.work/restful/objects/demo.JavaLangStrings/PADw_eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiBzdGFuZGFsb25lPSJ5ZXMiPz4KPERlbW8vPgo=/actions/recentCommands",
+ "method": "GET",
+ "type": "application/json;profile=\"urn:org.restfulobjects:repr-types/object-action\""
+ }
+ ]
+ },
+ "downloadMetamodelXml": {
+ "id": "downloadMetamodelXml",
+ "memberType": "action",
+ "links": [
+ {
+ "rel": "urn:org.restfulobjects:rels/details;action=\"downloadMetamodelXml\"",
+ "href": "https://demo-wicket.isis.incode.work/restful/objects/demo.JavaLangStrings/PADw_eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiBzdGFuZGFsb25lPSJ5ZXMiPz4KPERlbW8vPgo=/actions/downloadMetamodelXml",
+ "method": "GET",
+ "type": "application/json;profile=\"urn:org.restfulobjects:repr-types/object-action\""
+ }
+ ]
+ },
+ "openRestApi": {
+ "id": "openRestApi",
+ "memberType": "action",
+ "links": [
+ {
+ "rel": "urn:org.restfulobjects:rels/details;action=\"openRestApi\"",
+ "href": "https://demo-wicket.isis.incode.work/restful/objects/demo.JavaLangStrings/PADw_eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiBzdGFuZGFsb25lPSJ5ZXMiPz4KPERlbW8vPgo=/actions/openRestApi",
+ "method": "GET",
+ "type": "application/json;profile=\"urn:org.restfulobjects:repr-types/object-action\""
+ }
+ ]
+ }
+ }
}
diff --git a/incubator/clients/kroviz/src/test/kotlin/org/apache/isis/client/kroviz/snapshots/sample.svg b/incubator/clients/kroviz/src/test/kotlin/org/apache/isis/client/kroviz/snapshots/sample.svg
deleted file mode 100644
index 1b2faa4..0000000
--- a/incubator/clients/kroviz/src/test/kotlin/org/apache/isis/client/kroviz/snapshots/sample.svg
+++ /dev/null
@@ -1,65 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg xmlns="http://www.w3.org/2000/svg" contentScriptType="application/ecmascript" contentStyleType="text/css"
- height="203px" preserveAspectRatio="none" style="width:309px;height:203px;" version="1.1" viewBox="0 0 309 203"
- width="309px" zoomAndPan="magnify">
- <defs>
- <filter height="300%" id="f1xj00ih3jrk7f" width="300%" x="-1" y="-1">
- <feGaussianBlur result="blurOut" stdDeviation="2.0"/>
- <feColorMatrix in="blurOut" result="blurOut2" type="matrix"
- values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/>
- <feOffset dx="4.0" dy="4.0" in="blurOut2" result="blurOut3"/>
- <feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/>
- </filter>
- </defs>
- <g><!--MD5=[f621a9b5735c62a9e50fa7c1e42ea0f4]↵cluster domainapp.modules.simple.dom.impl-->
- <polygon fill="#FFFFFF" filter="url(#f1xj00ih3jrk7f)"
- points="14,16,277,16,284,38.7999,287,38.7999,287,191,14,191,14,16"
- style="stroke: #000000; stroke-width: 1.5;"/>
- <line style="stroke: #000000; stroke-width: 1.5;" x1="14" x2="284" y1="38.7999" y2="38.7999"/>
- <text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs"
- textLength="257" x="18" y="31.9999">domainapp.modules.simple.dom.impl
- </text><!--MD5=[e6e8857f289496579330543e748c2106]↵class SimpleObject-->
- <rect fill="#FEFECE" filter="url(#f1xj00ih3jrk7f)" height="140.3993" id="SimpleObject"
- style="stroke: #A80036; stroke-width: 1.5;" width="129" x="85.5" y="43"/>
- <ellipse cx="112.2" cy="59" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
- <path d="M111.5594,62.7813 Q112.3563,62.7813 112.9266,62.5859 Q113.4969,62.3906 113.7391,62.1641 Q113.9813,61.9375 114.2234,61.7422 Q114.4656,61.5469 114.6844,61.5469 Q115.0281,61.5469 115.2859,61.8047 Q115.5438,62.0625 115.5438,62.3906 Q115.5438,63.125 114.3797,63.8047 Q113.2156,64.4844 111.5125,64.4844 Q109.3563,64.4844 107.9344,63.2188 Q106.5125,61.9531 106.5125,60.0156 L106.5125,58.8906 Q106.5125,56.8594 107.8406,55.4766 Q109.1688,54.0938 111.1375,54.0938 Q112.325,54.0938 113 [...]
- <text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="71"
- x="128.8" y="63.8">SimpleObject
- </text>
- <line style="stroke: #A80036; stroke-width: 1.5;" x1="86.5" x2="213.5" y1="75" y2="75"/>
- <line style="stroke: #A80036; stroke-width: 1.5;" x1="86.5" x2="213.5" y1="83" y2="83"/>
- <text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="93"
- x="91.5" y="97.9999">rebuildMetamodel()
- </text>
- <text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="117"
- x="91.5" y="111.1998">downloadJdoMetadata()
- </text>
- <text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="69"
- x="91.5" y="124.3997">openRestApi()
- </text>
- <text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="104"
- x="91.5" y="137.5996">downloadLayoutXml()
- </text>
- <text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="37"
- x="91.5" y="150.7995">delete()
- </text>
- <text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="70"
- x="91.5" y="163.9994">updateName()
- </text>
- <text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="56"
- x="91.5" y="177.1993">clearHints()
- </text><!--MD5=[903507c5920b0ecb2f83cd94e1c42ae5]↵@startuml
-↵package domainapp.modules.simple.dom.impl {
-↵class SimpleObject
-↵SimpleObject : rebuildMetamodel()
-↵SimpleObject : downloadJdoMetadata()
-↵SimpleObject : openRestApi()
-↵SimpleObject : downloadLayoutXml()
-↵SimpleObject : delete()
-↵SimpleObject : updateName()
-↵SimpleObject : clearHints()
-↵}
-↵@enduml
-↵↵PlantUML version 1.2020.04(Thu Mar 19 10:16:49 GMT 2020)↵(GPL source distribution)↵Java Runtime: OpenJDK Runtime Environment↵JVM: OpenJDK 64-Bit Server VM↵Java Version: 1.8.0_191-b12↵Operating System: Linux↵Default Encoding: UTF-8↵Language: en↵Country: US↵-->
- </g>
-</svg>
diff --git a/incubator/clients/kroviz/src/test/kotlin/org/apache/isis/client/kroviz/snapshots/sample.xml b/incubator/clients/kroviz/src/test/kotlin/org/apache/isis/client/kroviz/snapshots/sample.xml
deleted file mode 100644
index 73edc52..0000000
--- a/incubator/clients/kroviz/src/test/kotlin/org/apache/isis/client/kroviz/snapshots/sample.xml
+++ /dev/null
@@ -1,88 +0,0 @@
-<bs3:grid xmlns:cpt="http://isis.apache.org/applib/layout/component" xmlns:lnk="http://isis.apache.org/applib/layout/links" xmlns:bs3="http://isis.apache.org/applib/layout/grid/bootstrap3">
- <bs3:row>
- <bs3:col span="12" unreferencedActions="true">
- <cpt:domainObject>
- <cpt:link>
- <lnk:rel>urn:org.restfulobjects:rels/element</lnk:rel>
- <lnk:method>GET</lnk:method>
- <lnk:href>http://localhost:8080/restful/objects/isisApplib.ConfigurationProperty/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9InllcyI_Pgo8Y29uZmlndXJhdGlvblByb3BlcnR5PgogICAgPGtleT5pc2lzLmFwcE1hbmlmZXN0PC9rZXk-CiAgICA8dmFsdWU-ZG9tYWluYXBwLmFwcGxpY2F0aW9uLm1hbmlmZXN0LkRvbWFpbkFwcEFwcE1hbmlmZXN0PC92YWx1ZT4KPC9jb25maWd1cmF0aW9uUHJvcGVydHk-Cg==</lnk:href>
- <lnk:type>application/json;profile="urn:org.restfulobjects:repr-types/object"</lnk:type>
- </cpt:link>
- </cpt:domainObject>
- <cpt:action hidden="EVERYWHERE" id="clearHints">
- <cpt:link>
- <lnk:rel>urn:org.restfulobjects:rels/action</lnk:rel>
- <lnk:method>GET</lnk:method>
- <lnk:href>http://localhost:8080/restful/objects/isisApplib.ConfigurationProperty/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9InllcyI_Pgo8Y29uZmlndXJhdGlvblByb3BlcnR5PgogICAgPGtleT5pc2lzLmFwcE1hbmlmZXN0PC9rZXk-CiAgICA8dmFsdWU-ZG9tYWluYXBwLmFwcGxpY2F0aW9uLm1hbmlmZXN0LkRvbWFpbkFwcEFwcE1hbmlmZXN0PC92YWx1ZT4KPC9jb25maWd1cmF0aW9uUHJvcGVydHk-Cg==/actions/clearHints</lnk:href>
- <lnk:type>application/json;profile="urn:org.restfulobjects:repr-types/object-action"</lnk:type>
- </cpt:link>
- </cpt:action>
- <cpt:action id="openRestApi">
- <cpt:link>
- <lnk:rel>urn:org.restfulobjects:rels/action</lnk:rel>
- <lnk:method>GET</lnk:method>
- <lnk:href>http://localhost:8080/restful/objects/isisApplib.ConfigurationProperty/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9InllcyI_Pgo8Y29uZmlndXJhdGlvblByb3BlcnR5PgogICAgPGtleT5pc2lzLmFwcE1hbmlmZXN0PC9rZXk-CiAgICA8dmFsdWU-ZG9tYWluYXBwLmFwcGxpY2F0aW9uLm1hbmlmZXN0LkRvbWFpbkFwcEFwcE1hbmlmZXN0PC92YWx1ZT4KPC9jb25maWd1cmF0aW9uUHJvcGVydHk-Cg==/actions/openRestApi</lnk:href>
- <lnk:type>application/json;profile="urn:org.restfulobjects:repr-types/object-action"</lnk:type>
- </cpt:link>
- </cpt:action>
- </bs3:col>
- </bs3:row>
- <bs3:row>
- <bs3:col span="12">
- <bs3:tabGroup>
- <bs3:tab name="General">
- <bs3:row>
- <bs3:col span="8">
- <cpt:fieldSet name="Property" id="key">
- <cpt:action id="downloadLayoutXml" position="PANEL_DROPDOWN">
- <cpt:link>
- <lnk:rel>urn:org.restfulobjects:rels/action</lnk:rel>
- <lnk:method>GET</lnk:method>
- <lnk:href>http://localhost:8080/restful/objects/isisApplib.ConfigurationProperty/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9InllcyI_Pgo8Y29uZmlndXJhdGlvblByb3BlcnR5PgogICAgPGtleT5pc2lzLmFwcE1hbmlmZXN0PC9rZXk-CiAgICA8dmFsdWU-ZG9tYWluYXBwLmFwcGxpY2F0aW9uLm1hbmlmZXN0LkRvbWFpbkFwcEFwcE1hbmlmZXN0PC92YWx1ZT4KPC9jb25maWd1cmF0aW9uUHJvcGVydHk-Cg==/actions/downloadLayoutXml</lnk:href>
- <lnk:type>application/json;profile="urn:org.restfulobjects:repr-types/object-action"</lnk:type>
- </cpt:link>
- </cpt:action>
- <cpt:action id="rebuildMetamodel" position="PANEL_DROPDOWN">
- <cpt:link>
- <lnk:rel>urn:org.restfulobjects:rels/action</lnk:rel>
- <lnk:method>GET</lnk:method>
- <lnk:href>http://localhost:8080/restful/objects/isisApplib.ConfigurationProperty/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9InllcyI_Pgo8Y29uZmlndXJhdGlvblByb3BlcnR5PgogICAgPGtleT5pc2lzLmFwcE1hbmlmZXN0PC9rZXk-CiAgICA8dmFsdWU-ZG9tYWluYXBwLmFwcGxpY2F0aW9uLm1hbmlmZXN0LkRvbWFpbkFwcEFwcE1hbmlmZXN0PC92YWx1ZT4KPC9jb25maWd1cmF0aW9uUHJvcGVydHk-Cg==/actions/rebuildMetamodel</lnk:href>
- <lnk:type>application/json;profile="urn:org.restfulobjects:repr-types/object-action"</lnk:type>
- </cpt:link>
- </cpt:action>
- <cpt:property id="key">
- <cpt:link>
- <lnk:rel>urn:org.restfulobjects:rels/property</lnk:rel>
- <lnk:method>GET</lnk:method>
- <lnk:href>http://localhost:8080/restful/objects/isisApplib.ConfigurationProperty/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9InllcyI_Pgo8Y29uZmlndXJhdGlvblByb3BlcnR5PgogICAgPGtleT5pc2lzLmFwcE1hbmlmZXN0PC9rZXk-CiAgICA8dmFsdWU-ZG9tYWluYXBwLmFwcGxpY2F0aW9uLm1hbmlmZXN0LkRvbWFpbkFwcEFwcE1hbmlmZXN0PC92YWx1ZT4KPC9jb25maWd1cmF0aW9uUHJvcGVydHk-Cg==/properties/key</lnk:href>
- <lnk:type>application/json;profile="urn:org.restfulobjects:repr-types/object-property"</lnk:type>
- </cpt:link>
- </cpt:property>
- <cpt:property id="value" multiLine="5">
- <cpt:link>
- <lnk:rel>urn:org.restfulobjects:rels/property</lnk:rel>
- <lnk:method>GET</lnk:method>
- <lnk:href>http://localhost:8080/restful/objects/isisApplib.ConfigurationProperty/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9InllcyI_Pgo8Y29uZmlndXJhdGlvblByb3BlcnR5PgogICAgPGtleT5pc2lzLmFwcE1hbmlmZXN0PC9rZXk-CiAgICA8dmFsdWU-ZG9tYWluYXBwLmFwcGxpY2F0aW9uLm1hbmlmZXN0LkRvbWFpbkFwcEFwcE1hbmlmZXN0PC92YWx1ZT4KPC9jb25maWd1cmF0aW9uUHJvcGVydHk-Cg==/properties/value</lnk:href>
- <lnk:type>application/json;profile="urn:org.restfulobjects:repr-types/object-property"</lnk:type>
- </cpt:link>
- </cpt:property>
- </cpt:fieldSet>
- </bs3:col>
- </bs3:row>
- </bs3:tab>
- <bs3:tab name="Other">
- <bs3:row>
- <bs3:col span="12">
- <cpt:fieldSet name="Other" id="other" unreferencedProperties="true"/>
- </bs3:col>
- </bs3:row>
- </bs3:tab>
- </bs3:tabGroup>
- </bs3:col>
- </bs3:row>
- <bs3:row>
- <bs3:col span="12">
- <bs3:tabGroup unreferencedCollections="true"/>
- </bs3:col>
- </bs3:row>
-</bs3:grid>
diff --git a/incubator/clients/kroviz/src/test/kotlin/org/apache/isis/client/kroviz/snapshots/action_string.json b/incubator/clients/kroviz/src/test/kotlin/org/apache/isis/client/kroviz/snapshots/sample2.json
similarity index 58%
rename from incubator/clients/kroviz/src/test/kotlin/org/apache/isis/client/kroviz/snapshots/action_string.json
rename to incubator/clients/kroviz/src/test/kotlin/org/apache/isis/client/kroviz/snapshots/sample2.json
index fc8e52c..76f02a3 100644
--- a/incubator/clients/kroviz/src/test/kotlin/org/apache/isis/client/kroviz/snapshots/action_string.json
+++ b/incubator/clients/kroviz/src/test/kotlin/org/apache/isis/client/kroviz/snapshots/sample2.json
@@ -42,6 +42,76 @@
"domainType": "demo.JavaLangStrings",
"instanceId": "PADw_eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiBzdGFuZGFsb25lPSJ5ZXMiPz4KPERlbW8vPgo=",
"members": {
+ "description": {
+ "id": "description",
+ "memberType": "property",
+ "links": [
+ {
+ "rel": "urn:org.restfulobjects:rels/details;property=\"description\"",
+ "href": "https://demo-wicket.isis.incode.work/restful/objects/demo.JavaLangStrings/PADw_eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiBzdGFuZGFsb25lPSJ5ZXMiPz4KPERlbW8vPgo=/properties/description",
+ "method": "GET",
+ "type": "application/json;profile=\"urn:org.restfulobjects:repr-types/object-property\""
+ }
+ ],
+ "value": "<div class=\"paragraph\">\n<p>The framework has built-in support for the <code>String</code> data type.</p>\n</div>\n<div class=\"paragraph\">\n<p>From here you can:</p>\n</div>\n<div class=\"ulist\">\n<ul>\n<li>\n<p>navigate to an entity that uses the <code>String</code> datatype</p>\n</li>\n<li>\n<p>open a view model that uses the <code>String</code> datatype</p>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>Some properties on these domain objects are mandatory, [...]
+ "format": "string",
+ "extensions": {
+ "x-isis-format": "string"
+ },
+ "disabledReason": "Contributed property"
+ },
+ "objectType": {
+ "id": "objectType",
+ "memberType": "property",
+ "links": [
+ {
+ "rel": "urn:org.restfulobjects:rels/details;property=\"objectType\"",
+ "href": "https://demo-wicket.isis.incode.work/restful/objects/demo.JavaLangStrings/PADw_eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiBzdGFuZGFsb25lPSJ5ZXMiPz4KPERlbW8vPgo=/properties/objectType",
+ "method": "GET",
+ "type": "application/json;profile=\"urn:org.restfulobjects:repr-types/object-property\""
+ }
+ ],
+ "value": "demo.JavaLangStrings",
+ "extensions": {
+ "x-isis-format": "string"
+ },
+ "disabledReason": "Contributed property"
+ },
+ "objectIdentifier": {
+ "id": "objectIdentifier",
+ "memberType": "property",
+ "links": [
+ {
+ "rel": "urn:org.restfulobjects:rels/details;property=\"objectIdentifier\"",
+ "href": "https://demo-wicket.isis.incode.work/restful/objects/demo.JavaLangStrings/PADw_eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiBzdGFuZGFsb25lPSJ5ZXMiPz4KPERlbW8vPgo=/properties/objectIdentifier",
+ "method": "GET",
+ "type": "application/json;profile=\"urn:org.restfulobjects:repr-types/object-property\""
+ }
+ ],
+ "value": "»1a9012b0",
+ "extensions": {
+ "x-isis-format": "string"
+ },
+ "disabledReason": "Contributed property"
+ },
+ "sources": {
+ "id": "sources",
+ "memberType": "property",
+ "links": [
+ {
+ "rel": "urn:org.restfulobjects:rels/details;property=\"sources\"",
+ "href": "https://demo-wicket.isis.incode.work/restful/objects/demo.JavaLangStrings/PADw_eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiBzdGFuZGFsb25lPSJ5ZXMiPz4KPERlbW8vPgo=/properties/sources",
+ "method": "GET",
+ "type": "application/json;profile=\"urn:org.restfulobjects:repr-types/object-property\""
+ }
+ ],
+ "value": "<div class=\"paragraph\">\n<p><a href=\"https://github.com/apache/isis/tree/master/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/strings\">Sources</a> for this demo</p>\n</div>",
+ "format": "string",
+ "extensions": {
+ "x-isis-format": "string"
+ },
+ "disabledReason": "Contributed property"
+ },
"entities": {
"id": "entities",
"memberType": "collection",
@@ -52,8 +122,7 @@
"method": "GET",
"type": "application/json;profile=\"urn:org.restfulobjects:repr-types/object-collection\""
}
- ],
- "disabledReason": "Immutable"
+ ]
},
"openViewModel": {
"id": "openViewModel",
@@ -79,25 +148,13 @@
}
]
},
- "openRestApi": {
- "id": "openRestApi",
- "memberType": "action",
- "links": [
- {
- "rel": "urn:org.restfulobjects:rels/details;action=\"openRestApi\"",
- "href": "https://demo-wicket.isis.incode.work/restful/objects/demo.JavaLangStrings/PADw_eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiBzdGFuZGFsb25lPSJ5ZXMiPz4KPERlbW8vPgo=/actions/openRestApi",
- "method": "GET",
- "type": "application/json;profile=\"urn:org.restfulobjects:repr-types/object-action\""
- }
- ]
- },
- "downloadLayoutXml": {
- "id": "downloadLayoutXml",
+ "downloadMetamodelXml": {
+ "id": "downloadMetamodelXml",
"memberType": "action",
"links": [
{
- "rel": "urn:org.restfulobjects:rels/details;action=\"downloadLayoutXml\"",
- "href": "https://demo-wicket.isis.incode.work/restful/objects/demo.JavaLangStrings/PADw_eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiBzdGFuZGFsb25lPSJ5ZXMiPz4KPERlbW8vPgo=/actions/downloadLayoutXml",
+ "rel": "urn:org.restfulobjects:rels/details;action=\"downloadMetamodelXml\"",
+ "href": "https://demo-wicket.isis.incode.work/restful/objects/demo.JavaLangStrings/PADw_eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiBzdGFuZGFsb25lPSJ5ZXMiPz4KPERlbW8vPgo=/actions/downloadMetamodelXml",
"method": "GET",
"type": "application/json;profile=\"urn:org.restfulobjects:repr-types/object-action\""
}
@@ -115,25 +172,25 @@
}
]
},
- "recentCommands": {
- "id": "recentCommands",
+ "downloadLayoutXml": {
+ "id": "downloadLayoutXml",
"memberType": "action",
"links": [
{
- "rel": "urn:org.restfulobjects:rels/details;action=\"recentCommands\"",
- "href": "https://demo-wicket.isis.incode.work/restful/objects/demo.JavaLangStrings/PADw_eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiBzdGFuZGFsb25lPSJ5ZXMiPz4KPERlbW8vPgo=/actions/recentCommands",
+ "rel": "urn:org.restfulobjects:rels/details;action=\"downloadLayoutXml\"",
+ "href": "https://demo-wicket.isis.incode.work/restful/objects/demo.JavaLangStrings/PADw_eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiBzdGFuZGFsb25lPSJ5ZXMiPz4KPERlbW8vPgo=/actions/downloadLayoutXml",
"method": "GET",
"type": "application/json;profile=\"urn:org.restfulobjects:repr-types/object-action\""
}
]
},
- "downloadMetamodelXml": {
- "id": "downloadMetamodelXml",
+ "openRestApi": {
+ "id": "openRestApi",
"memberType": "action",
"links": [
{
- "rel": "urn:org.restfulobjects:rels/details;action=\"downloadMetamodelXml\"",
- "href": "https://demo-wicket.isis.incode.work/restful/objects/demo.JavaLangStrings/PADw_eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiBzdGFuZGFsb25lPSJ5ZXMiPz4KPERlbW8vPgo=/actions/downloadMetamodelXml",
+ "rel": "urn:org.restfulobjects:rels/details;action=\"openRestApi\"",
+ "href": "https://demo-wicket.isis.incode.work/restful/objects/demo.JavaLangStrings/PADw_eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiBzdGFuZGFsb25lPSJ5ZXMiPz4KPERlbW8vPgo=/actions/openRestApi",
"method": "GET",
"type": "application/json;profile=\"urn:org.restfulobjects:repr-types/object-action\""
}
@@ -150,6 +207,18 @@
"type": "application/json;profile=\"urn:org.restfulobjects:repr-types/object-action\""
}
]
+ },
+ "recentCommands": {
+ "id": "recentCommands",
+ "memberType": "action",
+ "links": [
+ {
+ "rel": "urn:org.restfulobjects:rels/details;action=\"recentCommands\"",
+ "href": "https://demo-wicket.isis.incode.work/restful/objects/demo.JavaLangStrings/PADw_eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiBzdGFuZGFsb25lPSJ5ZXMiPz4KPERlbW8vPgo=/actions/recentCommands",
+ "method": "GET",
+ "type": "application/json;profile=\"urn:org.restfulobjects:repr-types/object-action\""
+ }
+ ]
}
}
}
diff --git a/incubator/clients/kroviz/src/test/kotlin/org/apache/isis/client/kroviz/snapshots/simpleapp1_16_0/UrlsTest.kt b/incubator/clients/kroviz/src/test/kotlin/org/apache/isis/client/kroviz/snapshots/simpleapp1_16_0/UrlsTest.kt
deleted file mode 100644
index f51e4fc..0000000
--- a/incubator/clients/kroviz/src/test/kotlin/org/apache/isis/client/kroviz/snapshots/simpleapp1_16_0/UrlsTest.kt
+++ /dev/null
@@ -1,74 +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.snapshots.simpleapp1_16_0
-
-import org.apache.isis.client.kroviz.IntegrationTest
-import org.apache.isis.client.kroviz.core.aggregator.ActionDispatcher
-import org.apache.isis.client.kroviz.core.event.EventStore
-import org.apache.isis.client.kroviz.core.event.ResourceSpecification
-import org.apache.isis.client.kroviz.core.event.RoXmlHttpRequest
-import org.apache.isis.client.kroviz.to.Link
-import org.apache.isis.client.kroviz.to.Method
-import kotlin.test.assertEquals
-
-/**
- * This is an integration test that requires SimpleApp running on http://localhost:8080
- *
- * @item Iterate over all Objects defined in package 'urls',
- * @item check if the href 'self' can be invoked and
- * @item compare the response of invoking 'self' with what is hardcoded
- */
-class UrlsTest : IntegrationTest() {
-
- //@Test
- fun testUrls() {
- if (isAppAvailable()) {
- // given
- val urls = mutableMapOf<String, String>()
- urls.put(FR_OBJECT.url, FR_OBJECT.str)
- urls.put(FR_OBJECT_BAZ.url, FR_OBJECT_BAZ.str)
- urls.put(FR_OBJECT_LAYOUT.url, FR_OBJECT_LAYOUT.str)
- urls.put(FR_OBJECT_PROPERTY.url, FR_OBJECT_PROPERTY.str)
- urls.put(FR_PROPERTY_DESCRIPTION.url, FR_PROPERTY_DESCRIPTION.str)
- urls.put(SO_0.url, SO_0.str)
- urls.put(SO_LIST_ALL.url, SO_LIST_ALL.str)
- urls.put(SO_LIST_ALL_INVOKE.url, SO_LIST_ALL_INVOKE.str)
- urls.put(SO_LIST_ALL_OBJECTS.url, SO_LIST_ALL_OBJECTS.str)
- urls.put(SO_MENU.url, SO_MENU.str)
- urls.put(SO_OBJECT_LAYOUT.url, SO_OBJECT_LAYOUT.str)
- urls.put(RESTFUL_SERVICES.url, RESTFUL_SERVICES.str)
-
- //when
- for (entry in urls) {
- val href = entry.key
- val link = Link(method = Method.GET.operation, href = href)
- RoXmlHttpRequest().invoke(link, ActionDispatcher())
- }
-
- // then
- wait(1000)
- for (entry in urls) {
- val hrefSpec = ResourceSpecification(entry.key)
- val actual = EventStore.find(hrefSpec)!!.getResponse()
- assertEquals(entry.value, actual)
- }
- }
- }
-
-}
diff --git a/incubator/clients/kroviz/src/test/kotlin/org/apache/isis/client/kroviz/to/LinkTest.kt b/incubator/clients/kroviz/src/test/kotlin/org/apache/isis/client/kroviz/to/LinkTest.kt
index 4433000..d4f3bc2 100644
--- a/incubator/clients/kroviz/src/test/kotlin/org/apache/isis/client/kroviz/to/LinkTest.kt
+++ b/incubator/clients/kroviz/src/test/kotlin/org/apache/isis/client/kroviz/to/LinkTest.kt
@@ -79,36 +79,12 @@ class LinkTest {
assertEquals(Relation.SERVICES, rel)
}
- val response2Handler = mapOf(
- RESTFUL to RestfulHandler(),
- ACTIONS_STRINGS to ActionHandler(),
- ACTIONS_STRINGS_INVOKE to TObjectHandler(),
- ACTIONS_TEXT_INVOKE to TObjectHandler(),
- ASSOCIATED_ACTION_OBJECT_LAYOUT to LayoutHandler(),
- COLLECTIONS_ENTITIES to CollectionHandler(),
- DOMAIN_TYPES_PROPERTY to PropertyHandler(),
- FILE_NODE to DomainTypeHandler(),
- HTTP_ERROR_405 to HttpErrorHandler(),
- HTTP_ERROR_500 to HttpErrorHandler(),
- MENUBARS to MenuBarsHandler(),
- OBJECT_LAYOUT to LayoutHandler(),
- PRIMITIVES to TObjectHandler(),
- PROPERTY to PropertyHandler(),
- PROPERTY_DESCRIPTION to PropertyHandler(),
- RESTFUL_DOMAIN_TYPES to DomainTypesHandler(),
- TAB_OBJECT_LAYOUT to LayoutHandler(),
- TAB_LAYOUT_XML to LayoutXmlHandler(),
- TEMPORALS to TObjectHandler(),
- TEXT_LAYOUT to LayoutHandler(),
- TOOLTIP_OBJECT_LAYOUT to LayoutHandler(),
- TUPLE_OBJECT_LAYOUT to LayoutHandler(),
- )
-
@Test
fun testFindParsedLinkEnums() {
//given
+ val map = Response2Handler.map
//when
- response2Handler.forEach { rh ->
+ map.forEach { rh ->
val jsonStr = rh.key.str
val ro = rh.value.parse(jsonStr)
if (ro is HasLinks) {
diff --git a/incubator/clients/kroviz/src/test/kotlin/org/apache/isis/client/kroviz/to/TObjectTest.kt b/incubator/clients/kroviz/src/test/kotlin/org/apache/isis/client/kroviz/to/TObjectTest.kt
index c075451..dcc5e2a 100644
--- a/incubator/clients/kroviz/src/test/kotlin/org/apache/isis/client/kroviz/to/TObjectTest.kt
+++ b/incubator/clients/kroviz/src/test/kotlin/org/apache/isis/client/kroviz/to/TObjectTest.kt
@@ -112,16 +112,15 @@ class TObjectTest {
val jsonStr = ACTIONS_STRINGS_INVOKE.str
// when
val to = TObjectHandler().parse(jsonStr) as TObject
- val members = to.members
- val properties = to.getProperties()
// then
- assertNotNull(to.links)
assertEquals("String data type", to.links[0].title)
- assertEquals(9, members.size)
- assertEquals(0, properties.size)
+ assertEquals(13, to.members.size)
+ assertEquals(1, to.getCollections().size)
+ assertEquals(8, to.getActions().size)
+ assertEquals(4, to.getProperties().size)
- val filteredProperties = properties.filter { it.id == "description" }
- assertEquals(0, filteredProperties.size)
+ val filteredProperties = to.getProperties().filter { it.id == "description" }
+ assertEquals(1, filteredProperties.size)
}
}