diff --git a/.github/workflows/deployment.yml b/.github/workflows/deployment.yml
new file mode 100644
index 0000000..54457d9
--- /dev/null
+++ b/.github/workflows/deployment.yml
@@ -0,0 +1,48 @@
+# For more information see:
+# * https://docs.github.com/en/actions/learn-github-actions
+# * https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions
+# * https://github.com/actions/setup-java/blob/v3.13.0/docs/advanced-usage.md#Publishing-using-Apache-Maven
+#
+
+name: Deployment workflow
+
+on:
+ release:
+ types: [published]
+
+jobs:
+ publish:
+ runs-on: ubuntu-latest
+ permissions:
+ contents: read
+ packages: write
+ steps:
+ - uses: actions/checkout@v4
+ - name: Set up Java for publishing to Maven Central Repository
+ uses: actions/setup-java@v3
+ with:
+ # Use lowest supported LTS Java version
+ java-version: '8'
+ distribution: 'temurin'
+ server-id: ossrh # Value of the distributionManagement/repository/id field of the pom.xml
+ server-username: MAVEN_USERNAME # env variable for username in deploy
+ server-password: MAVEN_PASSWORD # env variable for token in deploy
+ gpg-private-key: ${{ secrets.MAVEN_GPG_PRIVATE_KEY }} # Value of the GPG private key to import
+ gpg-passphrase: MAVEN_GPG_PASSPHRASE # env variable for GPG private key passphrase
+
+ - name: Publish to the Maven Central Repository
+ run: mvn --batch-mode deploy
+ env:
+ MAVEN_USERNAME: ${{ secrets.OSSRH_USERNAME }}
+ MAVEN_PASSWORD: ${{ secrets.OSSRH_TOKEN }}
+ MAVEN_GPG_PASSPHRASE: ${{ secrets.MAVEN_GPG_PASSPHRASE }}
+ # - name: Set up Java for publishing to GitHub Packages
+ # uses: actions/setup-java@v3
+ # with:
+ # # Use lowest supported LTS Java version
+ # java-version: '8'
+ # distribution: 'temurin'
+ # - name: Publish to GitHub Packages
+ # run: mvn --batch-mode deploy
+ # env:
+ # GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
diff --git a/.github/workflows/pipeline.yml b/.github/workflows/pipeline.yml
index 5e1dd42..a66ae7b 100644
--- a/.github/workflows/pipeline.yml
+++ b/.github/workflows/pipeline.yml
@@ -1,5 +1,5 @@
# This workflow will build a Java project with Maven
-# For more information see: https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-maven
+# For more information see: https://docs.github.com/en/actions/learn-github-actions or https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions
name: Java CI with Maven
@@ -15,7 +15,7 @@ jobs:
strategy:
matrix:
# build against supported Java LTS versions:
- java: [ 8, 11, 17 ]
+ java: [ 8, 11, 17, 21 ]
name: Java ${{ matrix.java }}
steps:
- uses: actions/checkout@v3
@@ -37,13 +37,21 @@ jobs:
mvn site -DgenerateReports=false -Dmaven.compiler.source=${{ matrix.java }} -Dmaven.compiler.target=${{ matrix.java }}
- name: Upload Test Results ${{ matrix.java }}
if: ${{ always() }}
- uses: actions/upload-artifact@v1
+ uses: actions/upload-artifact@v3
with:
name: Test Results ${{ matrix.java }}
path: target/surefire-reports/
- name: Upload Test Report ${{ matrix.java }}
if: ${{ always() }}
- uses: actions/upload-artifact@v1
+ uses: actions/upload-artifact@v3
with:
name: Test Report ${{ matrix.java }}
path: target/site/
+ - name: Package Jar ${{ matrix.java }}
+ run: mvn clean package -Dmaven.compiler.source=${{ matrix.java }} -Dmaven.compiler.target=${{ matrix.java }} -Dmaven.test.skip=true -Dmaven.site.skip=true
+ - name: Upload Package Results ${{ matrix.java }}
+ if: ${{ always() }}
+ uses: actions/upload-artifact@v3
+ with:
+ name: Package Jar ${{ matrix.java }}
+ path: target/*.jar
diff --git a/.gitignore b/.gitignore
index 7794c4c..b78af4d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,6 +1,8 @@
# ignore eclipse project files
.project
.classpath
+# ignore vscode files
+.vscode
# ignore Intellij Idea project files
.idea
*.iml
diff --git a/README.md b/README.md
index 9f01342..5f1f5b0 100644
--- a/README.md
+++ b/README.md
@@ -7,6 +7,8 @@ JSON in Java [package org.json]
===============================
[](https://mvnrepository.com/artifact/org.json/json)
+[](https://github.com/stleary/JSON-java/actions/workflows/pipeline.yml)
+[](https://github.com/stleary/JSON-java/actions/workflows/codeql-analysis.yml)
**[Click here if you just want the latest release jar file.](https://search.maven.org/remotecontent?filepath=org/json/json/20231013/json-20231013.jar)**
@@ -24,7 +26,8 @@ Project goals include:
* No external dependencies
* Fast execution and low memory footprint
* Maintain backward compatibility
-* Designed and tested to use on Java versions 1.6 - 1.11
+* Designed and tested to use on Java versions 1.8 - 21
+
The files in this package implement JSON encoders and decoders. The package can also convert between JSON and XML, HTTP headers, Cookies, and CDL.
diff --git a/pom.xml b/pom.xml
index 77bbdac..ba0efd1 100644
--- a/pom.xml
+++ b/pom.xml
@@ -21,12 +21,6 @@
https://github.com/douglascrockford/JSON-java
-
- org.sonatype.oss
- oss-parent
- 9
-
-
https://github.com/douglascrockford/JSON-java.git
scm:git:git://github.com/douglascrockford/JSON-java.git
@@ -53,6 +47,19 @@
+
+
+ ossrh
+ Central Repository OSSRH
+ https://oss.sonatype.org/service/local/staging/deploy/maven2/
+
+
+ ossrh
+ https://oss.sonatype.org/content/repositories/snapshots
+
+
+
+
junit
@@ -159,17 +166,34 @@
false
+
+ org.moditect
+ moditect-maven-plugin
+ 1.0.0.Final
+
+
+ add-module-infos
+ package
+
+ add-module-info
+
+
+ 9
+
+
+ module org.json {
+ exports org.json;
+ }
+
+
+
+
+
+
org.apache.maven.plugins
maven-jar-plugin
3.3.0
-
-
-
- org.json
-
-
-
diff --git a/src/main/java/org/json/ParserConfiguration.java b/src/main/java/org/json/ParserConfiguration.java
index 519e209..36fa508 100644
--- a/src/main/java/org/json/ParserConfiguration.java
+++ b/src/main/java/org/json/ParserConfiguration.java
@@ -71,7 +71,8 @@ public class ParserConfiguration {
*
* @param newVal
* new value to use for the keepStrings
configuration option.
- *
+ * @param the type of the configuration object
+ *
* @return The existing configuration will not be modified. A new configuration is returned.
*/
public T withKeepStrings(final boolean newVal) {
@@ -96,6 +97,8 @@ public class ParserConfiguration {
* Using any negative value as a parameter is equivalent to setting no limit to the nesting depth,
* which means the parses will go as deep as the maximum call stack size allows.
* @param maxNestingDepth the maximum nesting depth allowed to the XML parser
+ * @param the type of the configuration object
+ *
* @return The existing configuration will not be modified. A new configuration is returned.
*/
public T withMaxNestingDepth(int maxNestingDepth) {
diff --git a/src/test/java/org/json/junit/JSONMLTest.java b/src/test/java/org/json/junit/JSONMLTest.java
index ae71aed..e6abd15 100644
--- a/src/test/java/org/json/junit/JSONMLTest.java
+++ b/src/test/java/org/json/junit/JSONMLTest.java
@@ -762,8 +762,8 @@ public class JSONMLTest {
final String xml = JSONML.toString(originalObject);
final JSONObject revertedObject = JSONML.toJSONObject(xml, false);
final String newJson = revertedObject.toString();
- assertTrue("JSON Objects are not similar",originalObject.similar(revertedObject));
- assertEquals("original JSON does not equal the new JSON",originalJson, newJson);
+ assertTrue("JSON Objects are not similar", originalObject.similar(revertedObject));
+ assertTrue("JSON Strings are not similar", new JSONObject(originalJson).similar(new JSONObject(newJson)));
}
// these tests do not pass for the following reasons:
diff --git a/src/test/java/org/json/junit/JSONObjectTest.java b/src/test/java/org/json/junit/JSONObjectTest.java
index 5adb6ce..42b41b3 100644
--- a/src/test/java/org/json/junit/JSONObjectTest.java
+++ b/src/test/java/org/json/junit/JSONObjectTest.java
@@ -2095,7 +2095,9 @@ public class JSONObjectTest {
"}";
JSONObject jsonObject = new JSONObject(jsonObjectStr);
assertTrue("jsonObject valueToString() incorrect",
- JSONObject.valueToString(jsonObject).equals(jsonObject.toString()));
+ new JSONObject(JSONObject.valueToString(jsonObject))
+ .similar(new JSONObject(jsonObject.toString()))
+ );
String jsonArrayStr =
"[1,2,3]";
JSONArray jsonArray = new JSONArray(jsonArrayStr);
@@ -2106,7 +2108,8 @@ public class JSONObjectTest {
map.put("key2", "val2");
map.put("key3", "val3");
assertTrue("map valueToString() incorrect",
- jsonObject.toString().equals(JSONObject.valueToString(map)));
+ new JSONObject(jsonObject.toString())
+ .similar(new JSONObject(JSONObject.valueToString(map))));
Collection collection = new ArrayList();
collection.add(Integer.valueOf(1));
collection.add(Integer.valueOf(2));
diff --git a/src/test/java/org/json/junit/XMLTest.java b/src/test/java/org/json/junit/XMLTest.java
index 9702d3d..63135eb 100644
--- a/src/test/java/org/json/junit/XMLTest.java
+++ b/src/test/java/org/json/junit/XMLTest.java
@@ -1234,7 +1234,7 @@ public class XMLTest {
for (int numRead; (numRead = in.read(buffer, 0, buffer.length)) > 0; ) {
expected.append(buffer, 0, numRead);
}
- assertEquals(expected.toString(), actualString);
+ assertTrue(XML.toJSONObject(expected.toString()).similar(XML.toJSONObject(actualString)));
}
} catch (IOException e) {
fail("file writer error: " +e.getMessage());