diff --git a/.editorconfig b/.editorconfig
index d552419d..ebd2f3cc 100644
--- a/.editorconfig
+++ b/.editorconfig
@@ -11,5 +11,5 @@ insert_final_newline = true
indent_style = space
indent_size = 4
-[*.{yml,yaml,sh,json}]
+[*.{yml,yaml,sh,json,md}]
indent_size = 2
diff --git a/json-utils/pom.xml b/json-utils/pom.xml
new file mode 100644
index 00000000..c0e7e0fd
--- /dev/null
+++ b/json-utils/pom.xml
@@ -0,0 +1,76 @@
+
+
+ 4.0.0
+
+
+ de.sonallux.spotify
+ spotify-web-api-parent
+ 2021.10.17
+ ../pom.xml
+
+
+ json-utils
+ 2021.10.17
+ jar
+
+ json-utils
+ Utility functions for working with JSON and YAML
+ https://github.com/sonallux/spotify-web-api
+
+
+ 2.6.0
+
+ de.sonallux.spotify.json
+
+
+
+
+ com.fasterxml.jackson.core
+ jackson-databind
+
+
+ com.jayway.jsonpath
+ json-path
+ ${jsonpath.version}
+
+
+ org.projectlombok
+ lombok
+ ${lombok.version}
+ provided
+
+
+ org.junit.jupiter
+ junit-jupiter
+ ${junit.version}
+ test
+
+
+ org.mockito
+ mockito-junit-jupiter
+ ${mockito-junit-jupiter.version}
+ test
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+ ${maven-compiler-plugin.version}
+
+
+
+ org.projectlombok
+ lombok
+ ${lombok.version}
+
+
+
+
+
+
+
diff --git a/spotify-web-api-parser/src/main/java/de/sonallux/spotify/parser/patching/AddOperation.java b/json-utils/src/main/java/de/sonallux/json/patching/AddOperation.java
similarity index 95%
rename from spotify-web-api-parser/src/main/java/de/sonallux/spotify/parser/patching/AddOperation.java
rename to json-utils/src/main/java/de/sonallux/json/patching/AddOperation.java
index ba3c11e1..4060cbe7 100644
--- a/spotify-web-api-parser/src/main/java/de/sonallux/spotify/parser/patching/AddOperation.java
+++ b/json-utils/src/main/java/de/sonallux/json/patching/AddOperation.java
@@ -1,4 +1,4 @@
-package de.sonallux.spotify.parser.patching;
+package de.sonallux.json.patching;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
diff --git a/spotify-web-api-parser/src/main/java/de/sonallux/spotify/parser/patching/DeleteOperation.java b/json-utils/src/main/java/de/sonallux/json/patching/DeleteOperation.java
similarity index 94%
rename from spotify-web-api-parser/src/main/java/de/sonallux/spotify/parser/patching/DeleteOperation.java
rename to json-utils/src/main/java/de/sonallux/json/patching/DeleteOperation.java
index 3fec604d..f258dffe 100644
--- a/spotify-web-api-parser/src/main/java/de/sonallux/spotify/parser/patching/DeleteOperation.java
+++ b/json-utils/src/main/java/de/sonallux/json/patching/DeleteOperation.java
@@ -1,4 +1,4 @@
-package de.sonallux.spotify.parser.patching;
+package de.sonallux.json.patching;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
diff --git a/spotify-web-api-parser/src/main/java/de/sonallux/spotify/parser/patching/Patch.java b/json-utils/src/main/java/de/sonallux/json/patching/Patch.java
similarity index 94%
rename from spotify-web-api-parser/src/main/java/de/sonallux/spotify/parser/patching/Patch.java
rename to json-utils/src/main/java/de/sonallux/json/patching/Patch.java
index a7848d88..0afcde36 100644
--- a/spotify-web-api-parser/src/main/java/de/sonallux/spotify/parser/patching/Patch.java
+++ b/json-utils/src/main/java/de/sonallux/json/patching/Patch.java
@@ -1,4 +1,4 @@
-package de.sonallux.spotify.parser.patching;
+package de.sonallux.json.patching;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
diff --git a/spotify-web-api-parser/src/main/java/de/sonallux/spotify/parser/patching/PatchException.java b/json-utils/src/main/java/de/sonallux/json/patching/PatchException.java
similarity index 83%
rename from spotify-web-api-parser/src/main/java/de/sonallux/spotify/parser/patching/PatchException.java
rename to json-utils/src/main/java/de/sonallux/json/patching/PatchException.java
index 601e52ba..60c4e20e 100644
--- a/spotify-web-api-parser/src/main/java/de/sonallux/spotify/parser/patching/PatchException.java
+++ b/json-utils/src/main/java/de/sonallux/json/patching/PatchException.java
@@ -1,4 +1,4 @@
-package de.sonallux.spotify.parser.patching;
+package de.sonallux.json.patching;
public class PatchException extends Exception {
public PatchException(String message) {
diff --git a/spotify-web-api-parser/src/main/java/de/sonallux/spotify/parser/patching/PatchOperation.java b/json-utils/src/main/java/de/sonallux/json/patching/PatchOperation.java
similarity index 95%
rename from spotify-web-api-parser/src/main/java/de/sonallux/spotify/parser/patching/PatchOperation.java
rename to json-utils/src/main/java/de/sonallux/json/patching/PatchOperation.java
index 1be4cf7e..74cc7389 100644
--- a/spotify-web-api-parser/src/main/java/de/sonallux/spotify/parser/patching/PatchOperation.java
+++ b/json-utils/src/main/java/de/sonallux/json/patching/PatchOperation.java
@@ -1,4 +1,4 @@
-package de.sonallux.spotify.parser.patching;
+package de.sonallux.json.patching;
import com.fasterxml.jackson.annotation.*;
import com.fasterxml.jackson.databind.JsonNode;
@@ -22,7 +22,7 @@
@JsonSubTypes.Type(name = "test", value = TestOperation.class)
})
@AllArgsConstructor(access = AccessLevel.PROTECTED)
-abstract class PatchOperation {
+public abstract class PatchOperation {
protected static final ObjectMapper OBJECT_MAPPER = new ObjectMapper();
diff --git a/spotify-web-api-parser/src/main/java/de/sonallux/spotify/parser/patching/PutOperation.java b/json-utils/src/main/java/de/sonallux/json/patching/PutOperation.java
similarity index 95%
rename from spotify-web-api-parser/src/main/java/de/sonallux/spotify/parser/patching/PutOperation.java
rename to json-utils/src/main/java/de/sonallux/json/patching/PutOperation.java
index 47f1056b..ec7689c6 100644
--- a/spotify-web-api-parser/src/main/java/de/sonallux/spotify/parser/patching/PutOperation.java
+++ b/json-utils/src/main/java/de/sonallux/json/patching/PutOperation.java
@@ -1,4 +1,4 @@
-package de.sonallux.spotify.parser.patching;
+package de.sonallux.json.patching;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
diff --git a/spotify-web-api-parser/src/main/java/de/sonallux/spotify/parser/patching/RenameOperation.java b/json-utils/src/main/java/de/sonallux/json/patching/RenameOperation.java
similarity index 95%
rename from spotify-web-api-parser/src/main/java/de/sonallux/spotify/parser/patching/RenameOperation.java
rename to json-utils/src/main/java/de/sonallux/json/patching/RenameOperation.java
index e189f0a9..a4983161 100644
--- a/spotify-web-api-parser/src/main/java/de/sonallux/spotify/parser/patching/RenameOperation.java
+++ b/json-utils/src/main/java/de/sonallux/json/patching/RenameOperation.java
@@ -1,4 +1,4 @@
-package de.sonallux.spotify.parser.patching;
+package de.sonallux.json.patching;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
diff --git a/spotify-web-api-parser/src/main/java/de/sonallux/spotify/parser/patching/SetOperation.java b/json-utils/src/main/java/de/sonallux/json/patching/SetOperation.java
similarity index 95%
rename from spotify-web-api-parser/src/main/java/de/sonallux/spotify/parser/patching/SetOperation.java
rename to json-utils/src/main/java/de/sonallux/json/patching/SetOperation.java
index dd22cb72..6b7a9ebd 100644
--- a/spotify-web-api-parser/src/main/java/de/sonallux/spotify/parser/patching/SetOperation.java
+++ b/json-utils/src/main/java/de/sonallux/json/patching/SetOperation.java
@@ -1,4 +1,4 @@
-package de.sonallux.spotify.parser.patching;
+package de.sonallux.json.patching;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
diff --git a/spotify-web-api-parser/src/main/java/de/sonallux/spotify/parser/patching/TestOperation.java b/json-utils/src/main/java/de/sonallux/json/patching/TestOperation.java
similarity index 96%
rename from spotify-web-api-parser/src/main/java/de/sonallux/spotify/parser/patching/TestOperation.java
rename to json-utils/src/main/java/de/sonallux/json/patching/TestOperation.java
index 2784f6f5..02c33227 100644
--- a/spotify-web-api-parser/src/main/java/de/sonallux/spotify/parser/patching/TestOperation.java
+++ b/json-utils/src/main/java/de/sonallux/json/patching/TestOperation.java
@@ -1,4 +1,4 @@
-package de.sonallux.spotify.parser.patching;
+package de.sonallux.json.patching;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
diff --git a/json-utils/src/moditect/module-info.java b/json-utils/src/moditect/module-info.java
new file mode 100644
index 00000000..51fbc944
--- /dev/null
+++ b/json-utils/src/moditect/module-info.java
@@ -0,0 +1,8 @@
+module de.sonallux.json {
+ requires com.fasterxml.jackson.core;
+ requires com.fasterxml.jackson.databind;
+ requires com.jayway.jsonpath;
+ requires static lombok;
+
+ exports de.sonallux.json;
+}
diff --git a/spotify-web-api-parser/src/test/java/de/sonallux/spotify/parser/patching/AddOperationTest.java b/json-utils/src/test/java/de/sonallux/json/patching/AddOperationTest.java
similarity index 95%
rename from spotify-web-api-parser/src/test/java/de/sonallux/spotify/parser/patching/AddOperationTest.java
rename to json-utils/src/test/java/de/sonallux/json/patching/AddOperationTest.java
index b4265042..ebf497c4 100644
--- a/spotify-web-api-parser/src/test/java/de/sonallux/spotify/parser/patching/AddOperationTest.java
+++ b/json-utils/src/test/java/de/sonallux/json/patching/AddOperationTest.java
@@ -1,4 +1,4 @@
-package de.sonallux.spotify.parser.patching;
+package de.sonallux.json.patching;
import com.fasterxml.jackson.core.type.TypeReference;
import org.junit.jupiter.api.BeforeAll;
@@ -38,7 +38,7 @@ static Stream testOperationThrowsError() {
@ParameterizedTest
@MethodSource
- void testOperationThrowsError(OperationTestData.FailureTestCase testCase) throws Exception {
+ void testOperationThrowsError(OperationTestData.FailureTestCase testCase) {
assertPatchThrowsError(testCase);
}
diff --git a/spotify-web-api-parser/src/test/java/de/sonallux/spotify/parser/patching/DeleteOperationTest.java b/json-utils/src/test/java/de/sonallux/json/patching/DeleteOperationTest.java
similarity index 97%
rename from spotify-web-api-parser/src/test/java/de/sonallux/spotify/parser/patching/DeleteOperationTest.java
rename to json-utils/src/test/java/de/sonallux/json/patching/DeleteOperationTest.java
index d0ed5775..8f75285c 100644
--- a/spotify-web-api-parser/src/test/java/de/sonallux/spotify/parser/patching/DeleteOperationTest.java
+++ b/json-utils/src/test/java/de/sonallux/json/patching/DeleteOperationTest.java
@@ -1,4 +1,4 @@
-package de.sonallux.spotify.parser.patching;
+package de.sonallux.json.patching;
import com.fasterxml.jackson.core.type.TypeReference;
import org.junit.jupiter.api.BeforeAll;
diff --git a/spotify-web-api-parser/src/test/java/de/sonallux/spotify/parser/patching/OperationTestData.java b/json-utils/src/test/java/de/sonallux/json/patching/OperationTestData.java
similarity index 92%
rename from spotify-web-api-parser/src/test/java/de/sonallux/spotify/parser/patching/OperationTestData.java
rename to json-utils/src/test/java/de/sonallux/json/patching/OperationTestData.java
index b9d501d5..2b4f8181 100644
--- a/spotify-web-api-parser/src/test/java/de/sonallux/spotify/parser/patching/OperationTestData.java
+++ b/json-utils/src/test/java/de/sonallux/json/patching/OperationTestData.java
@@ -1,4 +1,4 @@
-package de.sonallux.spotify.parser.patching;
+package de.sonallux.json.patching;
import com.fasterxml.jackson.databind.JsonNode;
diff --git a/spotify-web-api-parser/src/test/java/de/sonallux/spotify/parser/patching/PatchOperationTest.java b/json-utils/src/test/java/de/sonallux/json/patching/PatchOperationTest.java
similarity index 96%
rename from spotify-web-api-parser/src/test/java/de/sonallux/spotify/parser/patching/PatchOperationTest.java
rename to json-utils/src/test/java/de/sonallux/json/patching/PatchOperationTest.java
index 0fc80e14..a034ba85 100644
--- a/spotify-web-api-parser/src/test/java/de/sonallux/spotify/parser/patching/PatchOperationTest.java
+++ b/json-utils/src/test/java/de/sonallux/json/patching/PatchOperationTest.java
@@ -1,4 +1,4 @@
-package de.sonallux.spotify.parser.patching;
+package de.sonallux.json.patching;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
diff --git a/spotify-web-api-parser/src/test/java/de/sonallux/spotify/parser/patching/PatchTest.java b/json-utils/src/test/java/de/sonallux/json/patching/PatchTest.java
similarity index 99%
rename from spotify-web-api-parser/src/test/java/de/sonallux/spotify/parser/patching/PatchTest.java
rename to json-utils/src/test/java/de/sonallux/json/patching/PatchTest.java
index d9efc447..49a10e2d 100644
--- a/spotify-web-api-parser/src/test/java/de/sonallux/spotify/parser/patching/PatchTest.java
+++ b/json-utils/src/test/java/de/sonallux/json/patching/PatchTest.java
@@ -1,4 +1,4 @@
-package de.sonallux.spotify.parser.patching;
+package de.sonallux.json.patching;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
diff --git a/spotify-web-api-parser/src/test/java/de/sonallux/spotify/parser/patching/PutOperationTest.java b/json-utils/src/test/java/de/sonallux/json/patching/PutOperationTest.java
similarity index 95%
rename from spotify-web-api-parser/src/test/java/de/sonallux/spotify/parser/patching/PutOperationTest.java
rename to json-utils/src/test/java/de/sonallux/json/patching/PutOperationTest.java
index 512e6b94..533d0cd0 100644
--- a/spotify-web-api-parser/src/test/java/de/sonallux/spotify/parser/patching/PutOperationTest.java
+++ b/json-utils/src/test/java/de/sonallux/json/patching/PutOperationTest.java
@@ -1,4 +1,4 @@
-package de.sonallux.spotify.parser.patching;
+package de.sonallux.json.patching;
import com.fasterxml.jackson.core.type.TypeReference;
import org.junit.jupiter.api.BeforeAll;
@@ -38,7 +38,7 @@ static Stream testOperationThrowsError() {
@ParameterizedTest
@MethodSource
- void testOperationThrowsError(OperationTestData.FailureTestCase testCase) throws Exception {
+ void testOperationThrowsError(OperationTestData.FailureTestCase testCase) {
assertPatchThrowsError(testCase);
}
diff --git a/spotify-web-api-parser/src/test/java/de/sonallux/spotify/parser/patching/RenameOperationTest.java b/json-utils/src/test/java/de/sonallux/json/patching/RenameOperationTest.java
similarity index 95%
rename from spotify-web-api-parser/src/test/java/de/sonallux/spotify/parser/patching/RenameOperationTest.java
rename to json-utils/src/test/java/de/sonallux/json/patching/RenameOperationTest.java
index 7dd2b91f..9adb965f 100644
--- a/spotify-web-api-parser/src/test/java/de/sonallux/spotify/parser/patching/RenameOperationTest.java
+++ b/json-utils/src/test/java/de/sonallux/json/patching/RenameOperationTest.java
@@ -1,4 +1,4 @@
-package de.sonallux.spotify.parser.patching;
+package de.sonallux.json.patching;
import com.fasterxml.jackson.core.type.TypeReference;
import org.junit.jupiter.api.BeforeAll;
@@ -37,7 +37,7 @@ static Stream testOperationThrowsError() {
@ParameterizedTest
@MethodSource
- void testOperationThrowsError(OperationTestData.FailureTestCase testCase) throws Exception {
+ void testOperationThrowsError(OperationTestData.FailureTestCase testCase) {
assertPatchThrowsError(testCase);
}
diff --git a/spotify-web-api-parser/src/test/java/de/sonallux/spotify/parser/patching/SetOperationTest.java b/json-utils/src/test/java/de/sonallux/json/patching/SetOperationTest.java
similarity index 95%
rename from spotify-web-api-parser/src/test/java/de/sonallux/spotify/parser/patching/SetOperationTest.java
rename to json-utils/src/test/java/de/sonallux/json/patching/SetOperationTest.java
index 53d8c2ff..2de0a9ac 100644
--- a/spotify-web-api-parser/src/test/java/de/sonallux/spotify/parser/patching/SetOperationTest.java
+++ b/json-utils/src/test/java/de/sonallux/json/patching/SetOperationTest.java
@@ -1,4 +1,4 @@
-package de.sonallux.spotify.parser.patching;
+package de.sonallux.json.patching;
import com.fasterxml.jackson.core.type.TypeReference;
import org.junit.jupiter.api.BeforeAll;
@@ -38,7 +38,7 @@ static Stream testOperationThrowsError() {
@ParameterizedTest
@MethodSource
- void testOperationThrowsError(OperationTestData.FailureTestCase testCase) throws Exception {
+ void testOperationThrowsError(OperationTestData.FailureTestCase testCase) {
assertPatchThrowsError(testCase);
}
diff --git a/spotify-web-api-parser/src/test/java/de/sonallux/spotify/parser/patching/TestOperationTest.java b/json-utils/src/test/java/de/sonallux/json/patching/TestOperationTest.java
similarity index 95%
rename from spotify-web-api-parser/src/test/java/de/sonallux/spotify/parser/patching/TestOperationTest.java
rename to json-utils/src/test/java/de/sonallux/json/patching/TestOperationTest.java
index 263f3364..55f2df76 100644
--- a/spotify-web-api-parser/src/test/java/de/sonallux/spotify/parser/patching/TestOperationTest.java
+++ b/json-utils/src/test/java/de/sonallux/json/patching/TestOperationTest.java
@@ -1,4 +1,4 @@
-package de.sonallux.spotify.parser.patching;
+package de.sonallux.json.patching;
import com.fasterxml.jackson.core.type.TypeReference;
import org.junit.jupiter.api.BeforeAll;
@@ -38,7 +38,7 @@ static Stream testOperationThrowsError() {
@ParameterizedTest
@MethodSource
- void testOperationThrowsError(OperationTestData.FailureTestCase testCase) throws Exception {
+ void testOperationThrowsError(OperationTestData.FailureTestCase testCase) {
assertPatchThrowsError(testCase);
}
diff --git a/spotify-web-api-parser/src/test/resources/patching/add.json b/json-utils/src/test/resources/patching/add.json
similarity index 100%
rename from spotify-web-api-parser/src/test/resources/patching/add.json
rename to json-utils/src/test/resources/patching/add.json
diff --git a/spotify-web-api-parser/src/test/resources/patching/delete.json b/json-utils/src/test/resources/patching/delete.json
similarity index 100%
rename from spotify-web-api-parser/src/test/resources/patching/delete.json
rename to json-utils/src/test/resources/patching/delete.json
diff --git a/spotify-web-api-parser/src/test/resources/patching/put.json b/json-utils/src/test/resources/patching/put.json
similarity index 100%
rename from spotify-web-api-parser/src/test/resources/patching/put.json
rename to json-utils/src/test/resources/patching/put.json
diff --git a/spotify-web-api-parser/src/test/resources/patching/rename.json b/json-utils/src/test/resources/patching/rename.json
similarity index 100%
rename from spotify-web-api-parser/src/test/resources/patching/rename.json
rename to json-utils/src/test/resources/patching/rename.json
diff --git a/spotify-web-api-parser/src/test/resources/patching/set.json b/json-utils/src/test/resources/patching/set.json
similarity index 100%
rename from spotify-web-api-parser/src/test/resources/patching/set.json
rename to json-utils/src/test/resources/patching/set.json
diff --git a/spotify-web-api-parser/src/test/resources/patching/test.json b/json-utils/src/test/resources/patching/test.json
similarity index 100%
rename from spotify-web-api-parser/src/test/resources/patching/test.json
rename to json-utils/src/test/resources/patching/test.json
diff --git a/pom.xml b/pom.xml
index 76b7f1ec..be9992ff 100644
--- a/pom.xml
+++ b/pom.xml
@@ -17,6 +17,7 @@
spotify-web-api-core
spotify-web-api-generator-open-api
spotify-web-api-parser
+ json-utils
diff --git a/spotify-web-api-parser/pom.xml b/spotify-web-api-parser/pom.xml
index 6ad0ed7d..1303a99a 100644
--- a/spotify-web-api-parser/pom.xml
+++ b/spotify-web-api-parser/pom.xml
@@ -21,7 +21,6 @@
1.14.3
- 2.6.0
de.sonallux.spotify.parser
@@ -32,6 +31,11 @@
spotify-web-api-core
2021.10.17
+
+ de.sonallux.spotify
+ json-utils
+ 2021.10.17
+
org.jsoup
jsoup
@@ -41,15 +45,6 @@
com.fasterxml.jackson.core
jackson-databind
-
- com.fasterxml.jackson.dataformat
- jackson-dataformat-yaml
-
-
- com.jayway.jsonpath
- json-path
- ${jsonpath.version}
-
org.slf4j
slf4j-api
diff --git a/spotify-web-api-parser/src/main/java/de/sonallux/spotify/parser/ApiPatches.java b/spotify-web-api-parser/src/main/java/de/sonallux/spotify/parser/ApiPatches.java
index d2e17d30..81f42ed8 100644
--- a/spotify-web-api-parser/src/main/java/de/sonallux/spotify/parser/ApiPatches.java
+++ b/spotify-web-api-parser/src/main/java/de/sonallux/spotify/parser/ApiPatches.java
@@ -5,8 +5,8 @@
import com.fasterxml.jackson.databind.ObjectMapper;
import de.sonallux.spotify.core.Yaml;
import de.sonallux.spotify.core.model.SpotifyWebApi;
-import de.sonallux.spotify.parser.patching.Patch;
-import de.sonallux.spotify.parser.patching.PatchException;
+import de.sonallux.json.patching.Patch;
+import de.sonallux.json.patching.PatchException;
import lombok.extern.slf4j.Slf4j;
import java.io.IOException;
diff --git a/spotify-web-api-parser/src/moditect/module-info.java b/spotify-web-api-parser/src/moditect/module-info.java
index c7545ec2..9c08a630 100644
--- a/spotify-web-api-parser/src/moditect/module-info.java
+++ b/spotify-web-api-parser/src/moditect/module-info.java
@@ -8,6 +8,7 @@
requires org.slf4j;
requires org.jsoup;
requires de.sonallux.spotify.core;
+ requires de.sonallux.json;
requires static lombok;
exports de.sonallux.spotify.parser;