Skip to content

Commit

Permalink
apache#51 Do _not_ store storage-provider in states by default
Browse files Browse the repository at this point in the history
  • Loading branch information
Novotnik, Petr authored and David Moravek committed Aug 17, 2018
1 parent 75d508f commit cc51021
Show file tree
Hide file tree
Showing 10 changed files with 36 additions and 60 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -318,7 +318,7 @@ private class JoinState

@SuppressWarnings("unchecked")
public JoinState(Context<OUT> context, StorageProvider storageProvider) {
super(context, storageProvider);
super(context);
leftElements = storageProvider.getListStorage(LEFT_STATE_DESCR);
rightElements = storageProvider.getListStorage(RIGHT_STATE_DESCR);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -310,7 +310,7 @@ public State<E, E> apply(Context<E> ctx, StorageProvider storageProvider) {
CombiningReduceState(Context<E> context,
StorageProvider storageProvider,
CombinableReduceFunction<E> reducer) {
super(context, storageProvider);
super(context);
this.reducer = Objects.requireNonNull(reducer);

@SuppressWarnings("unchecked")
Expand Down Expand Up @@ -373,7 +373,7 @@ static final class Factory<VALUE, OUT>
NonCombiningReduceState(Context<OUT> context,
StorageProvider storageProvider,
ReduceFunction<VALUE, OUT> reducer) {
super(context, storageProvider);
super(context);
this.reducer = Objects.requireNonNull(reducer);

@SuppressWarnings("unchecked")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ private static final class MaxScored<V, C extends Comparable<C>>

@SuppressWarnings("unchecked")
MaxScored(Context<Pair<V, C>> context, StorageProvider storageProvider) {
super(context, storageProvider);
super(context);
curr = (ValueStorage) storageProvider.getValueStorage(MAX_STATE_DESCR);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,6 @@ public abstract class State<IN, OUT> implements Closeable {

/** Collector of output of this state. */
private final Context<OUT> context;
/** Provider of state storage. */
private final StorageProvider storageProvider;

/**
* Add element to this state.
Expand All @@ -42,22 +40,15 @@ public abstract class State<IN, OUT> implements Closeable {
*/
public abstract void flush();

protected State(
Context<OUT> context,
StorageProvider storageProvider) {
protected State(Context<OUT> context) {

this.context = context;
this.storageProvider = storageProvider;
}

public Context<OUT> getContext() {
return context;
}

public StorageProvider getStorageProvider() {
return storageProvider;
}

/**
* Closes this state. Invoked after {@link #flush()} and before
* this state gets disposed.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
import org.junit.Test;

import java.time.Duration;
import java.util.Iterator;

import static org.junit.Assert.*;

Expand Down Expand Up @@ -155,7 +156,7 @@ private static class WordCountState extends State<Long, Long> {
protected WordCountState(
Context<Long> context,
StorageProvider storageProvider) {
super(context, storageProvider);
super(context);
sum = storageProvider.getValueStorage(ValueStorageDescriptor.of(
"sum", Long.class, 0L));
}
Expand All @@ -171,17 +172,12 @@ public void flush() {
}

static WordCountState combine(Iterable<WordCountState> others) {
WordCountState state = null;
for (WordCountState s : others) {
if (state == null) {
state = new WordCountState(
s.getContext(),
s.getStorageProvider());
}
state.add(s.sum.get());
Iterator<WordCountState> iter = others.iterator();
WordCountState target = iter.next();
while (iter.hasNext()) {
target.add(iter.next().sum.get());
}

return state;
return target;
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ private static class AccState<VALUE> extends State<VALUE, VALUE> {
AccState(Context<VALUE> context,
StorageProvider storageProvider)
{
super(context, storageProvider);
super(context);
reducableValues = storageProvider.getListStorage(
ListStorageDescriptor.of("vals", (Class) Object.class));
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,7 @@
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
Expand Down Expand Up @@ -276,7 +277,7 @@ public static class SortState extends State<Integer, Integer> {
Context<Integer> c,
StorageProvider storageProvider) {

super(c, storageProvider);
super(c);
data = storageProvider.getListStorage(
ListStorageDescriptor.of("data", Integer.class));
}
Expand All @@ -297,16 +298,12 @@ public void flush() {
}

static SortState combine(Iterable<SortState> others) {
SortState ret = null;
for (SortState s : others) {
if (ret == null) {
ret = new SortState(
s.getContext(),
s.getStorageProvider());
}
ret.data.addAll(s.data.get());
Iterator<SortState> iter = others.iterator();
SortState target = iter.next();
while (iter.hasNext()) {
target.data.addAll(iter.next().data.get());
}
return ret;
return target;
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,7 @@
import java.util.Comparator;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
Expand Down Expand Up @@ -539,7 +540,7 @@ static class SumState extends State<Integer, Integer> {
private final ValueStorage<Integer> sum;

SumState(Context<Integer> context, StorageProvider storageProvider) {
super(context, storageProvider);
super(context);
sum = storageProvider.getValueStorage(
ValueStorageDescriptor.of("sum-state", Integer.class, 0));
}
Expand All @@ -560,12 +561,10 @@ public void close() {
}

static SumState combine(Iterable<SumState> states) {
SumState target = null;
for (SumState state : states) {
if (target == null) {
target = new SumState(state.getContext(), state.getStorageProvider());
}
target.add(state.sum.get());
Iterator<SumState> iter = states.iterator();
SumState target = iter.next();
while (iter.hasNext()) {
target.add(iter.next().sum.get());
}
return target;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -83,11 +83,8 @@ static class SortState extends State<Integer, Integer> {

final ListStorage<Integer> data;

SortState(
Context<Integer> c,
StorageProvider storageProvider) {

super(c, storageProvider);
SortState(Context<Integer> c, StorageProvider storageProvider) {
super(c);
this.data = storageProvider.getListStorage(
ListStorageDescriptor.of("data", Integer.class));
}
Expand All @@ -112,16 +109,12 @@ public void close() {
}

static SortState combine(Iterable<SortState> states) {
SortState ret = null;
for (SortState state : states) {
if (ret == null) {
ret = new SortState(
state.getContext(),
state.getStorageProvider());
}
ret.data.addAll(state.data.get());
Iterator<SortState> iter = states.iterator();
SortState target = iter.next();
while (iter.hasNext()) {
target.data.addAll(iter.next().data.get());
}
return ret;
return target;
}

}
Expand Down Expand Up @@ -249,7 +242,7 @@ private static class CountState extends State<String, Long> {
final ValueStorage<Long> count;
CountState(Context<Long> context, StorageProvider storageProvider)
{
super(context, storageProvider);
super(context);
this.count = storageProvider.getValueStorage(
ValueStorageDescriptor.of("count-state", Long.class, 0L));
}
Expand Down Expand Up @@ -351,7 +344,7 @@ private static class AccState<VALUE> extends State<VALUE, VALUE> {
AccState(Context<VALUE> context,
StorageProvider storageProvider)
{
super(context, storageProvider);
super(context);
vals = storageProvider.getListStorage(
ListStorageDescriptor.of("vals", (Class) Object.class));
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -208,7 +208,7 @@ private static class DistinctState extends State<Object, Object> {
private final ValueStorage<Object> storage;

public DistinctState(Context<Object> context, StorageProvider storageProvider) {
super(context, storageProvider);
super(context);
this.storage = storageProvider.getValueStorage(
ValueStorageDescriptor.of("element", Object.class, null));
}
Expand Down

0 comments on commit cc51021

Please sign in to comment.