/* * 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.builder.model.ApiVersion; import com.android.builder.model.ProductFlavor; import com.android.builder.model.SigningConfig; import com.google.common.collect.ImmutableSet; import com.google.common.collect.Maps; import java.io.Serializable; import java.util.Collection; import java.util.Map; import java.util.Set; /** * Implementation of ProductFlavor that is serializable. Objects used in the DSL cannot be * serialized. **/ class ProductFlavorImpl extends BaseConfigImpl implements ProductFlavor, Serializable { private static final long serialVersionUID = 1L; private String name = null; private String mDimension = null; private ApiVersion mMinSdkVersion = null; private ApiVersion mTargetSdkVersion = null; private Integer mMaxSdkVersion = null; private Integer mRenderscriptTargetApi = null; private Boolean mRenderscriptSupportMode = null; private Boolean mRenderscriptNdkMode = null; private Integer mVersionCode = null; private String mVersionName = null; private String mApplicationId = null; private String mTestApplicationId = null; private String mTestInstrumentationRunner = null; private Map<String, String> mTestInstrumentationRunnerArguments = Maps.newHashMap(); private Boolean mTestHandleProfiling = null; private Boolean mTestFunctionalTest = null; private Set<String> mResourceConfigurations = null; @NonNull static ProductFlavorImpl cloneFlavor( @NonNull ProductFlavor productFlavor, @Nullable ApiVersion minSdkVersionOverride, @Nullable ApiVersion targetSdkVersionOverride) { ProductFlavorImpl clonedFlavor = new ProductFlavorImpl(productFlavor); clonedFlavor.name = productFlavor.getName(); clonedFlavor.mDimension = productFlavor.getDimension(); clonedFlavor.mMinSdkVersion = minSdkVersionOverride != null ? minSdkVersionOverride : ApiVersionImpl.clone(productFlavor.getMinSdkVersion()); clonedFlavor.mTargetSdkVersion = targetSdkVersionOverride != null ? targetSdkVersionOverride : ApiVersionImpl.clone(productFlavor.getTargetSdkVersion()); clonedFlavor.mMaxSdkVersion = targetSdkVersionOverride != null ? null /* we remove the maxSdkVersion when dealing with a preview release */ : productFlavor.getMaxSdkVersion(); clonedFlavor.mRenderscriptTargetApi = productFlavor.getRenderscriptTargetApi(); clonedFlavor.mRenderscriptSupportMode = productFlavor.getRenderscriptSupportModeEnabled(); clonedFlavor.mRenderscriptNdkMode = productFlavor.getRenderscriptNdkModeEnabled(); clonedFlavor.mVersionCode = productFlavor.getVersionCode(); clonedFlavor.mVersionName = productFlavor.getVersionName(); clonedFlavor.mApplicationId = productFlavor.getApplicationId(); clonedFlavor.mTestApplicationId = productFlavor.getTestApplicationId(); clonedFlavor.mTestInstrumentationRunner = productFlavor.getTestInstrumentationRunner(); clonedFlavor.mTestHandleProfiling = productFlavor.getTestHandleProfiling(); clonedFlavor.mTestFunctionalTest = productFlavor.getTestFunctionalTest(); clonedFlavor.mResourceConfigurations = ImmutableSet.copyOf( productFlavor.getResourceConfigurations()); clonedFlavor.mTestInstrumentationRunnerArguments = Maps.newHashMap( productFlavor.getTestInstrumentationRunnerArguments()); return clonedFlavor; } private ProductFlavorImpl(@NonNull ProductFlavor productFlavor) { super(productFlavor); } @Override @NonNull public String getName() { return name; } @Override @Nullable public String getApplicationId() { return mApplicationId; } @Override @Nullable public Integer getVersionCode() { return mVersionCode; } @Override @Nullable public String getVersionName() { return mVersionName; } @Override @Nullable public ApiVersion getMinSdkVersion() { return mMinSdkVersion; } @Override @Nullable public ApiVersion getTargetSdkVersion() { return mTargetSdkVersion; } @Override @Nullable public Integer getMaxSdkVersion() { return mMaxSdkVersion; } @Override @Nullable public Integer getRenderscriptTargetApi() { return mRenderscriptTargetApi; } @Override @Nullable public Boolean getRenderscriptSupportModeEnabled() { return mRenderscriptSupportMode; } @Override @Nullable public Boolean getRenderscriptNdkModeEnabled() { return mRenderscriptNdkMode; } @Nullable @Override public String getTestApplicationId() { return mTestApplicationId; } @Nullable @Override public String getTestInstrumentationRunner() { return mTestInstrumentationRunner; } @NonNull @Override public Map<String, String> getTestInstrumentationRunnerArguments() { return mTestInstrumentationRunnerArguments; } @Nullable @Override public Boolean getTestHandleProfiling() { return mTestHandleProfiling; } @Nullable @Override public Boolean getTestFunctionalTest() { return mTestFunctionalTest; } @NonNull @Override public Collection<String> getResourceConfigurations() { return mResourceConfigurations; } @Nullable @Override public SigningConfig getSigningConfig() { return null; } @Nullable @Override public String getDimension() { return mDimension; } @Override public String toString() { return "ProductFlavorImpl{" + "name='" + name + '\'' + ", mDimension='" + mDimension + '\'' + ", mMinSdkVersion=" + mMinSdkVersion + ", mTargetSdkVersion=" + mTargetSdkVersion + ", mMaxSdkVersion=" + mMaxSdkVersion + ", mRenderscriptTargetApi=" + mRenderscriptTargetApi + ", mRenderscriptSupportMode=" + mRenderscriptSupportMode + ", mRenderscriptNdkMode=" + mRenderscriptNdkMode + ", mVersionCode=" + mVersionCode + ", mVersionName='" + mVersionName + '\'' + ", mApplicationId='" + mApplicationId + '\'' + ", mTestApplicationId='" + mTestApplicationId + '\'' + ", mTestInstrumentationRunner='" + mTestInstrumentationRunner + '\'' + ", mTestHandleProfiling=" + mTestHandleProfiling + ", mTestFunctionalTest=" + mTestFunctionalTest + ", mResourceConfigurations=" + mResourceConfigurations + "} " + super.toString(); } }