Skip to content

Commit 2afc50b

Browse files
committed
Issue #145 apply upstream API renames across modules
Global rename per upstream 43325738c: bool->asBoolean, string->asString, toInt/toLong/toDouble->asInt/asLong/asDouble, elements->asList, members->asMap, element(int)->get(int), getOrAbsent->tryGet, valueOrNull->tryValue, JsonAssertionException->JsonValueException; toDisplayString indent int->String at all call sites; method references (JsonValue::asString etc.) and jtd-codegen emitted bytecode method names updated. Record accessors (Team.members, ElementsSchema.elements) kept.
1 parent b9fe3ef commit 2afc50b

30 files changed

Lines changed: 349 additions & 349 deletions

File tree

‎AGENTS.md‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,7 @@ throw new IllegalArgumentException("enum contains duplicate values: " +
124124

125125
// Include the problematic schema portion
126126
throw new IllegalArgumentException("Type schema contains unknown key: " + key +
127-
" in schema: " + Json.toDisplayString(obj, 0));
127+
" in schema: " + Json.toDisplayString(obj, ""));
128128

129129
// Include both expected and actual values
130130
throw new IllegalArgumentException("unknown type: '" + typeStr +
@@ -138,7 +138,7 @@ throw new IllegalArgumentException("invalid schema"); // Too vague
138138
throw new IllegalArgumentException("bad value"); // No specifics
139139
```
140140

141-
Use `Json.toDisplayString(value, depth)` to render JSON fragments in error messages, and include relevant context like schema paths, actual vs expected values, and specific constraint violations.
141+
Use `Json.toDisplayString(value, indent)` to render JSON fragments in error messages, and include relevant context like schema paths, actual vs expected values, and specific constraint violations.
142142

143143
## JSON Compatibility Suite
144144

‎README.md‎

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -60,9 +60,9 @@ JsonValue value = Json.parse(json);
6060

6161
// Access as map-like structure
6262
JsonObject obj = (JsonObject) value;
63-
String name = ((JsonString) obj.members().get("name")).string();
64-
long age = ((JsonNumber) obj.members().get("age")).toLong();
65-
boolean active = ((JsonBoolean) obj.members().get("active")).bool();
63+
String name = ((JsonString) obj.asMap().get("name")).asString();
64+
long age = ((JsonNumber) obj.asMap().get("age")).asLong();
65+
boolean active = ((JsonBoolean) obj.asMap().get("active")).asBoolean();
6666
```
6767

6868
### Simple Record Mapping
@@ -77,9 +77,9 @@ JsonObject jsonObj = (JsonObject) Json.parse(userJson);
7777

7878
// Map to record
7979
User user = new User(
80-
((JsonString) jsonObj.members().get("name")).string(),
81-
((JsonNumber) jsonObj.members().get("age")).toLong(),
82-
((JsonBoolean) jsonObj.members().get("active")).bool()
80+
((JsonString) jsonObj.asMap().get("name")).asString(),
81+
((JsonNumber) jsonObj.asMap().get("age")).asLong(),
82+
((JsonBoolean) jsonObj.asMap().get("active")).asBoolean()
8383
);
8484

8585
// Convert records back to JSON using typed factories
@@ -117,9 +117,9 @@ JsonValue parsed = Json.parse("{\"name\":\"John\",\"age\":30}");
117117
JsonObject obj = (JsonObject) parsed;
118118

119119
// Use the new type-safe accessor methods
120-
String name = obj.get("name").string(); // Returns "John"
121-
long age = obj.get("age").toLong(); // Returns 30L
122-
double ageDouble = obj.get("age").toDouble(); // Returns 30.0
120+
String name = obj.get("name").asString(); // Returns "John"
121+
long age = obj.get("age").asLong(); // Returns 30L
122+
double ageDouble = obj.get("age").asDouble(); // Returns 30.0
123123
```
124124

125125
The accessor methods on `JsonValue`:
@@ -162,14 +162,14 @@ JsonValue teamJson = JsonObject.of(Map.of(
162162
// Parse JSON back to records
163163
JsonObject parsed = (JsonObject) Json.parse(teamJson.toString());
164164
Team reconstructed = new Team(
165-
((JsonString) parsed.members().get("teamName")).string(),
166-
((JsonArray) parsed.members().get("members")).elements().stream()
165+
((JsonString) parsed.asMap().get("teamName")).asString(),
166+
((JsonArray) parsed.asMap().get("members")).asList().stream()
167167
.map(v -> {
168168
JsonObject member = (JsonObject) v;
169169
return new User(
170-
((JsonString) member.members().get("name")).string(),
171-
((JsonString) member.members().get("email")).string(),
172-
((JsonBoolean) member.members().get("active")).bool()
170+
((JsonString) member.asMap().get("name")).asString(),
171+
((JsonString) member.asMap().get("email")).asString(),
172+
((JsonBoolean) member.asMap().get("active")).asBoolean()
173173
);
174174
})
175175
.toList()
@@ -206,10 +206,10 @@ Process JSON arrays efficiently with Java streams:
206206
```java
207207
// Filter active users from a JSON array
208208
JsonArray users = (JsonArray) Json.parse(jsonArrayString);
209-
List<String> activeUserEmails = users.elements().stream()
209+
List<String> activeUserEmails = users.asList().stream()
210210
.map(v -> (JsonObject) v)
211-
.filter(obj -> ((JsonBoolean) obj.members().get("active")).bool())
212-
.map(obj -> ((JsonString) obj.members().get("email")).string())
211+
.filter(obj -> ((JsonBoolean) obj.asMap().get("active")).asBoolean())
212+
.map(obj -> ((JsonString) obj.asMap().get("email")).asString())
213213
.toList();
214214
```
215215

@@ -242,7 +242,7 @@ JsonObject data = JsonObject.of(Map.of(
242242
))
243243
));
244244

245-
String formatted = Json.toDisplayString(data, 2);
245+
String formatted = Json.toDisplayString(data, " ");
246246
// Output:
247247
// {
248248
// "name": "Alice",
@@ -296,7 +296,7 @@ This code is derived from the OpenJDK jdk-sandbox repository "json" branch at co
296296
- `JsonValue` navigation methods: `get(String)`, `get(int)`, `getOrAbsent(String)`, `valueOrNull()`
297297
- `JsonArray`: `elements()`, `of(List)`
298298
- `JsonObject`: `members()`, `of(Map)`
299-
- `Json`: `parse(String)`, `parse(char[])`, `toDisplayString(JsonValue, int)`
299+
- `Json`: `parse(String)`, `parse(char[])`, `toDisplayString(JsonValue, String indent)`
300300

301301
### Upstream Migration Notice
302302
The upstream `java.util.json` API has been promoted to `jdk.incubator.json` (commit `b956ae0`, 2026-02-05). The incubator version introduces significant API changes including method renames (`bool()`→`asBoolean()`, `string()`→`asString()`, etc.) and new methods (`asInt()`). A separate branch tracks the incubator upgrade — see issue #145.
@@ -415,7 +415,7 @@ JsonValue doc = Json.parse("""
415415
var authors = JsonPath.parse("$.store.book[*].author")
416416
.query(doc)
417417
.stream()
418-
.map(JsonValue::string)
418+
.map(JsonValue::asString)
419419
.toList();
420420

421421
System.out.println("Authors count: " + authors.size()); // prints '3'
@@ -425,7 +425,7 @@ System.out.println("Last author: " + authors.getLast()); // prints 'Marek Ily
425425
var cheapTitles = JsonPath.parse("$.store.book[?(@.price < 10)].title")
426426
.query(doc)
427427
.stream()
428-
.map(JsonValue::string)
428+
.map(JsonValue::asString)
429429
.toList();
430430

431431
var priceStats = JsonPath.parse("$.store.book[*].price")

‎index.html‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -183,16 +183,16 @@ <h3>Parse and access</h3>
183183

184184
JsonObject obj = (JsonObject) Json.parse("{\"name\":\"Alice\",\"age\":30}");
185185

186-
String name = obj.get("name").string();
187-
long age = obj.get("age").toLong();</code></pre>
186+
String name = obj.get("name").asString();
187+
long age = obj.get("age").asLong();</code></pre>
188188
</section>
189189

190190
<section>
191191
<h2>What’s Included</h2>
192192
<ul>
193193
<li><strong>Immutable JSON values:</strong> <code>JsonObject</code>, <code>JsonArray</code>, <code>JsonString</code>, <code>JsonNumber</code>, <code>JsonBoolean</code>, <code>JsonNull</code></li>
194194
<li><strong>Typed factories:</strong> build JSON with <code>JsonObject.of</code>, <code>JsonArray.of</code>, <code>JsonString.of</code>, <code>JsonNumber.of</code>, <code>JsonBoolean.of</code></li>
195-
<li><strong>Type-safe accessors:</strong> <code>obj.get("x").string()</code>, <code>value.toLong()</code>, <code>value.toDouble()</code>, <code>value.bool()</code></li>
195+
<li><strong>Type-safe accessors:</strong> <code>obj.get("x").asString()</code>, <code>value.asLong()</code>, <code>value.asDouble()</code>, <code>value.asBoolean()</code></li>
196196
<li><strong>JTD validator (RFC 8927):</strong> module <code>json-java21-jtd</code> for real-world JSON-heavy logic</li>
197197
</ul>
198198
</section>

‎json-compatibility-suite/src/main/java/jdk/incubator/compatibility/JsonCompatibilitySummary.java‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,7 @@ void generateJsonReport() throws Exception {
127127
LOGGER.fine(() -> "Starting JSON report generation");
128128
TestResults results = runTests();
129129
JsonObject report = createJsonReport(results);
130-
System.out.println(Json.toDisplayString(report, 2));
130+
System.out.println(Json.toDisplayString(report, " "));
131131
}
132132

133133
private TestResults runTests() throws Exception {

0 commit comments

Comments
 (0)