Skip to content

Commit 8e8bc51

Browse files
committed
Merge branch 'hashset-for-axon-method-usages' of git://github.com/pbadenski/IdeaPlugin into pbadenski-hashset-for-axon-method-usages
Conflicts: src/main/java/org/axonframework/intellij/ide/plugin/publisher/DefaultEventPublisherProvider.java
2 parents 29fd91c + 7e881f6 commit 8e8bc51

File tree

1 file changed

+17
-14
lines changed

1 file changed

+17
-14
lines changed

src/main/java/org/axonframework/intellij/ide/plugin/publisher/DefaultEventPublisherProvider.java

Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -19,31 +19,34 @@
1919
import com.intellij.psi.util.PsiTreeUtil;
2020
import com.intellij.util.Processor;
2121
import com.intellij.util.Query;
22-
import com.intellij.util.containers.ConcurrentMultiMap;
23-
import com.intellij.util.containers.MultiMap;
2422

2523
import java.util.Collections;
26-
import java.util.List;
24+
import java.util.HashSet;
25+
import java.util.Map;
26+
import java.util.Set;
27+
import java.util.concurrent.ConcurrentHashMap;
2728

2829
import static java.util.Arrays.asList;
2930

3031
class DefaultEventPublisherProvider implements EventPublisherProvider {
3132

32-
private final MultiMap<Project, PsiMethod> publisherMethodsPerProject = new ConcurrentMultiMap<Project, PsiMethod>();
33+
private final Map<Project, Set<PsiMethod>> publisherMethodsPerProject = new ConcurrentHashMap<Project, Set<PsiMethod>>();
3334

3435
@Override
3536
public void scanPublishers(final Project project, GlobalSearchScope scope, final Registrar registrar) {
3637
cleanClosedProjects();
37-
publisherMethodsPerProject.putValues(project, findMethods(project, GlobalSearchScope.allScope(project),
38+
publisherMethodsPerProject.putIfAbsent(project, new HashSet<PsiMethod>());
39+
Set<PsiMethod> psiMethods = publisherMethodsPerProject.get(project);
40+
psiMethods.addAll(findMethods(project, GlobalSearchScope.allScope(project),
3841
"org.axonframework.eventsourcing.AbstractEventSourcedAggregateRoot", "apply"));
39-
publisherMethodsPerProject.putValues(project, findMethods(project, GlobalSearchScope.allScope(project),
42+
psiMethods.addAll(findMethods(project, GlobalSearchScope.allScope(project),
4043
"org.axonframework.domain.AbstractAggregateRoot", "registerEvent"));
41-
publisherMethodsPerProject.putValues(project, findMethods(project, GlobalSearchScope.allScope(project),
44+
psiMethods.addAll(findMethods(project, GlobalSearchScope.allScope(project),
4245
"org.axonframework.eventsourcing.AbstractEventSourcedEntity", "apply"));
4346

4447
GlobalSearchScope scopeNarrowedToJavaSourceFiles =
4548
GlobalSearchScope.getScopeRestrictedByFileTypes(scope, StdFileTypes.JAVA);
46-
scanEventPublishers(scopeNarrowedToJavaSourceFiles, registrar);
49+
scanEventPublishers(project, scopeNarrowedToJavaSourceFiles, registrar);
4750
scanCommandPublishers(project, scopeNarrowedToJavaSourceFiles, registrar);
4851
}
4952

@@ -120,8 +123,8 @@ private PsiClass findCommandHandlersAnnotation(Project project) {
120123
GlobalSearchScope.allScope(project));
121124
}
122125

123-
private void scanEventPublishers(GlobalSearchScope scope, final Registrar registrar) {
124-
for (final PsiMethod method : publisherMethodsPerProject.values()) {
126+
private void scanEventPublishers(Project project, GlobalSearchScope scope, final Registrar registrar) {
127+
for (final PsiMethod method : publisherMethodsPerProject.get(project)) {
125128
Query<PsiReference> invocations =
126129
MethodReferencesSearch.search(method, scope, false);
127130
invocations.forEachAsync(new Processor<PsiReference>() {
@@ -160,13 +163,13 @@ private void cleanClosedProjects() {
160163
}
161164
}
162165

163-
private List<PsiMethod> findMethods(Project project, GlobalSearchScope allScope, String className,
164-
String methodName) {
166+
private Set<PsiMethod> findMethods(Project project, GlobalSearchScope allScope, String className,
167+
String methodName) {
165168
PsiClass aggregateClass = JavaPsiFacade.getInstance(project).findClass(className, allScope);
166169
if (aggregateClass != null) {
167-
return asList(aggregateClass.findMethodsByName(methodName, true));
170+
return new HashSet<PsiMethod>(asList(aggregateClass.findMethodsByName(methodName, true)));
168171
}
169-
return Collections.emptyList();
172+
return Collections.emptySet();
170173
}
171174

172175
@Override

0 commit comments

Comments
 (0)