Skip to content

Commit 0eb537e

Browse files
authored
Merge pull request #1166 from anzin/1102-bug-fix-create-observer-not-work-through-the-context-menu
1102: Fix bug create an observer
2 parents 19a7791 + 2f3991d commit 0eb537e

File tree

2 files changed

+22
-2
lines changed

2 files changed

+22
-2
lines changed

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

+2-1
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
import com.intellij.psi.PsiFile;
1616
import com.intellij.psi.PsiReference;
1717
import com.intellij.psi.tree.IElementType;
18+
import com.intellij.util.SlowOperations;
1819
import com.jetbrains.php.lang.lexer.PhpTokenTypes;
1920
import com.jetbrains.php.lang.psi.PhpFile;
2021
import com.jetbrains.php.lang.psi.elements.Method;
@@ -124,7 +125,7 @@ private boolean checkIsEventDispatchMethod(final MethodReference element) {
124125
if (elementReference == null) {
125126
return false;
126127
}
127-
final PsiElement method = elementReference.resolve();
128+
final PsiElement method = SlowOperations.allowSlowOperations(elementReference::resolve);
128129
if (!(method instanceof Method)) {
129130
return false;
130131
}

src/com/magento/idea/magento2plugin/lang/php/MagentoProxyDeclarationFilter.java

+20-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,10 @@
1010
import com.intellij.psi.PsiElement;
1111
import com.intellij.psi.PsiFile;
1212
import com.intellij.util.containers.ContainerUtil;
13+
import com.jetbrains.php.lang.PhpLangUtil;
1314
import com.jetbrains.php.lang.psi.PhpMultipleDeclarationFilter;
15+
import com.jetbrains.php.lang.psi.elements.Method;
16+
import com.jetbrains.php.lang.psi.elements.PhpClass;
1417
import com.jetbrains.php.lang.psi.elements.PhpNamedElement;
1518
import com.magento.idea.magento2plugin.project.Settings;
1619
import java.util.Collection;
@@ -47,7 +50,23 @@ public <E extends PhpNamedElement> Collection<E> filter(
4750
return false;
4851
}
4952

50-
return !virtualFile.getPath().contains("/generated/");
53+
return !virtualFile.getPath().contains("/generated/") && isValidFqn(candidate);
5154
});
5255
}
56+
57+
private <E extends PhpNamedElement> boolean isValidFqn(final E candidate) {
58+
PhpClass targetClass = null;
59+
60+
if (candidate instanceof Method) {
61+
targetClass = (PhpClass) candidate.getParent();
62+
} else if (candidate instanceof PhpClass) {
63+
targetClass = (PhpClass) candidate;
64+
}
65+
66+
if (targetClass == null) {
67+
return true;
68+
}
69+
70+
return PhpLangUtil.isFqn(targetClass.getFQN()) && !targetClass.getFQN().endsWith("\\");
71+
}
5372
}

0 commit comments

Comments
 (0)