/* * 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.model; import com.android.annotations.NonNull; import com.android.annotations.Nullable; import com.android.build.gradle.internal.CompileOptions; import com.android.builder.model.AaptOptions; import com.android.builder.model.AndroidProject; import com.android.builder.model.ArtifactMetaData; import com.android.builder.model.BuildTypeContainer; import com.android.builder.model.JavaCompileOptions; import com.android.builder.model.LintOptions; import com.android.builder.model.ProductFlavorContainer; import com.android.builder.model.SigningConfig; import com.android.builder.model.SyncIssue; import com.android.builder.model.NativeToolchain; import com.android.builder.model.Variant; import com.google.common.collect.Lists; import java.io.File; import java.io.Serializable; import java.util.Collection; /** * Implementation of the AndroidProject model object. */ class DefaultAndroidProject implements AndroidProject, Serializable { private static final long serialVersionUID = 1L; @NonNull private final String modelVersion; @NonNull private final String name; @NonNull private final String compileTarget; @NonNull private final Collection<String> bootClasspath; @NonNull private final Collection<File> frameworkSource; @NonNull private final Collection<SigningConfig> signingConfigs; @NonNull private final AaptOptions aaptOptions; @NonNull private final Collection<ArtifactMetaData> extraArtifacts; @NonNull private final Collection<String> unresolvedDependencies; @NonNull private final Collection<SyncIssue> syncIssues; @NonNull private final JavaCompileOptions javaCompileOptions; @NonNull private final LintOptions lintOptions; @NonNull private final File buildFolder; @Nullable private final String resourcePrefix; @NonNull private final Collection<NativeToolchain> nativeToolchains; private final boolean isLibrary; private final int apiVersion; private final Collection<BuildTypeContainer> buildTypes = Lists.newArrayList(); private final Collection<ProductFlavorContainer> productFlavors = Lists.newArrayList(); private final Collection<Variant> variants = Lists.newArrayList(); private ProductFlavorContainer defaultConfig; @NonNull private final Collection<String> flavorDimensions; DefaultAndroidProject( @NonNull String modelVersion, @NonNull String name, @NonNull Collection<String> flavorDimensions, @NonNull String compileTarget, @NonNull Collection<String> bootClasspath, @NonNull Collection<File> frameworkSource, @NonNull Collection<SigningConfig> signingConfigs, @NonNull AaptOptions aaptOptions, @NonNull Collection<ArtifactMetaData> extraArtifacts, @NonNull Collection<String> unresolvedDependencies, @NonNull Collection<SyncIssue> syncIssues, @NonNull CompileOptions compileOptions, @NonNull LintOptions lintOptions, @NonNull File buildFolder, @Nullable String resourcePrefix, @NonNull Collection<NativeToolchain> nativeToolchains, boolean isLibrary, int apiVersion) { this.modelVersion = modelVersion; this.name = name; this.flavorDimensions = flavorDimensions; this.compileTarget = compileTarget; this.bootClasspath = bootClasspath; this.frameworkSource = frameworkSource; this.signingConfigs = signingConfigs; this.aaptOptions = aaptOptions; this.extraArtifacts = extraArtifacts; this.unresolvedDependencies = unresolvedDependencies; this.syncIssues = syncIssues; javaCompileOptions = new DefaultJavaCompileOptions(compileOptions); this.lintOptions = lintOptions; this.buildFolder = buildFolder; this.resourcePrefix = resourcePrefix; this.isLibrary = isLibrary; this.apiVersion = apiVersion; this.nativeToolchains = nativeToolchains; } @NonNull DefaultAndroidProject setDefaultConfig(@NonNull ProductFlavorContainer defaultConfigContainer) { defaultConfig = defaultConfigContainer; return this; } @NonNull DefaultAndroidProject addBuildType(@NonNull BuildTypeContainer buildTypeContainer) { buildTypes.add(buildTypeContainer); return this; } @NonNull DefaultAndroidProject addProductFlavors( @NonNull ProductFlavorContainer productFlavorContainer) { productFlavors.add(productFlavorContainer); return this; } @NonNull DefaultAndroidProject addVariant(@NonNull VariantImpl variant) { variants.add(variant); return this; } @Override @NonNull public String getModelVersion() { return modelVersion; } @Override public int getApiVersion() { return apiVersion; } @Override @NonNull public String getName() { return name; } @Override @NonNull public ProductFlavorContainer getDefaultConfig() { return defaultConfig; } @Override @NonNull public Collection<BuildTypeContainer> getBuildTypes() { return buildTypes; } @Override @NonNull public Collection<ProductFlavorContainer> getProductFlavors() { return productFlavors; } @Override @NonNull public Collection<Variant> getVariants() { return variants; } @NonNull @Override public Collection<String> getFlavorDimensions() { return flavorDimensions; } @NonNull @Override public Collection<ArtifactMetaData> getExtraArtifacts() { return extraArtifacts; } @Override public boolean isLibrary() { return isLibrary; } @Override @NonNull public String getCompileTarget() { return compileTarget; } @Override @NonNull public Collection<String> getBootClasspath() { return bootClasspath; } @Override @NonNull public Collection<File> getFrameworkSources() { return frameworkSource; } @Override @NonNull public Collection<SigningConfig> getSigningConfigs() { return signingConfigs; } @Override @NonNull public AaptOptions getAaptOptions() { return aaptOptions; } @Override @NonNull public LintOptions getLintOptions() { return lintOptions; } @Override @NonNull public Collection<String> getUnresolvedDependencies() { return unresolvedDependencies; } @NonNull @Override public Collection<SyncIssue> getSyncIssues() { return syncIssues; } @Override @NonNull public JavaCompileOptions getJavaCompileOptions() { return javaCompileOptions; } @Override @NonNull public File getBuildFolder() { return buildFolder; } @Override @Nullable public String getResourcePrefix() { return resourcePrefix; } @NonNull @Override public Collection<NativeToolchain> getNativeToolchains() { return nativeToolchains; } }