You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by ah...@apache.org on 2022/04/22 13:08:12 UTC

[isis] 02/02: ISIS-3016: jgrowl: basic multiline support

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

ahuber pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git

commit 50f933d7b1465ecbaf80c7ed50831aaea7fe00eb
Author: Andi Huber <ah...@apache.org>
AuthorDate: Fri Apr 22 15:08:03 2022 +0200

    ISIS-3016: jgrowl: basic multiline support
---
 .../progmodel/assoc/AssociatedActionDemo.java      |  8 +++++++-
 .../isis/viewer/wicket/ui/errors/JGrowlUtil.java   |  9 ++++++++-
 .../viewer/wicket/ui/errors/JGrowlUtilTest.java    | 22 ++++++++++++++++------
 3 files changed, 31 insertions(+), 8 deletions(-)

diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/progmodel/assoc/AssociatedActionDemo.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/progmodel/assoc/AssociatedActionDemo.java
index 28db4a3474..743881deab 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/progmodel/assoc/AssociatedActionDemo.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/progmodel/assoc/AssociatedActionDemo.java
@@ -33,6 +33,7 @@ import org.apache.isis.applib.annotation.ActionLayout;
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Editing;
 import org.apache.isis.applib.annotation.Nature;
+import org.apache.isis.applib.annotation.ObjectSupport;
 import org.apache.isis.applib.annotation.PromptStyle;
 import org.apache.isis.applib.services.message.MessageService;
 
@@ -64,12 +65,17 @@ public class AssociatedActionDemo implements HasAsciiDocDescription {
 
     @Getter private final Set<DemoItem> items = new LinkedHashSet<>();
 
+    @XmlTransient @ObjectSupport
+    public String title() {
+        return "Associated Action Demo";
+    }
+
     @Action(choicesFrom = "items")
     @ActionLayout(promptStyle = PromptStyle.DIALOG_MODAL)
     public AssociatedActionDemo doSomethingWithItems(
 
             // bulk selection
-            Set<DemoItem> items) {
+            final Set<DemoItem> items) {
 
         if(items!=null) {
             items.forEach(item->messageService.informUser(item.getName()));
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/errors/JGrowlUtil.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/errors/JGrowlUtil.java
index a436928fa9..3e127fb74f 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/errors/JGrowlUtil.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/errors/JGrowlUtil.java
@@ -20,6 +20,7 @@ package org.apache.isis.viewer.wicket.ui.errors;
 
 import org.apache.wicket.util.string.Strings;
 
+import org.apache.isis.commons.internal.base._Text;
 import org.apache.isis.core.config.IsisConfiguration;
 import org.apache.isis.core.interaction.session.MessageBroker;
 
@@ -95,11 +96,17 @@ public class JGrowlUtil {
     }
 
     String escape(final String origMsg) {
+
+        _Text.normalize(origMsg);
+
         final String escaped = Strings.escapeMarkup(origMsg).toString();
 
         // convert (what would originally have been either) ' or " to '
         return escaped
                 .replace("&quot;", "'")
-                .replace("&#039;", "'");
+                .replace("&#039;", "'")
+                .replace("\r", "")
+                .replace("\t", " ")
+                .replace("\n", "<br/>");
     }
 }
diff --git a/viewers/wicket/ui/src/test/java/org/apache/isis/viewer/wicket/ui/errors/JGrowlUtilTest.java b/viewers/wicket/ui/src/test/java/org/apache/isis/viewer/wicket/ui/errors/JGrowlUtilTest.java
index bd48f3487b..74719fbee5 100644
--- a/viewers/wicket/ui/src/test/java/org/apache/isis/viewer/wicket/ui/errors/JGrowlUtilTest.java
+++ b/viewers/wicket/ui/src/test/java/org/apache/isis/viewer/wicket/ui/errors/JGrowlUtilTest.java
@@ -18,19 +18,29 @@
  */
 package org.apache.isis.viewer.wicket.ui.errors;
 
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
 import static org.hamcrest.CoreMatchers.equalTo;
 import static org.hamcrest.MatcherAssert.assertThat;
 
-public class JGrowlUtilTest {
+class JGrowlUtilTest {
 
     @Test
-    public void testEscape() throws Exception {
-
-        assertThat(JGrowlUtil.escape(
-                "double quotes \" and single quotes ' and <p>markup</p>"), equalTo(
+    void testEscape() throws Exception {
+        assertThat(JGrowlUtil
+                .escape(
+                        "double quotes \" and single quotes ' and <p>markup</p>"),
+                equalTo(
                         "double quotes ' and single quotes ' and &lt;p&gt;markup&lt;/p&gt;"));
     }
 
+    @Test
+    void testNewlineEscape() throws Exception {
+        assertThat(JGrowlUtil
+                .escape(
+                        "a\n\rb"),
+                equalTo(
+                        "a<br/>b"));
+    }
+
 }
\ No newline at end of file