public Binder unmodifiableCopy() { Binder b = new Binder(this); b.freeze(); return b; }
public Binder getBinder(String key, Binder defaultValue) { HashMap<String, Object> x = (HashMap<String, Object>) get(key); Binder b = null; if (x instanceof Binder) { b = (Binder) x; } else if (x != null) { b = new Binder(x); if (frozen) b.freeze(); } return b == null ? defaultValue : b; }
/** * Get the sub-hash with the given name. Works even if there is no such sub-params: * <p> * <code>params.of("some").of("non-existing").of("path").getStringOrThrow("foo") == null</code> * <p> * will work as expected. * * @param key key name * @return either the sub-hash or new empty hash. */ @Deprecated public Binder of(String key) { HashMap<String, Object> x = (HashMap<String, Object>) get(key); Binder b = null; if (x instanceof Binder) { b = (Binder) x; } else b = x != null ? new Binder(x) : new Binder(); if (frozen) b.freeze(); return b; }
@Test public void isFrozen() throws Exception { Binder b = new Binder(); b.put("hello", "world"); Binder x = b.getOrCreateBinder("inner"); x.put("foo", "bar"); assertFalse(b.isFrozen()); assertFalse(b.of("inner").isFrozen()); b.freeze(); assertTrue(b.isFrozen()); assertTrue(b.of("inner").isFrozen()); assertEquals("bar", b.of("inner").get("foo")); Binder e = Binder.EMPTY; assertTrue(e.isFrozen()); x = new Binder(); assertEquals(e, x); assertFalse(b.equals(e)); }