@Override public Iterable<V> get() { return getInternal(); }
@SuppressWarnings("unchecked") static <E, K, N, SV, S extends State, IS extends S> IS create( StateDescriptor<S, SV> stateDesc, StateTable<K, N, SV> stateTable, TypeSerializer<K> keySerializer) { return (IS) new HeapListState<>( (StateTable<K, N, List<E>>) stateTable, keySerializer, (TypeSerializer<List<E>>) stateTable.getStateSerializer(), stateTable.getNamespaceSerializer(), (List<E>) stateDesc.getDefaultValue()); } }
@Override public void add(V value) { final N namespace = currentNamespace; if (value == null) { clear(); return; } final StateTable<K, N, ArrayList<V>> map = stateTable; ArrayList<V> list = map.get(namespace); if (list == null) { list = new ArrayList<>(); map.put(namespace, list); } list.add(value); }
@SuppressWarnings("unchecked") static <E, K, N, SV, S extends State, IS extends S> IS create( StateDescriptor<S, SV> stateDesc, StateTable<K, N, SV> stateTable, TypeSerializer<K> keySerializer) { return (IS) new HeapListState<>( (StateTable<K, N, List<E>>) stateTable, keySerializer, (TypeSerializer<List<E>>) stateTable.getStateSerializer(), stateTable.getNamespaceSerializer(), (List<E>) stateDesc.getDefaultValue()); } }
@Override public void update(List<V> values) throws Exception { Preconditions.checkNotNull(values, "List of values to add cannot be null."); if (values.isEmpty()) { clear(); return; } List<V> newStateList = new ArrayList<>(); for (V v : values) { Preconditions.checkNotNull(v, "You cannot add null to a ListState."); newStateList.add(v); } stateTable.put(currentNamespace, newStateList); }
@Override public <N, T> InternalListState<K, N, T> createListState( TypeSerializer<N> namespaceSerializer, ListStateDescriptor<T> stateDesc) throws Exception { StateTable<K, N, List<T>> stateTable = tryRegisterStateTable(namespaceSerializer, stateDesc); return new HeapListState<>( stateTable, keySerializer, stateTable.getStateSerializer(), stateTable.getNamespaceSerializer(), stateDesc.getDefaultValue()); }
@Override public void update(List<V> values) throws Exception { Preconditions.checkNotNull(values, "List of values to add cannot be null."); if (values.isEmpty()) { clear(); return; } List<V> newStateList = new ArrayList<>(); for (V v : values) { Preconditions.checkNotNull(v, "You cannot add null to a ListState."); newStateList.add(v); } stateTable.put(currentNamespace, newStateList); }
@Override public Iterable<V> get() { return getInternal(); }
@Override public <N, T> InternalListState<N, T> createListState( TypeSerializer<N> namespaceSerializer, ListStateDescriptor<T> stateDesc) throws Exception { // the list state does some manual mapping, because the state is typed to the generic // 'List' interface, but we want to use an implementation typed to ArrayList // using a more specialized implementation opens up runtime optimizations StateTable<K, N, ArrayList<T>> stateTable = tryRegisterStateTable( stateDesc.getName(), stateDesc.getType(), namespaceSerializer, new ArrayListSerializer<T>(stateDesc.getElementSerializer())); return new HeapListState<>(stateDesc, stateTable, keySerializer, namespaceSerializer); }
@Override public void update(List<V> values) throws Exception { Preconditions.checkNotNull(values, "List of values to add cannot be null."); if (values.isEmpty()) { clear(); return; } List<V> newStateList = new ArrayList<>(); for (V v : values) { Preconditions.checkNotNull(v, "You cannot add null to a ListState."); newStateList.add(v); } stateTable.put(currentNamespace, newStateList); }