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/05/25 17:06:09 UTC
[isis] 02/04: ISIS-2682 change member type from Listto
Map
This is an automated email from the ASF dual-hosted git repository.
joergrade pushed a commit to branch ISIS-2505_Catch_Up_With_Demo_Examples
in repository https://gitbox.apache.org/repos/asf/isis.git
commit 3d21882af5f8d65477b7e3cf771bdb5bddb0a817
Author: Jörg Rade <jo...@kuehne-nagel.com>
AuthorDate: Tue May 25 14:07:33 2021 +0200
ISIS-2682 change member type from List<Link>to Map<String, Member>
---
.../core/aggregator/DomainTypesAggregator.kt | 9 ++-
.../client/kroviz/core/model/meta/MetaClass.kt | 9 ++-
.../org/apache/isis/client/kroviz/to/DomainType.kt | 33 ++++++++
.../org/apache/isis/client/kroviz/to/Link.kt | 6 +-
.../org/apache/isis/client/kroviz/to/Member.kt | 10 ++-
.../isis/client/kroviz/to/PlainTransferObjects.kt | 9 ---
.../isis/client/kroviz/ui/diagram/ClassDiagram.kt | 7 +-
.../snapshots/demo2_0_0/COLLECTIONS_ENTITIES.kt | 91 +++++++++++-----------
8 files changed, 104 insertions(+), 70 deletions(-)
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 2f0f8b4..1326124 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
@@ -59,11 +59,16 @@ class DomainTypesAggregator(val url: String) : BaseAggregator() {
} else {
dpm.addData(obj)
val propertyList = obj.members.filter {
- it.isProperty()
+ it.value.memberType == MemberType.PROPERTY.type
}
(dpm as DiagramDM).incNumberOfProperties(propertyList.size)
propertyList.forEach { p ->
- invoke(p, this)
+ val links = p.value.links
+ links.forEach {
+ if (it.isProperty()) {
+ invoke(it, this)
+ }
+ }
}
}
}
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/model/meta/MetaClass.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/model/meta/MetaClass.kt
index fe62f17..507b899 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/model/meta/MetaClass.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/model/meta/MetaClass.kt
@@ -33,13 +33,14 @@ class MetaClass(val domainType: DomainType) {
pkg = MetaPackage(pkgName)
domainType.members.forEach { m ->
- val memberName = m.name()
+ val member = m.value
+ val name = member.id
when {
- m.isProperty() -> properties.add(MetaProperty(memberName))
- m.isAction() -> actions.add(MetaAction(memberName))
+ member.isProperty() -> properties.add(MetaProperty(name))
+ member.isAction() -> actions.add(MetaAction(name))
else -> {
console.log("[MetaClass.init] unexpected member type")
- console.log(memberName)
+ console.log(name)
}
}
}
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/to/DomainType.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/to/DomainType.kt
new file mode 100644
index 0000000..7c56bd7
--- /dev/null
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/to/DomainType.kt
@@ -0,0 +1,33 @@
+/*
+ * 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.to
+
+import kotlinx.serialization.Serializable
+
+@Serializable
+data class DomainType(
+ override val links: List<Link>,
+ val canonicalName: String,
+ val members: Map<String, Member>,
+ val typeActions: List<Link>,
+ val extensions: Extensions
+) : TransferObject, HasLinks {
+
+}
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/to/Link.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/to/Link.kt
index e2cdb82..8938380 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/to/Link.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/to/Link.kt
@@ -26,7 +26,7 @@ data class Link(val rel: String = "",
val method: String = Method.GET.operation,
val href: String,
val type: String = "",
- //IMPROVE RO SPEC? "args" should be changed to "arguments" - RO spec or SimpleApp?
+ //RO SPEC OR ISIS IMPL? can "args" be folded into "arguments"
val args: Map<String, Argument> = emptyMap(),
/* arguments can either be:
* -> empty Map {}
@@ -60,10 +60,6 @@ data class Link(val rel: String = "",
return relation() == Relation.PROPERTY
}
- fun isAction(): Boolean {
- return relation() == Relation.ACTION
- }
-
fun name(): String {
return href.split("/").last()
}
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/to/Member.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/to/Member.kt
index 6be38dd..199704e 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/to/Member.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/to/Member.kt
@@ -36,7 +36,7 @@ data class Member(val id: String,
var type: String? = ValueType.TEXT.type
init {
- if (memberType == MemberType.PROPERTY.type
+ if (isProperty()
&& value == null
&& extensions != null
&& extensions.xIsisFormat == "string") {
@@ -45,6 +45,14 @@ data class Member(val id: String,
type = TypeMapper().match(this)
}
+ fun isProperty(): Boolean {
+ return memberType == MemberType.PROPERTY.type
+ }
+
+ fun isAction(): Boolean {
+ return memberType == MemberType.ACTION.type
+ }
+
fun isReadOnly(): Boolean {
return !isReadWrite()
}
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 353cb8c..24e8217 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
@@ -29,15 +29,6 @@ enum class ActionSemantics(val type: String) {
}
@Serializable
-data class DomainType(
- override val links: List<Link>,
- val canonicalName: String,
- val members: List<Link>, // change to Map<String, Member>, once https://issues.apache.org/jira/browse/ISIS-2684 is fixed
- val typeActions: List<Link>,
- val extensions: Extensions
-) : TransferObject, HasLinks
-
-@Serializable
data class DomainTypes(override val links: List<Link> = emptyList(),
val values: List<Link> = emptyList(),
val extensions: Extensions? = null
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/diagram/ClassDiagram.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/diagram/ClassDiagram.kt
index 94991a4..7924e5e 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/diagram/ClassDiagram.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/diagram/ClassDiagram.kt
@@ -86,11 +86,12 @@ object ClassDiagram {
var pumlCode = "$Q@startuml$NL package $pkg {$NL" +
"class $cls$NL"
domainType.members.forEach { m ->
- val memberName = m.name()
+ val member = m.value
+ val name = member.id
pumlCode += when {
- m.isProperty() -> "$cls : $memberName$NL"
+ member.isProperty() -> "$cls : $name$NL"
else -> {
- "$cls : $memberName()$NL"
+ "$cls : $name()$NL"
}
}
}
diff --git a/incubator/clients/kroviz/src/test/kotlin/org/apache/isis/client/kroviz/snapshots/demo2_0_0/COLLECTIONS_ENTITIES.kt b/incubator/clients/kroviz/src/test/kotlin/org/apache/isis/client/kroviz/snapshots/demo2_0_0/COLLECTIONS_ENTITIES.kt
index 760a8ae..eac8bfc 100644
--- a/incubator/clients/kroviz/src/test/kotlin/org/apache/isis/client/kroviz/snapshots/demo2_0_0/COLLECTIONS_ENTITIES.kt
+++ b/incubator/clients/kroviz/src/test/kotlin/org/apache/isis/client/kroviz/snapshots/demo2_0_0/COLLECTIONS_ENTITIES.kt
@@ -22,52 +22,51 @@ package org.apache.isis.client.kroviz.snapshots.demo2_0_0
import org.apache.isis.client.kroviz.snapshots.Response
object COLLECTIONS_ENTITIES: Response(){
- override val url = "http://localhost:8080/restful/services/simple.SimpleObjectMenu/actions/findByName"
+ override val url = "http://localhost:8080/restful/objects/demo.JavaLangStrings/PADw_eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiBzdGFuZGFsb25lPSJ5ZXMiPz4KPERlbW8vPgo=/collections/entities"
override val str = """
- {
- "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=",
- "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",
- "method": "GET",
- "type": "application/json;profile=\"urn:org.restfulobjects:repr-types/collection-description\""
- }
- ],
- "extensions": {
- "collectionSemantics": "list"
- },
- "value": [
- {
- "rel": "urn:org.restfulobjects:rels/value",
- "href": "http://localhost:8080/restful/objects/demo.JavaLangStringJdo/1",
- "method": "GET",
- "type": "application/json;profile=\"urn:org.restfulobjects:repr-types/object\"",
- "title": "StringJDO entity: Hello"
- },
- {
- "rel": "urn:org.restfulobjects:rels/value",
- "href": "http://localhost:8080/restful/objects/demo.JavaLangStringJdo/2",
- "method": "GET",
- "type": "application/json;profile=\"urn:org.restfulobjects:repr-types/object\"",
- "title": "StringJDO entity: world"
- }
- ],
- "disabledReason": "Immutable"
- }
+{
+ "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=",
+ "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",
+ "method": "GET",
+ "type": "application/json;profile=\"urn:org.restfulobjects:repr-types/collection-description\""
+ }
+ ],
+ "extensions": {
+ "collectionSemantics": "list"
+ },
+ "value": [
+ {
+ "rel": "urn:org.restfulobjects:rels/value",
+ "href": "http://localhost:8080/restful/objects/demo.JavaLangStringEntity/1",
+ "method": "GET",
+ "type": "application/json;profile=\"urn:org.restfulobjects:repr-types/object\"",
+ "title": "StringJDO entity: Hello"
+ },
+ {
+ "rel": "urn:org.restfulobjects:rels/value",
+ "href": "http://localhost:8080/restful/objects/demo.JavaLangStringEntity/2",
+ "method": "GET",
+ "type": "application/json;profile=\"urn:org.restfulobjects:repr-types/object\"",
+ "title": "StringJDO entity: world"
+ }
+ ]
+}
"""
}