From a17b6a3df81abbe92d46b6aa8c0f3bab457c4037 Mon Sep 17 00:00:00 2001 From: Adarsh Manickam Date: Thu, 22 Oct 2020 02:38:00 +0530 Subject: [PATCH 1/4] Fixed interface plugin linemarker --- .../linemarker/php/PluginTargetLineMarkerProvider.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/com/magento/idea/magento2plugin/linemarker/php/PluginTargetLineMarkerProvider.java b/src/com/magento/idea/magento2plugin/linemarker/php/PluginTargetLineMarkerProvider.java index faaa5ba2b..52e7ed95e 100644 --- a/src/com/magento/idea/magento2plugin/linemarker/php/PluginTargetLineMarkerProvider.java +++ b/src/com/magento/idea/magento2plugin/linemarker/php/PluginTargetLineMarkerProvider.java @@ -92,6 +92,10 @@ List getTargetClassesForPlugin(@NotNull PhpClass phpClass, @NotNull St for (String targetClassName : targetClassNames) { Collection targets = phpIndex.getClassesByFQN(targetClassName); + if (targets.isEmpty()) { + targets = phpIndex.getInterfacesByFQN(targetClassName); + } + results.addAll(targets); } From 2ef61a25d2d65c18e14d08298a1312e2f4614baf Mon Sep 17 00:00:00 2001 From: Adarsh Manickam Date: Thu, 22 Oct 2020 02:50:34 +0530 Subject: [PATCH 2/4] Fixed static test failures --- .../php/PluginTargetLineMarkerProvider.java | 51 ++++++++++++------- 1 file changed, 33 insertions(+), 18 deletions(-) diff --git a/src/com/magento/idea/magento2plugin/linemarker/php/PluginTargetLineMarkerProvider.java b/src/com/magento/idea/magento2plugin/linemarker/php/PluginTargetLineMarkerProvider.java index 52e7ed95e..3dcbdae3f 100644 --- a/src/com/magento/idea/magento2plugin/linemarker/php/PluginTargetLineMarkerProvider.java +++ b/src/com/magento/idea/magento2plugin/linemarker/php/PluginTargetLineMarkerProvider.java @@ -2,6 +2,7 @@ * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ + package com.magento.idea.magento2plugin.linemarker.php; import com.intellij.codeInsight.daemon.LineMarkerInfo; @@ -9,17 +10,19 @@ import com.intellij.codeInsight.navigation.NavigationGutterIconBuilder; import com.intellij.icons.AllIcons; import com.intellij.psi.PsiElement; +import com.intellij.psi.util.PsiTreeUtil; import com.jetbrains.php.PhpIndex; import com.jetbrains.php.lang.psi.elements.Method; import com.jetbrains.php.lang.psi.elements.PhpClass; import com.magento.idea.magento2plugin.magento.files.Plugin; import com.magento.idea.magento2plugin.project.Settings; +import com.magento.idea.magento2plugin.util.magento.plugin.GetTargetClassNamesByPluginClassName; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.List; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import com.magento.idea.magento2plugin.util.magento.plugin.GetTargetClassNamesByPluginClassName; -import com.intellij.psi.util.PsiTreeUtil; - -import java.util.*; public class PluginTargetLineMarkerProvider implements LineMarkerProvider { @Nullable @@ -29,23 +32,28 @@ public LineMarkerInfo getLineMarkerInfo(@NotNull PsiElement psiElement) { } @Override - public void collectSlowLineMarkers(@NotNull List psiElements, @NotNull Collection collection) { + public void collectSlowLineMarkers( + @NotNull List psiElements, + @NotNull Collection collection + ) { if (psiElements.size() > 0) { if (!Settings.isEnabled(psiElements.get(0).getProject())) { return; } } PluginClassCache pluginClassCache = new PluginClassCache(); - TargetClassesCollector TargetClassesCollector = new TargetClassesCollector(pluginClassCache); - TargetMethodsCollector TargetMethodsCollector = new TargetMethodsCollector(pluginClassCache); + TargetClassesCollector targetClassesCollector = + new TargetClassesCollector(pluginClassCache); + TargetMethodsCollector targetMethodsCollector = + new TargetMethodsCollector(pluginClassCache); for (PsiElement psiElement : psiElements) { if (psiElement instanceof PhpClass || psiElement instanceof Method) { List results; if (psiElement instanceof PhpClass) { - results = TargetClassesCollector.collect((PhpClass) psiElement); - if (results.size() > 0 ) { + results = targetClassesCollector.collect((PhpClass) psiElement); + if (results.size() > 0) { collection.add(NavigationGutterIconBuilder .create(AllIcons.Nodes.Class) .setTargets(results) @@ -54,8 +62,8 @@ public void collectSlowLineMarkers(@NotNull List psiElements, @NotNu ); } } else { - results = TargetMethodsCollector.collect((Method) psiElement); - if (results.size() > 0 ) { + results = targetMethodsCollector.collect((Method) psiElement); + if (results.size() > 0) { collection.add(NavigationGutterIconBuilder .create(AllIcons.Nodes.Method) .setTargets(results) @@ -70,16 +78,21 @@ public void collectSlowLineMarkers(@NotNull List psiElements, @NotNu } private static class PluginClassCache { - private HashMap> pluginClassesMap = new HashMap>(); + private HashMap> pluginClassesMap = + new HashMap>(); - List getTargetClassesForPlugin(@NotNull PhpClass phpClass, @NotNull String classFQN) { + List getTargetClassesForPlugin( + @NotNull PhpClass phpClass, + @NotNull String classFQN + ) { List results = new ArrayList<>(); if (pluginClassesMap.containsKey(classFQN)) { return pluginClassesMap.get(classFQN); } - GetTargetClassNamesByPluginClassName targetClassesService = GetTargetClassNamesByPluginClassName.getInstance(phpClass.getProject()); + GetTargetClassNamesByPluginClassName targetClassesService = + GetTargetClassNamesByPluginClassName.getInstance(phpClass.getProject()); ArrayList targetClassNames = targetClassesService.execute(classFQN); if (targetClassNames.size() == 0) { @@ -103,7 +116,9 @@ List getTargetClassesForPlugin(@NotNull PhpClass phpClass, @NotNull St } List getTargetClassesForPlugin(@NotNull PhpClass phpClass) { - List classesForPlugin = getTargetClassesForPlugin(phpClass, phpClass.getPresentableFQN()); + List classesForPlugin = getTargetClassesForPlugin( + phpClass, phpClass.getPresentableFQN() + ); for (PhpClass parent: phpClass.getSupers()) { classesForPlugin.addAll(getTargetClassesForPlugin(parent)); } @@ -171,8 +186,7 @@ public List collect(@NotNull Method pluginMethod) { private String getTargetMethodName(Method pluginMethod, String pluginPrefix) { String pluginMethodName = pluginMethod.getName(); - String targetClassMethodName = pluginMethodName. - replace(pluginPrefix, ""); + String targetClassMethodName = pluginMethodName.replace(pluginPrefix, ""); if (targetClassMethodName.isEmpty()) { return null; } @@ -181,7 +195,8 @@ private String getTargetMethodName(Method pluginMethod, String pluginPrefix) { if (charType == Character.LOWERCASE_LETTER) { return null; } - return Character.toLowerCase(firstCharOfTargetName) + targetClassMethodName.substring(1); + return Character.toLowerCase(firstCharOfTargetName) + + targetClassMethodName.substring(1); } private String getPluginPrefix(Method pluginMethod) { From 773aebc9d33222e94a7aff9650401a9b6e1c9205 Mon Sep 17 00:00:00 2001 From: Adarsh Manickam Date: Tue, 27 Oct 2020 22:28:54 +0530 Subject: [PATCH 3/4] Fixed static test failures --- .../php/PluginTargetLineMarkerProvider.java | 106 +++++++++--------- 1 file changed, 55 insertions(+), 51 deletions(-) diff --git a/src/com/magento/idea/magento2plugin/linemarker/php/PluginTargetLineMarkerProvider.java b/src/com/magento/idea/magento2plugin/linemarker/php/PluginTargetLineMarkerProvider.java index 3dcbdae3f..4df5c981f 100644 --- a/src/com/magento/idea/magento2plugin/linemarker/php/PluginTargetLineMarkerProvider.java +++ b/src/com/magento/idea/magento2plugin/linemarker/php/PluginTargetLineMarkerProvider.java @@ -27,33 +27,31 @@ public class PluginTargetLineMarkerProvider implements LineMarkerProvider { @Nullable @Override - public LineMarkerInfo getLineMarkerInfo(@NotNull PsiElement psiElement) { + public LineMarkerInfo getLineMarkerInfo(@NotNull final PsiElement psiElement) { return null; } @Override public void collectSlowLineMarkers( - @NotNull List psiElements, - @NotNull Collection collection + @NotNull final List psiElements, + @NotNull final Collection collection ) { - if (psiElements.size() > 0) { - if (!Settings.isEnabled(psiElements.get(0).getProject())) { - return; - } + if (!psiElements.isEmpty() && !Settings.isEnabled(psiElements.get(0).getProject())) { + return; } - PluginClassCache pluginClassCache = new PluginClassCache(); - TargetClassesCollector targetClassesCollector = + final PluginClassCache pluginClassCache = new PluginClassCache(); + final TargetClassesCollector targetClassesCollector = new TargetClassesCollector(pluginClassCache); - TargetMethodsCollector targetMethodsCollector = + final TargetMethodsCollector targetMethodsCollector = new TargetMethodsCollector(pluginClassCache); - for (PsiElement psiElement : psiElements) { + for (final PsiElement psiElement : psiElements) { if (psiElement instanceof PhpClass || psiElement instanceof Method) { List results; if (psiElement instanceof PhpClass) { results = targetClassesCollector.collect((PhpClass) psiElement); - if (results.size() > 0) { + if (!results.isEmpty()) { collection.add(NavigationGutterIconBuilder .create(AllIcons.Nodes.Class) .setTargets(results) @@ -63,7 +61,7 @@ public void collectSlowLineMarkers( } } else { results = targetMethodsCollector.collect((Method) psiElement); - if (results.size() > 0) { + if (!results.isEmpty()) { collection.add(NavigationGutterIconBuilder .create(AllIcons.Nodes.Method) .setTargets(results) @@ -78,35 +76,36 @@ public void collectSlowLineMarkers( } private static class PluginClassCache { - private HashMap> pluginClassesMap = - new HashMap>(); + private final HashMap> pluginClassesMap = + new HashMap<>(); - List getTargetClassesForPlugin( - @NotNull PhpClass phpClass, - @NotNull String classFQN + private List getTargetClassesForPlugin( + @NotNull final PhpClass phpClass, + @NotNull final String classFQN ) { - List results = new ArrayList<>(); if (pluginClassesMap.containsKey(classFQN)) { return pluginClassesMap.get(classFQN); } - GetTargetClassNamesByPluginClassName targetClassesService = + final GetTargetClassNamesByPluginClassName targetClassesService = GetTargetClassNamesByPluginClassName.getInstance(phpClass.getProject()); - ArrayList targetClassNames = targetClassesService.execute(classFQN); + final ArrayList targetClassNames = targetClassesService.execute(classFQN); + + final List results = new ArrayList<>(); - if (targetClassNames.size() == 0) { + if (targetClassNames.isEmpty()) { pluginClassesMap.put(classFQN, results); return results; } - PhpIndex phpIndex = PhpIndex.getInstance(phpClass.getProject()); + final PhpIndex phpIndex = PhpIndex.getInstance(phpClass.getProject()); - for (String targetClassName : targetClassNames) { - Collection targets = phpIndex.getClassesByFQN(targetClassName); + for (final String targetClassName : targetClassNames) { + Collection targets = phpIndex.getInterfacesByFQN(targetClassName); if (targets.isEmpty()) { - targets = phpIndex.getInterfacesByFQN(targetClassName); + targets = phpIndex.getClassesByFQN(targetClassName); } results.addAll(targets); @@ -115,11 +114,11 @@ List getTargetClassesForPlugin( return results; } - List getTargetClassesForPlugin(@NotNull PhpClass phpClass) { - List classesForPlugin = getTargetClassesForPlugin( + protected List getTargetClassesForPlugin(@NotNull final PhpClass phpClass) { + final List classesForPlugin = getTargetClassesForPlugin( phpClass, phpClass.getPresentableFQN() ); - for (PhpClass parent: phpClass.getSupers()) { + for (final PhpClass parent: phpClass.getSupers()) { classesForPlugin.addAll(getTargetClassesForPlugin(parent)); } @@ -128,52 +127,59 @@ List getTargetClassesForPlugin(@NotNull PhpClass phpClass) { } private static class TargetClassesCollector implements Collector { - private PluginTargetLineMarkerProvider.PluginClassCache pluginClassCache; + private final PluginTargetLineMarkerProvider.PluginClassCache pluginClassCache; - TargetClassesCollector(PluginTargetLineMarkerProvider.PluginClassCache pluginClassCache) { + TargetClassesCollector( + final PluginTargetLineMarkerProvider.PluginClassCache pluginClassCache + ) { this.pluginClassCache = pluginClassCache; } @Override - public List collect(@NotNull PhpClass psiElement) { + public List collect(@NotNull final PhpClass psiElement) { return pluginClassCache.getTargetClassesForPlugin(psiElement); } } private static class TargetMethodsCollector implements Collector { - private PluginTargetLineMarkerProvider.PluginClassCache pluginClassCache; + private final PluginTargetLineMarkerProvider.PluginClassCache pluginClassCache; - TargetMethodsCollector(PluginTargetLineMarkerProvider.PluginClassCache pluginClassCache) { + TargetMethodsCollector( + final PluginTargetLineMarkerProvider.PluginClassCache pluginClassCache + ) { this.pluginClassCache = pluginClassCache; } @Override - public List collect(@NotNull Method pluginMethod) { - List results = new ArrayList<>(); + public List collect(@NotNull final Method pluginMethod) { + final List results = new ArrayList<>(); /* Check if the method is a plugin */ if (null == getPluginPrefix(pluginMethod)) { return results; } - PhpClass pluginClass = pluginMethod.getContainingClass(); + final PhpClass pluginClass = pluginMethod.getContainingClass(); if (pluginClass == null) { return results; } - List targetClasses = pluginClassCache.getTargetClassesForPlugin(pluginClass); - if (targetClasses.size() == 0) { + final List targetClasses + = pluginClassCache.getTargetClassesForPlugin(pluginClass); + if (targetClasses.isEmpty()) { return results; } - for (PhpClass targetClass: targetClasses) { - String pluginPrefix = getPluginPrefix(pluginMethod); - String targetClassMethodName = getTargetMethodName(pluginMethod, pluginPrefix); + for (final PhpClass targetClass: targetClasses) { + final String pluginPrefix = getPluginPrefix(pluginMethod); + final String targetClassMethodName = getTargetMethodName( + pluginMethod, pluginPrefix + ); if (targetClassMethodName == null) { continue; } - Method targetMethod = targetClass.findMethodByName(targetClassMethodName); + final Method targetMethod = targetClass.findMethodByName(targetClassMethodName); if (targetMethod == null) { continue; } @@ -184,23 +190,21 @@ public List collect(@NotNull Method pluginMethod) { return results; } - private String getTargetMethodName(Method pluginMethod, String pluginPrefix) { - String pluginMethodName = pluginMethod.getName(); - String targetClassMethodName = pluginMethodName.replace(pluginPrefix, ""); + private String getTargetMethodName(final Method pluginMethod, final String pluginPrefix) { + final String targetClassMethodName = pluginMethod.getName().replace(pluginPrefix, ""); if (targetClassMethodName.isEmpty()) { return null; } - char firstCharOfTargetName = targetClassMethodName.charAt(0); - int charType = Character.getType(firstCharOfTargetName); - if (charType == Character.LOWERCASE_LETTER) { + final char firstCharOfTargetName = targetClassMethodName.charAt(0); + if (Character.getType(firstCharOfTargetName) == Character.LOWERCASE_LETTER) { return null; } return Character.toLowerCase(firstCharOfTargetName) + targetClassMethodName.substring(1); } - private String getPluginPrefix(Method pluginMethod) { - String pluginMethodName = pluginMethod.getName(); + private String getPluginPrefix(final Method pluginMethod) { + final String pluginMethodName = pluginMethod.getName(); if (pluginMethodName.startsWith(Plugin.PluginType.around.toString())) { return Plugin.PluginType.around.toString(); } From d8efece3a7bce0baeca7d048b67fa217d49ca791 Mon Sep 17 00:00:00 2001 From: Adarsh Manickam Date: Wed, 28 Oct 2020 18:05:47 +0530 Subject: [PATCH 4/4] Fixed static failures --- .../linemarker/php/PluginTargetLineMarkerProvider.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/com/magento/idea/magento2plugin/linemarker/php/PluginTargetLineMarkerProvider.java b/src/com/magento/idea/magento2plugin/linemarker/php/PluginTargetLineMarkerProvider.java index 4df5c981f..559acc817 100644 --- a/src/com/magento/idea/magento2plugin/linemarker/php/PluginTargetLineMarkerProvider.java +++ b/src/com/magento/idea/magento2plugin/linemarker/php/PluginTargetLineMarkerProvider.java @@ -76,7 +76,7 @@ public void collectSlowLineMarkers( } private static class PluginClassCache { - private final HashMap> pluginClassesMap = + private final HashMap> pluginClassesMap = // NOPMD new HashMap<>(); private List getTargetClassesForPlugin( @@ -129,7 +129,7 @@ protected List getTargetClassesForPlugin(@NotNull final PhpClass phpCl private static class TargetClassesCollector implements Collector { private final PluginTargetLineMarkerProvider.PluginClassCache pluginClassCache; - TargetClassesCollector( + TargetClassesCollector(// NOPMD final PluginTargetLineMarkerProvider.PluginClassCache pluginClassCache ) { this.pluginClassCache = pluginClassCache; @@ -144,7 +144,7 @@ public List collect(@NotNull final PhpClass psiElement) { private static class TargetMethodsCollector implements Collector { private final PluginTargetLineMarkerProvider.PluginClassCache pluginClassCache; - TargetMethodsCollector( + TargetMethodsCollector(// NOPMD final PluginTargetLineMarkerProvider.PluginClassCache pluginClassCache ) { this.pluginClassCache = pluginClassCache;