public Builder<K, V> put(K key, V value) { result.put(key, value); return this; }
public Builder<K, V> putIfNotNull(K key, V value) { if (value!=null) result.put(key, value); return this; }
/** as {@link #put(Object, Object)} but fluent style */ public MutableMap<K,V> add(K key, V value) { put(key, value); return this; }
public static <K,V> MutableMap<K,V> of(K k1, V v1, K k2, V v2, K k3, V v3,K k4, V v4,K k5, V v5,K k6,V v6,K k7,V v7) { MutableMap<K,V> result = new MutableMap<K,V>(); result.put(k1, v1); result.put(k2, v2); result.put(k3, v3); result.put(k4, v4); result.put(k5, v5); result.put(k6, v6); result.put(k7, v7); return result; }
public Builder<K, V> put(Entry<? extends K, ? extends V> entry) { result.put(entry.getKey(), entry.getValue()); return this; }
public static <K,V> MutableMap<K,V> of(K k1, V v1) { MutableMap<K,V> result = new MutableMap<K,V>(); result.put(k1, v1); return result; }
/** moves the value stored under oldKey to newKey, if there was such a value */ public Builder<K, V> renameKey(K oldKey, K newKey) { if (result.containsKey(oldKey)) { V oldValue = result.remove(oldKey); result.put(newKey, oldValue); } return this; }
protected Object applyMap(Map<?, ?> input, Set<Object> stack) { MutableMap<Object, Object> result = MutableMap.of(); for (Map.Entry<?,?> xi: input.entrySet()) result.put(apply(xi.getKey(), stack), apply(xi.getValue(), stack)); return result; }
private Map<?, ?> mergeMapsImpl(Map<?, ?> val1, Map<?, ?> val2, int depthRemaining, Visited visited) { if (depthRemaining < 1) { return val1; } MutableMap<Object, Object> result = MutableMap.of(); for (Object key : Sets.union(val1.keySet(), val2.keySet())) { Maybe<?> sub1 = val1.containsKey(key) ? Maybe.of(val1.get(key)) : Maybe.absent(); Maybe<?> sub2 = val2.containsKey(key) ? Maybe.of(val2.get(key)) : Maybe.absent(); result.put(key, mergeImpl(sub1, sub2, depthRemaining-1, visited)); } return result; }
public static LinkWithMetadata asLink(Task<?> t, UriBuilder ub) { if (t==null) return null; MutableMap<String,Object> data = new MutableMap<String,Object>(); data.put("id", t.getId()); if (t.getDisplayName()!=null) data.put("taskName", t.getDisplayName()); Entity entity = BrooklynTaskTags.getContextEntity(t); if (entity!=null) { data.put("entityId", entity.getId()); if (entity.getDisplayName()!=null) data.put("entityDisplayName", entity.getDisplayName()); } URI taskUri = serviceUriBuilder(ub, ActivityApi.class, "get").build(t.getId()); return new LinkWithMetadata(taskUri.toString(), data); } }
@Override protected Object compute() { Map<Entity, Object> ks = MutableMap.copyOf(Maps.filterValues(getValues(keySensor), valueFilter)); Map<Entity, Object> vs = MutableMap.copyOf(Maps.filterValues(getValues(valueSensor), valueFilter)); MutableMap<Object, Object> result = MutableMap.of(); for (Entity entity : ks.keySet()) { if (vs.containsKey(entity)) { result.put(ks.get(entity), vs.get(entity)); } } return result; }
@Test public void testAddMapAddsReference() { MutableMap<Object, Object> map = MutableMap.<Object,Object>of("a", 1, "b", 2); Navigator<MutableMap<Object, Object>> j = Jsonya.newInstance().add("root", map); Assert.assertEquals( j.toString(), "{ \"root\": { \"a\": 1, \"b\": 2 } }"); map.put("b", 1); Assert.assertEquals( j.toString(), "{ \"root\": { \"a\": 1, \"b\": 1 } }"); }
@Test public void testAddMapAtRootAddsReference() { MutableMap<Object, Object> map = MutableMap.<Object,Object>of("a", 1, "b", 2); Navigator<MutableMap<Object, Object>> j = Jsonya.newInstance().add(map); Assert.assertEquals( j.toString(), "{ \"a\": 1, \"b\": 2 }"); map.put("b", 1); Assert.assertEquals( j.toString(), "{ \"a\": 1, \"b\": 1 }"); }
@Test public void testAddMapToExistingRootAddsCopy() { MutableMap<Object, Object> map = MutableMap.<Object,Object>of("a", 1, "b", 2); Navigator<MutableMap<Object, Object>> j = Jsonya.newInstance().map().add(map); Assert.assertEquals( j.toString(), "{ \"a\": 1, \"b\": 2 }"); map.put("b", 1); Assert.assertEquals( j.toString(), "{ \"a\": 1, \"b\": 2 }"); }
@Test public void testAddMapToExistingAddsCopy() { MutableMap<Object, Object> map = MutableMap.<Object,Object>of("a", 1, "b", 2); Navigator<MutableMap<Object, Object>> j = Jsonya.newInstance().at("root").map().add(map).root(); Assert.assertEquals( j.toString(), "{ \"root\": { \"a\": 1, \"b\": 2 } }"); map.put("b", 1); Assert.assertEquals( j.toString(), "{ \"root\": { \"a\": 1, \"b\": 2 } }"); }