From b9035c54ad23ac57d8f4ed002adee06fbc063e80 Mon Sep 17 00:00:00 2001 From: "Svetlana.Zemlyanskay" Date: Thu, 9 Apr 2015 17:46:24 +0300 Subject: [PATCH] WI-26500 Remote interpreter allow user to check path mappings inside configuration form --- .../intellij/remote/PathMappingProvider.java | 3 ++ .../intellij/remote/PathMappingValidator.java | 47 +++++++++++++++++++ 2 files changed, 50 insertions(+) create mode 100644 platform/platform-impl/src/com/intellij/remote/PathMappingValidator.java diff --git a/platform/platform-impl/src/com/intellij/remote/PathMappingProvider.java b/platform/platform-impl/src/com/intellij/remote/PathMappingProvider.java index 4e5482d3d422..1f7b90fdeba7 100644 --- a/platform/platform-impl/src/com/intellij/remote/PathMappingProvider.java +++ b/platform/platform-impl/src/com/intellij/remote/PathMappingProvider.java @@ -28,6 +28,9 @@ public abstract class PathMappingProvider { })); } + @NotNull + public abstract String getProviderPresentableName(@NotNull RemoteSdkAdditionalData data); + public abstract boolean accepts(@Nullable RemoteSdkAdditionalData data); @NotNull diff --git a/platform/platform-impl/src/com/intellij/remote/PathMappingValidator.java b/platform/platform-impl/src/com/intellij/remote/PathMappingValidator.java new file mode 100644 index 000000000000..cfa504c6f87c --- /dev/null +++ b/platform/platform-impl/src/com/intellij/remote/PathMappingValidator.java @@ -0,0 +1,47 @@ +/* + * Copyright 2000-2015 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 com.intellij.remote; + +import com.intellij.openapi.project.Project; +import com.intellij.openapi.util.text.StringUtil; +import com.intellij.util.SmartList; +import org.jetbrains.annotations.NotNull; + +import java.util.List; + +/** + * @author Svetlana.Zemlyanskaya + */ +public class PathMappingValidator { + public static String validatePathMappings(@NotNull Project project, @NotNull RemoteSdkAdditionalData data) { + boolean found = false; + final List locations = new SmartList(); + for (PathMappingProvider mappingProvider : PathMappingProvider.getSuitableMappingProviders(data)) { + found = found || !mappingProvider.getPathMappingSettings(project, data).isEmpty(); + locations.add(mappingProvider.getProviderPresentableName(data)); + } + + if (!found) { + final StringBuilder builder = new StringBuilder(); + builder.append("No path mappings were found."); + if (!locations.isEmpty()) { + builder.append(" Please, configure them at ").append(StringUtil.join(locations, " or ")); + } + return builder.toString(); + } + return null; + } +}