From 3d4325af940fc656cce348f19ba20fed582ecc66 Mon Sep 17 00:00:00 2001 From: "Vladislav.Soroka" Date: Thu, 16 Jul 2015 13:19:22 +0300 Subject: [PATCH] quick fixes: MissingDependencyFixProvider code cleanup --- .../quickfix/MissingDependencyFixUtil.java | 54 +++++++++++++++++++ .../daemon/impl/quickfix/OrderEntryFix.java | 12 +++-- .../MissingDependencyFixProvider.java | 24 +-------- ...itUnresolvedReferenceQuickFixProvider.java | 3 +- 4 files changed, 64 insertions(+), 29 deletions(-) create mode 100644 java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/MissingDependencyFixUtil.java diff --git a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/MissingDependencyFixUtil.java b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/MissingDependencyFixUtil.java new file mode 100644 index 000000000000..79bbb99da35c --- /dev/null +++ b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/MissingDependencyFixUtil.java @@ -0,0 +1,54 @@ +/* + * 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.codeInsight.daemon.impl.quickfix; + +import com.intellij.codeInsight.daemon.quickFix.MissingDependencyFixProvider; +import com.intellij.codeInspection.LocalQuickFix; +import com.intellij.openapi.extensions.Extensions; +import com.intellij.util.Function; +import org.jetbrains.annotations.Nullable; + +import java.util.List; + +import static com.intellij.codeInsight.daemon.quickFix.MissingDependencyFixProvider.EP_NAME; + +/** + * @author Vladislav.Soroka + * @since 7/16/2015 + */ +public class MissingDependencyFixUtil { + @Nullable + public static List findFixes(Function> provider) { + MissingDependencyFixProvider[] fixProviders = Extensions.getExtensions(EP_NAME); + for (MissingDependencyFixProvider each : fixProviders) { + List result = provider.fun(each); + if (result != null && !result.isEmpty()) return result; + } + + return null; + } + + @Nullable + public static T provideFix(Function provider) { + MissingDependencyFixProvider[] fixProviders = Extensions.getExtensions(EP_NAME); + for (MissingDependencyFixProvider each : fixProviders) { + T result = provider.fun(each); + if (result != null && Boolean.FALSE != result) return result; + } + + return null; + } +} diff --git a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/OrderEntryFix.java b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/OrderEntryFix.java index 251ecf3d3db8..bcb2b17c2e5a 100644 --- a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/OrderEntryFix.java +++ b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/OrderEntryFix.java @@ -60,6 +60,8 @@ import java.util.Collections; import java.util.List; import java.util.Set; +import static com.intellij.codeInsight.daemon.impl.quickfix.MissingDependencyFixUtil.*; + /** * @author cdr */ @@ -101,7 +103,7 @@ public abstract class OrderEntryFix implements IntentionAction, LocalQuickFix { final Module currentModule = fileIndex.getModuleForFile(classVFile); if (currentModule == null) return null; - final List providedFixes = MissingDependencyFixProvider.findFixes(new Function>() { + final List providedFixes = findFixes(new Function>() { @Override public List fun(MissingDependencyFixProvider provider) { return provider.registerFixes(registrar, reference); @@ -154,7 +156,7 @@ public abstract class OrderEntryFix implements IntentionAction, LocalQuickFix { } }; - final OrderEntryFix providedFix = MissingDependencyFixProvider.find(new Function() { + final OrderEntryFix providedFix = provideFix(new Function() { @Override public OrderEntryFix fun(MissingDependencyFixProvider provider) { return provider.getJetbrainsAnnotationFix(reference, platformFix, currentModule); @@ -179,7 +181,7 @@ public abstract class OrderEntryFix implements IntentionAction, LocalQuickFix { final PsiClass[] finalClasses = classes; final OrderEntryFix finalModuleDependencyFix = moduleDependencyFix; - final OrderEntryFix providedModuleDependencyFix = MissingDependencyFixProvider.find(new Function() { + final OrderEntryFix providedModuleDependencyFix = provideFix(new Function() { @Override public OrderEntryFix fun(MissingDependencyFixProvider provider) { return provider.getAddModuleDependencyFix(reference, finalModuleDependencyFix, currentModule, classVFile, finalClasses); @@ -245,7 +247,7 @@ public abstract class OrderEntryFix implements IntentionAction, LocalQuickFix { } }; - final OrderEntryFix providedFix = MissingDependencyFixProvider.find(new Function() { + final OrderEntryFix providedFix = provideFix(new Function() { @Override public OrderEntryFix fun(MissingDependencyFixProvider provider) { return provider.getAddLibraryToClasspathFix(reference, platformFix, currentModule, libraryEntry, aClass); @@ -322,7 +324,7 @@ public abstract class OrderEntryFix implements IntentionAction, LocalQuickFix { public static void addJarsToRoots(@NotNull final List jarPaths, @Nullable final String libraryName, @NotNull final Module module, @Nullable final PsiElement location) { - final Boolean isAdded = MissingDependencyFixProvider.find(new Function() { + final Boolean isAdded = provideFix(new Function() { @Override public Boolean fun(MissingDependencyFixProvider provider) { return provider.addJarsToRoots(jarPaths, libraryName, module, location); diff --git a/java/java-impl/src/com/intellij/codeInsight/daemon/quickFix/MissingDependencyFixProvider.java b/java/java-impl/src/com/intellij/codeInsight/daemon/quickFix/MissingDependencyFixProvider.java index bca6087a5a9b..46c0e7abc887 100644 --- a/java/java-impl/src/com/intellij/codeInsight/daemon/quickFix/MissingDependencyFixProvider.java +++ b/java/java-impl/src/com/intellij/codeInsight/daemon/quickFix/MissingDependencyFixProvider.java @@ -43,31 +43,9 @@ import java.util.List; * @since 7/15/2015 */ public abstract class MissingDependencyFixProvider { - private static final ExtensionPointName EP_NAME = + public static final ExtensionPointName EP_NAME = ExtensionPointName.create("com.intellij.codeInsight.missingDependencyFixProvider"); - @Nullable - public static List findFixes(Function> provider) { - MissingDependencyFixProvider[] fixProviders = Extensions.getExtensions(EP_NAME); - for (MissingDependencyFixProvider each : fixProviders) { - List result = provider.fun(each); - if (result != null && !result.isEmpty()) return result; - } - - return null; - } - - @Nullable - public static T find(Function provider) { - MissingDependencyFixProvider[] fixProviders = Extensions.getExtensions(EP_NAME); - for (MissingDependencyFixProvider each : fixProviders) { - T result = provider.fun(each); - if (result != null && Boolean.FALSE != result) return result; - } - - return null; - } - @Nullable public List registerFixes(@NotNull QuickFixActionRegistrar registrar, @NotNull final PsiReference reference) { return null; diff --git a/plugins/junit/src/com/intellij/execution/junit/codeInsight/JUnitUnresolvedReferenceQuickFixProvider.java b/plugins/junit/src/com/intellij/execution/junit/codeInsight/JUnitUnresolvedReferenceQuickFixProvider.java index fe8f1da43f64..2daa86e718db 100644 --- a/plugins/junit/src/com/intellij/execution/junit/codeInsight/JUnitUnresolvedReferenceQuickFixProvider.java +++ b/plugins/junit/src/com/intellij/execution/junit/codeInsight/JUnitUnresolvedReferenceQuickFixProvider.java @@ -17,6 +17,7 @@ package com.intellij.execution.junit.codeInsight; import com.intellij.codeInsight.daemon.QuickFixActionRegistrar; import com.intellij.codeInsight.daemon.QuickFixBundle; +import com.intellij.codeInsight.daemon.impl.quickfix.MissingDependencyFixUtil; import com.intellij.codeInsight.daemon.impl.quickfix.OrderEntryFix; import com.intellij.codeInsight.daemon.quickFix.MissingDependencyFixProvider; import com.intellij.codeInsight.quickfix.UnresolvedReferenceQuickFixProvider; @@ -103,7 +104,7 @@ public class JUnitUnresolvedReferenceQuickFixProvider extends UnresolvedReferenc } }; - final OrderEntryFix providedFix = MissingDependencyFixProvider.find(new Function() { + final OrderEntryFix providedFix = MissingDependencyFixUtil.provideFix(new Function() { @Override public OrderEntryFix fun(MissingDependencyFixProvider provider) { return provider.getJUnitFix(reference, platformFix, currentModule, framework, className);