You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by nt...@apache.org on 2023/01/27 11:06:55 UTC
[cayenne] 01/02: CAY-2789 MalformedJsonException thrown when reading manually edited JSON data in Postgres
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 <mi...@gmail.com>
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;