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/12/15 16:52:38 UTC
[isis] branch master updated (0434fc7 -> 64fdb5b)
This is an automated email from the ASF dual-hosted git repository.
joergrade pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git.
from 0434fc7 ISIS-2921: fixes ManagedObject check for proper packing
new 991ce0b ISIS-2913 update documentation
new acbfaca ISIS-2913 refactor SessionManager
new 64fdb5b Merge remote-tracking branch 'origin/master'
The 3 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
Summary of changes:
.../kroviz/partials/design/uml-aggregator.adoc | 105 ++++++++++++++++-----
.../org/apache/isis/client/kroviz/core/Session.kt | 8 +-
.../kroviz/core/aggregator/ActionDispatcher.kt | 1 +
.../isis/client/kroviz/core/event/EventStore.kt | 17 +++-
.../isis/client/kroviz/core/event/LogEntry.kt | 1 -
.../client/kroviz/core/event/ReplayController.kt | 2 +-
.../client/kroviz/core/event/RoXmlHttpRequest.kt | 2 +-
.../apache/isis/client/kroviz/ui/core/RoMenuBar.kt | 56 +++++++----
.../isis/client/kroviz/ui/core/SessionManager.kt | 36 +++----
.../apache/isis/client/kroviz/ui/core/UiManager.kt | 22 +++--
.../isis/client/kroviz/ui/dialog/LoginPrompt.kt | 2 +-
.../apache/isis/client/kroviz/utils/IconManager.kt | 2 +-
.../apache/isis/client/kroviz/IntegrationTest.kt | 2 +-
.../isis/client/kroviz/util/StringUtilsTest.kt | 2 +-
14 files changed, 170 insertions(+), 88 deletions(-)
[isis] 02/03: ISIS-2913 refactor SessionManager
Posted by jo...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
joergrade pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git
commit acbfaca8480848631617f87984f58a0eb6685c60
Author: Jörg Rade <jo...@kuehne-nagel.com>
AuthorDate: Wed Dec 15 17:52:07 2021 +0100
ISIS-2913 refactor SessionManager
---
.../org/apache/isis/client/kroviz/core/Session.kt | 8 ++--
.../kroviz/core/aggregator/ActionDispatcher.kt | 1 +
.../isis/client/kroviz/core/event/EventStore.kt | 17 +++++--
.../isis/client/kroviz/core/event/LogEntry.kt | 1 -
.../client/kroviz/core/event/ReplayController.kt | 2 +-
.../client/kroviz/core/event/RoXmlHttpRequest.kt | 2 +-
.../apache/isis/client/kroviz/ui/core/RoMenuBar.kt | 56 ++++++++++++++--------
.../isis/client/kroviz/ui/core/SessionManager.kt | 36 +++++++-------
.../apache/isis/client/kroviz/ui/core/UiManager.kt | 22 ++++++---
.../isis/client/kroviz/ui/dialog/LoginPrompt.kt | 2 +-
.../apache/isis/client/kroviz/utils/IconManager.kt | 2 +-
.../apache/isis/client/kroviz/IntegrationTest.kt | 2 +-
.../isis/client/kroviz/util/StringUtilsTest.kt | 2 +-
13 files changed, 91 insertions(+), 62 deletions(-)
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/Session.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/Session.kt
index 02862c8..bbd954f 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/Session.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/Session.kt
@@ -19,7 +19,6 @@
package org.apache.isis.client.kroviz.core
import io.kvision.core.ResString
-import org.apache.isis.client.kroviz.core.event.EventStore
import org.apache.isis.client.kroviz.ui.core.Constants
import org.apache.isis.client.kroviz.utils.StringUtils
@@ -31,16 +30,15 @@ class Session {
private var pw: String = ""
var baseUrl: String = ""
var resString: ResString? = null
- val eventStore = EventStore()
fun login(url: String, user: String, pw: String) {
this.user = user
this.pw = pw
this.baseUrl = url
- if (url.contains("localhost")) {
- this.resString = Constants.demoImage
+ if (url.contains("8080")) {
+ this.resString = Constants.demoImage as ResString
} else {
- this.resString = Constants.demoRemoteImage
+ this.resString = Constants.demoRemoteImage as ResString
}
}
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 68603d9..4ed1d7c 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
@@ -48,6 +48,7 @@ class ActionDispatcher(private val at: Point = Point(100, 100)) : BaseAggregator
logEntry.aggregators.add(oa)
oa.update(logEntry, Constants.subTypeJson)
}
+ to is Restful -> {}
else -> {
console.log(to)
throw Throwable("[ActionDispatcher.update] ${to!!::class.simpleName}")
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/event/EventStore.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/event/EventStore.kt
index eb8eab8..c982ecb 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/event/EventStore.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/event/EventStore.kt
@@ -22,7 +22,6 @@ import io.kvision.panel.SimplePanel
import io.kvision.state.observableListOf
import org.apache.isis.client.kroviz.core.aggregator.BaseAggregator
import org.apache.isis.client.kroviz.core.aggregator.SvgDispatcher
-import org.apache.isis.client.kroviz.to.HasLinks
import org.apache.isis.client.kroviz.to.TObject
import org.apache.isis.client.kroviz.to.mb.Menubars
import org.apache.isis.client.kroviz.ui.core.UiManager
@@ -49,10 +48,12 @@ class EventStore {
}
}
- fun start(rs: ResourceSpecification,
- method: String,
- body: String = "",
- aggregator: BaseAggregator? = null): LogEntry {
+ fun start(
+ rs: ResourceSpecification,
+ method: String,
+ body: String = "",
+ aggregator: BaseAggregator? = null
+ ): LogEntry {
val entry = LogEntry(rs = rs, method = method, request = body)
if (aggregator != null) {
entry.addAggregator(aggregator)
@@ -177,6 +178,12 @@ class EventStore {
}
}
+ fun findMenuBarsBy(baseUrl: String): LogEntry? {
+ return log.firstOrNull() {
+ it.obj is Menubars && it.url.startsWith(baseUrl)
+ }
+ }
+
//public for test
fun findExact(reSpec: ResourceSpecification): LogEntry? {
return log.firstOrNull {
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/event/LogEntry.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/event/LogEntry.kt
index e83d0e9..4023336 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/event/LogEntry.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/event/LogEntry.kt
@@ -60,7 +60,6 @@ data class LogEntry(
) {
val url: String = rs.url
- // val referrer = rs.referrerUrl
val subType = rs.subType
var state = EventState.INITIAL
var title: String = ""
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/event/ReplayController.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/event/ReplayController.kt
index 830ce85..1000ddc 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/event/ReplayController.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/event/ReplayController.kt
@@ -38,7 +38,7 @@ val AppScope = CoroutineScope(window.asCoroutineDispatcher())
class ReplayController : Controller() {
private val eventStore = SessionManager.getEventStore()
- private val oldBaseUrl = SessionManager.getBaseUrl()
+ private val oldBaseUrl = SessionManager.getBaseUrl()!!
private var urlUnderTest: String = Constants.demoUrlRemote
private var userUnderTest: String = Constants.demoUser
private var passUnderTest: String = Constants.demoPass
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 a56d2d6..4200466 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
@@ -50,7 +50,7 @@ class RoXmlHttpRequest(val aggregator: BaseAggregator?) {
if (method != Method.POST.operation) {
url += StringUtils.argumentsAsUrlParameter(link)
}
- val credentials: String = SessionManager.getCredentials()
+ val credentials: String = SessionManager.getCredentials()!!
xhr.open(method, url, true)
xhr.setRequestHeader("Authorization", "Basic $credentials")
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/core/RoMenuBar.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/core/RoMenuBar.kt
index 21aaa62..fd05e9c 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/core/RoMenuBar.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/core/RoMenuBar.kt
@@ -31,10 +31,12 @@ import io.kvision.panel.SimplePanel
import io.kvision.panel.vPanel
import io.kvision.utils.px
import org.apache.isis.client.kroviz.core.Session
-import org.apache.isis.client.kroviz.core.event.EventStore
import org.apache.isis.client.kroviz.to.mb.Menubars
import org.apache.isis.client.kroviz.ui.chart.SampleChartModel
-import org.apache.isis.client.kroviz.ui.dialog.*
+import org.apache.isis.client.kroviz.ui.dialog.About
+import org.apache.isis.client.kroviz.ui.dialog.EventDialog
+import org.apache.isis.client.kroviz.ui.dialog.LoginPrompt
+import org.apache.isis.client.kroviz.ui.dialog.SvgInline
import org.apache.isis.client.kroviz.ui.panel.EventChart
import org.apache.isis.client.kroviz.ui.panel.GeoMap
import org.apache.isis.client.kroviz.ui.panel.ImageSample
@@ -50,7 +52,7 @@ class RoMenuBar : SimplePanel() {
init {
vPanel {
- val label = "" //IMPROVE use for branding
+ val label = "" //eventually use for branding
navbar = navbar(label = label, type = NavbarType.FIXEDTOP) {
marginLeft = CssSize(-32, UNIT.px)
height = CssSize(40, UNIT.px)
@@ -61,24 +63,25 @@ class RoMenuBar : SimplePanel() {
}
}
- private fun testFirstSession() {
- mainEntry.separator()
- val session = SessionManager.getSession()
- insertSession(session)
- }
-
- private fun insertSession(session:Session) {
+ fun add(session: Session) {
val menuEntry = buildMenuEntryWithImage(
session.baseUrl,
image = session.resString,
- { this.switch(session) })
+ { switch(session) })
mainEntry.add(menuEntry)
+ switch(session)
}
- private fun switch(session: Session) {
+ fun switch(session: Session) {
mainEntry.image = session.resString
mainEntry.icon = null
mainEntry.image.apply { systemIconStyle }
+ val logEntry = SessionManager.getEventStore().findMenuBarsBy(session.baseUrl)
+ if (logEntry != null) {
+ val menuBars = logEntry.obj as Menubars
+ amendMenu(menuBars)
+ }
+ UiManager.setNormalCursor()
}
private fun buildMenuEntryWithImage(label: String, image: ResString?, action: dynamic): Link {
@@ -91,12 +94,13 @@ class RoMenuBar : SimplePanel() {
return link
}
- val systemIconStyle = style(".dropdown-toggle") {
+ private val systemIconStyle = style(".dropdown-toggle") {
style("img") {
height = 20.px
}
}
- val appIconStyle = style(".dropdown-item") {
+
+ private val appIconStyle = style(".dropdown-item") {
style("img") {
height = 20.px
}
@@ -158,13 +162,14 @@ class RoMenuBar : SimplePanel() {
val aboutTitle = "About"
mainMenu.add(
- buildMenuEntry(aboutTitle, "Info", { UiManager.add(aboutTitle, About().dialog) })
+ buildMenuEntry(aboutTitle, "About", { UiManager.add(aboutTitle, About().dialog) })
)
- val testTitle = "Test"
- mainMenu.add(
- buildMenuEntry(testTitle, "Test", { this.testFirstSession() })
- )
+ /*
+ val testTitle = "Test"
+ mainMenu.add(
+ buildMenuEntry(testTitle, "Test", { this.testFirstSession() })
+ )
mainMenu.add(
buildMenuEntry("Browser in IFrame", "Wikipedia", { BrowserWindow("https://isis.apache.org/").open() })
@@ -172,12 +177,17 @@ class RoMenuBar : SimplePanel() {
mainMenu.add(
buildMenuEntry("SSH", "Terminal", { ShellWindow("localhost:8080").open() })
- )
+ )*/
return mainMenu
}
+ fun addSeparatorToMainMenu() {
+ mainMenu.separator()
+ }
+
fun amendMenu(menuBars: Menubars) {
+ resetMenuBar()
menuBars.primary.menu.forEach { m ->
val dd = MenuFactory.buildForMenu(m)
if (dd.getChildren().isNotEmpty()) nav.add(dd)
@@ -186,4 +196,10 @@ class RoMenuBar : SimplePanel() {
nav.add(MenuFactory.buildForMenu(menuBars.tertiary.menu.first()))
}
+ // this empties out any existing menuItems (non-system)
+ private fun resetMenuBar() {
+ nav.removeAll()
+ nav.add(mainMenu)
+ }
+
}
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/core/SessionManager.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/core/SessionManager.kt
index fdfd729..39e0c6a 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/core/SessionManager.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/core/SessionManager.kt
@@ -22,38 +22,38 @@ import org.apache.isis.client.kroviz.core.Session
import org.apache.isis.client.kroviz.core.event.EventStore
/**
- * Single point of contact for view components consisting of:
- * @item Session
+ * Handle multiple Sessions
*/
object SessionManager {
- private val sessions = mutableListOf<Session>()
+ private val sessions = mutableSetOf<Session>()
+ private val eventStore = EventStore()
+ private var activeSession: Session? = null
- fun getSession(): Session {
- return sessions.first()
- }
-
- fun getBaseUrl(): String {
- val s = getSession()
- return when (s) {
- null -> ""
- else -> s.baseUrl
- }
+ fun getBaseUrl(): String? {
+ return activeSession?.baseUrl
}
fun getEventStore(): EventStore {
- return getSession().eventStore
+ return eventStore
}
fun login(url: String, username: String, password: String) {
val s = Session()
s.login(url, username, password)
- sessions.add(0, s)
- UiManager.updateUser(username)
+ val isFirstSession = sessions.size == 0
+ if (sessions.contains(s)) {
+ UiManager.switchSession(s)
+ } else {
+ sessions.add(s)
+ UiManager.updateSession(username, s, isFirstSession)
+ }
+ activeSession = s
+
}
- fun getCredentials(): String {
- return getSession().getCredentials()
+ fun getCredentials(): String? {
+ return activeSession?.getCredentials()
}
}
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/core/UiManager.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/core/UiManager.kt
index d107020..34af6f6 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/core/UiManager.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/core/UiManager.kt
@@ -27,6 +27,7 @@ import io.kvision.utils.ESC_KEY
import kotlinx.browser.document
import kotlinx.browser.window
import org.apache.isis.client.kroviz.App
+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
import org.apache.isis.client.kroviz.core.aggregator.UndefinedDispatcher
@@ -107,7 +108,7 @@ object UiManager {
/**
* SVG code added to Tabs disappears after a refresh, therefore an SVG object (code, uuid)
- * is added as attribute to the tab in order to being able to recreate it on refresh.
+ * is added as attribute to the tab in order to be able to recreate it on refresh.
*/
fun addSvg(title: String, svgCode: String) {
fun buildSvgPanel(uuid: UUID): FormPanelFactory {
@@ -147,8 +148,15 @@ object UiManager {
getRoStatusBar().update(entry)
}
- fun updateUser(user: String) {
+ fun updateSession(user: String, session: Session, isFirstSession: Boolean) {
getRoStatusBar().updateUser(user)
+ val menubar = getRoApp().roMenuBar
+ if (isFirstSession) menubar.addSeparatorToMainMenu()
+ menubar.add(session)
+ }
+
+ fun switchSession(session: Session) {
+ getRoApp().roMenuBar.switch(session)
}
fun setBusyCursor() {
@@ -181,7 +189,7 @@ object UiManager {
}
fun openDialog(panel: RoDialog, at: Point = Point(100, 100)) {
- val offset = UiManager.getNumberOfPopups() * 4
+ val offset = getNumberOfPopups() * 4
panel.left = CssSize(at.x + offset, UNIT.px)
panel.top = CssSize(at.y + offset, UNIT.px)
getRoApp().add(panel)
@@ -193,7 +201,7 @@ object UiManager {
pop()
}
- fun loadDomainTypes(): Boolean {
+ fun loadDomainTypes(): Boolean {
val k = "loadDomainTypes"
return when {
settings.containsKey(k) -> settings.getValue(k) as Boolean
@@ -201,7 +209,7 @@ object UiManager {
}
}
- private fun push(widget: Widget) {
+ private fun push(widget: Widget) {
popups.add(widget)
}
@@ -219,7 +227,7 @@ object UiManager {
}
}
- fun getNumberOfPopups(): Int {
+ private fun getNumberOfPopups(): Int {
return popups.size
}
@@ -229,7 +237,7 @@ object UiManager {
setNormalCursor()
}
- private fun getEventStore() : EventStore {
+ private fun getEventStore(): EventStore {
return SessionManager.getEventStore()
}
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/dialog/LoginPrompt.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/dialog/LoginPrompt.kt
index 2d157ae..7bf206d 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/dialog/LoginPrompt.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/dialog/LoginPrompt.kt
@@ -62,7 +62,7 @@ class LoginPrompt(val nextController: Controller? = null) : Controller() {
}
private fun extractUserInput() {
- //TODO function has a side effect, ie. changes variable values
+ //function has a side effect, ie. changes variable values
var key: String?
val formPanel = dialog.formPanel
val kids = formPanel!!.getChildren()
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 95b281c..b48b67e 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
@@ -30,7 +30,7 @@ object IconManager {
/* Merge with configuration values*/
private val word2Icon = mapOf(
- "About" to "lightbulb-o",
+ "About" to "info-circle",
"Actions" to "ellipsis-v",
"All" to "asterisk",
"Basic" to "minus-circle",
diff --git a/incubator/clients/kroviz/src/test/kotlin/org/apache/isis/client/kroviz/IntegrationTest.kt b/incubator/clients/kroviz/src/test/kotlin/org/apache/isis/client/kroviz/IntegrationTest.kt
index 63db8ea..311c5be 100644
--- a/incubator/clients/kroviz/src/test/kotlin/org/apache/isis/client/kroviz/IntegrationTest.kt
+++ b/incubator/clients/kroviz/src/test/kotlin/org/apache/isis/client/kroviz/IntegrationTest.kt
@@ -43,7 +43,7 @@ open class IntegrationTest {
val pw = "pass"
val url = "http://${user}:${pw}@localhost:8080/restful/"
SessionManager.login(url, user, pw)
- val credentials: String = SessionManager.getCredentials()
+ val credentials: String = SessionManager.getCredentials()!!
val xhr = XMLHttpRequest()
xhr.open("GET", url, false, user, pw)
xhr.setRequestHeader("Authorization", "Basic $credentials")
diff --git a/incubator/clients/kroviz/src/test/kotlin/org/apache/isis/client/kroviz/util/StringUtilsTest.kt b/incubator/clients/kroviz/src/test/kotlin/org/apache/isis/client/kroviz/util/StringUtilsTest.kt
index 7c25785..e3307d5 100644
--- a/incubator/clients/kroviz/src/test/kotlin/org/apache/isis/client/kroviz/util/StringUtilsTest.kt
+++ b/incubator/clients/kroviz/src/test/kotlin/org/apache/isis/client/kroviz/util/StringUtilsTest.kt
@@ -16,7 +16,7 @@ class StringUtilsTest {
val url = "http://localhost:8080/restful/domain-types/demo.JavaLangStrings/collections/entities"
// when
- val protocolHostPort = SessionManager.getBaseUrl()
+ val protocolHostPort = SessionManager.getBaseUrl()!!
// then
assertTrue(protocolHostPort.startsWith("http://"))
[isis] 01/03: ISIS-2913 update documentation
Posted by jo...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
joergrade pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git
commit 991ce0b1e4ad0de74dded5238f4dea75ac20ef6a
Author: Jörg Rade <jo...@kuehne-nagel.com>
AuthorDate: Wed Dec 15 17:48:36 2021 +0100
ISIS-2913 update documentation
---
.../kroviz/partials/design/uml-aggregator.adoc | 105 ++++++++++++++++-----
1 file changed, 79 insertions(+), 26 deletions(-)
diff --git a/incubator/clients/kroviz/adoc/modules/kroviz/partials/design/uml-aggregator.adoc b/incubator/clients/kroviz/adoc/modules/kroviz/partials/design/uml-aggregator.adoc
index bc4091f..c45cdee 100644
--- a/incubator/clients/kroviz/adoc/modules/kroviz/partials/design/uml-aggregator.adoc
+++ b/incubator/clients/kroviz/adoc/modules/kroviz/partials/design/uml-aggregator.adoc
@@ -12,12 +12,11 @@ class LogEntry {
updatedAt:Date
request:String
response:String
+ blob: Blob
object:TransferObject
- aggregator:Aggregator
+ aggregators:List<BaseAggregator>
cacheHits:int
}
-LogEntry --> TransferObject
-LogEntry "n" --> "1" BaseAggregator
class ResponseHandler<<Facade,ChainOfResponsibility>>{
handle(LogEntry)
@@ -25,41 +24,95 @@ class ResponseHandler<<Facade,ChainOfResponsibility>>{
doHandle()
parse(json)
}
-ResponseHandler .> TransferObject : converts JSON \n into TO (1)
-ResponseHandler .> IAggregator : create aggregator (2)
-ResponseHandler .> LogEntry : assign aggregator (3)
-interface TransferObject
+package "to" {
+ interface TransferObject {}
+ TransferObject <|-- Layout
+ TransferObject <|-- TObject
+ TransferObject <|-- Icon
-interface IAggregator {
- update(logEntry)
+ package "bs3" {
+ class Grid{}
+ }
+ TransferObject <|- Grid
}
-abstract class BaseAggregator {
- data:BaseDisplayable
-}
+package "aggregator" {
+ abstract class BaseAggregator {
+ {abstract} dpm:DisplayModel
+ {abstract} update()
+ }
+
+ abstract class AggregatorWithLayout {
+ parentUrl: String
+ }
+ BaseAggregator <|-- AggregatorWithLayout
-IAggregator <|.. BaseAggregator
-BaseAggregator <|-- CollectionAggregator
-BaseAggregator <|-- ObjectAggregator
-BaseAggregator --> BaseDisplayable : data
+ class CollectionAggregator{
+ parent: ObjectAggregator
+ }
+ class ObjectAggregator {
+ collectionMap: Map<String, CollectionAggregator>
+ }
+ ObjectAggregator o-- CollectionAggregator
-abstract class BaseDisplayable {
- isRendered:Boolean
- +canBeDisplayed():Boolean
- +title()
+ AggregatorWithLayout <|-- CollectionAggregator
+ AggregatorWithLayout <|-- ObjectAggregator
}
-class CollectionDM {
- list:List<Exposer>
+package "model" {
+ class Exposer {
+ delegate: TObject
+ iconName: String
+ + dynamise()
+ + setIcon(icon: Icon)
+ }
+
+ abstract class DisplayModel {
+ isRendered:Boolean
+ title:String
+ {abstract} canBeDisplayed():Boolean
+ }
+
+ abstract class DisplayModelWithLayout {
+ layout: Layout
+ grid: Grid
+ properties: CollectionProperties
+ icon: Icon
+ + canBeDisplayed()
+ }
+
+ class ObjectDM {
+ + data:Exposer
+ + collections:Map<String,CollectionDM>
+ - dirty:Boolean
+ + canBeDisplayed()
+ }
+
+ class CollectionDM {
+ data:List<Exposer>
+ - rawData:List<TransferObject>
+ }
+
+ DisplayModel <|-- DisplayModelWithLayout
+ DisplayModelWithLayout <|-- CollectionDM
+ DisplayModelWithLayout <|-- ObjectDM
+ ObjectDM o-- CollectionDM
}
-BaseDisplayable -> Layout
-BaseDisplayable <|-- CollectionDM
-BaseDisplayable <|-- ObjectDM
+ResponseHandler .> TransferObject : (1) \n converts \n response(JSON), \n blob(Image) \n into
+ResponseHandler .> BaseAggregator : (2) \n create
+ResponseHandler .> LogEntry : (3) \n assign \n aggregator
+
+BaseAggregator -> DisplayModel
+CollectionAggregator .> CollectionDM : uses
+ObjectAggregator .> ObjectDM : uses
+ObjectAggregator .> CollectionDM : uses
-ObjectDM o-- CollectionDM
+LogEntry --> TransferObject : object
+LogEntry "m" --> "n" BaseAggregator
+Exposer -> TObject : delegate
@enduml
----
[isis] 03/03: Merge remote-tracking branch 'origin/master'
Posted by jo...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
joergrade pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git
commit 64fdb5b349184c2fd15acb2b721ddf145f41016e
Merge: acbfaca 0434fc7
Author: Jörg Rade <jo...@kuehne-nagel.com>
AuthorDate: Wed Dec 15 17:52:23 2021 +0100
Merge remote-tracking branch 'origin/master'
.../org/apache/isis/applib/locale/UserLocale.java | 67 +++++
.../{LocaleProvider.java => LanguageProvider.java} | 21 +-
.../services/iactnlayer/InteractionContext.java | 30 +--
.../services/locale/LocaleChoiceProvider.java | 22 +-
.../applib/services/message/MessageService.java | 6 +-
.../isis/applib/services/user/UserMemento.java | 48 +++-
.../value/semantics/ValueSemanticsAbstract.java | 24 +-
.../core/metamodel/IsisModuleCoreMetamodel.java | 2 +
.../isis/core/metamodel/spec/ManagedObjects.java | 2 +-
.../valuesemantics/BigDecimalValueSemantics.java | 6 +
.../valuesemantics/BigIntegerValueSemantics.java | 6 +
.../valuesemantics/BlobValueSemantics.java | 9 +
.../valuesemantics/BookmarkValueSemantics.java | 8 +
.../valuesemantics/BooleanValueSemantics.java | 6 +
.../BufferedImageValueSemantics.java | 9 +-
.../valuesemantics/ByteValueSemantics.java | 8 +
.../valuesemantics/ChangesDtoValueSemantics.java | 6 +
.../valuesemantics/CharacterValueSemantics.java | 5 +
.../valuesemantics/ClobValueSemantics.java | 9 +
.../valuesemantics/CommandDtoValueSemantics.java | 6 +
.../valuesemantics/DoubleValueSemantics.java | 6 +
.../valuesemantics/EnumValueSemanticsAbstract.java | 8 +
.../valuesemantics/FloatValueSemantics.java | 6 +
.../valuesemantics/IntValueSemantics.java | 6 +
.../InteractionDtoValueSemantics.java | 6 +
.../LocalResourcePathValueSemantics.java | 8 +
...lueSemantics.java => LocaleValueSemantics.java} | 72 ++++--
.../valuesemantics/LongValueSemantics.java | 6 +
.../valuesemantics/MarkupValueSemantics.java | 8 +
.../valuesemantics/OidDtoValueSemantics.java | 8 +
.../valuesemantics/PasswordValueSemantics.java | 6 +
.../valuesemantics/ShortValueSemantics.java | 8 +
.../valuesemantics/StringValueSemantics.java | 6 +
.../valuesemantics/TreeNodeValueSemantics.java | 24 ++
.../valuesemantics/URLValueSemantics.java | 11 +
.../valuesemantics/UUIDValueSemantics.java | 8 +
.../temporal/LocalDateTimeValueSemantics.java | 8 +
.../temporal/LocalDateValueSemantics.java | 8 +
.../temporal/LocalTimeValueSemantics.java | 8 +
.../temporal/OffsetDateTimeValueSemantics.java | 8 +
.../temporal/OffsetTimeValueSemantics.java | 7 +
.../temporal/ZonedDateTimeValueSemantics.java | 8 +
.../temporal/legacy/JavaSqlDateValueSemantics.java | 7 +
.../legacy/JavaSqlTimeStampValueSemantics.java | 8 +
.../temporal/legacy/JavaSqlTimeValueSemantics.java | 8 +
.../legacy/JavaUtilDateValueSemantics.java | 8 +
.../JavaUtilDateValueSemanticsProviderTest.java | 5 +-
core/pom.xml | 2 +-
.../IsisModuleCoreRuntimeServices.java | 4 +
.../core/runtimeservices/i18n/po/PoReader.java | 18 +-
.../i18n/po/TranslationServicePo.java | 17 +-
.../i18n/po/TranslationServicePoMenu.java | 6 +-
.../locale/LanguageProviderDefault.java | 38 +++
.../locale/LocaleChoiceProviderDefault.java | 77 ++++++
.../wrapper/WrapperFactoryDefault.java | 3 +-
.../core/runtimeservices/i18n/po/PoReaderTest.java | 31 +--
.../manager/AuthenticationManager.java | 36 +--
.../authentication/manager/UserMementoRefiner.java | 42 ++-
.../secman/applib/IsisModuleExtSecmanApplib.java | 2 +
.../secman/applib/user/dom/ApplicationUser.java | 31 +++
.../user/dom/ApplicationUser.layout.fallback.xml | 7 +
.../dom/mixins/ApplicationUser_updateLocale.java | 112 ++++++++
.../UserMementoRefinerFromApplicationUser.java | 14 +-
.../secman/jdo/user/dom/ApplicationUser.java | 42 ++-
.../secman/jpa/user/dom/ApplicationUser.java | 20 ++
extensions/vw/fullcalendar/applib/pom.xml | 5 +
.../value/CalendarEventSemanticsProvider.java | 12 +-
isis-parent/pom.xml | 2 +-
.../isis/testdomain/value/ValueSemanticsTest.java | 11 +-
.../model/valuetypes/ValueTypeExample.java | 12 +
.../model/valuetypes/ValueTypeExampleService.java | 10 +-
.../semantics/AsciiDocValueSemantics.java | 8 +
valuetypes/asciidoc/ui/pom.xml | 2 +-
.../valuesemantics/JodaDateTimeValueSemantics.java | 8 +
.../JodaLocalDateTimeValueSemantics.java | 9 +
.../JodaLocalDateValueSemantics.java | 9 +
.../JodaLocalTimeValueSemantics.java | 9 +
.../semantics/MarkdownValueSemantics.java | 8 +
.../isis/viewer/wicket/ui/ComponentFactory.java | 3 +
.../viewer/wicket/ui/ComponentFactoryAbstract.java | 14 +-
.../ui/app/registry/ComponentFactoryRegistrar.java | 16 +-
.../scalars/ScalarPanelTextFieldAbstract.java | 5 +-
...arPanelTextFieldWithValueSemanticsAbstract.java | 3 +-
.../components/scalars/bookmark/BookmarkPanel.java | 37 ---
.../scalars/bookmark/BookmarkPanelFactory.java | 39 ---
.../ui/components/scalars/oiddto/OidDtoPanel.java | 37 ---
.../scalars/oiddto/OidDtoPanelFactory.java | 39 ---
.../scalars/primitive/CharacterPanel.java | 36 ---
.../scalars/primitive/CharacterPanelFactory.java | 43 ----
.../ui/components/scalars/uuid/UuidPanel.java | 41 ---
.../components/scalars/uuid/UuidPanelFactory.java | 45 ----
.../unknown/UnknownModelPanelFactory.java | 9 +-
.../wicket/ui/pages/login/IsisSignInPanel.html | 16 +-
.../wicket/ui/pages/login/IsisSignInPanel.java | 18 +-
.../wicket/ui/pages/login/SignInPanelAbstract.java | 281 +++++++++++++++++++++
.../wicket/ui/pages/login/WicketSignInPage.java | 31 ++-
.../ui/pages/login/WicketSignInPage.properties | 1 +
.../pages/login/js/client-side-timezone-select.js | 33 +--
.../isis/viewer/wicket/ui/panels/PanelBase.java | 8 +-
.../ui/components/scalars/ConverterTester.java | 15 +-
.../viewer/IsisModuleViewerWicketViewer.java | 2 -
.../ComponentFactoryRegistrarDefault.java | 75 +++++-
.../viewer/services/LocaleProviderWicket.java | 59 -----
103 files changed, 1421 insertions(+), 672 deletions(-)