Repository: incubator-beam Updated Branches: refs/heads/master f1be6f1cc -> d5d303566
Move some more easy stuff to runners-core Project: http://git-wip-us.apache.org/repos/asf/incubator-beam/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-beam/commit/a5a3c55d Tree: http://git-wip-us.apache.org/repos/asf/incubator-beam/tree/a5a3c55d Diff: http://git-wip-us.apache.org/repos/asf/incubator-beam/diff/a5a3c55d Branch: refs/heads/master Commit: a5a3c55d37978d6d9668206dad9334ac9b77c4e0 Parents: 175d7ac Author: Kenneth Knowles <[email protected]> Authored: Thu Jun 23 16:46:41 2016 -0700 Committer: Luke Cwik <[email protected]> Committed: Tue Jun 28 15:54:31 2016 -0700 ---------------------------------------------------------------------- .../util/common/ElementByteSizeObservable.java | 42 +++++++++ .../beam/sdk/util/common/PeekingReiterator.java | 99 ++++++++++++++++++++ .../util/common/ElementByteSizeObservable.java | 42 --------- .../beam/sdk/util/common/PeekingReiterator.java | 99 -------------------- 4 files changed, 141 insertions(+), 141 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-beam/blob/a5a3c55d/runners/core-java/src/main/java/org/apache/beam/sdk/util/common/ElementByteSizeObservable.java ---------------------------------------------------------------------- diff --git a/runners/core-java/src/main/java/org/apache/beam/sdk/util/common/ElementByteSizeObservable.java b/runners/core-java/src/main/java/org/apache/beam/sdk/util/common/ElementByteSizeObservable.java new file mode 100644 index 0000000..613aa4b --- /dev/null +++ b/runners/core-java/src/main/java/org/apache/beam/sdk/util/common/ElementByteSizeObservable.java @@ -0,0 +1,42 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.beam.sdk.util.common; + +/** + * An interface for things that allow observing the size in bytes of + * encoded values of type {@code T}. + * + * @param <T> the type of the values being observed + */ +public interface ElementByteSizeObservable<T> { + /** + * Returns whether {@link #registerByteSizeObserver} is cheap enough + * to call for every element, that is, if this + * {@code ElementByteSizeObservable} can calculate the byte size of + * the element to be coded in roughly constant time (or lazily). + */ + public boolean isRegisterByteSizeObserverCheap(T value); + + /** + * Notifies the {@code ElementByteSizeObserver} about the byte size + * of the encoded value using this {@code ElementByteSizeObservable}. + */ + public void registerByteSizeObserver(T value, + ElementByteSizeObserver observer) + throws Exception; +} http://git-wip-us.apache.org/repos/asf/incubator-beam/blob/a5a3c55d/runners/core-java/src/main/java/org/apache/beam/sdk/util/common/PeekingReiterator.java ---------------------------------------------------------------------- diff --git a/runners/core-java/src/main/java/org/apache/beam/sdk/util/common/PeekingReiterator.java b/runners/core-java/src/main/java/org/apache/beam/sdk/util/common/PeekingReiterator.java new file mode 100644 index 0000000..1e3c17f --- /dev/null +++ b/runners/core-java/src/main/java/org/apache/beam/sdk/util/common/PeekingReiterator.java @@ -0,0 +1,99 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.beam.sdk.util.common; + +import static com.google.common.base.Preconditions.checkNotNull; +import static com.google.common.base.Preconditions.checkState; + +import java.util.NoSuchElementException; + +/** + * A {@link Reiterator} that supports one-element lookahead during iteration. + * + * @param <T> the type of elements returned by this iterator + */ +public final class PeekingReiterator<T> implements Reiterator<T> { + private T nextElement; + private boolean nextElementComputed; + private final Reiterator<T> iterator; + + public PeekingReiterator(Reiterator<T> iterator) { + this.iterator = checkNotNull(iterator); + } + + PeekingReiterator(PeekingReiterator<T> it) { + this.iterator = checkNotNull(checkNotNull(it).iterator.copy()); + this.nextElement = it.nextElement; + this.nextElementComputed = it.nextElementComputed; + } + + @Override + public boolean hasNext() { + computeNext(); + return nextElementComputed; + } + + @Override + public T next() { + T result = peek(); + nextElementComputed = false; + return result; + } + + /** + * {@inheritDoc} + * + * <p>If {@link #peek} is called, {@code remove} is disallowed until + * {@link #next} has been subsequently called. + */ + @Override + public void remove() { + checkState(!nextElementComputed, + "After peek(), remove() is disallowed until next() is called"); + iterator.remove(); + } + + @Override + public PeekingReiterator<T> copy() { + return new PeekingReiterator<>(this); + } + + /** + * Returns the element that would be returned by {@link #next}, without + * actually consuming the element. + * @throws NoSuchElementException if there is no next element + */ + public T peek() { + computeNext(); + if (!nextElementComputed) { + throw new NoSuchElementException(); + } + return nextElement; + } + + private void computeNext() { + if (nextElementComputed) { + return; + } + if (!iterator.hasNext()) { + return; + } + nextElement = iterator.next(); + nextElementComputed = true; + } +} http://git-wip-us.apache.org/repos/asf/incubator-beam/blob/a5a3c55d/sdks/java/core/src/main/java/org/apache/beam/sdk/util/common/ElementByteSizeObservable.java ---------------------------------------------------------------------- diff --git a/sdks/java/core/src/main/java/org/apache/beam/sdk/util/common/ElementByteSizeObservable.java b/sdks/java/core/src/main/java/org/apache/beam/sdk/util/common/ElementByteSizeObservable.java deleted file mode 100644 index 613aa4b..0000000 --- a/sdks/java/core/src/main/java/org/apache/beam/sdk/util/common/ElementByteSizeObservable.java +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.beam.sdk.util.common; - -/** - * An interface for things that allow observing the size in bytes of - * encoded values of type {@code T}. - * - * @param <T> the type of the values being observed - */ -public interface ElementByteSizeObservable<T> { - /** - * Returns whether {@link #registerByteSizeObserver} is cheap enough - * to call for every element, that is, if this - * {@code ElementByteSizeObservable} can calculate the byte size of - * the element to be coded in roughly constant time (or lazily). - */ - public boolean isRegisterByteSizeObserverCheap(T value); - - /** - * Notifies the {@code ElementByteSizeObserver} about the byte size - * of the encoded value using this {@code ElementByteSizeObservable}. - */ - public void registerByteSizeObserver(T value, - ElementByteSizeObserver observer) - throws Exception; -} http://git-wip-us.apache.org/repos/asf/incubator-beam/blob/a5a3c55d/sdks/java/core/src/main/java/org/apache/beam/sdk/util/common/PeekingReiterator.java ---------------------------------------------------------------------- diff --git a/sdks/java/core/src/main/java/org/apache/beam/sdk/util/common/PeekingReiterator.java b/sdks/java/core/src/main/java/org/apache/beam/sdk/util/common/PeekingReiterator.java deleted file mode 100644 index 1e3c17f..0000000 --- a/sdks/java/core/src/main/java/org/apache/beam/sdk/util/common/PeekingReiterator.java +++ /dev/null @@ -1,99 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.beam.sdk.util.common; - -import static com.google.common.base.Preconditions.checkNotNull; -import static com.google.common.base.Preconditions.checkState; - -import java.util.NoSuchElementException; - -/** - * A {@link Reiterator} that supports one-element lookahead during iteration. - * - * @param <T> the type of elements returned by this iterator - */ -public final class PeekingReiterator<T> implements Reiterator<T> { - private T nextElement; - private boolean nextElementComputed; - private final Reiterator<T> iterator; - - public PeekingReiterator(Reiterator<T> iterator) { - this.iterator = checkNotNull(iterator); - } - - PeekingReiterator(PeekingReiterator<T> it) { - this.iterator = checkNotNull(checkNotNull(it).iterator.copy()); - this.nextElement = it.nextElement; - this.nextElementComputed = it.nextElementComputed; - } - - @Override - public boolean hasNext() { - computeNext(); - return nextElementComputed; - } - - @Override - public T next() { - T result = peek(); - nextElementComputed = false; - return result; - } - - /** - * {@inheritDoc} - * - * <p>If {@link #peek} is called, {@code remove} is disallowed until - * {@link #next} has been subsequently called. - */ - @Override - public void remove() { - checkState(!nextElementComputed, - "After peek(), remove() is disallowed until next() is called"); - iterator.remove(); - } - - @Override - public PeekingReiterator<T> copy() { - return new PeekingReiterator<>(this); - } - - /** - * Returns the element that would be returned by {@link #next}, without - * actually consuming the element. - * @throws NoSuchElementException if there is no next element - */ - public T peek() { - computeNext(); - if (!nextElementComputed) { - throw new NoSuchElementException(); - } - return nextElement; - } - - private void computeNext() { - if (nextElementComputed) { - return; - } - if (!iterator.hasNext()) { - return; - } - nextElement = iterator.next(); - nextElementComputed = true; - } -}
