Skip to content

Commit 7e9a1b8

Browse files
authored
Merge pull request #2454 from Haehnchen/feature/symfony-command-loading
Symfony command collecting dont need to resolve PhpClass psi elements
2 parents 01d2d9a + 0341797 commit 7e9a1b8

File tree

5 files changed

+24
-22
lines changed

5 files changed

+24
-22
lines changed

src/main/java/fr/adrienbrault/idea/symfony2plugin/action/NewFileActionUtil.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ public static String getCommandPrefix(@NotNull PsiDirectory psiDirectory) {
121121
namespace = "\\" + org.apache.commons.lang3.StringUtils.strip(namespace, "\\") + "\\";
122122

123123
for (SymfonyCommand command : commands) {
124-
if (command.getPhpClass().getFQN().startsWith(namespace)) {
124+
if (command.getFqn().startsWith(namespace)) {
125125
String name = command.getName();
126126
int i = name.indexOf(":");
127127
if (i > 0) {

src/main/java/fr/adrienbrault/idea/symfony2plugin/navigation/SymfonyCommandSymbolContributor.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,10 @@
77
import com.intellij.util.Processor;
88
import com.intellij.util.indexing.FindSymbolParameters;
99
import com.intellij.util.indexing.IdFilter;
10+
import com.jetbrains.php.lang.psi.elements.PhpClass;
1011
import fr.adrienbrault.idea.symfony2plugin.Symfony2Icons;
1112
import fr.adrienbrault.idea.symfony2plugin.Symfony2ProjectComponent;
13+
import fr.adrienbrault.idea.symfony2plugin.util.PhpElementsUtil;
1214
import fr.adrienbrault.idea.symfony2plugin.util.SymfonyCommandUtil;
1315
import fr.adrienbrault.idea.symfony2plugin.util.dict.SymfonyCommand;
1416
import org.jetbrains.annotations.NotNull;
@@ -40,7 +42,10 @@ public void processElementsWithName(@NotNull String name, @NotNull Processor<? s
4042

4143
for (SymfonyCommand symfonyCommand : SymfonyCommandUtil.getCommands(project)) {
4244
if(symfonyCommand.getName().equals(name)) {
43-
processor.process(NavigationItemExStateless.create(symfonyCommand.getPhpClass(), name, Symfony2Icons.SYMFONY, "Command", true));
45+
PhpClass classInterface = PhpElementsUtil.getClassInterface(project, symfonyCommand.getFqn());
46+
if (classInterface != null) {
47+
processor.process(NavigationItemExStateless.create(classInterface, name, Symfony2Icons.SYMFONY, "Command", true));
48+
}
4449
}
4550
}
4651
}

src/main/java/fr/adrienbrault/idea/symfony2plugin/util/SymfonyCommandUtil.java

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
import java.util.Collection;
1818
import java.util.HashMap;
1919
import java.util.Map;
20+
import java.util.stream.Collectors;
2021

2122
/**
2223
* @author Daniel Espendiller <daniel@espendiller.net>
@@ -60,16 +61,8 @@ public static Collection<SymfonyCommand> getCommands(@NotNull Project project) {
6061
false
6162
);
6263

63-
Collection<SymfonyCommand> symfonyCommands = new ArrayList<>();
64-
for (Map.Entry<String, String> entry : cachedValue.entrySet()) {
65-
Collection<PhpClass> anyByFQN = PhpIndex.getInstance(project).getAnyByFQN(entry.getValue());
66-
if (anyByFQN.isEmpty()) {
67-
continue;
68-
}
69-
70-
symfonyCommands.add(new SymfonyCommand(entry.getKey(), anyByFQN.iterator().next()));
71-
}
72-
73-
return symfonyCommands;
64+
return cachedValue.entrySet().stream()
65+
.map(entry -> new SymfonyCommand(entry.getKey(), entry.getValue()))
66+
.collect(Collectors.toList());
7467
}
7568
}
Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package fr.adrienbrault.idea.symfony2plugin.util.dict;
22

3-
import com.jetbrains.php.lang.psi.elements.PhpClass;
43
import org.jetbrains.annotations.NotNull;
54

65
/**
@@ -11,20 +10,26 @@ public class SymfonyCommand {
1110
private final String name;
1211

1312
@NotNull
14-
private final PhpClass phpClass;
13+
private final String fqn;
14+
15+
/**
16+
* @param fqn starting with "\"
17+
*/
18+
public SymfonyCommand(@NotNull String name, @NotNull String fqn) {
19+
if (!fqn.startsWith("\\")) {
20+
throw new IllegalArgumentException("Invalid fqn: " + fqn);
21+
}
1522

16-
public SymfonyCommand(@NotNull String name, @NotNull PhpClass phpClass) {
1723
this.name = name;
18-
this.phpClass = phpClass;
24+
this.fqn = fqn;
1925
}
20-
26+
2127
@NotNull
2228
public String getName() {
2329
return name;
2430
}
2531

26-
@NotNull
27-
public PhpClass getPhpClass() {
28-
return phpClass;
32+
public @NotNull String getFqn() {
33+
return fqn;
2934
}
3035
}

src/test/java/fr/adrienbrault/idea/symfony2plugin/tests/util/SymfonyCommandUtilTest.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@ public void testGetCommands() {
3232
.orElseThrow();
3333

3434
assertNotNull(command);
35-
assertNotNull(command.getPhpClass());
3635
}
3736
}
3837
}

0 commit comments

Comments
 (0)