/* * Copyright (C) 2015 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.managed.adaptor; import com.android.annotations.NonNull; import com.android.annotations.Nullable; import com.android.build.gradle.internal.dsl.CoreNdkOptions; import com.android.build.gradle.internal.dsl.CoreProductFlavor; import com.android.build.gradle.managed.ProductFlavor; import com.android.builder.core.BuilderConstants; import com.android.builder.internal.ClassFieldImpl; import com.android.builder.model.ApiVersion; import com.android.builder.model.ClassField; import com.android.builder.model.SigningConfig; import com.google.common.base.Objects; import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableSet; import com.google.common.collect.Maps; import java.io.File; import java.util.Collection; import java.util.List; import java.util.Map; /** * An adaptor to convert a ProductFlavor to CoreProductFlavor. */ public class ProductFlavorAdaptor implements CoreProductFlavor { @NonNull protected final ProductFlavor productFlavor; public ProductFlavorAdaptor(@NonNull ProductFlavor productFlavor) { this.productFlavor = productFlavor; } @NonNull @Override public String getName() { return productFlavor.getName().equals("defaultConfig") ? BuilderConstants.MAIN : productFlavor.getName(); } @Nullable @Override public String getDimension() { return productFlavor.getDimension(); } @NonNull @Override public Map<String, ClassField> getBuildConfigFields() { ImmutableMap.Builder<String, ClassField> builder = ImmutableMap.builder(); for (com.android.build.gradle.managed.ClassField cf : productFlavor.getBuildConfigFields()) { builder.put( cf.getName(), new ClassFieldImpl( cf.getType(), cf.getName(), cf.getValue(), Objects.firstNonNull(cf.getAnnotations(), ImmutableSet.<String>of()), Objects.firstNonNull(cf.getDocumentation(), ""))); } return builder.build(); } @NonNull @Override public Map<String, ClassField> getResValues() { ImmutableMap.Builder<String, ClassField> builder = ImmutableMap.builder(); for (com.android.build.gradle.managed.ClassField cf : productFlavor.getResValues()) { builder.put( cf.getName(), new ClassFieldImpl( cf.getType(), cf.getName(), cf.getValue(), Objects.firstNonNull(cf.getAnnotations(), ImmutableSet.<String>of()), Objects.firstNonNull(cf.getDocumentation(), ""))); } return builder.build(); } @NonNull @Override public Collection<File> getProguardFiles() { return productFlavor.getProguardFiles(); } @NonNull @Override public Collection<File> getConsumerProguardFiles() { return productFlavor.getConsumerProguardFiles(); } @NonNull @Override public Collection<File> getTestProguardFiles() { return productFlavor.getTestProguardFiles(); } @NonNull @Override public Map<String, Object> getManifestPlaceholders() { // TODO: To be implemented return Maps.newHashMap(); } @Nullable @Override public Boolean getMultiDexEnabled() { return productFlavor.getMultiDexEnabled(); } @Nullable @Override public File getMultiDexKeepFile() { return productFlavor.getMultiDexKeepFile(); } @Nullable @Override public File getMultiDexKeepProguard() { return productFlavor.getMultiDexKeepProguard(); } @Nullable @Override public String getApplicationId() { return productFlavor.getApplicationId(); } @Nullable @Override public Integer getVersionCode() { return productFlavor.getVersionCode(); } @Nullable @Override public String getVersionName() { return productFlavor.getVersionName(); } @Nullable @Override public ApiVersion getMinSdkVersion() { return ApiVersionAdaptor.isEmpty(productFlavor.getMinSdkVersion()) ? null : new ApiVersionAdaptor(productFlavor.getMinSdkVersion()); } @Nullable @Override public ApiVersion getTargetSdkVersion() { return ApiVersionAdaptor.isEmpty(productFlavor.getTargetSdkVersion()) ? null : new ApiVersionAdaptor(productFlavor.getTargetSdkVersion()); } @Nullable @Override public Integer getMaxSdkVersion() { return productFlavor.getMaxSdkVersion(); } @Nullable @Override public Integer getRenderscriptTargetApi() { return productFlavor.getRenderscriptTargetApi(); } @Nullable @Override public Boolean getRenderscriptSupportModeEnabled() { return productFlavor.getRenderscriptSupportModeEnabled(); } @Nullable @Override public Boolean getRenderscriptNdkModeEnabled() { return productFlavor.getRenderscriptNdkModeEnabled(); } @Nullable @Override public String getTestApplicationId() { return productFlavor.getTestApplicationId(); } @Nullable @Override public String getTestInstrumentationRunner() { return productFlavor.getTestInstrumentationRunner(); } @NonNull @Override public Map<String, String> getTestInstrumentationRunnerArguments() { // TODO: To be implemented. return Maps.newHashMap(); } @Nullable @Override public Boolean getTestHandleProfiling() { return productFlavor.getTestHandleProfiling(); } @Nullable @Override public Boolean getTestFunctionalTest() { return productFlavor.getTestFunctionalTest(); } @NonNull @Override public Collection<String> getResourceConfigurations() { return productFlavor.getResourceConfigurations(); } @Nullable @Override public SigningConfig getSigningConfig() { return productFlavor.getSigningConfig() == null ? null : new SigningConfigAdaptor(productFlavor.getSigningConfig()); } @Override public CoreNdkOptions getNdkConfig() { return new NdkOptionsAdaptor(productFlavor.getNdk()); } @Override public Boolean getUseJack() { return productFlavor.getUseJack(); } @NonNull @Override public List<File> getJarJarRuleFiles() { return productFlavor.getJarJarRuleFiles(); } }