diff --git a/.github/workflows/deployment.yml b/.github/workflows/deployment.yml
deleted file mode 100644
index e870644..0000000
--- a/.github/workflows/deployment.yml
+++ /dev/null
@@ -1,82 +0,0 @@
-# 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:
- # old-school build and jar method. No tests run or compiled.
- publish-1_6:
- name: Publish Java 1.6 to GitHub Release
- runs-on: ubuntu-latest
- permissions:
- contents: write
- steps:
- - uses: actions/checkout@v4
- - name: Setup java
- uses: actions/setup-java@v1
- with:
- java-version: 1.6
- - name: Compile Java 1.6
- run: |
- mkdir -p target/classes
- javac -version
- javac -source 1.6 -target 1.6 -d target/classes/ src/main/java/org/json/*.java
- - name: Create JAR 1.6
- run: |
- jar cvf "target/org.json-1.6-${{ github.ref_name }}.jar" -C target/classes .
- - name: Add 1.6 Jar To Release
- uses: softprops/action-gh-release@v1
- with:
- append_body: true
- files: |
- target/*.jar
- publish:
- name: Publish Java 8 to Maven Central and GitHub Release
- runs-on: ubuntu-latest
- permissions:
- contents: write
- 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: Add Jar To Release
- uses: softprops/action-gh-release@v1
- with:
- append_body: true
- files: |
- target/*.jar
- # - 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 63540cc..bb4cf07 100644
--- a/.github/workflows/pipeline.yml
+++ b/.github/workflows/pipeline.yml
@@ -34,14 +34,159 @@ jobs:
with:
name: Create java 1.6 JAR
path: target/*.jar
- build:
+
+ build-8:
runs-on: ubuntu-latest
strategy:
fail-fast: false
- max-parallel: 2
+ max-parallel: 1
matrix:
# build against supported Java LTS versions:
- java: [ 8, 11, 17, 21 ]
+ java: [ 8 ]
+ name: Java ${{ matrix.java }}
+ steps:
+ - uses: actions/checkout@v3
+ - name: Set up JDK ${{ matrix.java }}
+ uses: actions/setup-java@v3
+ with:
+ distribution: 'temurin'
+ java-version: ${{ matrix.java }}
+ cache: 'maven'
+ - name: Compile Java ${{ matrix.java }}
+ run: mvn clean compile -D maven.compiler.source=${{ matrix.java }} -D maven.compiler.target=${{ matrix.java }} -D maven.test.skip=true -D maven.site.skip=true -D maven.javadoc.skip=true
+ - name: Run Tests ${{ matrix.java }}
+ run: |
+ mvn test -D maven.compiler.source=${{ matrix.java }} -D maven.compiler.target=${{ matrix.java }}
+ - name: Build Test Report ${{ matrix.java }}
+ if: ${{ always() }}
+ run: |
+ mvn surefire-report:report-only -D maven.compiler.source=${{ matrix.java }} -D maven.compiler.target=${{ matrix.java }}
+ mvn site -D generateReports=false -D maven.compiler.source=${{ matrix.java }} -D maven.compiler.target=${{ matrix.java }}
+ - name: Upload Test Results ${{ matrix.java }}
+ if: ${{ always() }}
+ 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@v3
+ with:
+ name: Test Report ${{ matrix.java }}
+ path: target/site/
+ - name: Package Jar ${{ matrix.java }}
+ run: mvn clean package -D maven.compiler.source=${{ matrix.java }} -D maven.compiler.target=${{ matrix.java }} -D maven.test.skip=true -D maven.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
+
+ build-11:
+ runs-on: ubuntu-latest
+ strategy:
+ fail-fast: false
+ max-parallel: 1
+ matrix:
+ # build against supported Java LTS versions:
+ java: [ 11 ]
+ name: Java ${{ matrix.java }}
+ steps:
+ - uses: actions/checkout@v3
+ - name: Set up JDK ${{ matrix.java }}
+ uses: actions/setup-java@v3
+ with:
+ distribution: 'temurin'
+ java-version: ${{ matrix.java }}
+ cache: 'maven'
+ - name: Compile Java ${{ matrix.java }}
+ run: mvn clean compile -D maven.compiler.source=${{ matrix.java }} -D maven.compiler.target=${{ matrix.java }} -D maven.test.skip=true -D maven.site.skip=true -D maven.javadoc.skip=true
+ - name: Run Tests ${{ matrix.java }}
+ run: |
+ mvn test -D maven.compiler.source=${{ matrix.java }} -D maven.compiler.target=${{ matrix.java }}
+ - name: Build Test Report ${{ matrix.java }}
+ if: ${{ always() }}
+ run: |
+ mvn surefire-report:report-only -D maven.compiler.source=${{ matrix.java }} -D maven.compiler.target=${{ matrix.java }}
+ mvn site -D generateReports=false -D maven.compiler.source=${{ matrix.java }} -D maven.compiler.target=${{ matrix.java }}
+ - name: Upload Test Results ${{ matrix.java }}
+ if: ${{ always() }}
+ 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@v3
+ with:
+ name: Test Report ${{ matrix.java }}
+ path: target/site/
+ - name: Package Jar ${{ matrix.java }}
+ run: mvn clean package -D maven.compiler.source=${{ matrix.java }} -D maven.compiler.target=${{ matrix.java }} -D maven.test.skip=true -D maven.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
+
+ build-17:
+ runs-on: ubuntu-latest
+ strategy:
+ fail-fast: false
+ max-parallel: 1
+ matrix:
+ # build against supported Java LTS versions:
+ java: [ 17 ]
+ name: Java ${{ matrix.java }}
+ steps:
+ - uses: actions/checkout@v3
+ - name: Set up JDK ${{ matrix.java }}
+ uses: actions/setup-java@v3
+ with:
+ distribution: 'temurin'
+ java-version: ${{ matrix.java }}
+ cache: 'maven'
+ - name: Compile Java ${{ matrix.java }}
+ run: mvn clean compile -D maven.compiler.source=${{ matrix.java }} -D maven.compiler.target=${{ matrix.java }} -D maven.test.skip=true -D maven.site.skip=true -D maven.javadoc.skip=true
+ - name: Run Tests ${{ matrix.java }}
+ run: |
+ mvn test -D maven.compiler.source=${{ matrix.java }} -D maven.compiler.target=${{ matrix.java }}
+ - name: Build Test Report ${{ matrix.java }}
+ if: ${{ always() }}
+ run: |
+ mvn surefire-report:report-only -D maven.compiler.source=${{ matrix.java }} -D maven.compiler.target=${{ matrix.java }}
+ mvn site -D generateReports=false -D maven.compiler.source=${{ matrix.java }} -D maven.compiler.target=${{ matrix.java }}
+ - name: Upload Test Results ${{ matrix.java }}
+ if: ${{ always() }}
+ 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@v3
+ with:
+ name: Test Report ${{ matrix.java }}
+ path: target/site/
+ - name: Package Jar ${{ matrix.java }}
+ run: mvn clean package -D maven.compiler.source=${{ matrix.java }} -D maven.compiler.target=${{ matrix.java }} -D maven.test.skip=true -D maven.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
+
+ build-21:
+ runs-on: ubuntu-latest
+ strategy:
+ fail-fast: false
+ max-parallel: 1
+ matrix:
+ # build against supported Java LTS versions:
+ java: [ 21 ]
name: Java ${{ matrix.java }}
steps:
- uses: actions/checkout@v3
diff --git a/README.md b/README.md
index 6d17373..e46d257 100644
--- a/README.md
+++ b/README.md
@@ -10,7 +10,7 @@ JSON in Java [package org.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/20240205/json-20240205.jar)**
+**[Click here if you just want the latest release jar file.](https://search.maven.org/remotecontent?filepath=org/json/json/20240205/json-20240303.jar)**
# Overview
diff --git a/docs/RELEASES.md b/docs/RELEASES.md
index 3308e6e..30b8af2 100644
--- a/docs/RELEASES.md
+++ b/docs/RELEASES.md
@@ -5,6 +5,8 @@ and artifactId "json". For example:
[https://search.maven.org/search?q=g:org.json%20AND%20a:json&core=gav](https://search.maven.org/search?q=g:org.json%20AND%20a:json&core=gav)
~~~
+20240303 Revert optLong/getLong changes, and recent commits.
+
20240205 Recent commits.
20231013 First release with minimum Java version 1.8. Recent commits, including fixes for CVE-2023-5072.
diff --git a/pom.xml b/pom.xml
index 7196978..7b10243 100644
--- a/pom.xml
+++ b/pom.xml
@@ -3,7 +3,7 @@
org.json
json
- 20240205
+ 20240303
bundle
JSON in Java
diff --git a/src/main/java/org/json/CDL.java b/src/main/java/org/json/CDL.java
index 26dc2da..b495de1 100644
--- a/src/main/java/org/json/CDL.java
+++ b/src/main/java/org/json/CDL.java
@@ -25,6 +25,12 @@ Public Domain.
*/
public class CDL {
+ /**
+ * Constructs a new CDL object.
+ */
+ public CDL() {
+ }
+
/**
* Get the next value. The value can be wrapped in quotes. The value can
* be empty.
diff --git a/src/main/java/org/json/Cookie.java b/src/main/java/org/json/Cookie.java
index 7a7e028..ab908a3 100644
--- a/src/main/java/org/json/Cookie.java
+++ b/src/main/java/org/json/Cookie.java
@@ -15,6 +15,12 @@ Public Domain.
*/
public class Cookie {
+ /**
+ * Constructs a new Cookie object.
+ */
+ public Cookie() {
+ }
+
/**
* Produce a copy of a string in which the characters '+', '%', '=', ';'
* and control characters are replaced with "%hh". This is a gentle form
diff --git a/src/main/java/org/json/CookieList.java b/src/main/java/org/json/CookieList.java
index 03e54b9..d1064db 100644
--- a/src/main/java/org/json/CookieList.java
+++ b/src/main/java/org/json/CookieList.java
@@ -11,6 +11,12 @@ Public Domain.
*/
public class CookieList {
+ /**
+ * Constructs a new CookieList object.
+ */
+ public CookieList() {
+ }
+
/**
* Convert a cookie list into a JSONObject. A cookie list is a sequence
* of name/value pairs. The names are separated from the values by '='.
diff --git a/src/main/java/org/json/HTTP.java b/src/main/java/org/json/HTTP.java
index 6fee6ba..44ab3a6 100644
--- a/src/main/java/org/json/HTTP.java
+++ b/src/main/java/org/json/HTTP.java
@@ -13,6 +13,12 @@ import java.util.Locale;
*/
public class HTTP {
+ /**
+ * Constructs a new HTTP object.
+ */
+ public HTTP() {
+ }
+
/** Carriage return/line feed. */
public static final String CRLF = "\r\n";
diff --git a/src/main/java/org/json/JSONArray.java b/src/main/java/org/json/JSONArray.java
index 38b0b31..f86075e 100644
--- a/src/main/java/org/json/JSONArray.java
+++ b/src/main/java/org/json/JSONArray.java
@@ -360,7 +360,7 @@ public class JSONArray implements Iterable