Skip to content

Commit 42a6da4

Browse files
committed
Fixes nullpointer avoiding unnecessary .toString()
fixes #2
1 parent 0882d2f commit 42a6da4

File tree

2 files changed

+42
-5
lines changed

2 files changed

+42
-5
lines changed

src/main/java/io/zenwave360/jsonrefparser/$RefParser.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,7 @@ public class $RefParser {
139139
}
140140

141141
private void mergeAllOf(Object value, String[] paths, URI currentFileURL) {
142-
// var visitedNodeRef = String.format("%s%s", currentFileURL.toString(), jsonPointer(paths));
142+
// var visitedNodeRef = String.format("%s%s", currentFileURL, jsonPointer(paths));
143143
// log.trace("{}visiting {}", indent(), visitedNodeRef);
144144
// if(visited.contains(value)) {
145145
// log.trace("{}skipping visited {}", indent(), visitedNodeRef);
@@ -177,7 +177,7 @@ private void mergeAllOf(Object value, String[] paths, URI currentFileURL) {
177177
refs.jsonContext.set(jsonPath, mergedAllOfObject);
178178
refs.saveOriginalAllOf(mergedAllOfObject, allOf);
179179
} catch (Exception e){
180-
log.error("Error setting jsonPath:{} in file:{}", jsonPath, currentFileURL.toString(), e);
180+
log.error("Error setting jsonPath:{} in file:{}", jsonPath, currentFileURL, e);
181181
throw e;
182182
}
183183
} else if(value instanceof Map) {
@@ -200,7 +200,7 @@ private String indent() {
200200
return StringUtils.join(indent, "");
201201
}
202202
private void dereference(ExtendedJsonContext jsonContext, Object value, String[] paths, URI currentFileURL) {
203-
var visitedNodeRef = String.format("%s%s", currentFileURL.toString(), jsonPointer(paths));
203+
var visitedNodeRef = String.format("%s%s", currentFileURL, jsonPointer(paths));
204204
log.trace("{}visiting {}", indent(), visitedNodeRef);
205205
if(visited.contains(visitedNodeRef)) {
206206
log.trace("{}skipping visited {}", indent(), visitedNodeRef);
@@ -244,7 +244,7 @@ private void dereference(ExtendedJsonContext jsonContext, Object value, String[]
244244
// dereference resolved
245245
var resolvedRefURL = ObjectUtils.firstNonNull($ref.getURI(), currentFileURL);
246246
var resolvedNodePaths = jsonPointerToPaths($ref.getPath());
247-
var resolvedNodeRef = String.format("%s%s", resolvedRefURL.toString(), $ref.getPath());
247+
var resolvedNodeRef = String.format("%s%s", resolvedRefURL, $ref.getPath());
248248
indent.add(" => ");
249249
log.trace("{}dereferencing resolved {}", indent(), resolvedNodeRef);
250250
dereference(jsonContext, resolved, resolvedNodePaths, resolvedRefURL);
@@ -256,7 +256,7 @@ private void dereference(ExtendedJsonContext jsonContext, Object value, String[]
256256
this.refs.saveOriginalRef($ref, resolved);
257257
jsonContext.set(innerJsonPath, resolved);
258258
}catch (Exception e){
259-
log.error("Error setting jsonPath: {} in {}", innerJsonPath, currentFileURL.toString(), e);
259+
log.error("Error setting jsonPath: {} in {}", innerJsonPath, currentFileURL, e);
260260
throw e;
261261
}
262262
} else if(value instanceof Map) {
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
package io.zenwave360.jsonrefparser;
2+
3+
import org.junit.Assert;
4+
import org.junit.Test;
5+
6+
import java.io.File;
7+
import java.io.IOException;
8+
9+
public class DereferenceJsonStringTest {
10+
11+
@Test
12+
public void testDereferenceJsonString() throws IOException {
13+
String json = "{\n" +
14+
" \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n" +
15+
" \"definitions\": {\n" +
16+
" \"appMethods\": {\n" +
17+
" \"about\": {\n" +
18+
" \"type\": \"string\"\n" +
19+
" },\n" +
20+
" \"author\": {\n" +
21+
" \"type\": \"string\"\n" +
22+
" }\n" +
23+
" }\n" +
24+
" },\n" +
25+
" \"type\": \"object\",\n" +
26+
" \"properties\": {\n" +
27+
" \"$ref\": \"#/definitions/appMethods\"\n" +
28+
" }\n" +
29+
"}";
30+
$RefParser parser = new $RefParser(json).parse();
31+
$Refs refs = parser.dereference().getRefs();
32+
Assert.assertEquals(1, refs.refs().size());
33+
Assert.assertTrue(refs.paths("file").isEmpty());
34+
Assert.assertFalse(refs.refs("#/").isEmpty());
35+
Assert.assertTrue(refs.get("$.definitions.appMethods") != null);
36+
}
37+
}

0 commit comments

Comments
 (0)