@Override public Object deserialize(JsonNode n, ObjectMapper mapper) { HashMap<String, Object> map = new HashMap<String, Object>(); Iterator<Map.Entry<String, JsonNode>> entries = n.fields(); while (entries.hasNext()) { try { Map.Entry<String, JsonNode> ee = entries.next(); map.put(ee.getKey(), parent.deserialize(ee.getValue(), mapper)); } catch (Exception e) { LoggerFactory.getLogger(this.getClass().getName()).error(e.getMessage()); } } return PersistentArrayMap.create(map); } }
public IPersistentMap assocEx(Object key, Object val) { int i = indexOf(key); Object[] newArray; if(i >= 0) { throw Util.runtimeException("Key already present"); } else //didn't have key, grow { if(array.length > HASHTABLE_THRESHOLD) return createHT(array).assocEx(key, val); newArray = new Object[array.length + 2]; if(array.length > 0) System.arraycopy(array, 0, newArray, 2, array.length); newArray[0] = key; newArray[1] = val; } return create(newArray); }
public IPersistentMap assocEx(Object key, Object val) { int i = indexOf(key); Object[] newArray; if(i >= 0) { throw Util.runtimeException("Key already present"); } else //didn't have key, grow { if(array.length > HASHTABLE_THRESHOLD) return createHT(array).assocEx(key, val); newArray = new Object[array.length + 2]; if(array.length > 0) System.arraycopy(array, 0, newArray, 2, array.length); newArray[0] = key; newArray[1] = val; } return create(newArray); }
@Override @SuppressWarnings("unchecked") public Object deserialize(JsonNode n, ObjectMapper mapper) { org.apache.commons.lang3.tuple.Pair<String, Object> deserializeObject = TableDisplayDeSerializer.getDeserializeObject(parent, n, mapper); String subtype = deserializeObject.getLeft(); if (subtype != null && subtype.equals(TableDisplay.DICTIONARY_SUBTYPE)) { return PersistentArrayMap.create((Map) deserializeObject.getRight()); } else if (subtype != null && subtype.equals(TableDisplay.LIST_OF_MAPS_SUBTYPE)) { List<Map<String, Object>> rows = (List<Map<String, Object>>) deserializeObject.getRight(); List<Object> oo = new ArrayList<Object>(); for (Map<String, Object> row : rows) { oo.add(PersistentArrayMap.create(row)); } return PersistentVector.create(oo); } else if (subtype != null && subtype.equals(TableDisplay.MATRIX_SUBTYPE)) { List<List<?>> matrix = (List<List<?>>) deserializeObject.getRight(); return PersistentVector.create(matrix); } return deserializeObject.getRight(); } }
public IPersistentMap assoc(Object key, Object val){ int i = indexOf(key); Object[] newArray; if(i >= 0) //already have key, same-sized replacement { if(array[i + 1] == val) //no change, no op return this; newArray = array.clone(); newArray[i + 1] = val; } else //didn't have key, grow { if(array.length > HASHTABLE_THRESHOLD) return createHT(array).assoc(key, val); newArray = new Object[array.length + 2]; if(array.length > 0) System.arraycopy(array, 0, newArray, 0, array.length); newArray[newArray.length-2] = key; newArray[newArray.length-1] = val; } return create(newArray); }
public IPersistentMap assoc(Object key, Object val){ int i = indexOf(key); Object[] newArray; if(i >= 0) //already have key, same-sized replacement { if(array[i + 1] == val) //no change, no op return this; newArray = array.clone(); newArray[i + 1] = val; } else //didn't have key, grow { if(array.length > HASHTABLE_THRESHOLD) return createHT(array).assoc(key, val); newArray = new Object[array.length + 2]; if(array.length > 0) System.arraycopy(array, 0, newArray, 2, array.length); newArray[0] = key; newArray[1] = val; } return create(newArray); }
public IPersistentMap without(Object key){ int i = indexOf(key); if(i >= 0) //have key, will remove { int newlen = array.length - 2; if(newlen == 0) return empty(); Object[] newArray = new Object[newlen]; for(int s = 0, d = 0; s < array.length; s += 2) { if(!equalKey(array[s], key)) //skip removal key { newArray[d] = array[s]; newArray[d + 1] = array[s + 1]; d += 2; } } return create(newArray); } //don't have key, no op return this; }
public IPersistentMap without(Object key){ int i = indexOf(key); if(i >= 0) //have key, will remove { int newlen = array.length - 2; if(newlen == 0) return empty(); Object[] newArray = new Object[newlen]; for(int s = 0, d = 0; s < array.length; s += 2) { if(!equalKey(array[s], key)) //skip removal key { newArray[d] = array[s]; newArray[d + 1] = array[s + 1]; d += 2; } } return create(newArray); } //don't have key, no op return this; }
emitValue(PersistentArrayMap.create((java.util.Map) value), gen); gen.invokeStatic(getType(value.getClass()), createMethod);
emitValue(PersistentArrayMap.create((java.util.Map) value), gen); gen.invokeStatic(getType(value.getClass()), createMethod);