This is an automated email from the ASF dual-hosted git repository.

yamer pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-kie-tools.git


The following commit(s) were added to refs/heads/main by this push:
     new 5372b59c022 kie-issues#114: JavaCodeCompletion module fails to compile 
because of API change (#2453)
5372b59c022 is described below

commit 5372b59c022900266b6157689604edf594819dee
Author: Yeser Amer <[email protected]>
AuthorDate: Mon Jul 1 13:46:35 2024 +0200

    kie-issues#114: JavaCodeCompletion module fails to compile because of API 
change (#2453)
---
 .../ImportJavaClassesWizardFieldListTable.tsx      |  5 +-
 .../ImportJavaClasses/ImportJavaClasses.test.tsx   |  6 +-
 .../__snapshots__/ImportJavaClasses.test.tsx.snap  | 60 ++++++++------
 .../org/kogito/core/internal/DelegateHandler.java  |  4 +-
 .../kogito/core/internal/api/GetPublicResult.java  | 13 ++-
 .../kogito/core/internal/engine/JavaEngine.java    | 25 +++++-
 .../internal/handlers/AutocompleteHandler.java     |  5 ++
 .../internal/handlers/GetAccessorsHandler.java     | 87 +++++++++++---------
 .../internal/handlers/TypeHierarchyHandler.java    | 96 ++++++++++++++++++++++
 .../resources/templates/templateAccessors.java     |  8 +-
 .../main/resources/templates/templateClass.java    |  4 +-
 .../internal/handlers/GetAccessorsHandlerTest.java |  2 +-
 12 files changed, 230 insertions(+), 85 deletions(-)

diff --git 
a/packages/import-java-classes-component/src/components/ImportJavaClasses/ImportJavaClassesWizardFieldListTable.tsx
 
b/packages/import-java-classes-component/src/components/ImportJavaClasses/ImportJavaClassesWizardFieldListTable.tsx
index 8d750de6d14..cb633554394 100644
--- 
a/packages/import-java-classes-component/src/components/ImportJavaClasses/ImportJavaClassesWizardFieldListTable.tsx
+++ 
b/packages/import-java-classes-component/src/components/ImportJavaClasses/ImportJavaClassesWizardFieldListTable.tsx
@@ -65,10 +65,7 @@ const TableJavaClassItem = ({
   const [isExpanded, setExpanded] = useState(true);
 
   const isFetchable = useCallback((field: JavaField) => {
-    /* Temporary disable isFetchable, because we need FQCN of the Classes, no 
longer avaialble */
-    /* https://github.com/apache/incubator-kie-issues/issues/114 */
-    return false;
-    //return field.dmnTypeRef === DMNSimpleType.ANY && 
!JAVA_TO_DMN_MAP.has(getJavaClassSimpleName(field.type));
+    return field.dmnTypeRef === DMNSimpleType.ANY && 
!JAVA_TO_DMN_MAP.has(getJavaClassSimpleName(field.type));
   }, []);
 
   const parentRow = (
diff --git 
a/packages/import-java-classes-component/tests/ImportJavaClasses/ImportJavaClasses.test.tsx
 
b/packages/import-java-classes-component/tests/ImportJavaClasses/ImportJavaClasses.test.tsx
index 72426d10ed2..7466dabb563 100644
--- 
a/packages/import-java-classes-component/tests/ImportJavaClasses/ImportJavaClasses.test.tsx
+++ 
b/packages/import-java-classes-component/tests/ImportJavaClasses/ImportJavaClasses.test.tsx
@@ -118,8 +118,7 @@ describe("ImportJavaClasses component tests", () => {
     expect(baseElement).toMatchSnapshot();
   });
 
-  /* Renable in https://github.com/apache/incubator-kie-issues/issues/114 */
-  test.skip("Should move to second step and fetch a Java Class", async () => {
+  test("Should move to second step and fetch a Java Class", async () => {
     const { baseElement, getByText } = render(
       <ImportJavaClasses
         gwtLayerService={gwtLayerServiceMock}
@@ -145,8 +144,7 @@ describe("ImportJavaClasses component tests", () => {
     expect(baseElement).toMatchSnapshot();
   });
 
-  /* Renable in https://github.com/apache/incubator-kie-issues/issues/114 */
-  test.skip("Should move to second step and fetch, remove a Java Class", async 
() => {
+  test("Should move to second step and fetch, remove a Java Class", async () 
=> {
     const { baseElement, getByText } = render(
       <ImportJavaClasses
         gwtLayerService={gwtLayerServiceMock}
diff --git 
a/packages/import-java-classes-component/tests/ImportJavaClasses/__snapshots__/ImportJavaClasses.test.tsx.snap
 
b/packages/import-java-classes-component/tests/ImportJavaClasses/__snapshots__/ImportJavaClasses.test.tsx.snap
index 5efeafbded2..f07c335488d 100644
--- 
a/packages/import-java-classes-component/tests/ImportJavaClasses/__snapshots__/ImportJavaClasses.test.tsx.snap
+++ 
b/packages/import-java-classes-component/tests/ImportJavaClasses/__snapshots__/ImportJavaClasses.test.tsx.snap
@@ -412,6 +412,16 @@ exports[`ImportJavaClasses component tests Should move to 
second step 1`] = `
                                 >
                                   (Any)
                                 </span>
+                                <button
+                                  aria-disabled="false"
+                                  class="pf-c-button pf-m-primary pf-m-small 
fetch-button"
+                                  
data-ouia-component-id="OUIA-Generated-Button-primary-6"
+                                  data-ouia-component-type="PF4/Button"
+                                  data-ouia-safe="true"
+                                  type="button"
+                                >
+                                  Fetch "Test" class
+                                </button>
                               </div>
                             </td>
                           </tr>
@@ -1057,7 +1067,7 @@ exports[`ImportJavaClasses component tests Should move to 
third step 1`] = `
     <button
       aria-disabled="false"
       class="pf-c-button pf-m-secondary pf-m-progress"
-      data-ouia-component-id="OUIA-Generated-Button-secondary-8"
+      data-ouia-component-id="OUIA-Generated-Button-secondary-13"
       data-ouia-component-type="PF4/Button"
       data-ouia-safe="true"
       data-testid="modal-wizard-button"
@@ -1074,21 +1084,21 @@ exports[`ImportJavaClasses component tests Should move 
to third step 1`] = `
         class="pf-l-bullseye"
       >
         <div
-          aria-describedby="pf-modal-part-7"
-          aria-labelledby="pf-modal-part-6"
+          aria-describedby="pf-modal-part-9"
+          aria-labelledby="pf-modal-part-8"
           aria-modal="true"
           class="pf-c-modal-box pf-m-lg"
-          data-ouia-component-id="OUIA-Generated-Modal-large-6"
+          data-ouia-component-id="OUIA-Generated-Modal-large-8"
           data-ouia-component-type="PF4/ModalContent"
           data-ouia-safe="true"
-          id="pf-modal-part-5"
+          id="pf-modal-part-7"
           role="dialog"
         >
           <button
             aria-disabled="false"
             aria-label="Close"
             class="pf-c-button pf-m-plain"
-            
data-ouia-component-id="OUIA-Generated-Modal-large-6-ModalBoxCloseButton"
+            
data-ouia-component-id="OUIA-Generated-Modal-large-8-ModalBoxCloseButton"
             data-ouia-component-type="PF4/Button"
             data-ouia-safe="true"
             type="button"
@@ -1112,7 +1122,7 @@ exports[`ImportJavaClasses component tests Should move to 
third step 1`] = `
           >
             <h1
               class="pf-c-modal-box__title"
-              id="pf-modal-part-6"
+              id="pf-modal-part-8"
             >
               
               <span
@@ -1123,7 +1133,7 @@ exports[`ImportJavaClasses component tests Should move to 
third step 1`] = `
             </h1>
             <div
               class="pf-c-modal-box__description"
-              id="pf-modal-part-7"
+              id="pf-modal-part-9"
             >
               It converts your Java assets to DMN types. This is a one-time 
import action: if the Java class gets updated, you will need to reimport it.
             </div>
@@ -1181,7 +1191,7 @@ exports[`ImportJavaClasses component tests Should move to 
third step 1`] = `
                 >
                   <nav
                     class="pf-c-wizard__nav"
-                    data-ouia-component-id="OUIA-Generated-WizardNav-6"
+                    data-ouia-component-id="OUIA-Generated-WizardNav-8"
                     data-ouia-component-type="PF4/WizardNav"
                     data-ouia-safe="true"
                   >
@@ -1194,7 +1204,7 @@ exports[`ImportJavaClasses component tests Should move to 
third step 1`] = `
                         <button
                           aria-current="false"
                           class="pf-c-wizard__nav-link"
-                          
data-ouia-component-id="OUIA-Generated-WizardNavItem-16"
+                          
data-ouia-component-id="OUIA-Generated-WizardNavItem-22"
                           data-ouia-component-type="PF4/WizardNavItem"
                           data-ouia-safe="true"
                         >
@@ -1207,7 +1217,7 @@ exports[`ImportJavaClasses component tests Should move to 
third step 1`] = `
                         <button
                           aria-current="false"
                           class="pf-c-wizard__nav-link"
-                          
data-ouia-component-id="OUIA-Generated-WizardNavItem-17"
+                          
data-ouia-component-id="OUIA-Generated-WizardNavItem-23"
                           data-ouia-component-type="PF4/WizardNavItem"
                           data-ouia-safe="true"
                         >
@@ -1220,7 +1230,7 @@ exports[`ImportJavaClasses component tests Should move to 
third step 1`] = `
                         <button
                           aria-current="step"
                           class="pf-c-wizard__nav-link pf-m-current"
-                          
data-ouia-component-id="OUIA-Generated-WizardNavItem-18"
+                          
data-ouia-component-id="OUIA-Generated-WizardNavItem-24"
                           data-ouia-component-type="PF4/WizardNavItem"
                           data-ouia-safe="true"
                         >
@@ -1241,7 +1251,7 @@ exports[`ImportJavaClasses component tests Should move to 
third step 1`] = `
                         <table
                           aria-label="field-table"
                           class="pf-c-table pf-m-grid-md"
-                          data-ouia-component-id="OUIA-Generated-Table-3"
+                          data-ouia-component-id="OUIA-Generated-Table-8"
                           data-ouia-component-type="PF4/Table"
                           data-ouia-safe="true"
                           role="grid"
@@ -1252,7 +1262,7 @@ exports[`ImportJavaClasses component tests Should move to 
third step 1`] = `
                           >
                             <tr
                               class=""
-                              
data-ouia-component-id="OUIA-Generated-TableRow-15"
+                              
data-ouia-component-id="OUIA-Generated-TableRow-52"
                               data-ouia-component-type="PF4/TableRow"
                               data-ouia-safe="true"
                             >
@@ -1265,7 +1275,7 @@ exports[`ImportJavaClasses component tests Should move to 
third step 1`] = `
                                   aria-label="Details"
                                   aria-labelledby="simple-node0 expand-toggle0"
                                   class="pf-c-button pf-m-plain pf-m-expanded"
-                                  
data-ouia-component-id="OUIA-Generated-Button-plain-15"
+                                  
data-ouia-component-id="OUIA-Generated-Button-plain-29"
                                   data-ouia-component-type="PF4/Button"
                                   data-ouia-safe="true"
                                   id="expand-toggle0"
@@ -1307,7 +1317,7 @@ exports[`ImportJavaClasses component tests Should move to 
third step 1`] = `
                             </tr>
                             <tr
                               class="pf-c-table__expandable-row pf-m-expanded"
-                              
data-ouia-component-id="OUIA-Generated-TableRow-16"
+                              
data-ouia-component-id="OUIA-Generated-TableRow-53"
                               data-ouia-component-type="PF4/TableRow"
                               data-ouia-safe="true"
                             >
@@ -1333,7 +1343,7 @@ exports[`ImportJavaClasses component tests Should move to 
third step 1`] = `
                             </tr>
                             <tr
                               class="pf-c-table__expandable-row pf-m-expanded"
-                              
data-ouia-component-id="OUIA-Generated-TableRow-17"
+                              
data-ouia-component-id="OUIA-Generated-TableRow-54"
                               data-ouia-component-type="PF4/TableRow"
                               data-ouia-safe="true"
                             >
@@ -1364,7 +1374,7 @@ exports[`ImportJavaClasses component tests Should move to 
third step 1`] = `
                           >
                             <tr
                               class=""
-                              
data-ouia-component-id="OUIA-Generated-TableRow-18"
+                              
data-ouia-component-id="OUIA-Generated-TableRow-55"
                               data-ouia-component-type="PF4/TableRow"
                               data-ouia-safe="true"
                             >
@@ -1377,7 +1387,7 @@ exports[`ImportJavaClasses component tests Should move to 
third step 1`] = `
                                   aria-label="Details"
                                   aria-labelledby="simple-node1 expand-toggle1"
                                   class="pf-c-button pf-m-plain pf-m-expanded"
-                                  
data-ouia-component-id="OUIA-Generated-Button-plain-16"
+                                  
data-ouia-component-id="OUIA-Generated-Button-plain-30"
                                   data-ouia-component-type="PF4/Button"
                                   data-ouia-safe="true"
                                   id="expand-toggle1"
@@ -1419,7 +1429,7 @@ exports[`ImportJavaClasses component tests Should move to 
third step 1`] = `
                             </tr>
                             <tr
                               class="pf-c-table__expandable-row pf-m-expanded"
-                              
data-ouia-component-id="OUIA-Generated-TableRow-19"
+                              
data-ouia-component-id="OUIA-Generated-TableRow-56"
                               data-ouia-component-type="PF4/TableRow"
                               data-ouia-safe="true"
                             >
@@ -1445,7 +1455,7 @@ exports[`ImportJavaClasses component tests Should move to 
third step 1`] = `
                             </tr>
                             <tr
                               class="pf-c-table__expandable-row pf-m-expanded"
-                              
data-ouia-component-id="OUIA-Generated-TableRow-20"
+                              
data-ouia-component-id="OUIA-Generated-TableRow-57"
                               data-ouia-component-type="PF4/TableRow"
                               data-ouia-safe="true"
                             >
@@ -1471,7 +1481,7 @@ exports[`ImportJavaClasses component tests Should move to 
third step 1`] = `
                             </tr>
                             <tr
                               class="pf-c-table__expandable-row pf-m-expanded"
-                              
data-ouia-component-id="OUIA-Generated-TableRow-21"
+                              
data-ouia-component-id="OUIA-Generated-TableRow-58"
                               data-ouia-component-type="PF4/TableRow"
                               data-ouia-safe="true"
                             >
@@ -1507,7 +1517,7 @@ exports[`ImportJavaClasses component tests Should move to 
third step 1`] = `
                   <button
                     aria-disabled="false"
                     class="pf-c-button pf-m-primary"
-                    data-ouia-component-id="OUIA-Generated-Button-primary-6"
+                    data-ouia-component-id="OUIA-Generated-Button-primary-12"
                     data-ouia-component-type="PF4/Button"
                     data-ouia-safe="true"
                     type="submit"
@@ -1517,7 +1527,7 @@ exports[`ImportJavaClasses component tests Should move to 
third step 1`] = `
                   <button
                     aria-disabled="false"
                     class="pf-c-button pf-m-secondary"
-                    data-ouia-component-id="OUIA-Generated-Button-secondary-9"
+                    data-ouia-component-id="OUIA-Generated-Button-secondary-14"
                     data-ouia-component-type="PF4/Button"
                     data-ouia-safe="true"
                     type="button"
@@ -1530,7 +1540,7 @@ exports[`ImportJavaClasses component tests Should move to 
third step 1`] = `
                     <button
                       aria-disabled="false"
                       class="pf-c-button pf-m-link"
-                      data-ouia-component-id="OUIA-Generated-Button-link-6"
+                      data-ouia-component-id="OUIA-Generated-Button-link-8"
                       data-ouia-component-type="PF4/Button"
                       data-ouia-safe="true"
                       type="button"
diff --git 
a/packages/vscode-java-code-completion-extension-plugin/vscode-java-code-completion-extension-plugin-core/src/main/java/org/kogito/core/internal/DelegateHandler.java
 
b/packages/vscode-java-code-completion-extension-plugin/vscode-java-code-completion-extension-plugin-core/src/main/java/org/kogito/core/internal/DelegateHandler.java
index 3ef64a95d43..12aa8005050 100644
--- 
a/packages/vscode-java-code-completion-extension-plugin/vscode-java-code-completion-extension-plugin-core/src/main/java/org/kogito/core/internal/DelegateHandler.java
+++ 
b/packages/vscode-java-code-completion-extension-plugin/vscode-java-code-completion-extension-plugin-core/src/main/java/org/kogito/core/internal/DelegateHandler.java
@@ -32,17 +32,19 @@ import org.kogito.core.internal.handlers.GetClassesHandler;
 import org.kogito.core.internal.handlers.Handler;
 import org.kogito.core.internal.handlers.HandlerConstants;
 import org.kogito.core.internal.handlers.IsLanguageServerAvailableHandler;
+import org.kogito.core.internal.handlers.TypeHierarchyHandler;
 
 public class DelegateHandler implements IDelegateCommandHandler {
 
     private static final JavaEngine JAVA_ENGINE = new JavaEngine();
     private static final ActivationChecker ACTIVATION_CHECKER = new 
ActivationChecker();
     private static final AutocompleteHandler AUTOCOMPLETE_HANDLER = new 
AutocompleteHandler(ACTIVATION_CHECKER);
+    private static final TypeHierarchyHandler TYPE_HIERARCHY_HANDLER = new 
TypeHierarchyHandler(ACTIVATION_CHECKER);
     private final IsLanguageServerAvailableHandler isAvailableHandler;
 
     private static final List<Handler<?>> handlers = List.of(
             new GetClassesHandler(HandlerConstants.GET_CLASSES, JAVA_ENGINE, 
AUTOCOMPLETE_HANDLER),
-            new GetAccessorsHandler(HandlerConstants.GET_ACCESSORS, 
JAVA_ENGINE, AUTOCOMPLETE_HANDLER));
+            new GetAccessorsHandler(HandlerConstants.GET_ACCESSORS, 
JAVA_ENGINE, AUTOCOMPLETE_HANDLER, TYPE_HIERARCHY_HANDLER));
 
     public DelegateHandler() {
         ACTIVATION_CHECKER.check();
diff --git 
a/packages/vscode-java-code-completion-extension-plugin/vscode-java-code-completion-extension-plugin-core/src/main/java/org/kogito/core/internal/api/GetPublicResult.java
 
b/packages/vscode-java-code-completion-extension-plugin/vscode-java-code-completion-extension-plugin-core/src/main/java/org/kogito/core/internal/api/GetPublicResult.java
index d8b47997fbb..98c14c111a8 100644
--- 
a/packages/vscode-java-code-completion-extension-plugin/vscode-java-code-completion-extension-plugin-core/src/main/java/org/kogito/core/internal/api/GetPublicResult.java
+++ 
b/packages/vscode-java-code-completion-extension-plugin/vscode-java-code-completion-extension-plugin-core/src/main/java/org/kogito/core/internal/api/GetPublicResult.java
@@ -19,11 +19,22 @@
 
 package org.kogito.core.internal.api;
 
+/**
+ *  Must be synchronized with JavaCodeCompletionAccessor.ts 
+ */
 public class GetPublicResult {
 
+    /**
+     * The Java Class that cointans the below accessor in FQCN format (eg. 
`org.Author`)
+     */
     private String fqcn;
+    /**
+     * Accessor's name (eg. `getName()` if a method, `name` if a field
+     */
     private String accessor;
-
+    /**
+     * Accessor's type in FQCN format (eg. `java.lang.String`)
+     */
     private String type;
 
     public String getFqcn() {
diff --git 
a/packages/vscode-java-code-completion-extension-plugin/vscode-java-code-completion-extension-plugin-core/src/main/java/org/kogito/core/internal/engine/JavaEngine.java
 
b/packages/vscode-java-code-completion-extension-plugin/vscode-java-code-completion-extension-plugin-core/src/main/java/org/kogito/core/internal/engine/JavaEngine.java
index 650ff0c379f..a3e78fe4931 100644
--- 
a/packages/vscode-java-code-completion-extension-plugin/vscode-java-code-completion-extension-plugin-core/src/main/java/org/kogito/core/internal/engine/JavaEngine.java
+++ 
b/packages/vscode-java-code-completion-extension-plugin/vscode-java-code-completion-extension-plugin-core/src/main/java/org/kogito/core/internal/engine/JavaEngine.java
@@ -22,10 +22,8 @@ package org.kogito.core.internal.engine;
 import java.io.IOException;
 import java.io.StringWriter;
 import java.io.Writer;
-import java.net.URI;
 import java.nio.file.Files;
 import java.nio.file.Path;
-import java.nio.file.Paths;
 
 import freemarker.template.Configuration;
 import freemarker.template.Template;
@@ -77,9 +75,30 @@ public class JavaEngine {
         return new BuildInformation(filePath, getContent(filePath), content, 
5, getEndOfLinePosition(content, 5));
     }
 
+    public BuildInformation buildVarTypePublicContent(Path filePath, String 
fqcn, String completeText) {
+
+        TemplateParameters item = new TemplateParameters();
+        item.setClassName(getClassName(filePath));
+        item.setQuery(completeText);
+        item.setFqcn(fqcn);
+
+        String content = this.evaluate(Templates.TEMPLATE_ACCESSORS, item);
+        int varLine = 5;
+        int varMiddleChar = 2;
+
+        return new BuildInformation(filePath, getContent(filePath), content, 
varLine, getFirstCharInLinePosition(content, varLine) + varMiddleChar);
+    }
+
+    protected int getFirstCharInLinePosition(String content, int lineNumber) {
+        String[] split = content.split("\n");
+        String line = split[lineNumber];
+        int index = line.indexOf(line.trim());
+
+        return index + 1;
+    }
+
     protected int getEndOfLinePosition(String content, int lineNumber) {
         String[] split = content.split("\n");
-        JavaLanguageServerPlugin.logInfo(split[lineNumber]);
         return split[lineNumber].length();
     }
 
diff --git 
a/packages/vscode-java-code-completion-extension-plugin/vscode-java-code-completion-extension-plugin-core/src/main/java/org/kogito/core/internal/handlers/AutocompleteHandler.java
 
b/packages/vscode-java-code-completion-extension-plugin/vscode-java-code-completion-extension-plugin-core/src/main/java/org/kogito/core/internal/handlers/AutocompleteHandler.java
index 24d052a88ef..9b905ffba7d 100644
--- 
a/packages/vscode-java-code-completion-extension-plugin/vscode-java-code-completion-extension-plugin-core/src/main/java/org/kogito/core/internal/handlers/AutocompleteHandler.java
+++ 
b/packages/vscode-java-code-completion-extension-plugin/vscode-java-code-completion-extension-plugin-core/src/main/java/org/kogito/core/internal/handlers/AutocompleteHandler.java
@@ -33,6 +33,7 @@ import org.eclipse.lsp4j.CompletionList;
 import org.eclipse.lsp4j.CompletionParams;
 import org.eclipse.lsp4j.CompletionTriggerKind;
 import org.eclipse.lsp4j.DidChangeTextDocumentParams;
+import org.eclipse.lsp4j.DidCloseTextDocumentParams;
 import org.eclipse.lsp4j.DidOpenTextDocumentParams;
 import org.eclipse.lsp4j.Position;
 import org.eclipse.lsp4j.TextDocumentContentChangeEvent;
@@ -117,6 +118,10 @@ public class AutocompleteHandler {
         } catch (Exception e) {
             JavaLanguageServerPlugin.logException("Problem with " + 
identifier, e);
             return Collections.emptyList();
+        } finally {
+            DidCloseTextDocumentParams didCloseTextDocumentParams = new 
DidCloseTextDocumentParams();
+            didCloseTextDocumentParams.setTextDocument(textDocumentIdentifier);
+            languageServer.didClose(didCloseTextDocumentParams);
         }
     }
 
diff --git 
a/packages/vscode-java-code-completion-extension-plugin/vscode-java-code-completion-extension-plugin-core/src/main/java/org/kogito/core/internal/handlers/GetAccessorsHandler.java
 
b/packages/vscode-java-code-completion-extension-plugin/vscode-java-code-completion-extension-plugin-core/src/main/java/org/kogito/core/internal/handlers/GetAccessorsHandler.java
index 21634e484da..6c573801c3b 100644
--- 
a/packages/vscode-java-code-completion-extension-plugin/vscode-java-code-completion-extension-plugin-core/src/main/java/org/kogito/core/internal/handlers/GetAccessorsHandler.java
+++ 
b/packages/vscode-java-code-completion-extension-plugin/vscode-java-code-completion-extension-plugin-core/src/main/java/org/kogito/core/internal/handlers/GetAccessorsHandler.java
@@ -6,26 +6,27 @@
  * to you under the Apache License, Version 2.0 (the
  * "License"); you may not use this file except in compliance
  * with the License.  You may obtain a copy of the License at
- * 
+ *
  *  http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing,
  * software distributed under the License is distributed on an
  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  * KIND, either express or implied.  See the License for the
  * specific language governing permissions and limitations
- * under the License. 
+ * under the License.
  */
 
 package org.kogito.core.internal.handlers;
 
 import java.util.List;
-import java.util.Map;
+import java.util.Optional;
 import java.util.stream.Collectors;
 
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.jdt.ls.core.internal.JavaLanguageServerPlugin;
 import org.eclipse.lsp4j.CompletionItem;
+import org.eclipse.lsp4j.TypeHierarchyItem;
 import org.kogito.core.internal.api.GetPublicParameters;
 import org.kogito.core.internal.api.GetPublicResult;
 import org.kogito.core.internal.engine.BuildInformation;
@@ -35,31 +36,32 @@ public class GetAccessorsHandler extends 
Handler<List<GetPublicResult>> {
 
     private final JavaEngine javaEngine;
     private final AutocompleteHandler autocompleteHandler;
+    private final TypeHierarchyHandler typeHierarchyHandler;
 
-    public GetAccessorsHandler(String id, JavaEngine javaEngine, 
AutocompleteHandler autocompleteHandler) {
+    public GetAccessorsHandler(String id, JavaEngine javaEngine, 
AutocompleteHandler autocompleteHandler, TypeHierarchyHandler 
typeHierarchyHandler) {
         super(id);
         this.javaEngine = javaEngine;
         this.autocompleteHandler = autocompleteHandler;
+        this.typeHierarchyHandler = typeHierarchyHandler;
     }
 
     @Override
     public List<GetPublicResult> handle(List<Object> arguments, 
IProgressMonitor progress) {
         JavaLanguageServerPlugin.logInfo("Handle Accessors");
         GetPublicParameters parameters = checkParameters(arguments);
-        BuildInformation buildInformation = 
javaEngine.buildPublicContent(this.autocompleteHandler.getActivatorPath(),
-                                                                          
parameters.getFqcn(),
-                                                                          
parameters.getQuery());
-        JavaLanguageServerPlugin.logInfo(buildInformation.getText());
-        List<CompletionItem> items = 
this.autocompleteHandler.handle("GetAccessorsHandler", buildInformation);
+        BuildInformation autoCompleteBuildInformation =
+                
javaEngine.buildPublicContent(this.autocompleteHandler.getActivatorPath(),
+                        parameters.getFqcn(),
+                        parameters.getQuery());
+        
JavaLanguageServerPlugin.logInfo(autoCompleteBuildInformation.getText());
+        List<CompletionItem> items = 
this.autocompleteHandler.handle("GetAccessorsHandler", 
autoCompleteBuildInformation);
+
         return this.transformCompletionItemsToResult(parameters.getFqcn(), 
items);
     }
 
     private GetPublicParameters checkParameters(List<Object> arguments) {
         if (arguments.size() < 2) {
             throw new IllegalArgumentException("Not enough arguments for 
GetClasses command. Need one argument containing a text to be autocompleted");
-        } else {
-            JavaLanguageServerPlugin.logInfo("Arguments[0]: " + 
arguments.get(0));
-            JavaLanguageServerPlugin.logInfo("Arguments[1]: " + 
arguments.get(1));
         }
 
         GetPublicParameters parameters = new GetPublicParameters();
@@ -75,35 +77,40 @@ public class GetAccessorsHandler extends 
Handler<List<GetPublicResult>> {
                 .collect(Collectors.toList());
     }
 
-    protected GetPublicResult getAccessor(CompletionItem item, String fqcn) {
-        GetPublicResult result = new GetPublicResult();
-        result.setFqcn(fqcn);
-        result.setAccessor(item.getLabelDetails().getDetail() != null ?
+    protected GetPublicResult getAccessor(CompletionItem item, String 
javaClassFqcn) {
+        String accessorName = item.getLabelDetails().getDetail() != null ?
                 item.getLabel() + item.getLabelDetails().getDetail() :
-                item.getLabel());
-        /* Retrieving the class type SIMPLE NAME */
-        String type = item.getLabelDetails().getDescription();
-        /* Retrieving the class type FQCN */
-        /* The API we used to retrieve the FQNC are no more available. To 
enable the Project
-         * compilation, the following block is a temporary commented. The 
impact on the feature, is
-         * that the Fecthing feature will no work properly, until we found an 
alternative solution
-         * https://github.com/apache/incubator-kie-issues/issues/114
-         */
-        /*
-        Map<String,String> data = (Map<String, String>) item.getData();
-        for (Map.Entry<String, String> entry : data.entrySet()) {
-            JavaLanguageServerPlugin.logInfo("ENTRY: " + entry.getKey() + " " 
+ entry.getValue());
-        }
-        if (data != null && data.containsKey(DATA_FIELD_SIGNATURE)) {
-            String fqcnType = data.get(DATA_FIELD_SIGNATURE);
-            /* The DATA_FIELD_SIGNATURE format is: 
`method()Ljava.lang.String;` */ /*
-            if (fqcnType != null && fqcnType.contains(")L")) {
-                type = fqcnType.split("\\)L")[1];
-                type = type.replaceAll(";$", "");
-            }
-        } */
-        result.setType(type);
+                item.getLabel();
+        String accessorTypeSimpleName = 
item.getLabelDetails().getDescription();
+
+        GetPublicResult result = new GetPublicResult();
+        result.setFqcn(javaClassFqcn);
+        result.setAccessor(accessorName);
+        result.setType(retrieveAccessorTypeFqcn(javaClassFqcn, 
accessorName).orElse(accessorTypeSimpleName));
 
         return result;
     }
+
+    private Optional<String> retrieveAccessorTypeFqcn(String javaClassFqcn, 
String accessorName) {
+        BuildInformation hoverBuildInformation =
+                
javaEngine.buildVarTypePublicContent(this.typeHierarchyHandler.getActivatorPath(),
+                        javaClassFqcn,
+                        accessorName + ";");
+
+        List<TypeHierarchyItem> typeHierarchyResults = 
this.typeHierarchyHandler.handle("GetAccessorsHandler", hoverBuildInformation);
+
+        if (typeHierarchyResults.isEmpty() || typeHierarchyResults.size() > 1) 
{
+            return Optional.empty();
+        }
+
+        String fullPackage = typeHierarchyResults.get(0).getDetail();
+        String classSimpleName = typeHierarchyResults.get(0).getName();
+
+        if (fullPackage == null || fullPackage.isBlank()) {
+            return Optional.empty();
+        }
+
+        return Optional.of(fullPackage + "." + classSimpleName);
+    }
+
 }
diff --git 
a/packages/vscode-java-code-completion-extension-plugin/vscode-java-code-completion-extension-plugin-core/src/main/java/org/kogito/core/internal/handlers/TypeHierarchyHandler.java
 
b/packages/vscode-java-code-completion-extension-plugin/vscode-java-code-completion-extension-plugin-core/src/main/java/org/kogito/core/internal/handlers/TypeHierarchyHandler.java
new file mode 100644
index 00000000000..13819749410
--- /dev/null
+++ 
b/packages/vscode-java-code-completion-extension-plugin/vscode-java-code-completion-extension-plugin-core/src/main/java/org/kogito/core/internal/handlers/TypeHierarchyHandler.java
@@ -0,0 +1,96 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.kogito.core.internal.handlers;
+
+import org.eclipse.jdt.ls.core.internal.JavaLanguageServerPlugin;
+import org.eclipse.jdt.ls.core.internal.handlers.JDTLanguageServer;
+import org.eclipse.lsp4j.DidCloseTextDocumentParams;
+import org.eclipse.lsp4j.DidOpenTextDocumentParams;
+
+import org.eclipse.lsp4j.Position;
+import org.eclipse.lsp4j.TextDocumentContentChangeEvent;
+import org.eclipse.lsp4j.TextDocumentItem;
+import org.eclipse.lsp4j.TextDocumentIdentifier;
+import org.eclipse.lsp4j.TypeHierarchyItem;
+import org.eclipse.lsp4j.TypeHierarchyPrepareParams;
+import org.eclipse.lsp4j.VersionedTextDocumentIdentifier;
+
+import org.kogito.core.internal.engine.ActivationChecker;
+import org.kogito.core.internal.engine.BuildInformation;
+
+import java.nio.file.Path;
+import java.util.List;
+import java.util.concurrent.CompletableFuture;
+
+public class TypeHierarchyHandler {
+
+    private ActivationChecker activationChecker;
+
+    public TypeHierarchyHandler(ActivationChecker activationChecker) {
+        this.activationChecker = activationChecker;
+    }
+
+    public List<TypeHierarchyItem> handle(String identifier, BuildInformation 
buildInformation) {
+
+        JDTLanguageServer languageServer = (JDTLanguageServer) 
JavaLanguageServerPlugin.getInstance().getProtocol();
+
+        String uri = buildInformation.getPath().toUri().toASCIIString();
+
+        JavaLanguageServerPlugin.logInfo("Opening URI:" + uri);
+
+        DidOpenTextDocumentParams didOpenTextDocumentParams = new 
DidOpenTextDocumentParams();
+        TextDocumentItem textDocumentItem = new TextDocumentItem();
+        textDocumentItem.setLanguageId("java");
+        textDocumentItem.setText(buildInformation.getText());
+        textDocumentItem.setUri(uri);
+        textDocumentItem.setVersion(1);
+        didOpenTextDocumentParams.setTextDocument(textDocumentItem);
+        languageServer.didOpen(didOpenTextDocumentParams);
+
+        Position pos = new Position();
+        pos.setLine(buildInformation.getLine());
+        pos.setCharacter(buildInformation.getPosition());
+
+        TextDocumentIdentifier textDocumentIdentifier = new 
TextDocumentIdentifier();
+        textDocumentIdentifier.setUri(uri);
+
+        TypeHierarchyPrepareParams typeHierarchyPrepareParams = new 
TypeHierarchyPrepareParams();
+        typeHierarchyPrepareParams.setTextDocument(textDocumentIdentifier);
+        typeHierarchyPrepareParams.setPosition(pos);
+
+        CompletableFuture<List<TypeHierarchyItem>> javaCompletion = 
languageServer.prepareTypeHierarchy(typeHierarchyPrepareParams);
+        try {
+            return javaCompletion.get();
+        } catch (Exception e) {
+            JavaLanguageServerPlugin.logException("Problem with " + 
identifier, e);
+            return null;
+        } finally {
+            JavaLanguageServerPlugin.logInfo("Closing URI:" + uri);
+
+            DidCloseTextDocumentParams didCloseTextDocumentParams = new 
DidCloseTextDocumentParams();
+            didCloseTextDocumentParams.setTextDocument(textDocumentIdentifier);
+            languageServer.didClose(didCloseTextDocumentParams);
+        }
+    }
+
+    public Path getActivatorPath() {
+        return this.activationChecker.getActivatorPath();
+    }
+}
diff --git 
a/packages/vscode-java-code-completion-extension-plugin/vscode-java-code-completion-extension-plugin-core/src/main/resources/templates/templateAccessors.java
 
b/packages/vscode-java-code-completion-extension-plugin/vscode-java-code-completion-extension-plugin-core/src/main/resources/templates/templateAccessors.java
index 1e338c22dfe..f121cfde42f 100644
--- 
a/packages/vscode-java-code-completion-extension-plugin/vscode-java-code-completion-extension-plugin-core/src/main/resources/templates/templateAccessors.java
+++ 
b/packages/vscode-java-code-completion-extension-plugin/vscode-java-code-completion-extension-plugin-core/src/main/resources/templates/templateAccessors.java
@@ -1,9 +1,9 @@
-package com.redhat;
+package org.apache.kie;
 
-public class ${ className }{
+public class ${ className } {
 
-    public ${ className }(){
-        new ${ fqcn }().${ query }
+    public ${ className }() {
+        var field = new ${ fqcn }().${ query }
     }
 
 }
\ No newline at end of file
diff --git 
a/packages/vscode-java-code-completion-extension-plugin/vscode-java-code-completion-extension-plugin-core/src/main/resources/templates/templateClass.java
 
b/packages/vscode-java-code-completion-extension-plugin/vscode-java-code-completion-extension-plugin-core/src/main/resources/templates/templateClass.java
index dee5fe4bb1b..d29e7333310 100644
--- 
a/packages/vscode-java-code-completion-extension-plugin/vscode-java-code-completion-extension-plugin-core/src/main/resources/templates/templateClass.java
+++ 
b/packages/vscode-java-code-completion-extension-plugin/vscode-java-code-completion-extension-plugin-core/src/main/resources/templates/templateClass.java
@@ -1,7 +1,7 @@
-package com.redhat;
+package org.apache.kie;
 
 import ${ query }
 
-public class ${ className }{
+public class ${ className } {
 
 }
\ No newline at end of file
diff --git 
a/packages/vscode-java-code-completion-extension-plugin/vscode-java-code-completion-extension-plugin-core/src/test/java/org/kogito/core/internal/handlers/GetAccessorsHandlerTest.java
 
b/packages/vscode-java-code-completion-extension-plugin/vscode-java-code-completion-extension-plugin-core/src/test/java/org/kogito/core/internal/handlers/GetAccessorsHandlerTest.java
index 9a1e36fcde1..aa9914e14bc 100644
--- 
a/packages/vscode-java-code-completion-extension-plugin/vscode-java-code-completion-extension-plugin-core/src/test/java/org/kogito/core/internal/handlers/GetAccessorsHandlerTest.java
+++ 
b/packages/vscode-java-code-completion-extension-plugin/vscode-java-code-completion-extension-plugin-core/src/test/java/org/kogito/core/internal/handlers/GetAccessorsHandlerTest.java
@@ -35,7 +35,7 @@ class GetAccessorsHandlerTest {
 
     @BeforeEach
     public void setUp() {
-        this.getAccessorHandler = new GetAccessorsHandler(null, null, null);
+        this.getAccessorHandler = new GetAccessorsHandler(null, null, null, 
null);
     }
 
     @Test


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]


Reply via email to