diff --git a/sdks/java/core/src/main/java/org/apache/beam/sdk/values/PCollectionViews.java b/sdks/java/core/src/main/java/org/apache/beam/sdk/values/PCollectionViews.java index 6df68ea964d6..05612cb9fc77 100644 --- a/sdks/java/core/src/main/java/org/apache/beam/sdk/values/PCollectionViews.java +++ b/sdks/java/core/src/main/java/org/apache/beam/sdk/values/PCollectionViews.java @@ -540,14 +540,16 @@ public Materialization> getMaterialization() { @Override public T apply(IterableView primitiveViewT) { - try { - return Iterables.getOnlyElement(primitiveViewT.get()); - } catch (NoSuchElementException exc) { + Iterator iterator = primitiveViewT.get().iterator(); + if (!iterator.hasNext()) { return getDefaultValue(); - } catch (IllegalArgumentException exc) { + } + T result = iterator.next(); + if (iterator.hasNext()) { throw new IllegalArgumentException( "PCollection with more than one element accessed as a singleton view."); } + return result; } @Override @@ -638,14 +640,16 @@ public Materialization> getMaterialization() { @Override public T apply(MultimapView primitiveViewT) { - try { - return Iterables.getOnlyElement(primitiveViewT.get(null)); - } catch (NoSuchElementException exc) { + Iterator iterator = primitiveViewT.get(null).iterator(); + if (!iterator.hasNext()) { return getDefaultValue(); - } catch (IllegalArgumentException exc) { + } + T result = iterator.next(); + if (iterator.hasNext()) { throw new IllegalArgumentException( "PCollection with more than one element accessed as a singleton view."); } + return result; } @Override