refactor AnnotationAttributeCompletionProviders to also return labels
This commit is contained in:
@@ -28,7 +28,6 @@ import org.eclipse.jdt.core.dom.Name;
|
||||
import org.eclipse.jdt.core.dom.QualifiedName;
|
||||
import org.eclipse.jdt.core.dom.SimpleName;
|
||||
import org.eclipse.jdt.core.dom.StringLiteral;
|
||||
import org.springframework.ide.vscode.boot.java.cron.CronExpressionCompletionProvider;
|
||||
import org.springframework.ide.vscode.boot.java.handlers.CompletionProvider;
|
||||
import org.springframework.ide.vscode.commons.java.IJavaProject;
|
||||
import org.springframework.ide.vscode.commons.languageserver.completion.DocumentEdits;
|
||||
@@ -123,40 +122,22 @@ public class AnnotationAttributeCompletionProcessor implements CompletionProvide
|
||||
|
||||
AnnotationAttributeCompletionProvider completionProvider = this.completionProviders.get(attributeName);
|
||||
if (completionProvider != null) {
|
||||
List<String> candidates = completionProvider.getCompletionCandidates(project);
|
||||
|
||||
if (completionProvider instanceof CronExpressionCompletionProvider) {
|
||||
Map<String, String> proposals = completionProvider.getCompletionCandidatesWithLabels(project);
|
||||
Map<String, String> filteredProposals = proposals.entrySet().stream()
|
||||
.filter(candidate -> candidate.getKey().toLowerCase().contains(filterPrefix.toLowerCase()))
|
||||
.filter(candidate -> !alreadyMentionedValues.contains(candidate.getKey()))
|
||||
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
|
||||
double score = filteredProposals.size();
|
||||
for (Map.Entry<String, String> entry : filteredProposals.entrySet()) {
|
||||
String candidate = entry.getKey();
|
||||
DocumentEdits edits = new DocumentEdits(doc, false);
|
||||
edits.replace(startOffset, endOffset, createReplacementText.apply(candidate));
|
||||
AnnotationAttributeCompletionProposal proposal = new AnnotationAttributeCompletionProposal(edits,
|
||||
candidate, entry.getValue(), null, score--);
|
||||
completions.add(proposal);
|
||||
Map<String, String> proposals = completionProvider.getCompletionCandidates(project);
|
||||
Map<String, String> filteredProposals = proposals.entrySet().stream()
|
||||
.filter(candidate -> candidate.getKey().toLowerCase().contains(filterPrefix.toLowerCase()))
|
||||
.filter(candidate -> !alreadyMentionedValues.contains(candidate.getKey()))
|
||||
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
|
||||
double score = filteredProposals.size();
|
||||
for (Map.Entry<String, String> entry : filteredProposals.entrySet()) {
|
||||
String candidate = entry.getKey();
|
||||
DocumentEdits edits = new DocumentEdits(doc, false);
|
||||
edits.replace(startOffset, endOffset, createReplacementText.apply(candidate));
|
||||
|
||||
AnnotationAttributeCompletionProposal proposal = new AnnotationAttributeCompletionProposal(edits,
|
||||
candidate, entry.getValue(), null, score--);
|
||||
completions.add(proposal);
|
||||
|
||||
}
|
||||
} else {
|
||||
|
||||
List<String> filteredCandidates = candidates.stream()
|
||||
// .filter(candidate -> candidate.toLowerCase().startsWith(filterPrefix.toLowerCase()))
|
||||
.filter(candidate -> candidate.toLowerCase().contains(filterPrefix.toLowerCase()))
|
||||
.filter(candidate -> !alreadyMentionedValues.contains(candidate)).collect(Collectors.toList());
|
||||
double score = filteredCandidates.size();
|
||||
for (String candidate : filteredCandidates) {
|
||||
|
||||
DocumentEdits edits = new DocumentEdits(doc, false);
|
||||
edits.replace(startOffset, endOffset, createReplacementText.apply(candidate));
|
||||
|
||||
AnnotationAttributeCompletionProposal proposal = new AnnotationAttributeCompletionProposal(edits,
|
||||
candidate, candidate, null, score--);
|
||||
completions.add(proposal);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,22 +10,12 @@
|
||||
*******************************************************************************/
|
||||
package org.springframework.ide.vscode.boot.java.annotations;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.springframework.ide.vscode.commons.java.IJavaProject;
|
||||
|
||||
public interface AnnotationAttributeCompletionProvider {
|
||||
|
||||
default List<String> getCompletionCandidates(IJavaProject project) {
|
||||
return new ArrayList<>();
|
||||
}
|
||||
|
||||
|
||||
default Map<String, String> getCompletionCandidatesWithLabels(IJavaProject project) {
|
||||
return new HashMap<>();
|
||||
}
|
||||
Map<String, String> getCompletionCandidates(IJavaProject project);
|
||||
|
||||
}
|
||||
|
||||
@@ -11,7 +11,8 @@
|
||||
package org.springframework.ide.vscode.boot.java.beans;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import org.springframework.ide.vscode.boot.index.SpringMetamodelIndex;
|
||||
import org.springframework.ide.vscode.boot.java.annotations.AnnotationAttributeCompletionProvider;
|
||||
@@ -235,11 +236,11 @@ public class DependsOnCompletionProcessor implements AnnotationAttributeCompleti
|
||||
// }
|
||||
|
||||
@Override
|
||||
public List<String> getCompletionCandidates(IJavaProject project) {
|
||||
public Map<String, String> getCompletionCandidates(IJavaProject project) {
|
||||
return Arrays.stream(this.springIndex.getBeansOfProject(project.getElementName()))
|
||||
.map(bean -> bean.getName())
|
||||
.distinct()
|
||||
.toList();
|
||||
.collect(Collectors.toMap(key -> key, value -> value));
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -11,7 +11,8 @@
|
||||
package org.springframework.ide.vscode.boot.java.beans;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
import org.springframework.ide.vscode.boot.index.SpringMetamodelIndex;
|
||||
@@ -32,7 +33,7 @@ public class NamedCompletionProvider implements AnnotationAttributeCompletionPro
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<String> getCompletionCandidates(IJavaProject project) {
|
||||
public Map<String, String> getCompletionCandidates(IJavaProject project) {
|
||||
|
||||
Bean[] beans = this.springIndex.getBeansOfProject(project.getElementName());
|
||||
|
||||
@@ -40,7 +41,7 @@ public class NamedCompletionProvider implements AnnotationAttributeCompletionPro
|
||||
findAllNamedValues(beans),
|
||||
Arrays.stream(beans).map(bean -> bean.getName()))
|
||||
.distinct()
|
||||
.toList();
|
||||
.collect(Collectors.toMap(key -> key, value -> value));
|
||||
}
|
||||
|
||||
private Stream<String> findAllNamedValues(Bean[] beans) {
|
||||
|
||||
@@ -11,7 +11,8 @@
|
||||
package org.springframework.ide.vscode.boot.java.beans;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
import org.springframework.ide.vscode.boot.index.SpringMetamodelIndex;
|
||||
@@ -32,13 +33,13 @@ public class ProfileCompletionProvider implements AnnotationAttributeCompletionP
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<String> getCompletionCandidates(IJavaProject project) {
|
||||
public Map<String, String> getCompletionCandidates(IJavaProject project) {
|
||||
|
||||
Bean[] beans = this.springIndex.getBeansOfProject(project.getElementName());
|
||||
|
||||
return findAllProfiles(beans)
|
||||
.distinct()
|
||||
.toList();
|
||||
.collect(Collectors.toMap(key -> key, value -> value));
|
||||
}
|
||||
|
||||
private Stream<String> findAllProfiles(Bean[] beans) {
|
||||
|
||||
@@ -11,7 +11,8 @@
|
||||
package org.springframework.ide.vscode.boot.java.beans;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
import org.springframework.ide.vscode.boot.index.SpringMetamodelIndex;
|
||||
@@ -32,7 +33,7 @@ public class QualifierCompletionProvider implements AnnotationAttributeCompletio
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<String> getCompletionCandidates(IJavaProject project) {
|
||||
public Map<String, String> getCompletionCandidates(IJavaProject project) {
|
||||
|
||||
Bean[] beans = this.springIndex.getBeansOfProject(project.getElementName());
|
||||
|
||||
@@ -40,7 +41,7 @@ public class QualifierCompletionProvider implements AnnotationAttributeCompletio
|
||||
findAllQualifiers(beans),
|
||||
Arrays.stream(beans).map(bean -> bean.getName()))
|
||||
.distinct()
|
||||
.toList();
|
||||
.collect(Collectors.toMap(key -> key, value -> value));
|
||||
}
|
||||
|
||||
private Stream<String> findAllQualifiers(Bean[] beans) {
|
||||
|
||||
@@ -11,7 +11,8 @@
|
||||
package org.springframework.ide.vscode.boot.java.beans;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import org.springframework.ide.vscode.boot.index.SpringMetamodelIndex;
|
||||
import org.springframework.ide.vscode.boot.java.annotations.AnnotationAttributeCompletionProvider;
|
||||
@@ -30,13 +31,13 @@ public class ResourceCompletionProvider implements AnnotationAttributeCompletion
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<String> getCompletionCandidates(IJavaProject project) {
|
||||
public Map<String, String> getCompletionCandidates(IJavaProject project) {
|
||||
|
||||
Bean[] beans = this.springIndex.getBeansOfProject(project.getElementName());
|
||||
|
||||
return Arrays.stream(beans).map(bean -> bean.getName())
|
||||
.distinct()
|
||||
.toList();
|
||||
.collect(Collectors.toMap(key -> key, value -> value));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -12,7 +12,8 @@ package org.springframework.ide.vscode.boot.java.conditionalonresource;
|
||||
|
||||
import java.nio.file.Paths;
|
||||
import java.util.Comparator;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import org.springframework.ide.vscode.boot.java.annotations.AnnotationAttributeCompletionProvider;
|
||||
import org.springframework.ide.vscode.commons.java.IClasspathUtil;
|
||||
@@ -23,8 +24,8 @@ import org.springframework.ide.vscode.commons.java.IJavaProject;
|
||||
*/
|
||||
public class ConditionalOnResourceCompletionProcessor implements AnnotationAttributeCompletionProvider {
|
||||
|
||||
private List<String> findResources(IJavaProject project) {
|
||||
List<String> resources = IClasspathUtil.getClasspathResources(project.getClasspath()).stream()
|
||||
private Map<String, String> findResources(IJavaProject project) {
|
||||
Map<String, String> resources = IClasspathUtil.getClasspathResources(project.getClasspath()).stream()
|
||||
.distinct()
|
||||
.sorted(new Comparator<String>() {
|
||||
@Override
|
||||
@@ -34,13 +35,13 @@ public class ConditionalOnResourceCompletionProcessor implements AnnotationAttri
|
||||
})
|
||||
.map(r -> r.replaceAll("\\\\", "/"))
|
||||
.map(r -> "classpath:" + r)
|
||||
.toList();
|
||||
.collect(Collectors.toMap(key -> key, value -> value));
|
||||
|
||||
return resources;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<String> getCompletionCandidates(IJavaProject project) {
|
||||
public Map<String, String> getCompletionCandidates(IJavaProject project) {
|
||||
return findResources(project);
|
||||
}
|
||||
|
||||
|
||||
@@ -39,7 +39,7 @@ public class CronExpressionCompletionProvider implements AnnotationAttributeComp
|
||||
|
||||
|
||||
@Override
|
||||
public Map<String, String> getCompletionCandidatesWithLabels(IJavaProject project) {
|
||||
public Map<String, String> getCompletionCandidates(IJavaProject project) {
|
||||
return CRON_EXPRESSIONS_MAP;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
*******************************************************************************/
|
||||
package org.springframework.ide.vscode.boot.java.scope;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.springframework.ide.vscode.boot.java.annotations.AnnotationAttributeCompletionProvider;
|
||||
import org.springframework.ide.vscode.commons.java.IJavaProject;
|
||||
@@ -20,18 +20,18 @@ import org.springframework.ide.vscode.commons.java.IJavaProject;
|
||||
*/
|
||||
public class ScopeCompletionProcessor implements AnnotationAttributeCompletionProvider {
|
||||
|
||||
private static final List<String> SCOPE_COMPLETIONS = List.of(
|
||||
"application",
|
||||
"globalSession",
|
||||
"prototype",
|
||||
"request",
|
||||
"session",
|
||||
"singleton",
|
||||
"websocket"
|
||||
);
|
||||
private static final Map<String, String> SCOPE_COMPLETIONS = Map.of(
|
||||
"application", "application",
|
||||
"globalSession", "globalSession",
|
||||
"prototype", "prototype",
|
||||
"request", "request",
|
||||
"session", "session",
|
||||
"singleton", "singleton",
|
||||
"websocket", "websocket"
|
||||
);
|
||||
|
||||
@Override
|
||||
public List<String> getCompletionCandidates(IJavaProject project) {
|
||||
public Map<String, String> getCompletionCandidates(IJavaProject project) {
|
||||
return SCOPE_COMPLETIONS;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user