@Override public Set<Entry<K, V>> entrySet() { if (entrySet == null) { entrySet = new ChangeTrackingSet<>(super.entrySet(), dirtyFlag); } return entrySet; }
@Override public Set<K> keySet() { if (keySet == null) { keySet = new ChangeTrackingSet<>(super.keySet(), dirtyFlag); } return keySet; }
@Override public Collection<V> values() { if (values == null) { values = new ChangeTrackingCollection<>(super.values(), dirtyFlag); } return values; }
@Override public RouteOptions roles(String... roles) { Coll.assign(this.roles, roles); return this; }
public static <K1, K2, V> Map<K1, Map<K2, List<V>>> mapOfMapOfLists() { return autoExpandingMap(src -> mapOfLists()); }
public static <K1, K2, V> Map<K1, Map<K2, Set<V>>> mapOfMapOfSets() { return autoExpandingMap(src -> mapOfSets()); }
public static <K1, K2, V> Map<K1, Map<K2, V>> mapOfMaps() { return autoExpandingMap(src -> synchronizedMap()); }
public static <K1, K2, K3, V> Map<K1, Map<K2, Map<K3, V>>> mapOfMapOfMaps() { return autoExpandingMap(src -> mapOfMaps()); }
public static <K, V> Map<K, List<V>> mapOfLists() { return autoExpandingMap(src -> synchronizedList()); }
@Override public Iterator<E> iterator() { return new ChangeTrackingIterator<>(super.iterator(), dirtyFlag); }
public static <T> List<T> page(Iterable<T> items, int page, int pageSize) { return Coll.range(items, (page - 1) * pageSize, page * pageSize); }
public <T> Map<String, T> getChangedAs(Class<T> type) { return Coll.toBeanMap(changed, type); }
public AutoExpandingMap(Mapper<K, V> valueFactory) { super(Coll.synchronizedMap()); this.valueFactory = valueFactory; }
public HttpReq cookies(Map<String, String> cookies) { Coll.assign(this.cookies, cookies); return this; }
public <T> Map<String, T> getAddedAs(Class<T> type) { return Coll.toBeanMap(added, type); }
public HttpReq data(Map<String, ?> data) { Coll.assign(this.data, data); return this; }
public HttpReq headers(Map<String, String> headers) { Coll.assign(this.headers, headers); return this; }
public HttpReq files(Map<String, List<Upload>> files) { Coll.assign(this.files, files); return this; }
public HttpClient cookies(Map<String, String> cookies) { Coll.assign(this.cookies, cookies); return this; }
public RenderCtxImpl multiModel(List<Object> model) { Coll.assign(this.model, model); return this; }