Merge branch 'stleary:master' into master

This commit is contained in:
Rudrajyoti Biswas 2023-10-21 12:29:31 +00:00 committed by GitHub
commit 04a4c5a3ec
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
9 changed files with 115 additions and 24 deletions

48
.github/workflows/deployment.yml vendored Normal file
View File

@ -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 }}

View File

@ -1,5 +1,5 @@
# This workflow will build a Java project with Maven # 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 name: Java CI with Maven
@ -15,7 +15,7 @@ jobs:
strategy: strategy:
matrix: matrix:
# build against supported Java LTS versions: # build against supported Java LTS versions:
java: [ 8, 11, 17 ] java: [ 8, 11, 17, 21 ]
name: Java ${{ matrix.java }} name: Java ${{ matrix.java }}
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v3
@ -37,13 +37,21 @@ jobs:
mvn site -DgenerateReports=false -Dmaven.compiler.source=${{ matrix.java }} -Dmaven.compiler.target=${{ matrix.java }} mvn site -DgenerateReports=false -Dmaven.compiler.source=${{ matrix.java }} -Dmaven.compiler.target=${{ matrix.java }}
- name: Upload Test Results ${{ matrix.java }} - name: Upload Test Results ${{ matrix.java }}
if: ${{ always() }} if: ${{ always() }}
uses: actions/upload-artifact@v1 uses: actions/upload-artifact@v3
with: with:
name: Test Results ${{ matrix.java }} name: Test Results ${{ matrix.java }}
path: target/surefire-reports/ path: target/surefire-reports/
- name: Upload Test Report ${{ matrix.java }} - name: Upload Test Report ${{ matrix.java }}
if: ${{ always() }} if: ${{ always() }}
uses: actions/upload-artifact@v1 uses: actions/upload-artifact@v3
with: with:
name: Test Report ${{ matrix.java }} name: Test Report ${{ matrix.java }}
path: target/site/ 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

2
.gitignore vendored
View File

@ -1,6 +1,8 @@
# ignore eclipse project files # ignore eclipse project files
.project .project
.classpath .classpath
# ignore vscode files
.vscode
# ignore Intellij Idea project files # ignore Intellij Idea project files
.idea .idea
*.iml *.iml

View File

@ -7,6 +7,8 @@ JSON in Java [package org.json]
=============================== ===============================
[![Maven Central](https://img.shields.io/maven-central/v/org.json/json.svg)](https://mvnrepository.com/artifact/org.json/json) [![Maven Central](https://img.shields.io/maven-central/v/org.json/json.svg)](https://mvnrepository.com/artifact/org.json/json)
[![Java CI with Maven](https://github.com/stleary/JSON-java/actions/workflows/pipeline.yml/badge.svg)](https://github.com/stleary/JSON-java/actions/workflows/pipeline.yml)
[![CodeQL](https://github.com/stleary/JSON-java/actions/workflows/codeql-analysis.yml/badge.svg)](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)** **[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 * No external dependencies
* Fast execution and low memory footprint * Fast execution and low memory footprint
* Maintain backward compatibility * 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. The files in this package implement JSON encoders and decoders. The package can also convert between JSON and XML, HTTP headers, Cookies, and CDL.

50
pom.xml
View File

@ -21,12 +21,6 @@
</description> </description>
<url>https://github.com/douglascrockford/JSON-java</url> <url>https://github.com/douglascrockford/JSON-java</url>
<parent>
<groupId>org.sonatype.oss</groupId>
<artifactId>oss-parent</artifactId>
<version>9</version>
</parent>
<scm> <scm>
<url>https://github.com/douglascrockford/JSON-java.git</url> <url>https://github.com/douglascrockford/JSON-java.git</url>
<connection>scm:git:git://github.com/douglascrockford/JSON-java.git</connection> <connection>scm:git:git://github.com/douglascrockford/JSON-java.git</connection>
@ -53,6 +47,19 @@
</properties> </properties>
<distributionManagement>
<repository>
<id>ossrh</id>
<name>Central Repository OSSRH</name>
<url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url>
</repository>
<snapshotRepository>
<id>ossrh</id>
<url>https://oss.sonatype.org/content/repositories/snapshots</url>
</snapshotRepository>
</distributionManagement>
<dependencies> <dependencies>
<dependency> <dependency>
<groupId>junit</groupId> <groupId>junit</groupId>
@ -159,17 +166,34 @@
<autoReleaseAfterClose>false</autoReleaseAfterClose> <autoReleaseAfterClose>false</autoReleaseAfterClose>
</configuration> </configuration>
</plugin> </plugin>
<plugin>
<groupId>org.moditect</groupId>
<artifactId>moditect-maven-plugin</artifactId>
<version>1.0.0.Final</version>
<executions>
<execution>
<id>add-module-infos</id>
<phase>package</phase>
<goals>
<goal>add-module-info</goal>
</goals>
<configuration>
<jvmVersion>9</jvmVersion>
<module>
<moduleInfoSource>
module org.json {
exports org.json;
}
</moduleInfoSource>
</module>
</configuration>
</execution>
</executions>
</plugin>
<plugin> <plugin>
<groupId>org.apache.maven.plugins</groupId> <groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId> <artifactId>maven-jar-plugin</artifactId>
<version>3.3.0</version> <version>3.3.0</version>
<configuration>
<archive>
<manifestEntries>
<Automatic-Module-Name>org.json</Automatic-Module-Name>
</manifestEntries>
</archive>
</configuration>
</plugin> </plugin>
</plugins> </plugins>
</build> </build>

View File

@ -71,7 +71,8 @@ public class ParserConfiguration {
* *
* @param newVal * @param newVal
* new value to use for the <code>keepStrings</code> configuration option. * new value to use for the <code>keepStrings</code> configuration option.
* * @param <T> the type of the configuration object
*
* @return The existing configuration will not be modified. A new configuration is returned. * @return The existing configuration will not be modified. A new configuration is returned.
*/ */
public <T extends ParserConfiguration> T withKeepStrings(final boolean newVal) { public <T extends ParserConfiguration> 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, * 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. * 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 maxNestingDepth the maximum nesting depth allowed to the XML parser
* @param <T> the type of the configuration object
*
* @return The existing configuration will not be modified. A new configuration is returned. * @return The existing configuration will not be modified. A new configuration is returned.
*/ */
public <T extends ParserConfiguration> T withMaxNestingDepth(int maxNestingDepth) { public <T extends ParserConfiguration> T withMaxNestingDepth(int maxNestingDepth) {

View File

@ -762,8 +762,8 @@ public class JSONMLTest {
final String xml = JSONML.toString(originalObject); final String xml = JSONML.toString(originalObject);
final JSONObject revertedObject = JSONML.toJSONObject(xml, false); final JSONObject revertedObject = JSONML.toJSONObject(xml, false);
final String newJson = revertedObject.toString(); final String newJson = revertedObject.toString();
assertTrue("JSON Objects are not similar",originalObject.similar(revertedObject)); assertTrue("JSON Objects are not similar", originalObject.similar(revertedObject));
assertEquals("original JSON does not equal the new JSON",originalJson, newJson); assertTrue("JSON Strings are not similar", new JSONObject(originalJson).similar(new JSONObject(newJson)));
} }
// these tests do not pass for the following reasons: // these tests do not pass for the following reasons:

View File

@ -2095,7 +2095,9 @@ public class JSONObjectTest {
"}"; "}";
JSONObject jsonObject = new JSONObject(jsonObjectStr); JSONObject jsonObject = new JSONObject(jsonObjectStr);
assertTrue("jsonObject valueToString() incorrect", assertTrue("jsonObject valueToString() incorrect",
JSONObject.valueToString(jsonObject).equals(jsonObject.toString())); new JSONObject(JSONObject.valueToString(jsonObject))
.similar(new JSONObject(jsonObject.toString()))
);
String jsonArrayStr = String jsonArrayStr =
"[1,2,3]"; "[1,2,3]";
JSONArray jsonArray = new JSONArray(jsonArrayStr); JSONArray jsonArray = new JSONArray(jsonArrayStr);
@ -2106,7 +2108,8 @@ public class JSONObjectTest {
map.put("key2", "val2"); map.put("key2", "val2");
map.put("key3", "val3"); map.put("key3", "val3");
assertTrue("map valueToString() incorrect", assertTrue("map valueToString() incorrect",
jsonObject.toString().equals(JSONObject.valueToString(map))); new JSONObject(jsonObject.toString())
.similar(new JSONObject(JSONObject.valueToString(map))));
Collection<Integer> collection = new ArrayList<Integer>(); Collection<Integer> collection = new ArrayList<Integer>();
collection.add(Integer.valueOf(1)); collection.add(Integer.valueOf(1));
collection.add(Integer.valueOf(2)); collection.add(Integer.valueOf(2));

View File

@ -1234,7 +1234,7 @@ public class XMLTest {
for (int numRead; (numRead = in.read(buffer, 0, buffer.length)) > 0; ) { for (int numRead; (numRead = in.read(buffer, 0, buffer.length)) > 0; ) {
expected.append(buffer, 0, numRead); expected.append(buffer, 0, numRead);
} }
assertEquals(expected.toString(), actualString); assertTrue(XML.toJSONObject(expected.toString()).similar(XML.toJSONObject(actualString)));
} }
} catch (IOException e) { } catch (IOException e) {
fail("file writer error: " +e.getMessage()); fail("file writer error: " +e.getMessage());