added debug output to webflux code lens provider

This commit is contained in:
Martin Lippert
2019-03-31 17:13:26 +02:00
parent 2321ce4128
commit 940b726db4

View File

@@ -30,6 +30,9 @@ import org.eclipse.jdt.core.dom.Type;
import org.eclipse.jdt.core.dom.TypeDeclaration;
import org.eclipse.lsp4j.Location;
import org.eclipse.lsp4j.Range;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.ide.vscode.boot.app.SpringSymbolIndex;
import org.springframework.ide.vscode.boot.java.handlers.AbstractSymbolProvider;
import org.springframework.ide.vscode.boot.java.handlers.EnhancedSymbolInformation;
import org.springframework.ide.vscode.boot.java.handlers.SymbolAddOnInformation;
@@ -37,6 +40,7 @@ import org.springframework.ide.vscode.boot.java.utils.CachedSymbol;
import org.springframework.ide.vscode.boot.java.utils.SpringIndexerJava.SCAN_PASS;
import org.springframework.ide.vscode.boot.java.utils.SpringIndexerJavaContext;
import org.springframework.ide.vscode.commons.util.BadLocationException;
import org.springframework.ide.vscode.commons.util.Log;
import org.springframework.ide.vscode.commons.util.text.TextDocument;
/**
@@ -44,22 +48,29 @@ import org.springframework.ide.vscode.commons.util.text.TextDocument;
*/
public class WebfluxRouterSymbolProvider extends AbstractSymbolProvider {
private static final Logger log = LoggerFactory.getLogger(WebfluxRouterSymbolProvider.class);
@Override
public void addSymbols(MethodDeclaration methodDeclaration, SpringIndexerJavaContext context, TextDocument doc) {
Type returnType = methodDeclaration.getReturnType2();
if (returnType != null) {
ITypeBinding resolvedBinding = returnType.resolveBinding();
if (resolvedBinding != null) {
if (WebfluxUtils.ROUTER_FUNCTION_TYPE.equals(resolvedBinding.getBinaryName())) {
Block methodBody = methodDeclaration.getBody();
if (methodBody != null && methodBody.statements() != null && methodBody.statements().size() > 0) {
addSymbolsForRouterFunction(methodBody, context, doc);
}
else if (SCAN_PASS.ONE.equals(context.getPass())) {
context.getNextPassFiles().add(context.getFile());
}
ITypeBinding resolvedBinding = returnType.resolveBinding();
if (resolvedBinding == null) {
log.info("type binding of method declatation return type IS NULL: " + methodDeclaration.toString());
}
if (resolvedBinding != null && WebfluxUtils.ROUTER_FUNCTION_TYPE.equals(resolvedBinding.getBinaryName())) {
Block methodBody = methodDeclaration.getBody();
if (methodBody != null && methodBody.statements() != null && methodBody.statements().size() > 0) {
addSymbolsForRouterFunction(methodBody, context, doc);
}
else if (SCAN_PASS.ONE.equals(context.getPass())) {
context.getNextPassFiles().add(context.getFile());
}
}
}
}
@@ -71,6 +82,10 @@ public class WebfluxRouterSymbolProvider extends AbstractSymbolProvider {
public boolean visit(MethodInvocation node) {
IMethodBinding methodBinding = node.resolveMethodBinding();
if (methodBinding == null) {
log.info("method binding of method invocation IS NULL: " + node.toString());
}
if (methodBinding != null && WebfluxUtils.isRouteMethodInvocation(methodBinding)) {
extractMappingSymbol(node, doc, context);
}
@@ -143,6 +158,10 @@ public class WebfluxRouterSymbolProvider extends AbstractSymbolProvider {
extractNestedValue(routerInvocation, path, (methodInvocation) -> {
IMethodBinding methodBinding = methodInvocation.resolveMethodBinding();
if (methodBinding == null) {
log.info("method binding of method invocation IS NULL: " + methodInvocation.toString());
}
try {
if (methodBinding != null && WebfluxUtils.REQUEST_PREDICATE_PATH_METHOD.equals(methodBinding.getName())) {
StringLiteral stringLiteral = WebfluxUtils.extractStringLiteralArgument(methodInvocation);
@@ -175,6 +194,10 @@ public class WebfluxRouterSymbolProvider extends AbstractSymbolProvider {
extractNestedValue(routerInvocation, methods, (methodInvocation) -> {
IMethodBinding methodBinding = methodInvocation.resolveMethodBinding();
if (methodBinding == null) {
log.info("method binding of method invocation IS NULL: " + methodInvocation.toString());
}
try {
if (methodBinding != null && WebfluxUtils.REQUEST_PREDICATE_METHOD_METHOD.equals(methodBinding.getName())) {
QualifiedName qualifiedName = WebfluxUtils.extractQualifiedNameArgument(methodInvocation);
@@ -208,6 +231,10 @@ public class WebfluxRouterSymbolProvider extends AbstractSymbolProvider {
extractNestedValue(routerInvocation, acceptTypes, (methodInvocation) -> {
IMethodBinding methodBinding = methodInvocation.resolveMethodBinding();
if (methodBinding == null) {
log.info("method binding of method invocation IS NULL: " + methodInvocation.toString());
}
try {
if (methodBinding != null && WebfluxUtils.REQUEST_PREDICATE_ACCEPT_TYPE_METHOD.equals(methodBinding.getName())) {
SimpleName nameArgument = WebfluxUtils.extractSimpleNameArgument(methodInvocation);
@@ -241,6 +268,10 @@ public class WebfluxRouterSymbolProvider extends AbstractSymbolProvider {
extractNestedValue(routerInvocation, contentTypes, (methodInvocation) -> {
IMethodBinding methodBinding = methodInvocation.resolveMethodBinding();
if (methodBinding == null) {
log.info("method binding of method invocation IS NULL: " + methodInvocation.toString());
}
try {
if (methodBinding != null && WebfluxUtils.REQUEST_PREDICATE_CONTENT_TYPE_METHOD.equals(methodBinding.getName())) {
SimpleName nameArgument = WebfluxUtils.extractSimpleNameArgument(methodInvocation);
@@ -269,6 +300,10 @@ public class WebfluxRouterSymbolProvider extends AbstractSymbolProvider {
MethodInvocation methodInvocation = (MethodInvocation) node;
IMethodBinding methodBinding = methodInvocation.resolveMethodBinding();
if (methodBinding == null) {
log.info("method binding of method invocation IS NULL: " + methodInvocation.toString());
}
if (methodBinding != null && methodBinding.getDeclaringClass() != null
&& WebfluxUtils.ROUTER_FUNCTIONS_TYPE.equals(methodBinding.getDeclaringClass().getBinaryName())) {
@@ -302,6 +337,10 @@ public class WebfluxRouterSymbolProvider extends AbstractSymbolProvider {
ExpressionMethodReference methodReference = (ExpressionMethodReference) argument;
IMethodBinding methodBinding = methodReference.resolveMethodBinding();
if (methodBinding == null) {
log.info("method binding of method reference IS NULL: " + methodReference.toString());
}
if (methodBinding != null && methodBinding.getDeclaringClass() != null && methodBinding.getMethodDeclaration() != null) {
String handlerClass = methodBinding.getDeclaringClass().getBinaryName();
if (handlerClass != null) handlerClass = handlerClass.trim();