| /* |
| * Copyright (C) 2012 The Android Open Source Project |
| * |
| * Licensed 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 com.android.build.gradle.api; |
| |
| import com.android.annotations.NonNull; |
| import java.io.File; |
| import java.util.List; |
| import java.util.Set; |
| import org.gradle.api.Incubating; |
| import org.gradle.api.file.ConfigurableFileTree; |
| import org.gradle.api.file.FileCollection; |
| import org.gradle.api.file.FileTree; |
| import org.gradle.api.tasks.util.PatternFilterable; |
| |
| /** |
| * An AndroidSourceDirectorySet represents a set of directory inputs for an Android project. |
| */ |
| public interface AndroidSourceDirectorySet extends PatternFilterable { |
| |
| /** |
| * A concise name for the source directory (typically used to identify it in a collection). |
| */ |
| @NonNull |
| String getName(); |
| |
| /** |
| * Adds the given source directory to this set. |
| * |
| * @param srcDir The source directory. This is evaluated as for |
| * {@link org.gradle.api.Project#file(Object)} |
| * @return this |
| */ |
| @NonNull |
| AndroidSourceDirectorySet srcDir(Object srcDir); |
| |
| /** |
| * Adds the given source directories to this set. |
| * |
| * @param srcDirs The source directories. These are evaluated as for |
| * {@link org.gradle.api.Project#files(Object...)} |
| * @return this |
| */ |
| @NonNull |
| AndroidSourceDirectorySet srcDirs(Object... srcDirs); |
| |
| /** |
| * Sets the source directories for this set. |
| * |
| * @param srcDirs The source directories. These are evaluated as for |
| * {@link org.gradle.api.Project#files(Object...)} |
| * @return this |
| */ |
| @NonNull |
| AndroidSourceDirectorySet setSrcDirs(Iterable<?> srcDirs); |
| |
| /** |
| * Returns the list of source files as a {@link org.gradle.api.file.FileTree} |
| * |
| * @return a non null {@link FileTree} for all the source files in this set. |
| */ |
| @NonNull |
| FileTree getSourceFiles(); |
| |
| /** |
| * Returns the filter used to select the source from the source directories. |
| * |
| * @return a non null {@link org.gradle.api.tasks.util.PatternFilterable} |
| */ |
| @NonNull |
| PatternFilterable getFilter(); |
| |
| /** |
| * Returns the source folders as a list of {@link org.gradle.api.file.ConfigurableFileTree} |
| * |
| * <p>This is used as the input to the java compile to enable incremental compilation. |
| * |
| * @return a non null list of {@link ConfigurableFileTree}s, one per source dir in this set. |
| */ |
| @NonNull |
| List<ConfigurableFileTree> getSourceDirectoryTrees(); |
| |
| /** |
| * Returns the resolved directories. |
| * |
| * <p>Setter can be called with a collection of {@link Object}s, just like |
| * Gradle's {@code project.file(...)}. |
| * |
| * @return a non null set of File objects. |
| */ |
| @NonNull |
| Set<File> getSrcDirs(); |
| |
| /** Returns the [FileCollection] that represents this source sets. */ |
| @Incubating |
| FileCollection getBuildableArtifact(); |
| } |