blob: 9603470a0878a7ad403fe7ac19e2e6190a476437 [file] [log] [blame]
/*
* Copyright 2000-2013 JetBrains s.r.o.
*
* 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 org.jetbrains.plugins.gradle.service.project;
import com.intellij.execution.ExecutionException;
import com.intellij.execution.configurations.SimpleJavaParameters;
import com.intellij.externalSystem.JavaProjectData;
import com.intellij.openapi.externalSystem.model.DataNode;
import com.intellij.openapi.externalSystem.model.ExternalSystemException;
import com.intellij.openapi.externalSystem.model.project.ModuleData;
import com.intellij.openapi.externalSystem.model.project.ProjectData;
import com.intellij.openapi.externalSystem.model.task.TaskData;
import com.intellij.openapi.externalSystem.util.ExternalSystemConstants;
import com.intellij.openapi.externalSystem.util.Order;
import com.intellij.openapi.util.KeyValue;
import com.intellij.util.Consumer;
import org.gradle.tooling.model.idea.IdeaModule;
import org.gradle.tooling.model.idea.IdeaProject;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.net.URL;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.Set;
/**
* {@link org.jetbrains.plugins.gradle.service.project.AbstractProjectResolverExtension} provides dummy implementation of Gradle project resolver.
*
* @author Vladislav.Soroka
* @since 10/14/13
*/
@Order(ExternalSystemConstants.UNORDERED)
public abstract class AbstractProjectResolverExtension implements GradleProjectResolverExtension {
@NotNull protected ProjectResolverContext resolverCtx;
@NotNull protected GradleProjectResolverExtension nextResolver;
@Override
public void setProjectResolverContext(@NotNull ProjectResolverContext projectResolverContext) {
resolverCtx = projectResolverContext;
}
@Override
public void setNext(@NotNull GradleProjectResolverExtension next) {
// there always should be at least gradle basic resolver further in the chain
//noinspection ConstantConditions
assert next != null;
nextResolver = next;
}
@Nullable
@Override
public GradleProjectResolverExtension getNext() {
return nextResolver;
}
@NotNull
@Override
public ProjectData createProject() {
return nextResolver.createProject();
}
@NotNull
@Override
public JavaProjectData createJavaProjectData() {
return nextResolver.createJavaProjectData();
}
@Override
public void populateProjectExtraModels(@NotNull IdeaProject gradleProject, @NotNull DataNode<ProjectData> ideProject) {
nextResolver.populateProjectExtraModels(gradleProject, ideProject);
}
@NotNull
@Override
public ModuleData createModule(@NotNull IdeaModule gradleModule, @NotNull ProjectData projectData) {
return nextResolver.createModule(gradleModule, projectData);
}
@Override
public void populateModuleExtraModels(@NotNull IdeaModule gradleModule, @NotNull DataNode<ModuleData> ideModule) {
nextResolver.populateModuleExtraModels(gradleModule, ideModule);
}
@Override
public void populateModuleContentRoots(@NotNull IdeaModule gradleModule,
@NotNull DataNode<ModuleData> ideModule) {
nextResolver.populateModuleContentRoots(gradleModule, ideModule);
}
@Override
public void populateModuleCompileOutputSettings(@NotNull IdeaModule gradleModule,
@NotNull DataNode<ModuleData> ideModule) {
nextResolver.populateModuleCompileOutputSettings(gradleModule, ideModule);
}
@Override
public void populateModuleDependencies(@NotNull IdeaModule gradleModule,
@NotNull DataNode<ModuleData> ideModule,
@NotNull DataNode<ProjectData> ideProject) {
nextResolver.populateModuleDependencies(gradleModule, ideModule, ideProject);
}
@NotNull
@Override
public Collection<TaskData> populateModuleTasks(@NotNull IdeaModule gradleModule,
@NotNull DataNode<ModuleData> ideModule,
@NotNull DataNode<ProjectData> ideProject)
throws IllegalArgumentException, IllegalStateException {
return nextResolver.populateModuleTasks(gradleModule, ideModule, ideProject);
}
@NotNull
@Override
public Collection<TaskData> filterRootProjectTasks(@NotNull List<TaskData> allTasks) {
return nextResolver.filterRootProjectTasks(allTasks);
}
@NotNull
@Override
public Set<Class> getExtraProjectModelClasses() {
return Collections.emptySet();
}
@NotNull
@Override
public Set<Class> getToolingExtensionsClasses() {
return Collections.emptySet();
}
@NotNull
@Override
public List<KeyValue<String, String>> getExtraJvmArgs() {
return Collections.emptyList();
}
@NotNull
@Override
public List<String> getExtraCommandLineArgs() {
return Collections.emptyList();
}
@NotNull
@Override
public ExternalSystemException getUserFriendlyError(@NotNull Throwable error,
@NotNull String projectPath,
@Nullable String buildFilePath) {
return nextResolver.getUserFriendlyError(error, projectPath, buildFilePath);
}
@Override
public void enhanceRemoteProcessing(@NotNull SimpleJavaParameters parameters) throws ExecutionException {
}
@Override
public void enhanceLocalProcessing(@NotNull List<URL> urls) {
}
@Override
public void preImportCheck() {
}
@Override
public void enhanceTaskProcessing(@NotNull List<String> taskNames,
@Nullable String debuggerSetup,
@NotNull Consumer<String> initScriptConsumer) {
}
}