blob: 9c2e4aac6b35bca5b205dbd774fe64c2a51784a1 [file] [log] [blame]
/*
* Copyright (C) 2013 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.internal.api;
import com.android.annotations.NonNull;
import com.android.annotations.Nullable;
import com.android.build.gradle.api.BaseVariant;
import com.android.build.gradle.api.BaseVariantOutput;
import com.android.build.gradle.api.GroupableProductFlavor;
import com.android.build.gradle.internal.variant.BaseVariantData;
import com.android.build.gradle.tasks.AidlCompile;
import com.android.build.gradle.tasks.GenerateBuildConfig;
import com.android.build.gradle.tasks.MergeAssets;
import com.android.build.gradle.tasks.MergeResources;
import com.android.build.gradle.tasks.NdkCompile;
import com.android.build.gradle.tasks.RenderscriptCompile;
import com.android.builder.core.AndroidBuilder;
import com.android.builder.model.BuildType;
import com.android.builder.model.ProductFlavor;
import com.android.builder.model.SourceProvider;
import com.google.common.collect.Lists;
import org.gradle.api.Task;
import org.gradle.api.tasks.Copy;
import org.gradle.api.tasks.compile.AbstractCompile;
import org.gradle.api.tasks.compile.JavaCompile;
import java.io.File;
import java.util.Collection;
import java.util.List;
/**
* Base class for variants.
*
* This is a wrapper around the internal data model, in order to control what is accessible
* through the external API.
*/
abstract class BaseVariantImpl implements BaseVariant {
@NonNull
protected AndroidBuilder androidBuilder;
@NonNull
protected ReadOnlyObjectProvider readOnlyObjectProvider;
protected List<BaseVariantOutput> outputs = Lists.newArrayListWithExpectedSize(1);
BaseVariantImpl(
@NonNull AndroidBuilder androidBuilder,
@NonNull ReadOnlyObjectProvider readOnlyObjectProvider) {
this.androidBuilder = androidBuilder;
this.readOnlyObjectProvider = readOnlyObjectProvider;
}
@NonNull
protected abstract BaseVariantData<?> getVariantData();
public void addOutputs(@NonNull List<BaseVariantOutput> outputs) {
this.outputs.addAll(outputs);
}
@Override
@NonNull
public String getName() {
return getVariantData().getVariantConfiguration().getFullName();
}
@Override
@NonNull
public String getDescription() {
return getVariantData().getDescription();
}
@Override
@NonNull
public String getDirName() {
return getVariantData().getVariantConfiguration().getDirName();
}
@Override
@NonNull
public String getBaseName() {
return getVariantData().getVariantConfiguration().getBaseName();
}
@NonNull
@Override
public String getFlavorName() {
return getVariantData().getVariantConfiguration().getFlavorName();
}
@NonNull
@Override
public List<BaseVariantOutput> getOutputs() {
return outputs;
}
@Override
@NonNull
public BuildType getBuildType() {
return readOnlyObjectProvider.getBuildType(
getVariantData().getVariantConfiguration().getBuildType());
}
@Override
@NonNull
public List<GroupableProductFlavor> getProductFlavors() {
return new ImmutableFlavorList(
getVariantData().getVariantConfiguration().getProductFlavors(),
readOnlyObjectProvider);
}
@Override
@NonNull
public ProductFlavor getMergedFlavor() {
return getVariantData().getVariantConfiguration().getMergedFlavor();
}
@NonNull
@Override
public List<SourceProvider> getSourceSets() {
return getVariantData().getVariantConfiguration().getSortedSourceProviders();
}
@Override
@NonNull
public String getApplicationId() {
return getVariantData().getApplicationId();
}
@Override
@NonNull
public Task getPreBuild() {
return getVariantData().preBuildTask;
}
@Override
@NonNull
public Task getCheckManifest() {
return getVariantData().checkManifestTask;
}
@Override
@NonNull
public AidlCompile getAidlCompile() {
return getVariantData().aidlCompileTask;
}
@Override
@NonNull
public RenderscriptCompile getRenderscriptCompile() {
return getVariantData().renderscriptCompileTask;
}
@Override
public MergeResources getMergeResources() {
return getVariantData().mergeResourcesTask;
}
@Override
public MergeAssets getMergeAssets() {
return getVariantData().mergeAssetsTask;
}
@Override
public GenerateBuildConfig getGenerateBuildConfig() {
return getVariantData().generateBuildConfigTask;
}
@Override
@Nullable
public JavaCompile getJavaCompile() {
return getVariantData().javaCompileTask instanceof JavaCompile
? (JavaCompile) getVariantData().javaCompileTask
: null;
}
@NonNull
@Override
public AbstractCompile getJavaCompiler() {
return getVariantData().javaCompileTask;
}
@NonNull
@Override
public NdkCompile getNdkCompile() {
return getVariantData().ndkCompileTask;
}
@Nullable
@Override
public Task getObfuscation() {
return getVariantData().obfuscationTask;
}
@Nullable
@Override
public File getMappingFile() {
return getVariantData().getMappingFile();
}
@Override
@NonNull
public Copy getProcessJavaResources() {
return getVariantData().processJavaResourcesTask;
}
@Override
@Nullable
public Task getAssemble() {
return getVariantData().assembleVariantTask;
}
@Override
public void addJavaSourceFoldersToModel(@NonNull File... generatedSourceFolders) {
getVariantData().addJavaSourceFoldersToModel(generatedSourceFolders);
}
@Override
public void addJavaSourceFoldersToModel(@NonNull Collection<File> generatedSourceFolders) {
getVariantData().addJavaSourceFoldersToModel(generatedSourceFolders);
}
@Override
public void registerJavaGeneratingTask(@NonNull Task task, @NonNull File... sourceFolders) {
getVariantData().registerJavaGeneratingTask(task, sourceFolders);
}
@Override
public void registerJavaGeneratingTask(@NonNull Task task, @NonNull Collection<File> sourceFolders) {
getVariantData().registerJavaGeneratingTask(task, sourceFolders);
}
@Override
public void registerResGeneratingTask(@NonNull Task task, @NonNull File... generatedResFolders) {
getVariantData().registerResGeneratingTask(task, generatedResFolders);
}
@Override
public void registerResGeneratingTask(@NonNull Task task, @NonNull Collection<File> generatedResFolders) {
getVariantData().registerResGeneratingTask(task, generatedResFolders);
}
@Override
public void buildConfigField(@NonNull String type, @NonNull String name,
@NonNull String value) {
getVariantData().getVariantConfiguration().addBuildConfigField(type, name, value);
}
@Override
public void resValue(@NonNull String type, @NonNull String name, @NonNull String value) {
getVariantData().getVariantConfiguration().addResValue(type, name, value);
}
@Override
public void setOutputsAreSigned(boolean isSigned) {
getVariantData().outputsAreSigned = isSigned;
}
@Override
public boolean getOutputsAreSigned() {
return getVariantData().outputsAreSigned;
}
}