@Override protected ACC mergeState(ACC a, ACC b) throws Exception { return aggregateTransformation.aggFunction.merge(a, b); }
@Override protected ACC mergeState(ACC a, ACC b) { return aggregateTransformation.aggFunction.merge(a, b); }
@Override protected ACC mergeState(ACC a, ACC b) throws Exception { return aggregateTransformation.aggFunction.merge(a, b); }
@Override protected ACC mergeState(ACC a, ACC b) { return aggregateTransformation.aggFunction.merge(a, b); }
@Override public T merge(T value1, T value2) { return aggregateFunction.merge(value1, value2); }
@Override public void mergeNamespaces(N target, Collection<N> sources) { if (sources == null || sources.isEmpty()) { return; // nothing to do } Object currentKey = operator.getCurrentKey(); ACC merged = null; // merge the sources for (N source : sources) { // get and remove the next source per namespace/key ACC sourceState = subKeyedValueState.getAndRemove(currentKey, source); if (merged != null && sourceState != null) { merged = mergeTransformation.aggregateFunction.merge(merged, sourceState); } else if (merged == null) { merged = sourceState; } } // merge into the target, if needed if (merged != null) { subKeyedValueState.transform(currentKey, target, merged, mergeTransformation); } }
@Override public TtlValue<ACC> merge(TtlValue<ACC> a, TtlValue<ACC> b) { ACC userA = getUnexpired(a); ACC userB = getUnexpired(b); if (userA != null && userB != null) { return wrapWithTs(original.merge(userA, userB)); } else if (userA != null) { return rewrapWithNewTs(a); } else if (userB != null) { return rewrapWithNewTs(b); } else { return null; } } }
@Override public TtlValue<ACC> merge(TtlValue<ACC> a, TtlValue<ACC> b) { ACC userA = getUnexpired(a); ACC userB = getUnexpired(b); if (userA != null && userB != null) { return wrapWithTs(original.merge(userA, userB)); } else if (userA != null) { return rewrapWithNewTs(a); } else if (userB != null) { return rewrapWithNewTs(b); } else { return null; } } }