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

ntimofeev pushed a commit to branch STABLE-4.2
in repository https://gitbox.apache.org/repos/asf/cayenne.git

commit ca04d2bd2d49d338b701dbf3005c8b34372ed508
Author: Mikhail Dzianishchyts <[email protected]>
AuthorDate: Tue Jan 17 11:22:45 2023 +0300

    CAY-2789 MalformedJsonException thrown when reading manually edited JSON 
data in Postgres
    
    (cherry picked from commit 6634ecba37d0a7dd07eeff7643b03a5207b93951)
---
 .../main/java/org/apache/cayenne/value/json/JsonTokenizer.java |  3 +++
 .../java/org/apache/cayenne/value/json/JsonTokenizerTest.java  | 10 ++++++++++
 2 files changed, 13 insertions(+)

diff --git 
a/cayenne-server/src/main/java/org/apache/cayenne/value/json/JsonTokenizer.java 
b/cayenne-server/src/main/java/org/apache/cayenne/value/json/JsonTokenizer.java
index 14f415240..9ab9ec46e 100644
--- 
a/cayenne-server/src/main/java/org/apache/cayenne/value/json/JsonTokenizer.java
+++ 
b/cayenne-server/src/main/java/org/apache/cayenne/value/json/JsonTokenizer.java
@@ -52,6 +52,9 @@ final class JsonTokenizer {
         while (position < data.length) {
             // skip whitespace
             skipWhitespace();
+            if (position == data.length) {
+                break;
+            }
             JsonToken token = nextValue();
             // only string could be used as an object member name
             if (states[currentState] == State.OBJECT_MEMBER_NAME) {
diff --git 
a/cayenne-server/src/test/java/org/apache/cayenne/value/json/JsonTokenizerTest.java
 
b/cayenne-server/src/test/java/org/apache/cayenne/value/json/JsonTokenizerTest.java
index daea7cb05..c64d01415 100644
--- 
a/cayenne-server/src/test/java/org/apache/cayenne/value/json/JsonTokenizerTest.java
+++ 
b/cayenne-server/src/test/java/org/apache/cayenne/value/json/JsonTokenizerTest.java
@@ -28,6 +28,16 @@ import static org.junit.Assert.assertEquals;
  */
 public class JsonTokenizerTest {
 
+    @Test
+    public void testEmpty() {
+        JsonTokenizer tokenizer;
+        JsonTokenizer.JsonToken token;
+
+        tokenizer = new JsonTokenizer("");
+        token = tokenizer.nextToken();
+        assertEquals(JsonTokenizer.TokenType.NONE, token.type);
+    }
+
     @Test
     public void testNull() {
         JsonTokenizer tokenizer;

Reply via email to