66import static com .github .jsonldjava .core .JsonLdConsts .RDF_REST ;
77import static com .github .jsonldjava .core .JsonLdConsts .RDF_TYPE ;
88import static com .github .jsonldjava .core .JsonLdUtils .isKeyword ;
9+ import static com .github .jsonldjava .utils .Obj .newMap ;
910
1011import java .util .ArrayList ;
1112import 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