Skip to content

Commit

Permalink
Add CLASS location (#120)
Browse files Browse the repository at this point in the history
Signed-off-by: Juan Manuel Leflet Estrada <[email protected]>
  • Loading branch information
jmle authored Jan 20, 2025
1 parent 7fb2eb5 commit 05d605d
Show file tree
Hide file tree
Showing 3 changed files with 66 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -140,6 +140,7 @@ private static SearchPattern mapLocationToSearchPatternLocation(int location, St
* "package": 11,
* "field": 12,
* "method_declaration": 13,
* "class_declaration": 14,
*
* @param location
* @param query
Expand Down Expand Up @@ -179,6 +180,8 @@ private static SearchPattern getPatternSingleQuery(int location, String query) t
return SearchPattern.createPattern(query, IJavaSearchConstants.TYPE, IJavaSearchConstants.FIELD_DECLARATION_TYPE_REFERENCE, pattern);
case 13:
return SearchPattern.createPattern(query, IJavaSearchConstants.METHOD, IJavaSearchConstants.DECLARATIONS, SearchPattern.R_EXACT_MATCH | SearchPattern.R_PATTERN_MATCH);
case 14:
return SearchPattern.createPattern(query, IJavaSearchConstants.CLASS, IJavaSearchConstants.DECLARATIONS, SearchPattern.R_EXACT_MATCH | SearchPattern.R_PATTERN_MATCH);
}
throw new Exception("unable to create search pattern");
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
package io.konveyor.tackle.core.internal.symbol;

import io.konveyor.tackle.core.internal.query.AnnotationQuery;
import org.eclipse.jdt.core.IJavaElement;
import org.eclipse.jdt.core.IMethod;
import org.eclipse.jdt.core.IType;
import org.eclipse.jdt.core.search.MethodDeclarationMatch;
import org.eclipse.jdt.core.search.SearchMatch;
import org.eclipse.jdt.core.search.TypeDeclarationMatch;
import org.eclipse.jdt.internal.core.ResolvedSourceMethod;
import org.eclipse.jdt.internal.core.ResolvedSourceType;
import org.eclipse.jdt.internal.core.SourceRefElement;
import org.eclipse.lsp4j.SymbolInformation;
import org.eclipse.lsp4j.SymbolKind;

import java.util.ArrayList;
import java.util.List;

import static org.eclipse.jdt.ls.core.internal.JavaLanguageServerPlugin.logInfo;

public class ClassDeclarationSymbolProvider implements SymbolProvider, WithQuery, WithAnnotationQuery {
private String query;
private AnnotationQuery annotationQuery;

public List<SymbolInformation> get(SearchMatch match) {
SymbolKind k = convertSymbolKind((IJavaElement) match.getElement());
List<SymbolInformation> symbols = new ArrayList<>();
try {
TypeDeclarationMatch m = (TypeDeclarationMatch) match;
IType e = (IType) m.getElement();
SymbolInformation symbol = new SymbolInformation();
symbol.setName(e.getElementName());
symbol.setKind(convertSymbolKind(e));
symbol.setContainerName(e.getParent().getElementName());
symbol.setLocation(getLocation(e, match));

List<Class<? extends SourceRefElement>> classes = new ArrayList<>();
classes.add(ResolvedSourceType.class);
if (matchesAnnotationQuery(match, classes)) {
symbols.add(symbol);
}
} catch (Exception e) {
logInfo("unable to convert for variable: " + e);
}

return symbols;
}

public void setQuery(String query) {
this.query = query;
}

@Override
public AnnotationQuery getAnnotationQuery() {
return this.annotationQuery;
}

public void setAnnotationQuery(AnnotationQuery annotationQuery) {
this.annotationQuery = annotationQuery;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ public SymbolProviderResolver() {
map.put(11, new ReferenceSymbolProvider());
map.put(12, new FieldSymbolProvider());
map.put(13, new MethodDeclarationSymbolProvider());
map.put(14, new ClassDeclarationSymbolProvider());
}

public SymbolProvider resolve(Integer i) {
Expand Down

0 comments on commit 05d605d

Please sign in to comment.