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

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


The following commit(s) were added to refs/heads/ISIS-2957 by this push:
     new 89a7b86  ISIS-2957 tests fixed (Value), extended
89a7b86 is described below

commit 89a7b8661c9a814d8eefbb4f3dd451bc4b29c329
Author: Jörg Rade <[email protected]>
AuthorDate: Fri Mar 25 22:58:21 2022 +0100

    ISIS-2957 tests fixed (Value), extended
---
 .../org/apache/isis/client/kroviz/to/Value.kt      |  18 ++-
 .../kroviz/snapshots/demo2_0_0/HTTP_ERROR_403.kt   | 129 +++++++++++++++++++++
 .../apache/isis/client/kroviz/to/HttpErrorTest.kt  |  18 +++
 3 files changed, 154 insertions(+), 11 deletions(-)

diff --git 
a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/to/Value.kt
 
b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/to/Value.kt
index a470510..c63cbf0 100644
--- 
a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/to/Value.kt
+++ 
b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/to/Value.kt
@@ -20,7 +20,6 @@ package org.apache.isis.client.kroviz.to
 
 import kotlinx.serialization.*
 import kotlinx.serialization.builtins.nullable
-import kotlinx.serialization.descriptors.SerialDescriptor
 import kotlinx.serialization.encoding.Decoder
 import kotlinx.serialization.encoding.Encoder
 import kotlinx.serialization.json.Json
@@ -39,15 +38,15 @@ import kotlinx.serialization.json.jsonPrimitive
  */
 @Serializable
 data class Value(
-        //IMPROVE: make content immutable (again) and handle property edits 
eg. via a wrapper
-        @Contextual @SerialName("value") var content: Any? = null
+    //IMPROVE: make content immutable (again) and handle property edits e.g. 
via a wrapper
+    @Contextual @SerialName("value") var content: Any? = null,
 ) : TransferObject {
 
     @ExperimentalSerializationApi
     @Serializer(forClass = Value::class)
     companion object : KSerializer<Value> {
 
-       // @ExperimentalSerializationApi
+        // @ExperimentalSerializationApi
         override fun deserialize(decoder: Decoder): Value {
             val nss = JsonElement.serializer().nullable
             val jse: JsonElement? = 
decoder.decodeNullableSerializableValue(nss)!!
@@ -72,19 +71,16 @@ data class Value(
         }
 
         private fun isNumeric(jse: JsonElement): Boolean {
-            try {
+            return try {
                 jse.jsonPrimitive.content.toLong()
-                return true
+                true
             } catch (nfe: NumberFormatException) {
-                return false
+                false
             } catch (ie: IllegalArgumentException) {
-                return false
+                false
             }
         }
 
-        override val descriptor: SerialDescriptor
-            get() = TODO("Not yet implemented")
-
         override fun serialize(encoder: Encoder, value: Value) {
             TODO("Not yet implemented")
         }
diff --git 
a/incubator/clients/kroviz/src/test/kotlin/org/apache/isis/client/kroviz/snapshots/demo2_0_0/HTTP_ERROR_403.kt
 
b/incubator/clients/kroviz/src/test/kotlin/org/apache/isis/client/kroviz/snapshots/demo2_0_0/HTTP_ERROR_403.kt
new file mode 100644
index 0000000..780fe4d
--- /dev/null
+++ 
b/incubator/clients/kroviz/src/test/kotlin/org/apache/isis/client/kroviz/snapshots/demo2_0_0/HTTP_ERROR_403.kt
@@ -0,0 +1,129 @@
+/*
+ *  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 HTTP_ERROR_403 : Response() {
+    val invoke = "\$invoke"
+    val invokeOnTarget = "\$invokeOnTarget"
+    val preprocess = "\$preprocess"
+    val doFilter = "\$doFilter"
+    val ConnectionHandler = "\$ConnectionHandler"
+    val SocketProcessor = "\$SocketProcessor"
+    val Worker = "\$Worker"
+    val WrappingRunnable = "\$WrappingRunnable"
+    val toCallable = "\$toCallable"
+
+    override val url = ""
+    override val str = """{
+  "httpStatusCode": 403,
+  "message": "Search object in prompt (not yet implemented in demo)",
+  "detail": {
+    "className": 
"org.apache.isis.viewer.restfulobjects.rendering.RestfulObjectsApplicationException",
+    "message": "Search object in prompt (not yet implemented in demo)",
+    "element": [
+      
"org.apache.isis.viewer.restfulobjects.rendering.RestfulObjectsApplicationException.createWithCauseAndMessage(RestfulObjectsApplicationException.java:50)",
+      
"org.apache.isis.viewer.restfulobjects.rendering.RestfulObjectsApplicationException.createWithMessage(RestfulObjectsApplicationException.java:37)",
+      
"org.apache.isis.viewer.restfulobjects.viewer.resources.InteractionFailureHandler.onFailure(InteractionFailureHandler.java:53)",
+      
"org.apache.isis.core.metamodel.interactions.managed.MemberInteraction.getManagedMemberElseThrow(MemberInteraction.java:114)",
+      
"org.apache.isis.core.metamodel.interactions.managed.ActionInteraction.getManagedActionElseThrow(ActionInteraction.java:155)",
+      
"org.apache.isis.viewer.restfulobjects.viewer.resources.ObjectAdapterAccessHelper.getObjectActionThatIsVisibleForIntentAndSemanticConstraint(ObjectAdapterAccessHelper.java:64)",
+      
"org.apache.isis.viewer.restfulobjects.viewer.resources.DomainResourceHelper.actionPrompt(DomainResourceHelper.java:145)",
+      
"org.apache.isis.viewer.restfulobjects.viewer.resources.DomainObjectResourceServerside.actionPrompt(DomainObjectResourceServerside.java:537)",
+      "jdk.internal.reflect.GeneratedMethodAccessor240.invoke(Unknown Source)",
+      
"java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)",
+      "java.base/java.lang.reflect.Method.invoke(Method.java:564)",
+      
"org.jboss.resteasy.core.MethodInjectorImpl.invoke(MethodInjectorImpl.java:170)",
+      
"org.jboss.resteasy.core.MethodInjectorImpl.invoke(MethodInjectorImpl.java:130)",
+      
"org.jboss.resteasy.core.ResourceMethodInvoker.internalInvokeOnTarget(ResourceMethodInvoker.java:660)",
+      
"org.jboss.resteasy.core.ResourceMethodInvoker.invokeOnTargetAfterFilter(ResourceMethodInvoker.java:524)",
+      
"org.jboss.resteasy.core.ResourceMethodInvoker.lambda$invokeOnTarget${'$'}2(ResourceMethodInvoker.java:474)",
+      
"org.jboss.resteasy.core.interception.jaxrs.PreMatchContainerRequestContext.filter(PreMatchContainerRequestContext.java:364)",
+      
"org.jboss.resteasy.core.ResourceMethodInvoker.invokeOnTarget(ResourceMethodInvoker.java:476)",
+      
"org.jboss.resteasy.core.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:434)",
+      
"org.jboss.resteasy.core.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:408)",
+      
"org.jboss.resteasy.core.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:69)",
+      
"org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:492)",
+      
"org.jboss.resteasy.core.SynchronousDispatcher.lambda$invoke${'$'}4(SynchronousDispatcher.java:261)",
+      
"org.jboss.resteasy.core.SynchronousDispatcher.lambda$preprocess${'$'}0(SynchronousDispatcher.java:161)",
+      
"org.jboss.resteasy.core.interception.jaxrs.PreMatchContainerRequestContext.filter(PreMatchContainerRequestContext.java:364)",
+      
"org.jboss.resteasy.core.SynchronousDispatcher.preprocess(SynchronousDispatcher.java:164)",
+      
"org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:247)",
+      
"org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.service(ServletContainerDispatcher.java:249)",
+      
"org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:60)",
+      
"org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:55)",
+      "javax.servlet.http.HttpServlet.service(HttpServlet.java:750)",
+      
"org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:228)",
+      
"org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:163)",
+      "org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)",
+      
"org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:190)",
+      
"org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:163)",
+      
"org.apache.isis.viewer.restfulobjects.viewer.webmodule.IsisRestfulObjectsInteractionFilter.lambda$doFilter${'$'}1(IsisRestfulObjectsInteractionFilter.java:386)",
+      
"org.apache.isis.applib.services.iactnlayer.ThrowingRunnable.lambda$toCallable${'$'}0(ThrowingRunnable.java:44)",
+      "org.apache.isis.commons.functional.Result.of(Result.java:58)",
+      
"org.apache.isis.core.runtimeservices.transaction.TransactionServiceSpring.callTransactional(TransactionServiceSpring.java:104)",
+      
"org.apache.isis.applib.services.xactn.TransactionalProcessor.callWithinCurrentTransactionElseCreateNew(TransactionalProcessor.java:100)",
+      
"org.apache.isis.applib.services.xactn.TransactionalProcessor.runWithinCurrentTransactionElseCreateNew(TransactionalProcessor.java:110)",
+      
"org.apache.isis.viewer.restfulobjects.viewer.webmodule.IsisRestfulObjectsInteractionFilter.lambda$doFilter${'$'}3(IsisRestfulObjectsInteractionFilter.java:385)",
+      
"org.apache.isis.core.runtimeservices.session.InteractionServiceDefault.run(InteractionServiceDefault.java:265)",
+      
"org.apache.isis.viewer.restfulobjects.viewer.webmodule.IsisRestfulObjectsInteractionFilter.doFilter(IsisRestfulObjectsInteractionFilter.java:382)",
+      
"org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:190)",
+      
"org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:163)",
+      
"org.apache.isis.core.webapp.modules.logonlog.IsisLogOnExceptionFilter.doFilter(IsisLogOnExceptionFilter.java:60)",
+      
"org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:190)",
+      
"org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:163)",
+      
"org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91)",
+      
"org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)",
+      
"org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:190)",
+      
"org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:163)",
+      
"org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)",
+      
"org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)",
+      
"org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:190)",
+      
"org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:163)",
+      
"org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.doFilterInternal(WebMvcMetricsFilter.java:96)",
+      
"org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)",
+      
"org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:190)",
+      
"org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:163)",
+      
"org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)",
+      
"org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)",
+      
"org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:190)",
+      
"org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:163)",
+      
"org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)",
+      
"org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)",
+      
"org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542)",
+      
"org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:143)",
+      
"org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)",
+      
"org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)",
+      
"org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:357)",
+      
"org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:382)",
+      
"org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)",
+      
"org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:893)",
+      
"org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1723)",
+      
"org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)",
+      
"java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)",
+      
"java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630)",
+      
"org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)",
+      "java.base/java.lang.Thread.run(Thread.java:832)"
+    ],
+    "causedBy": null
+  }
+}
+"""
+}
diff --git 
a/incubator/clients/kroviz/src/test/kotlin/org/apache/isis/client/kroviz/to/HttpErrorTest.kt
 
b/incubator/clients/kroviz/src/test/kotlin/org/apache/isis/client/kroviz/to/HttpErrorTest.kt
index 7aacdd4..cac0fb1 100644
--- 
a/incubator/clients/kroviz/src/test/kotlin/org/apache/isis/client/kroviz/to/HttpErrorTest.kt
+++ 
b/incubator/clients/kroviz/src/test/kotlin/org/apache/isis/client/kroviz/to/HttpErrorTest.kt
@@ -21,6 +21,7 @@ package org.apache.isis.client.kroviz.to
 import org.apache.isis.client.kroviz.handler.Http401ErrorHandler
 import org.apache.isis.client.kroviz.handler.HttpErrorHandler
 import org.apache.isis.client.kroviz.snapshots.demo2_0_0.HTTP_ERROR_401
+import org.apache.isis.client.kroviz.snapshots.demo2_0_0.HTTP_ERROR_403
 import org.apache.isis.client.kroviz.snapshots.demo2_0_0.HTTP_ERROR_405
 import org.apache.isis.client.kroviz.snapshots.demo2_0_0.HTTP_ERROR_500
 import org.apache.isis.client.kroviz.snapshots.simpleapp1_16_0.HTTP_ERROR
@@ -50,6 +51,23 @@ class HttpErrorTest {
     }
 
     @Test
+    fun test403() {
+        val jsonStr = HTTP_ERROR_403.str
+        val error = HttpErrorHandler().parse(jsonStr) as HttpError
+        val code = error.getStatusCode()
+        assertEquals(403, code)
+        assertNotNull(error.getMessage())
+
+        val detail = error.detail
+        assertNotNull(detail)
+        assertNotNull(detail.className)
+        assertNotNull(detail.message)
+        assertEquals(error.getMessage(), detail.message)
+        assertNotNull(detail.element)
+        assertTrue(detail.element.size > 0)
+    }
+
+    @Test
     fun test405() {
         val jsonStr = HTTP_ERROR_405.str
         val error = HttpErrorHandler().parse(jsonStr) as HttpError

Reply via email to