/* * 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.tools.ant.types; import java.util.stream.Stream; /** * Interface describing a collection of Resources. * * @since Ant 1.7 */ public interface ResourceCollection extends Iterable<Resource> { /** * Learn the number of contained Resources. * * @return number of elements as int. */ int size(); /** * Indicate whether this ResourceCollection is composed entirely of * Resources accessible via local filesystem conventions. If true, all * resources returned from this collection should respond with a * {@link org.apache.tools.ant.types.resources.FileProvider} when asked via * {@link Resource#as}. * * @return whether this is a filesystem-only resource collection. */ boolean isFilesystemOnly(); /** * Return a {@link Stream} over this {@link ResourceCollection}. * @return {@link Stream} of {@link Resource} * @since Ant 1.10.2 */ default Stream<? extends Resource> stream() { final Stream.Builder<Resource> b = Stream.builder(); forEach(b); return b.build(); } /** * Learn whether this {@link ResourceCollection} is empty. * @return boolean */ default boolean isEmpty() { return size() == 0; } }