UncheckedIOBaseStream.java

  1. /*
  2.  * Licensed to the Apache Software Foundation (ASF) under one or more
  3.  * contributor license agreements.  See the NOTICE file distributed with
  4.  * this work for additional information regarding copyright ownership.
  5.  * The ASF licenses this file to You under the Apache License, Version 2.0
  6.  * (the "License"); you may not use this file except in compliance with
  7.  * the License.  You may obtain a copy of the License at
  8.  *
  9.  *      http://www.apache.org/licenses/LICENSE-2.0
  10.  *
  11.  * Unless required by applicable law or agreed to in writing, software
  12.  * distributed under the License is distributed on an "AS IS" BASIS,
  13.  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  14.  * See the License for the specific language governing permissions and
  15.  * limitations under the License.
  16.  */

  17. package org.apache.commons.io.function;

  18. import java.io.IOException;
  19. import java.io.UncheckedIOException;
  20. import java.util.Iterator;
  21. import java.util.Spliterator;
  22. import java.util.stream.BaseStream;

  23. /**
  24.  * An {@link BaseStream} for a {@link IOBaseStream} that throws {@link UncheckedIOException} instead of
  25.  * {@link IOException}.
  26.  *
  27.  * Keep package-private for now.
  28.  *
  29.  * @param <T> the type of the stream elements.
  30.  * @param <S> the type of the IO stream extending {@code IOBaseStream}.
  31.  * @param <B> the type of the stream extending {@code BaseStream}.
  32.  */
  33. final class UncheckedIOBaseStream<T, S extends IOBaseStream<T, S, B>, B extends BaseStream<T, B>> implements BaseStream<T, B> {

  34.     private final S delegate;

  35.     UncheckedIOBaseStream(final S delegate) {
  36.         this.delegate = delegate;
  37.     }

  38.     @Override
  39.     public void close() {
  40.         delegate.close();
  41.     }

  42.     @Override
  43.     public boolean isParallel() {
  44.         return delegate.isParallel();
  45.     }

  46.     @Override
  47.     public Iterator<T> iterator() {
  48.         return delegate.iterator().asIterator();
  49.     }

  50.     @SuppressWarnings("resource")
  51.     @Override
  52.     public B onClose(final Runnable closeHandler) {
  53.         return Uncheck.apply(delegate::onClose, () -> closeHandler.run()).unwrap();
  54.     }

  55.     @SuppressWarnings("resource")
  56.     @Override
  57.     public B parallel() {
  58.         return delegate.parallel().unwrap();
  59.     }

  60.     @SuppressWarnings("resource")
  61.     @Override
  62.     public B sequential() {
  63.         return delegate.sequential().unwrap();
  64.     }

  65.     @Override
  66.     public Spliterator<T> spliterator() {
  67.         return delegate.spliterator().unwrap();
  68.     }

  69.     @SuppressWarnings("resource")
  70.     @Override
  71.     public B unordered() {
  72.         return delegate.unordered().unwrap();
  73.     }

  74. }