Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 13 additions & 14 deletions core/src/main/java/com/github/jsonldjava/core/Context.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.github.jsonldjava.core;

import static com.github.jsonldjava.core.JsonLdUtils.compareShortestLeast;
import static com.github.jsonldjava.utils.Obj.newMap;

import java.util.ArrayList;
import java.util.Collections;
Expand Down Expand Up @@ -56,7 +57,7 @@ private void init(JsonLdOptions options) {
if (options.getBase() != null) {
this.put("@base", options.getBase());
}
this.termDefinitions = new LinkedHashMap<String, Object>();
this.termDefinitions = newMap();
}

/**
Expand Down Expand Up @@ -288,9 +289,7 @@ private void createTermDefinition(Map<String, Object> context, String term,
}

if (value instanceof String) {
final Map<String, Object> tmp = new LinkedHashMap<String, Object>();
tmp.put("@id", value);
value = tmp;
value = newMap("@id", value);
}

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

// 9) create a new term definition
final Map<String, Object> definition = new LinkedHashMap<String, Object>();
final Map<String, Object> definition = newMap();

// 10)
if (val.containsKey("@type")) {
Expand Down Expand Up @@ -828,7 +827,7 @@ public Map<String, Object> getInverse() {
}

// 1)
inverse = new LinkedHashMap<String, Object>();
inverse = newMap();

// 2)
String defaultLanguage = (String) this.get("@language");
Expand Down Expand Up @@ -865,16 +864,16 @@ public int compare(String a, String b) {
// 3.4 + 3.5)
Map<String, Object> containerMap = (Map<String, Object>) inverse.get(iri);
if (containerMap == null) {
containerMap = new LinkedHashMap<String, Object>();
containerMap = newMap();
inverse.put(iri, containerMap);
}

// 3.6 + 3.7)
Map<String, Object> typeLanguageMap = (Map<String, Object>) containerMap.get(container);
if (typeLanguageMap == null) {
typeLanguageMap = new LinkedHashMap<String, Object>();
typeLanguageMap.put("@language", new LinkedHashMap<String, Object>());
typeLanguageMap.put("@type", new LinkedHashMap<String, Object>());
typeLanguageMap = newMap();
typeLanguageMap.put("@language", newMap());
typeLanguageMap.put("@type", newMap());
containerMap.put(container, typeLanguageMap);
}

Expand Down Expand Up @@ -1024,7 +1023,7 @@ Map<String, Object> getTermDefinition(String key) {
}

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

public Map<String, Object> serialize() {
final Map<String, Object> ctx = new LinkedHashMap<String, Object>();
final Map<String, Object> ctx = newMap();
if (this.get("@base") != null && !this.get("@base").equals(options.getBase())) {
ctx.put("@base", this.get("@base"));
}
Expand All @@ -1088,7 +1087,7 @@ public Map<String, Object> serialize() {
final String cid = this.compactIri((String) definition.get("@id"));
ctx.put(term, term.equals(cid) ? definition.get("@id") : cid);
} else {
final Map<String, Object> defn = new LinkedHashMap<String, Object>();
final Map<String, Object> defn = newMap();
final String cid = this.compactIri((String) definition.get("@id"));
final Boolean reverseProperty = Boolean.TRUE.equals(definition.get("@reverse"));
if (!(term.equals(cid) && !reverseProperty)) {
Expand All @@ -1110,7 +1109,7 @@ public Map<String, Object> serialize() {
}
}

final Map<String, Object> rval = new LinkedHashMap<String, Object>();
final Map<String, Object> rval = newMap();
if (!(ctx == null || ctx.isEmpty())) {
rval.put("@context", ctx);
}
Expand Down
73 changes: 34 additions & 39 deletions core/src/main/java/com/github/jsonldjava/core/JsonLdApi.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import static com.github.jsonldjava.core.JsonLdConsts.RDF_REST;
import static com.github.jsonldjava.core.JsonLdConsts.RDF_TYPE;
import static com.github.jsonldjava.core.JsonLdUtils.isKeyword;
import static com.github.jsonldjava.utils.Obj.newMap;

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

// 6)
final Map<String, Object> result = new LinkedHashMap<String, Object>();
final Map<String, Object> result = newMap();
// 7)
final List<String> keys = new ArrayList<String>(elem.keySet());
Collections.sort(keys);
Expand Down Expand Up @@ -352,7 +353,7 @@ else if ("@index".equals(expandedProperty) || "@value".equals(expandedProperty)
// 7.6.4.2)
if (!"@list".equals(container)) {
// 7.6.4.2.1)
final Map<String, Object> wrapper = new LinkedHashMap<String, Object>();
final Map<String, Object> wrapper = newMap();
// TODO: SPEC: no mention of vocab = true
wrapper.put(activeCtx.compactIri("@list", true), compactedItem);
compactedItem = wrapper;
Expand Down Expand Up @@ -380,7 +381,7 @@ else if (result.containsKey(itemActiveProperty)) {
if (result.containsKey(itemActiveProperty)) {
mapObject = (Map<String, Object>) result.get(itemActiveProperty);
} else {
mapObject = new LinkedHashMap<String, Object>();
mapObject = newMap();
result.put(itemActiveProperty, mapObject);
}

Expand Down Expand Up @@ -533,7 +534,7 @@ else if (element instanceof Map) {
activeCtx = activeCtx.parse(elem.get("@context"));
}
// 6)
Map<String, Object> result = new LinkedHashMap<String, Object>();
Map<String, Object> result = newMap();
// 7)
final List<String> keys = new ArrayList<String>(elem.keySet());
Collections.sort(keys);
Expand Down Expand Up @@ -693,7 +694,7 @@ else if ("@reverse".equals(expandedProperty)) {
.containsKey("@reverse") ? 1 : 0)) {
// 7.4.11.3.1)
if (!result.containsKey("@reverse")) {
result.put("@reverse", new LinkedHashMap<String, Object>());
result.put("@reverse", newMap());
}
// 7.4.11.3.2)
final Map<String, Object> reverseMap = (Map<String, Object>) result
Expand Down Expand Up @@ -762,7 +763,7 @@ else if ("@language".equals(activeCtx.getContainer(key)) && value instanceof Map
+ item.toString() + " to be a string");
}
// 7.5.2.2.2)
final Map<String, Object> tmp = new LinkedHashMap<String, Object>();
final Map<String, Object> tmp = newMap();
tmp.put("@value", item);
tmp.put("@language", language.toLowerCase());
((List<Object>) expandedValue).add(tmp);
Expand Down Expand Up @@ -815,15 +816,15 @@ else if ("@index".equals(activeCtx.getContainer(key)) && value instanceof Map) {
tmp = new ArrayList<Object>();
((List<Object>) tmp).add(expandedValue);
}
expandedValue = new LinkedHashMap<String, Object>();
expandedValue = newMap();
((Map<String, Object>) expandedValue).put("@list", tmp);
}
}
// 7.10)
if (activeCtx.isReverseProperty(key)) {
// 7.10.1)
if (!result.containsKey("@reverse")) {
result.put("@reverse", new LinkedHashMap<String, Object>());
result.put("@reverse", newMap());
}
// 7.10.2)
final Map<String, Object> reverseMap = (Map<String, Object>) result
Expand Down Expand Up @@ -1014,7 +1015,7 @@ void generateNodeMap(Object element, Map<String, Object> nodeMap, String activeG

// 2)
if (!nodeMap.containsKey(activeGraph)) {
nodeMap.put(activeGraph, new LinkedHashMap<String, Object>());
nodeMap.put(activeGraph, newMap());
}
final Map<String, Object> graph = (Map<String, Object>) nodeMap.get(activeGraph);
Map<String, Object> node = (Map<String, Object>) (activeSubject == null ? null : graph
Expand Down Expand Up @@ -1060,8 +1061,7 @@ void generateNodeMap(Object element, Map<String, Object> nodeMap, String activeG
// 5)
else if (elem.containsKey("@list")) {
// 5.1)
final Map<String, Object> result = new LinkedHashMap<String, Object>();
result.put("@list", new ArrayList<Object>());
final Map<String, Object> result = newMap("@list", new ArrayList<Object>());
// 5.2)
// for (final Object item : (List<Object>) elem.get("@list")) {
// generateNodeMap(item, nodeMap, activeGraph, activeSubject,
Expand All @@ -1088,8 +1088,7 @@ else if (elem.containsKey("@list")) {
}
// 6.3)
if (!graph.containsKey(id)) {
final Map<String, Object> tmp = new LinkedHashMap<String, Object>();
tmp.put("@id", id);
final Map<String, Object> tmp = newMap("@id", id);
graph.put(id, tmp);
}
// 6.4) TODO: SPEC this line is asked for by the spec, but it breaks
Expand All @@ -1103,8 +1102,7 @@ else if (elem.containsKey("@list")) {
}
// 6.6)
else if (activeProperty != null) {
final Map<String, Object> reference = new LinkedHashMap<String, Object>();
reference.put("@id", id);
final Map<String, Object> reference = newMap("@id", id);
// 6.6.2)
if (list == null) {
// 6.6.2.1+2)
Expand Down Expand Up @@ -1139,8 +1137,7 @@ else if (activeProperty != null) {
// 6.9)
if (elem.containsKey("@reverse")) {
// 6.9.1)
final Map<String, Object> referencedNode = new LinkedHashMap<String, Object>();
referencedNode.put("@id", id);
final Map<String, Object> referencedNode = newMap("@id", id);
// 6.9.2+6.9.4)
final Map<String, Object> reverseMap = (Map<String, Object>) elem
.remove("@reverse");
Expand Down Expand Up @@ -1294,9 +1291,10 @@ public List<Object> frame(Object input, List<Object> frame) throws JsonLdError {
final List<Object> framed = new ArrayList<Object>();
// NOTE: frame validation is done by the function not allowing anything
// other than list to me passed
frame(state, this.nodeMap,
(frame != null && frame.size() > 0 ? (Map<String, Object>) frame.get(0)
: new LinkedHashMap<String, Object>()), framed, null);
frame(state,
this.nodeMap,
(frame != null && frame.size() > 0 ? (Map<String, Object>) frame.get(0) : newMap()),
framed, null);

return framed;
}
Expand Down Expand Up @@ -1336,7 +1334,7 @@ private void frame(FramingContext state, Map<String, Object> nodes, Map<String,
}

// start output
final Map<String, Object> output = new LinkedHashMap<String, Object>();
final Map<String, Object> output = newMap();
output.put("@id", id);

// prepare embed meta info
Expand Down Expand Up @@ -1414,7 +1412,7 @@ private void frame(FramingContext state, Map<String, Object> nodes, Map<String,
if ((item instanceof Map)
&& ((Map<String, Object>) item).containsKey("@list")) {
// add empty list
final Map<String, Object> list = new LinkedHashMap<String, Object>();
final Map<String, Object> list = newMap();
list.put("@list", new ArrayList<Object>());
addFrameOutput(state, output, prop, list);

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

// recurse into subject reference
else if (JsonLdUtils.isNodeReference(item)) {
final Map<String, Object> tmp = new LinkedHashMap<String, Object>();
final Map<String, Object> tmp = newMap();
final String itemid = (String) ((Map<String, Object>) item).get("@id");
// TODO: nodes may need to be node_map, which is
// global
Expand Down Expand Up @@ -1471,7 +1469,7 @@ else if (JsonLdUtils.isNodeReference(item)) {
Map<String, Object> propertyFrame = pf.size() > 0 ? (Map<String, Object>) pf
.get(0) : null;
if (propertyFrame == null) {
propertyFrame = new LinkedHashMap<String, Object>();
propertyFrame = newMap();
}
final boolean omitDefaultOn = getFrameFlag(propertyFrame, "@omitDefault",
state.omitDefault);
Expand All @@ -1485,8 +1483,7 @@ else if (JsonLdUtils.isNodeReference(item)) {
tmp.add(def);
def = tmp;
}
final Map<String, Object> tmp1 = new LinkedHashMap<String, Object>();
tmp1.put("@preserve", def);
final Map<String, Object> tmp1 = newMap("@preserve", def);
final List<Object> tmp2 = new ArrayList<Object>();
tmp2.add(tmp1);
output.put(prop, tmp2);
Expand Down Expand Up @@ -1531,8 +1528,7 @@ private static void removeEmbed(FramingContext state, String id) {
final String property = embed.property;

// create reference to replace embed
final Map<String, Object> node = new LinkedHashMap<String, Object>();
node.put("@id", id);
final Map<String, Object> node = newMap("@id", id);

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

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

// recurse into subject
o = new LinkedHashMap<String, Object>();
o = newMap();
Map<String, Object> s = (Map<String, Object>) this.nodeMap.get(sid);
if (s == null) {
s = new LinkedHashMap<String, Object>();
s.put("@id", sid);
s = newMap("@id", sid);
}
for (final String prop : s.keySet()) {
// copy keywords
Expand Down Expand Up @@ -1971,8 +1966,8 @@ public List<Object> fromRDF(final RDFDataset dataset) throws JsonLdError {
public RDFDataset toRDF() throws JsonLdError {
// TODO: make the default generateNodeMap call (i.e. without a
// graphName) create and return the nodeMap
final Map<String, Object> nodeMap = new LinkedHashMap<String, Object>();
nodeMap.put("@default", new LinkedHashMap<String, Object>());
final Map<String, Object> nodeMap = newMap();
nodeMap.put("@default", newMap());
generateNodeMap(this.value, nodeMap);

final RDFDataset dataset = new RDFDataset(this);
Expand Down Expand Up @@ -2011,7 +2006,7 @@ public RDFDataset toRDF() throws JsonLdError {
public Object normalize(Map<String, Object> dataset) throws JsonLdError {
// create quads and map bnodes to their associated quads
final List<Object> quads = new ArrayList<Object>();
final Map<String, Object> bnodes = new LinkedHashMap<String, Object>();
final Map<String, Object> bnodes = newMap();
for (String graphName : dataset.keySet()) {
final List<Map<String, Object>> triples = (List<Map<String, Object>>) dataset
.get(graphName);
Expand All @@ -2021,12 +2016,12 @@ public Object normalize(Map<String, Object> dataset) throws JsonLdError {
for (final Map<String, Object> quad : triples) {
if (graphName != null) {
if (graphName.indexOf("_:") == 0) {
final Map<String, Object> tmp = new LinkedHashMap<String, Object>();
final Map<String, Object> tmp = newMap();
tmp.put("type", "blank node");
tmp.put("value", graphName);
quad.put("name", tmp);
} else {
final Map<String, Object> tmp = new LinkedHashMap<String, Object>();
final Map<String, Object> tmp = newMap();
tmp.put("type", "IRI");
tmp.put("value", graphName);
quad.put("name", tmp);
Expand Down
Loading