/* * Copyright (C) 2014 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.model; import static com.android.build.gradle.model.ModelConstants.IS_APPLICATION; import static com.android.build.gradle.model.ModelConstants.TASK_MANAGER; import com.android.build.gradle.AndroidConfig; import com.android.build.gradle.internal.DependencyManager; import com.android.build.gradle.internal.ExtraModelInfo; import com.android.build.gradle.internal.SdkHandler; import com.android.build.gradle.internal.TaskManager; import com.android.build.gradle.internal.variant.ApplicationVariantFactory; import com.android.build.gradle.internal.variant.VariantFactory; import com.android.builder.core.AndroidBuilder; import org.gradle.api.Plugin; import org.gradle.api.Project; import org.gradle.internal.reflect.Instantiator; import org.gradle.internal.service.ServiceRegistry; import org.gradle.model.Model; import org.gradle.model.RuleSource; import org.gradle.tooling.provider.model.ToolingModelBuilderRegistry; /** * Gradle component model plugin class for 'application' projects. */ public class AppComponentModelPlugin implements Plugin<Project> { @Override public void apply(Project project) { project.getPluginManager().apply(BaseComponentModelPlugin.class); project.getPluginManager().apply(AndroidComponentModelTestPlugin.class); } @SuppressWarnings("MethodMayBeStatic") public static class Rules extends RuleSource { @SuppressWarnings("NonBooleanMethodNameMayNotStartWithQuestion") @Model(IS_APPLICATION) public Boolean isApplication() { return true; } @Model(TASK_MANAGER) public TaskManager createTaskManager( AndroidConfig androidExtension, Project project, AndroidBuilder androidBuilder, SdkHandler sdkHandler, ExtraModelInfo extraModelInfo, ToolingModelBuilderRegistry toolingRegistry) { DependencyManager dependencyManager = new DependencyManager(project, extraModelInfo); return new ApplicationComponentTaskManager( project, androidBuilder, androidExtension, sdkHandler, dependencyManager, toolingRegistry); } @Model public VariantFactory createVariantFactory( ServiceRegistry serviceRegistry, AndroidBuilder androidBuilder, AndroidConfig extension) { Instantiator instantiator = serviceRegistry.get(Instantiator.class); return new ApplicationVariantFactory(instantiator, androidBuilder, extension); } } }