Skip to content

Commit 1c7c4ab

Browse files
committed
Merge pull request jsonld-java#135 from ansell/playground-opts-parser
Playground opts parser
2 parents 648ca1f + b6c395e commit 1c7c4ab

10 files changed

Lines changed: 420 additions & 267 deletions

File tree

core/src/main/java/com/github/jsonldjava/core/Context.java

Lines changed: 13 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.github.jsonldjava.core;
22

33
import static com.github.jsonldjava.core.JsonLdUtils.compareShortestLeast;
4+
import static com.github.jsonldjava.utils.Obj.newMap;
45

56
import java.util.ArrayList;
67
import java.util.Collections;
@@ -56,7 +57,7 @@ private void init(JsonLdOptions options) {
5657
if (options.getBase() != null) {
5758
this.put("@base", options.getBase());
5859
}
59-
this.termDefinitions = new LinkedHashMap<String, Object>();
60+
this.termDefinitions = newMap();
6061
}
6162

6263
/**
@@ -288,9 +289,7 @@ private void createTermDefinition(Map<String, Object> context, String term,
288289
}
289290

290291
if (value instanceof String) {
291-
final Map<String, Object> tmp = new LinkedHashMap<String, Object>();
292-
tmp.put("@id", value);
293-
value = tmp;
292+
value = newMap("@id", value);
294293
}
295294

296295
if (!(value instanceof Map)) {
@@ -301,7 +300,7 @@ private void createTermDefinition(Map<String, Object> context, String term,
301300
final Map<String, Object> val = (Map<String, Object>) value;
302301

303302
// 9) create a new term definition
304-
final Map<String, Object> definition = new LinkedHashMap<String, Object>();
303+
final Map<String, Object> definition = newMap();
305304

306305
// 10)
307306
if (val.containsKey("@type")) {
@@ -828,7 +827,7 @@ public Map<String, Object> getInverse() {
828827
}
829828

830829
// 1)
831-
inverse = new LinkedHashMap<String, Object>();
830+
inverse = newMap();
832831

833832
// 2)
834833
String defaultLanguage = (String) this.get("@language");
@@ -865,16 +864,16 @@ public int compare(String a, String b) {
865864
// 3.4 + 3.5)
866865
Map<String, Object> containerMap = (Map<String, Object>) inverse.get(iri);
867866
if (containerMap == null) {
868-
containerMap = new LinkedHashMap<String, Object>();
867+
containerMap = newMap();
869868
inverse.put(iri, containerMap);
870869
}
871870

872871
// 3.6 + 3.7)
873872
Map<String, Object> typeLanguageMap = (Map<String, Object>) containerMap.get(container);
874873
if (typeLanguageMap == null) {
875-
typeLanguageMap = new LinkedHashMap<String, Object>();
876-
typeLanguageMap.put("@language", new LinkedHashMap<String, Object>());
877-
typeLanguageMap.put("@type", new LinkedHashMap<String, Object>());
874+
typeLanguageMap = newMap();
875+
typeLanguageMap.put("@language", newMap());
876+
typeLanguageMap.put("@type", newMap());
878877
containerMap.put(container, typeLanguageMap);
879878
}
880879

@@ -1024,7 +1023,7 @@ Map<String, Object> getTermDefinition(String key) {
10241023
}
10251024

10261025
public Object expandValue(String activeProperty, Object value) throws JsonLdError {
1027-
final Map<String, Object> rval = new LinkedHashMap<String, Object>();
1026+
final Map<String, Object> rval = newMap();
10281027
final Map<String, Object> td = getTermDefinition(activeProperty);
10291028
// 1)
10301029
if (td != null && "@id".equals(td.get("@type"))) {
@@ -1068,7 +1067,7 @@ public Object getContextValue(String activeProperty, String string) throws JsonL
10681067
}
10691068

10701069
public Map<String, Object> serialize() {
1071-
final Map<String, Object> ctx = new LinkedHashMap<String, Object>();
1070+
final Map<String, Object> ctx = newMap();
10721071
if (this.get("@base") != null && !this.get("@base").equals(options.getBase())) {
10731072
ctx.put("@base", this.get("@base"));
10741073
}
@@ -1088,7 +1087,7 @@ public Map<String, Object> serialize() {
10881087
final String cid = this.compactIri((String) definition.get("@id"));
10891088
ctx.put(term, term.equals(cid) ? definition.get("@id") : cid);
10901089
} else {
1091-
final Map<String, Object> defn = new LinkedHashMap<String, Object>();
1090+
final Map<String, Object> defn = newMap();
10921091
final String cid = this.compactIri((String) definition.get("@id"));
10931092
final Boolean reverseProperty = Boolean.TRUE.equals(definition.get("@reverse"));
10941093
if (!(term.equals(cid) && !reverseProperty)) {
@@ -1110,7 +1109,7 @@ public Map<String, Object> serialize() {
11101109
}
11111110
}
11121111

1113-
final Map<String, Object> rval = new LinkedHashMap<String, Object>();
1112+
final Map<String, Object> rval = newMap();
11141113
if (!(ctx == null || ctx.isEmpty())) {
11151114
rval.put("@context", ctx);
11161115
}

core/src/main/java/com/github/jsonldjava/core/JsonLdApi.java

Lines changed: 34 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import static com.github.jsonldjava.core.JsonLdConsts.RDF_REST;
77
import static com.github.jsonldjava.core.JsonLdConsts.RDF_TYPE;
88
import static com.github.jsonldjava.core.JsonLdUtils.isKeyword;
9+
import static com.github.jsonldjava.utils.Obj.newMap;
910

1011
import java.util.ArrayList;
1112
import java.util.Collection;
@@ -191,7 +192,7 @@ public Object compact(Context activeCtx, String activeProperty, Object element,
191192
final boolean insideReverse = ("@reverse".equals(activeProperty));
192193

193194
// 6)
194-
final Map<String, Object> result = new LinkedHashMap<String, Object>();
195+
final Map<String, Object> result = newMap();
195196
// 7)
196197
final List<String> keys = new ArrayList<String>(elem.keySet());
197198
Collections.sort(keys);
@@ -352,7 +353,7 @@ else if ("@index".equals(expandedProperty) || "@value".equals(expandedProperty)
352353
// 7.6.4.2)
353354
if (!"@list".equals(container)) {
354355
// 7.6.4.2.1)
355-
final Map<String, Object> wrapper = new LinkedHashMap<String, Object>();
356+
final Map<String, Object> wrapper = newMap();
356357
// TODO: SPEC: no mention of vocab = true
357358
wrapper.put(activeCtx.compactIri("@list", true), compactedItem);
358359
compactedItem = wrapper;
@@ -380,7 +381,7 @@ else if (result.containsKey(itemActiveProperty)) {
380381
if (result.containsKey(itemActiveProperty)) {
381382
mapObject = (Map<String, Object>) result.get(itemActiveProperty);
382383
} else {
383-
mapObject = new LinkedHashMap<String, Object>();
384+
mapObject = newMap();
384385
result.put(itemActiveProperty, mapObject);
385386
}
386387

@@ -533,7 +534,7 @@ else if (element instanceof Map) {
533534
activeCtx = activeCtx.parse(elem.get("@context"));
534535
}
535536
// 6)
536-
Map<String, Object> result = new LinkedHashMap<String, Object>();
537+
Map<String, Object> result = newMap();
537538
// 7)
538539
final List<String> keys = new ArrayList<String>(elem.keySet());
539540
Collections.sort(keys);
@@ -693,7 +694,7 @@ else if ("@reverse".equals(expandedProperty)) {
693694
.containsKey("@reverse") ? 1 : 0)) {
694695
// 7.4.11.3.1)
695696
if (!result.containsKey("@reverse")) {
696-
result.put("@reverse", new LinkedHashMap<String, Object>());
697+
result.put("@reverse", newMap());
697698
}
698699
// 7.4.11.3.2)
699700
final Map<String, Object> reverseMap = (Map<String, Object>) result
@@ -762,7 +763,7 @@ else if ("@language".equals(activeCtx.getContainer(key)) && value instanceof Map
762763
+ item.toString() + " to be a string");
763764
}
764765
// 7.5.2.2.2)
765-
final Map<String, Object> tmp = new LinkedHashMap<String, Object>();
766+
final Map<String, Object> tmp = newMap();
766767
tmp.put("@value", item);
767768
tmp.put("@language", language.toLowerCase());
768769
((List<Object>) expandedValue).add(tmp);
@@ -815,15 +816,15 @@ else if ("@index".equals(activeCtx.getContainer(key)) && value instanceof Map) {
815816
tmp = new ArrayList<Object>();
816817
((List<Object>) tmp).add(expandedValue);
817818
}
818-
expandedValue = new LinkedHashMap<String, Object>();
819+
expandedValue = newMap();
819820
((Map<String, Object>) expandedValue).put("@list", tmp);
820821
}
821822
}
822823
// 7.10)
823824
if (activeCtx.isReverseProperty(key)) {
824825
// 7.10.1)
825826
if (!result.containsKey("@reverse")) {
826-
result.put("@reverse", new LinkedHashMap<String, Object>());
827+
result.put("@reverse", newMap());
827828
}
828829
// 7.10.2)
829830
final Map<String, Object> reverseMap = (Map<String, Object>) result
@@ -1014,7 +1015,7 @@ void generateNodeMap(Object element, Map<String, Object> nodeMap, String activeG
10141015

10151016
// 2)
10161017
if (!nodeMap.containsKey(activeGraph)) {
1017-
nodeMap.put(activeGraph, new LinkedHashMap<String, Object>());
1018+
nodeMap.put(activeGraph, newMap());
10181019
}
10191020
final Map<String, Object> graph = (Map<String, Object>) nodeMap.get(activeGraph);
10201021
Map<String, Object> node = (Map<String, Object>) (activeSubject == null ? null : graph
@@ -1060,8 +1061,7 @@ void generateNodeMap(Object element, Map<String, Object> nodeMap, String activeG
10601061
// 5)
10611062
else if (elem.containsKey("@list")) {
10621063
// 5.1)
1063-
final Map<String, Object> result = new LinkedHashMap<String, Object>();
1064-
result.put("@list", new ArrayList<Object>());
1064+
final Map<String, Object> result = newMap("@list", new ArrayList<Object>());
10651065
// 5.2)
10661066
// for (final Object item : (List<Object>) elem.get("@list")) {
10671067
// generateNodeMap(item, nodeMap, activeGraph, activeSubject,
@@ -1088,8 +1088,7 @@ else if (elem.containsKey("@list")) {
10881088
}
10891089
// 6.3)
10901090
if (!graph.containsKey(id)) {
1091-
final Map<String, Object> tmp = new LinkedHashMap<String, Object>();
1092-
tmp.put("@id", id);
1091+
final Map<String, Object> tmp = newMap("@id", id);
10931092
graph.put(id, tmp);
10941093
}
10951094
// 6.4) TODO: SPEC this line is asked for by the spec, but it breaks
@@ -1103,8 +1102,7 @@ else if (elem.containsKey("@list")) {
11031102
}
11041103
// 6.6)
11051104
else if (activeProperty != null) {
1106-
final Map<String, Object> reference = new LinkedHashMap<String, Object>();
1107-
reference.put("@id", id);
1105+
final Map<String, Object> reference = newMap("@id", id);
11081106
// 6.6.2)
11091107
if (list == null) {
11101108
// 6.6.2.1+2)
@@ -1139,8 +1137,7 @@ else if (activeProperty != null) {
11391137
// 6.9)
11401138
if (elem.containsKey("@reverse")) {
11411139
// 6.9.1)
1142-
final Map<String, Object> referencedNode = new LinkedHashMap<String, Object>();
1143-
referencedNode.put("@id", id);
1140+
final Map<String, Object> referencedNode = newMap("@id", id);
11441141
// 6.9.2+6.9.4)
11451142
final Map<String, Object> reverseMap = (Map<String, Object>) elem
11461143
.remove("@reverse");
@@ -1294,9 +1291,10 @@ public List<Object> frame(Object input, List<Object> frame) throws JsonLdError {
12941291
final List<Object> framed = new ArrayList<Object>();
12951292
// NOTE: frame validation is done by the function not allowing anything
12961293
// other than list to me passed
1297-
frame(state, this.nodeMap,
1298-
(frame != null && frame.size() > 0 ? (Map<String, Object>) frame.get(0)
1299-
: new LinkedHashMap<String, Object>()), framed, null);
1294+
frame(state,
1295+
this.nodeMap,
1296+
(frame != null && frame.size() > 0 ? (Map<String, Object>) frame.get(0) : newMap()),
1297+
framed, null);
13001298

13011299
return framed;
13021300
}
@@ -1336,7 +1334,7 @@ private void frame(FramingContext state, Map<String, Object> nodes, Map<String,
13361334
}
13371335

13381336
// start output
1339-
final Map<String, Object> output = new LinkedHashMap<String, Object>();
1337+
final Map<String, Object> output = newMap();
13401338
output.put("@id", id);
13411339

13421340
// prepare embed meta info
@@ -1414,7 +1412,7 @@ private void frame(FramingContext state, Map<String, Object> nodes, Map<String,
14141412
if ((item instanceof Map)
14151413
&& ((Map<String, Object>) item).containsKey("@list")) {
14161414
// add empty list
1417-
final Map<String, Object> list = new LinkedHashMap<String, Object>();
1415+
final Map<String, Object> list = newMap();
14181416
list.put("@list", new ArrayList<Object>());
14191417
addFrameOutput(state, output, prop, list);
14201418

@@ -1423,7 +1421,7 @@ private void frame(FramingContext state, Map<String, Object> nodes, Map<String,
14231421
.get("@list")) {
14241422
// recurse into subject reference
14251423
if (JsonLdUtils.isNodeReference(listitem)) {
1426-
final Map<String, Object> tmp = new LinkedHashMap<String, Object>();
1424+
final Map<String, Object> tmp = newMap();
14271425
final String itemid = (String) ((Map<String, Object>) listitem)
14281426
.get("@id");
14291427
// TODO: nodes may need to be node_map,
@@ -1442,7 +1440,7 @@ private void frame(FramingContext state, Map<String, Object> nodes, Map<String,
14421440

14431441
// recurse into subject reference
14441442
else if (JsonLdUtils.isNodeReference(item)) {
1445-
final Map<String, Object> tmp = new LinkedHashMap<String, Object>();
1443+
final Map<String, Object> tmp = newMap();
14461444
final String itemid = (String) ((Map<String, Object>) item).get("@id");
14471445
// TODO: nodes may need to be node_map, which is
14481446
// global
@@ -1471,7 +1469,7 @@ else if (JsonLdUtils.isNodeReference(item)) {
14711469
Map<String, Object> propertyFrame = pf.size() > 0 ? (Map<String, Object>) pf
14721470
.get(0) : null;
14731471
if (propertyFrame == null) {
1474-
propertyFrame = new LinkedHashMap<String, Object>();
1472+
propertyFrame = newMap();
14751473
}
14761474
final boolean omitDefaultOn = getFrameFlag(propertyFrame, "@omitDefault",
14771475
state.omitDefault);
@@ -1485,8 +1483,7 @@ else if (JsonLdUtils.isNodeReference(item)) {
14851483
tmp.add(def);
14861484
def = tmp;
14871485
}
1488-
final Map<String, Object> tmp1 = new LinkedHashMap<String, Object>();
1489-
tmp1.put("@preserve", def);
1486+
final Map<String, Object> tmp1 = newMap("@preserve", def);
14901487
final List<Object> tmp2 = new ArrayList<Object>();
14911488
tmp2.add(tmp1);
14921489
output.put(prop, tmp2);
@@ -1531,8 +1528,7 @@ private static void removeEmbed(FramingContext state, String id) {
15311528
final String property = embed.property;
15321529

15331530
// create reference to replace embed
1534-
final Map<String, Object> node = new LinkedHashMap<String, Object>();
1535-
node.put("@id", id);
1531+
final Map<String, Object> node = newMap("@id", id);
15361532

15371533
// remove existing embed
15381534
if (JsonLdUtils.isNode(parent)) {
@@ -1557,7 +1553,7 @@ private static void removeDependents(Map<String, EmbedNode> embeds, String id) {
15571553
// get embed keys as a separate array to enable deleting keys in map
15581554
for (final String id_dep : embeds.keySet()) {
15591555
final EmbedNode e = embeds.get(id_dep);
1560-
final Object p = e.parent != null ? e.parent : new LinkedHashMap<String, Object>();
1556+
final Object p = e.parent != null ? e.parent : newMap();
15611557
if (!(p instanceof Map)) {
15621558
continue;
15631559
}
@@ -1571,7 +1567,7 @@ private static void removeDependents(Map<String, EmbedNode> embeds, String id) {
15711567

15721568
private Map<String, Object> filterNodes(FramingContext state, Map<String, Object> nodes,
15731569
Map<String, Object> frame) throws JsonLdError {
1574-
final Map<String, Object> rval = new LinkedHashMap<String, Object>();
1570+
final Map<String, Object> rval = newMap();
15751571
for (final String id : nodes.keySet()) {
15761572
final Map<String, Object> element = (Map<String, Object>) nodes.get(id);
15771573
if (element != null && filterNode(state, element, frame)) {
@@ -1674,11 +1670,10 @@ private void embedValues(FramingContext state, Map<String, Object> element, Stri
16741670
state.embeds.put(sid, embed);
16751671

16761672
// recurse into subject
1677-
o = new LinkedHashMap<String, Object>();
1673+
o = newMap();
16781674
Map<String, Object> s = (Map<String, Object>) this.nodeMap.get(sid);
16791675
if (s == null) {
1680-
s = new LinkedHashMap<String, Object>();
1681-
s.put("@id", sid);
1676+
s = newMap("@id", sid);
16821677
}
16831678
for (final String prop : s.keySet()) {
16841679
// copy keywords
@@ -1971,8 +1966,8 @@ public List<Object> fromRDF(final RDFDataset dataset) throws JsonLdError {
19711966
public RDFDataset toRDF() throws JsonLdError {
19721967
// TODO: make the default generateNodeMap call (i.e. without a
19731968
// graphName) create and return the nodeMap
1974-
final Map<String, Object> nodeMap = new LinkedHashMap<String, Object>();
1975-
nodeMap.put("@default", new LinkedHashMap<String, Object>());
1969+
final Map<String, Object> nodeMap = newMap();
1970+
nodeMap.put("@default", newMap());
19761971
generateNodeMap(this.value, nodeMap);
19771972

19781973
final RDFDataset dataset = new RDFDataset(this);
@@ -2011,7 +2006,7 @@ public RDFDataset toRDF() throws JsonLdError {
20112006
public Object normalize(Map<String, Object> dataset) throws JsonLdError {
20122007
// create quads and map bnodes to their associated quads
20132008
final List<Object> quads = new ArrayList<Object>();
2014-
final Map<String, Object> bnodes = new LinkedHashMap<String, Object>();
2009+
final Map<String, Object> bnodes = newMap();
20152010
for (String graphName : dataset.keySet()) {
20162011
final List<Map<String, Object>> triples = (List<Map<String, Object>>) dataset
20172012
.get(graphName);
@@ -2021,12 +2016,12 @@ public Object normalize(Map<String, Object> dataset) throws JsonLdError {
20212016
for (final Map<String, Object> quad : triples) {
20222017
if (graphName != null) {
20232018
if (graphName.indexOf("_:") == 0) {
2024-
final Map<String, Object> tmp = new LinkedHashMap<String, Object>();
2019+
final Map<String, Object> tmp = newMap();
20252020
tmp.put("type", "blank node");
20262021
tmp.put("value", graphName);
20272022
quad.put("name", tmp);
20282023
} else {
2029-
final Map<String, Object> tmp = new LinkedHashMap<String, Object>();
2024+
final Map<String, Object> tmp = newMap();
20302025
tmp.put("type", "IRI");
20312026
tmp.put("value", graphName);
20322027
quad.put("name", tmp);

0 commit comments

Comments
 (0)