Issue
Searching about a java package name fails using as location 11 and query com.todo.app.controller when the java project to be analyzed contains a java file TaskController where there is a line with package com.todo.app.controller`
The problem is related to the code of the existing ReferenceSymbolProvider class as we got a class cast exception
// Code
public class ReferenceSymbolProvider implements SymbolProvider, WithQuery {
private String query;
@Override
public List<SymbolInformation> get(SearchMatch match) {
SymbolKind k = convertSymbolKind((IJavaElement) match.getElement());
List<SymbolInformation> symbols = new ArrayList<>();
// For Method Calls we will need to do the local variable trick
try {
ReferenceMatch m = (ReferenceMatch) match; // We got a Class cast exception
// Error
!MESSAGE unable to convert for variable: java.lang.ClassCastException: class org.eclipse.jdt.core.search.PackageDeclarationMatch cannot be cast to class org.eclipse.jdt.core.search.ReferenceMatch (org.eclipse.jdt.core.search.PackageDeclarationMatch and org.eclipse.jdt.core.search.ReferenceMatch are in unnamed module of loader org.eclipse.osgi.internal.loader.EquinoxClassLoader @536856f1)
The class cast exception can be fixed using this code
PackageDeclarationMatch m = (PackageDeclarationMatch)match;
but then the code should be reviewed in order to:
- Handle properly the class type:
PackageDeclarationMatch, ReferencenMatch ?, etc
- Manage the
IPackageFragment part of the class SymbolProvider and method default Location getLocation(IJavaElement element, SearchMatch match) to return the location, range for a package discovered
Issue
Searching about a java package name fails using as location
11and querycom.todo.app.controllerwhen the java project to be analyzed contains a java fileTaskControllerwhere there is a line withpackagecom.todo.app.controller`The problem is related to the code of the existing
ReferenceSymbolProviderclass as we got a class cast exceptionThe class cast exception can be fixed using this code
but then the code should be reviewed in order to:
PackageDeclarationMatch,ReferencenMatch?, etcIPackageFragmentpart of the classSymbolProviderand methoddefault Location getLocation(IJavaElement element, SearchMatch match)to return the location, range for a package discovered