Skip to content

Commit b20d192

Browse files
author
Vitaliy
authored
Merge pull request magento#163 from AndreyChorniy/1.0.0-develop
Fix issue with creating observer
2 parents 274fbd7 + 5fbf6c0 commit b20d192

File tree

3 files changed

+23
-6
lines changed

3 files changed

+23
-6
lines changed

src/com/magento/idea/magento2plugin/actions/generation/CreateAnObserverAction.java

+21-3
Original file line numberDiff line numberDiff line change
@@ -12,21 +12,23 @@
1212
import com.intellij.openapi.project.Project;
1313
import com.intellij.psi.PsiElement;
1414
import com.intellij.psi.PsiFile;
15+
import com.intellij.psi.PsiReference;
1516
import com.intellij.psi.tree.IElementType;
1617
import com.jetbrains.php.lang.lexer.PhpTokenTypes;
1718
import com.jetbrains.php.lang.psi.PhpFile;
19+
import com.jetbrains.php.lang.psi.elements.Method;
1820
import com.jetbrains.php.lang.psi.elements.MethodReference;
1921
import com.jetbrains.php.lang.psi.elements.ParameterList;
22+
import com.jetbrains.php.lang.psi.elements.PhpClass;
2023
import com.magento.idea.magento2plugin.MagentoIcons;
2124
import com.magento.idea.magento2plugin.actions.generation.dialog.CreateAnObserverDialog;
25+
import com.magento.idea.magento2plugin.magento.files.Observer;
2226
import com.magento.idea.magento2plugin.project.Settings;
2327
import org.jetbrains.annotations.NotNull;
2428

2529
public class CreateAnObserverAction extends DumbAwareAction {
2630
public static final String ACTION_NAME = "Create a Magento Observer...";
2731
static final String ACTION_DESCRIPTION = "Create a new Magento 2 Observer for the event";
28-
static final String SIGNATURE_INTERFACE = "#M#C\\Magento\\Framework\\Event\\ManagerInterface.dispatch";
29-
static final String SIGNATURE_CONTEXT = "#M#M#C\\Magento\\Framework\\App\\Action\\Context.getEventManager.dispatch";
3032
public String targetEvent;
3133

3234
public CreateAnObserverAction() {
@@ -100,7 +102,23 @@ private boolean checkIsMethodReference(@NotNull PsiElement element) {
100102
}
101103

102104
private boolean checkIsEventDispatchMethod(MethodReference element) {
103-
return element.getSignature().equals(SIGNATURE_INTERFACE) || element.getSignature().equals(SIGNATURE_CONTEXT);
105+
PsiReference elementReference = element.getReference();
106+
if (elementReference == null) {
107+
return false;
108+
}
109+
PsiElement method = elementReference.resolve();
110+
if (!(method instanceof Method)) {
111+
return false;
112+
}
113+
if (!((Method) method).getName().equals(Observer.DISPATCH_METHOD)) {
114+
return false;
115+
}
116+
PsiElement phpClass = method.getParent();
117+
if (!(phpClass instanceof PhpClass)) {
118+
return false;
119+
}
120+
String fqn = ((PhpClass) phpClass).getPresentableFQN();
121+
return fqn.equals(Observer.INTERFACE);
104122
}
105123

106124
private boolean checkIsElementStringLiteral(@NotNull PsiElement element) {

src/com/magento/idea/magento2plugin/completion/provider/ModuleNameCompletionProvider.java

-3
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,12 @@
88
import com.intellij.codeInsight.completion.CompletionProvider;
99
import com.intellij.codeInsight.completion.CompletionResultSet;
1010
import com.intellij.codeInsight.lookup.LookupElementBuilder;
11-
import com.intellij.icons.AllIcons;
1211
import com.intellij.psi.PsiElement;
1312
import com.intellij.util.ProcessingContext;
1413
import com.intellij.util.indexing.FileBasedIndex;
1514
import com.magento.idea.magento2plugin.MagentoIcons;
1615
import com.magento.idea.magento2plugin.stubs.indexes.ModuleNameIndex;
1716
import org.jetbrains.annotations.NotNull;
18-
1917
import java.util.Collection;
2018

2119
public class ModuleNameCompletionProvider extends CompletionProvider<CompletionParameters> {
@@ -33,7 +31,6 @@ protected void addCompletions(@NotNull CompletionParameters parameters,
3331
Collection<String> moduleNames
3432
= FileBasedIndex.getInstance().getAllKeys(ModuleNameIndex.KEY, position.getProject());
3533

36-
3734
moduleNames.removeIf(m -> !m.startsWith(prefix));
3835
for (String moduleName : moduleNames) {
3936
result.addElement(

src/com/magento/idea/magento2plugin/magento/files/Observer.java

+2
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@
1010
public class Observer implements ModuleFileInterface {
1111

1212
private String fileName;
13+
public static final String INTERFACE = "Magento\\Framework\\Event\\ManagerInterface";
14+
public static final String DISPATCH_METHOD = "dispatch";
1315

1416
public Observer(String className) {
1517
fileName = className.concat(".php");

0 commit comments

Comments
 (0)