/*
 * 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
 * https://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
/** * Interface describing a collection of Resources. * * @since Ant 1.7 */
public interface ResourceCollection extends Iterable<Resource> {
Learn the number of contained Resources.
Returns:number of elements as int.
/** * 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 FileProvider when asked via Resource.as.
Returns:whether this is a filesystem-only resource collection.
/** * 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 Stream over this ResourceCollection.
Returns:Stream of Resource
Since:Ant 1.10.2
/** * 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 ResourceCollection is empty.
Returns:boolean
/** * Learn whether this {@link ResourceCollection} is empty. * @return boolean */
default boolean isEmpty() { return size() == 0; } }