6868import org .eclipse .jdt .ls .core .internal .handlers .OverrideMethodsHandler .OverridableMethodsResponse ;
6969import org .eclipse .jdt .ls .core .internal .handlers .WorkspaceSymbolHandler .SearchSymbolParams ;
7070import org .eclipse .jdt .ls .core .internal .lsp .JavaProtocolExtensions ;
71+ import org .eclipse .jdt .ls .core .internal .lsp .TextDocumentProtocolExtensions ;
72+ import org .eclipse .jdt .ls .core .internal .lsp .TypeHierarchyProtocolExtensions ;
7173import org .eclipse .jdt .ls .core .internal .managers .ContentProviderManager ;
7274import org .eclipse .jdt .ls .core .internal .managers .ProjectsManager ;
7375import org .eclipse .jdt .ls .core .internal .preferences .PreferenceManager ;
7476import org .eclipse .jdt .ls .core .internal .preferences .Preferences ;
77+ import org .eclipse .jdt .ls .core .internal .typeHierarchy .TypeHierarchyItem ;
78+ import org .eclipse .jdt .ls .core .internal .typeHierarchy .TypeHierarchyPrepareParams ;
79+ import org .eclipse .jdt .ls .core .internal .typeHierarchy .TypeHierarchySubtypesParams ;
80+ import org .eclipse .jdt .ls .core .internal .typeHierarchy .TypeHierarchySupertypesParams ;
7581import org .eclipse .lsp4j .CallHierarchyIncomingCall ;
7682import org .eclipse .lsp4j .CallHierarchyIncomingCallsParams ;
7783import org .eclipse .lsp4j .CallHierarchyItem ;
151157 *
152158 */
153159public class JDTLanguageServer extends BaseJDTLanguageServer implements LanguageServer , TextDocumentService , WorkspaceService ,
154- JavaProtocolExtensions , InlayHintProvider {
160+ JavaProtocolExtensions , InlayHintProvider , TextDocumentProtocolExtensions , TypeHierarchyProtocolExtensions {
155161
156162 public static final String JAVA_LSP_JOIN_ON_COMPLETION = "java.lsp.joinOnCompletion" ;
157163 public static final String JAVA_LSP_INITIALIZE_WORKSPACE = "java.lsp.initializeWorkspace" ;
@@ -167,6 +173,7 @@ public class JDTLanguageServer extends BaseJDTLanguageServer implements Language
167173 private ClasspathUpdateHandler classpathUpdateHandler ;
168174 private JVMConfigurator jvmConfigurator ;
169175 private WorkspaceExecuteCommandHandler commandHandler ;
176+ private TypeHierarchyHandler typeHierarchyHandler = new TypeHierarchyHandler ();
170177
171178 private ProgressReporterManager progressReporterManager ;
172179 /**
@@ -1034,6 +1041,23 @@ public CompletableFuture<List<InlayHint>> inlayHint(InlayHintParams params) {
10341041 return computeAsync (monitor -> new InlayHintsHandler (preferenceManager ).inlayHint (params , monitor ));
10351042 }
10361043
1044+ public CompletableFuture <List <TypeHierarchyItem >> prepareTypeHierarchy (TypeHierarchyPrepareParams params ) {
1045+ logInfo (">> textDocument/prepareTypeHierarchy" );
1046+ return computeAsync (monitor -> typeHierarchyHandler .prepareTypeHierarchy (params , monitor ));
1047+ }
1048+
1049+ @ Override
1050+ public CompletableFuture <List <TypeHierarchyItem >> supertypes (TypeHierarchySupertypesParams params ) {
1051+ logInfo (">> typeHierarchy/supertypes" );
1052+ return computeAsync (monitor -> typeHierarchyHandler .getSupertypeItems (params , monitor ));
1053+ }
1054+
1055+ @ Override
1056+ public CompletableFuture <List <TypeHierarchyItem >> subtypes (TypeHierarchySubtypesParams params ) {
1057+ logInfo (">> typeHierarchy/subtypes" );
1058+ return computeAsync (monitor -> typeHierarchyHandler .getSubtypeItems (params , monitor ));
1059+ }
1060+
10371061 private <R > CompletableFuture <R > computeAsyncWithClientProgress (Function <IProgressMonitor , R > code ) {
10381062 return CompletableFutures .computeAsync ((cc ) -> {
10391063 IProgressMonitor monitor = progressReporterManager .getProgressReporter (cc );
0 commit comments