Add index of beans by dependency to beans model
Also, replace model implementation with immutable / builder style data structures.
This commit is contained in:
@@ -111,8 +111,8 @@ public class AutowiredHoverProvider implements HoverProvider {
|
||||
try {
|
||||
String type = findDeclaredType(annotation);
|
||||
if (type != null && beansModel != null) {
|
||||
LiveBean[] beansOfType = beansModel.getBeansOfType(type);
|
||||
if (beansOfType.length > 0) {
|
||||
List<LiveBean> beansOfType = beansModel.getBeansOfType(type);
|
||||
if (!beansOfType.isEmpty()) {
|
||||
Range hoverRange = doc.toRange(annotation.getStartPosition(), annotation.getLength());
|
||||
return hoverRange;
|
||||
}
|
||||
@@ -128,9 +128,9 @@ public class AutowiredHoverProvider implements HoverProvider {
|
||||
public void addLiveHoverContent(Annotation annotation, TextDocument doc, LiveBeansModel beansModel, SpringBootAppProvider bootApp, List<Either<String, MarkedString>> hoverContent) {
|
||||
String type = findDeclaredType(annotation);
|
||||
if (type != null && beansModel != null) {
|
||||
LiveBean[] beansOfType = beansModel.getBeansOfType(type);
|
||||
List<LiveBean> beansOfType = beansModel.getBeansOfType(type);
|
||||
|
||||
if (beansOfType.length > 0) {
|
||||
if (!beansOfType.isEmpty()) {
|
||||
String processId = bootApp.getProcessID();
|
||||
String processName = bootApp.getProcessName();
|
||||
|
||||
@@ -142,7 +142,7 @@ public class AutowiredHoverProvider implements HoverProvider {
|
||||
hoverContent.add(Either.forLeft("injected beans:"));
|
||||
|
||||
for (String dependency : dependencies) {
|
||||
LiveBean[] dependencyBeans = beansModel.getBeansOfName(dependency);
|
||||
List<LiveBean> dependencyBeans = beansModel.getBeansOfName(dependency);
|
||||
for (LiveBean dependencyBean : dependencyBeans) {
|
||||
hoverContent.add(Either.forLeft("- '" + dependencyBean.getId() + "' - from: " + dependencyBean.getResource()));
|
||||
}
|
||||
|
||||
@@ -126,9 +126,9 @@ public class ComponentHoverProvider implements HoverProvider {
|
||||
TypeDeclaration type = findDeclaredType(annotation);
|
||||
if (type != null && beansModel != null) {
|
||||
String typeName = type.resolveBinding().getQualifiedName();
|
||||
LiveBean[] beansOfType = beansModel.getBeansOfType(typeName);
|
||||
List<LiveBean> beansOfType = beansModel.getBeansOfType(typeName);
|
||||
|
||||
if (beansOfType.length > 0) {
|
||||
if (!beansOfType.isEmpty()) {
|
||||
MethodDeclaration constructor = findConstructor(type);
|
||||
if (constructor != null && !hasAutowiredAnnotation(constructor)) {
|
||||
Range hoverRange = doc.toRange(constructor.getName().getStartPosition(), constructor.getName().getLength());
|
||||
@@ -161,9 +161,9 @@ public class ComponentHoverProvider implements HoverProvider {
|
||||
public void addLiveHoverContent(TypeDeclaration declaringType, TextDocument doc, LiveBeansModel beansModel, SpringBootAppProvider bootApp, List<Either<String, MarkedString>> hoverContent) {
|
||||
String type = declaringType.resolveBinding().getQualifiedName();
|
||||
if (type != null && beansModel != null) {
|
||||
LiveBean[] beansOfType = beansModel.getBeansOfType(type);
|
||||
List<LiveBean> beansOfType = beansModel.getBeansOfType(type);
|
||||
|
||||
if (beansOfType.length > 0) {
|
||||
if (!beansOfType.isEmpty()) {
|
||||
String processId = bootApp.getProcessID();
|
||||
String processName = bootApp.getProcessName();
|
||||
|
||||
@@ -175,7 +175,7 @@ public class ComponentHoverProvider implements HoverProvider {
|
||||
hoverContent.add(Either.forLeft("injected beans:"));
|
||||
|
||||
for (String dependency : dependencies) {
|
||||
LiveBean[] dependencyBeans = beansModel.getBeansOfName(dependency);
|
||||
List<LiveBean> dependencyBeans = beansModel.getBeansOfName(dependency);
|
||||
for (LiveBean dependencyBean : dependencyBeans) {
|
||||
hoverContent.add(Either.forLeft("- '" + dependencyBean.getId() + "' - from: " + dependencyBean.getResource()));
|
||||
}
|
||||
|
||||
@@ -264,16 +264,12 @@ public class SpringIndexer {
|
||||
|
||||
private void scanFiles(File directory) {
|
||||
try {
|
||||
System.out.println("scan directory...");
|
||||
|
||||
Map<Optional<IJavaProject>, List<String>> projects = Files.walk(directory.toPath())
|
||||
.filter(path -> path.getFileName().toString().endsWith(".java"))
|
||||
.filter(Files::isRegularFile)
|
||||
.map(path -> path.toAbsolutePath().toString())
|
||||
.collect(Collectors.groupingBy((javaFile) -> projectFinder.find(new TextDocumentIdentifier(new File(javaFile).toURI().toString()))));
|
||||
|
||||
System.out.println("scan directory done!!!");
|
||||
|
||||
projects.forEach((maybeProject, files) -> maybeProject.ifPresent(project -> scanProject(project, files.toArray(new String[0]))));
|
||||
}
|
||||
catch (Exception e) {
|
||||
@@ -283,14 +279,10 @@ public class SpringIndexer {
|
||||
|
||||
private void scanProject(IJavaProject project, String[] files) {
|
||||
try {
|
||||
System.out.println("create parser... " + project.getElementName());
|
||||
ASTParser parser = ASTParser.newParser(AST.JLS8);
|
||||
String[] classpathEntries = getClasspathEntries(project);
|
||||
System.out.println("create parser done!!!");
|
||||
|
||||
System.out.println("parse files... " + project.getElementName());
|
||||
scanFiles(parser, files, classpathEntries);
|
||||
System.out.println("parse files done!!!");
|
||||
}
|
||||
catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
|
||||
Reference in New Issue
Block a user