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/06/02 06:11:37 UTC

[isis] branch master updated: ISIS-3049: fixes prev. commit

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


The following commit(s) were added to refs/heads/master by this push:
     new 13e29e3eb7 ISIS-3049: fixes prev. commit
13e29e3eb7 is described below

commit 13e29e3eb7e6b1daea62b45341003a56a0afea03
Author: Andi Huber <ah...@apache.org>
AuthorDate: Thu Jun 2 08:11:32 2022 +0200

    ISIS-3049: fixes prev. commit
---
 .../apache/isis/applib/services/bookmark/Bookmark.java    |  9 ++++++---
 .../apache/isis/applib/services/hint/HintIdProvider.java  |  2 +-
 .../isis/applib/services/bookmark/BookmarkTest.java       | 15 +++++++++++++--
 3 files changed, 20 insertions(+), 6 deletions(-)

diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/bookmark/Bookmark.java b/api/applib/src/main/java/org/apache/isis/applib/services/bookmark/Bookmark.java
index 81ab96d2b9..f5bce4590a 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/bookmark/Bookmark.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/bookmark/Bookmark.java
@@ -118,14 +118,17 @@ public final class Bookmark implements Oid {
      */
     public static Optional<Bookmark> parse(final @Nullable String str) {
 
-        if(str==null) {
+        if(_Strings.isNullOrEmpty(str)) {
             return Optional.empty();
         }
         val tokenizer = new StringTokenizer(str, SEPARATOR);
         int tokenCount = tokenizer.countTokens();
         if(tokenCount==1) {
-            return Optional.of(Bookmark.emptyForLogicalTypeName(
-                    tokenizer.nextToken()));
+            return str.endsWith(SEPARATOR)
+                    || str.startsWith(SEPARATOR)
+                    ? Optional.empty() // invalid
+                    : Optional.of(Bookmark.emptyForLogicalTypeName(
+                            tokenizer.nextToken()));
         }
         if(tokenCount==2) {
             return Optional.of(Bookmark.forLogicalTypeNameAndIdentifier(
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/hint/HintIdProvider.java b/api/applib/src/main/java/org/apache/isis/applib/services/hint/HintIdProvider.java
index d0e24c768b..f35d643a66 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/hint/HintIdProvider.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/hint/HintIdProvider.java
@@ -19,7 +19,7 @@
 package org.apache.isis.applib.services.hint;
 
 /**
- * Provides an SPI for view models to implement to represent
+ * Provides a SPI for view models to implement to represent
  * their "logical" identity (stable even if the view model's state changes).
  *
  * <p>
diff --git a/api/applib/src/test/java/org/apache/isis/applib/services/bookmark/BookmarkTest.java b/api/applib/src/test/java/org/apache/isis/applib/services/bookmark/BookmarkTest.java
index fcbe901dc1..9319cac1e2 100644
--- a/api/applib/src/test/java/org/apache/isis/applib/services/bookmark/BookmarkTest.java
+++ b/api/applib/src/test/java/org/apache/isis/applib/services/bookmark/BookmarkTest.java
@@ -23,6 +23,7 @@ import java.util.Optional;
 import org.junit.jupiter.api.Test;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 import lombok.val;
 
@@ -39,17 +40,27 @@ class BookmarkTest {
     }
 
     @Test
-    void shouldNotParse_whenNotAtLeast2Token() {
+    void shouldNotParse_whenNotAtLeast1TokenOrInvalid() {
 
         assertEquals(Optional.empty(), Bookmark.parse(null));
         assertEquals(Optional.empty(), Bookmark.parse(""));
-        assertEquals(Optional.empty(), Bookmark.parse("a"));
+        //assertEquals(Optional.empty(), Bookmark.parse("a"));
         assertEquals(Optional.empty(), Bookmark.parse("a:"));
         assertEquals(Optional.empty(), Bookmark.parse(":"));
         assertEquals(Optional.empty(), Bookmark.parse(":b"));
 
     }
 
+    @Test
+    void shouldParse_when1Token() {
+
+        val bookmark = Bookmark.parse("a").get();
+
+        assertEquals("a", bookmark.getLogicalTypeName());
+        assertTrue(bookmark.isEmpty());
+        assertEquals(null, bookmark.getIdentifier());
+
+    }
 
     @Test
     void shouldParse_whenMoreThan2Token() {