diff --git a/org-eclipse-che-jdt-ls-extension/jdt.ls.extension.api/src/main/java/org/eclipse/che/jdt/ls/extension/api/Commands.java b/org-eclipse-che-jdt-ls-extension/jdt.ls.extension.api/src/main/java/org/eclipse/che/jdt/ls/extension/api/Commands.java
index ec60b55..ba265a6 100644
--- a/org-eclipse-che-jdt-ls-extension/jdt.ls.extension.api/src/main/java/org/eclipse/che/jdt/ls/extension/api/Commands.java
+++ b/org-eclipse-che-jdt-ls-extension/jdt.ls.extension.api/src/main/java/org/eclipse/che/jdt/ls/extension/api/Commands.java
@@ -31,5 +31,10 @@ public class Commands {
public static final String RESOLVE_CLASSPATH_COMMAND = "che.jdt.ls.extension.resolveClasspath";
public static final String GET_OUTPUT_DIR_COMMAND = "che.jdt.ls.extension.outputDir";
+ // debug
+
+ public static final String FQN_TO_LOCATION_COMMAND = "che.jdt.ls.extension.debug.fqnToLocation";
+ public static final String LOCATION_TO_FQN_COMMAND = "che.jdt.ls.extension.debug.locationToFqn";
+
private Commands() {}
}
diff --git a/org-eclipse-che-jdt-ls-extension/jdt.ls.extension.api/src/main/java/org/eclipse/che/jdt/ls/extension/api/dto/LocationParameters.java b/org-eclipse-che-jdt-ls-extension/jdt.ls.extension.api/src/main/java/org/eclipse/che/jdt/ls/extension/api/dto/LocationParameters.java
new file mode 100644
index 0000000..630cee6
--- /dev/null
+++ b/org-eclipse-che-jdt-ls-extension/jdt.ls.extension.api/src/main/java/org/eclipse/che/jdt/ls/extension/api/dto/LocationParameters.java
@@ -0,0 +1,67 @@
+/*
+ * Copyright (c) 2012-2017 Red Hat, Inc.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Red Hat, Inc. - initial API and implementation
+ */
+package org.eclipse.che.jdt.ls.extension.api.dto;
+
+/** @author Anatolii Bazko */
+public class LocationParameters {
+ private String projectPath;
+ private String target;
+ private int lineNumber;
+ private int libId;
+
+ public LocationParameters() {}
+
+ public LocationParameters(String target, int lineNumber, String projectPath) {
+ this.target = target;
+ this.lineNumber = lineNumber;
+ this.projectPath = projectPath;
+ this.libId = 0;
+ }
+
+ public LocationParameters(String target, int lineNumber, int libId, String projectPath) {
+ this.target = target;
+ this.lineNumber = lineNumber;
+ this.projectPath = projectPath;
+ this.libId = libId;
+ }
+
+ public int getLineNumber() {
+ return lineNumber;
+ }
+
+ public void setLineNumber(int lineNumber) {
+ this.lineNumber = lineNumber;
+ }
+
+ public String getTarget() {
+ return target;
+ }
+
+ public void setTarget(String target) {
+ this.target = target;
+ }
+
+ public String getProjectPath() {
+ return projectPath;
+ }
+
+ public void setProjectPath(String projectPath) {
+ this.projectPath = projectPath;
+ }
+
+ public int getLibId() {
+ return libId;
+ }
+
+ public void setLibId(int libId) {
+ this.libId = libId;
+ }
+}
diff --git a/org-eclipse-che-jdt-ls-extension/jdt.ls.extension.core/META-INF/MANIFEST.MF b/org-eclipse-che-jdt-ls-extension/jdt.ls.extension.core/META-INF/MANIFEST.MF
index 5ca9117..2fa820b 100644
--- a/org-eclipse-che-jdt-ls-extension/jdt.ls.extension.core/META-INF/MANIFEST.MF
+++ b/org-eclipse-che-jdt-ls-extension/jdt.ls.extension.core/META-INF/MANIFEST.MF
@@ -4,19 +4,22 @@ Bundle-Name: jdt.ls.extension Core Extension
Bundle-SymbolicName: jdt.ls.extension.core;singleton:=true
Bundle-Version: 0.0.1.qualifier
Bundle-Activator: org.eclipse.che.jdt.ls.extension.core.internal.ExtensionActivator
-Import-Package: com.google.gson,
+Import-Package: com.google.common.base;version="15.0.0",
+ com.google.gson,
+ org.apache.commons.lang3.tuple;version="3.1.0",
org.eclipse.che.jdt.ls.extension.api,
org.eclipse.che.jdt.ls.extension.api.dto,
org.eclipse.core.resources,
+ org.eclipse.core.runtime,
org.eclipse.jdt.core,
org.eclipse.jdt.launching,
org.eclipse.jdt.ls.core.internal,
- org.eclipse.core.runtime,
org.eclipse.lsp4j,
org.eclipse.lsp4j.jsonrpc.json.adapters
Require-Bundle: org.eclipse.core.runtime,
org.eclipse.jdt.core,
org.eclipse.jdt.ls.core,
+ org.eclipse.jface.text,
org.eclipse.jdt.core.manipulation
Bundle-ActivationPolicy: lazy
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
diff --git a/org-eclipse-che-jdt-ls-extension/jdt.ls.extension.core/plugin.xml b/org-eclipse-che-jdt-ls-extension/jdt.ls.extension.core/plugin.xml
index fa15993..91d6fa9 100644
--- a/org-eclipse-che-jdt-ls-extension/jdt.ls.extension.core/plugin.xml
+++ b/org-eclipse-che-jdt-ls-extension/jdt.ls.extension.core/plugin.xml
@@ -1,8 +1,8 @@
-
-
+
+
@@ -12,6 +12,8 @@
-
-
+
+
+
+
diff --git a/org-eclipse-che-jdt-ls-extension/jdt.ls.extension.core/pom.xml b/org-eclipse-che-jdt-ls-extension/jdt.ls.extension.core/pom.xml
index 87511c5..3d0f7ec 100644
--- a/org-eclipse-che-jdt-ls-extension/jdt.ls.extension.core/pom.xml
+++ b/org-eclipse-che-jdt-ls-extension/jdt.ls.extension.core/pom.xml
@@ -23,8 +23,8 @@
eclipse-plugin
Che Ls Jdt :: Extension :: Core
-
-
+
+
com.mycila
license-maven-plugin
@@ -33,6 +33,6 @@
-
+
diff --git a/org-eclipse-che-jdt-ls-extension/jdt.ls.extension.core/src/main/java/org/eclipse/che/jdt/ls/extension/core/internal/CheDelegateCommandHandler.java b/org-eclipse-che-jdt-ls-extension/jdt.ls.extension.core/src/main/java/org/eclipse/che/jdt/ls/extension/core/internal/CheDelegateCommandHandler.java
index 81ba806..e0c491a 100644
--- a/org-eclipse-che-jdt-ls-extension/jdt.ls.extension.core/src/main/java/org/eclipse/che/jdt/ls/extension/core/internal/CheDelegateCommandHandler.java
+++ b/org-eclipse-che-jdt-ls-extension/jdt.ls.extension.core/src/main/java/org/eclipse/che/jdt/ls/extension/core/internal/CheDelegateCommandHandler.java
@@ -16,6 +16,7 @@
import java.util.function.BiFunction;
import org.eclipse.che.jdt.ls.extension.api.Commands;
import org.eclipse.che.jdt.ls.extension.core.internal.classpath.ResolveClassPathsHandler;
+import org.eclipse.che.jdt.ls.extension.core.internal.debug.FqnConverter;
import org.eclipse.che.jdt.ls.extension.core.internal.testdetection.TestDetectionHandler;
import org.eclipse.che.jdt.ls.extension.core.internal.testdetection.TestFinderHandler;
import org.eclipse.core.runtime.IProgressMonitor;
@@ -42,6 +43,8 @@ public class CheDelegateCommandHandler implements IDelegateCommandHandler {
commands.put(Commands.FIND_TESTS_IN_FILE_COMMAND, TestFinderHandler::getClassFqn);
commands.put(Commands.RESOLVE_CLASSPATH_COMMAND, ResolveClassPathsHandler::resolveClasspaths);
commands.put(Commands.GET_OUTPUT_DIR_COMMAND, ResolveClassPathsHandler::getOutputDirectory);
+ commands.put(Commands.LOCATION_TO_FQN_COMMAND, FqnConverter::locationToFqn);
+ commands.put(Commands.FQN_TO_LOCATION_COMMAND, FqnConverter::fqnToLocation);
}
@Override
diff --git a/org-eclipse-che-jdt-ls-extension/jdt.ls.extension.core/src/main/java/org/eclipse/che/jdt/ls/extension/core/internal/debug/FqnConverter.java b/org-eclipse-che-jdt-ls-extension/jdt.ls.extension.core/src/main/java/org/eclipse/che/jdt/ls/extension/core/internal/debug/FqnConverter.java
new file mode 100644
index 0000000..9ff4831
--- /dev/null
+++ b/org-eclipse-che-jdt-ls-extension/jdt.ls.extension.core/src/main/java/org/eclipse/che/jdt/ls/extension/core/internal/debug/FqnConverter.java
@@ -0,0 +1,341 @@
+/*
+ * Copyright (c) 2012-2017 Red Hat, Inc.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Red Hat, Inc. - initial API and implementation
+ */
+package org.eclipse.che.jdt.ls.extension.core.internal.debug;
+
+import com.google.common.base.Preconditions;
+import com.google.gson.Gson;
+import com.google.gson.GsonBuilder;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import org.apache.commons.lang3.tuple.Pair;
+import org.eclipse.che.jdt.ls.extension.api.dto.LocationParameters;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.core.runtime.OperationCanceledException;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.jdt.core.IClassFile;
+import org.eclipse.jdt.core.IClasspathEntry;
+import org.eclipse.jdt.core.ICompilationUnit;
+import org.eclipse.jdt.core.IJavaElement;
+import org.eclipse.jdt.core.IJavaProject;
+import org.eclipse.jdt.core.IMember;
+import org.eclipse.jdt.core.IPackageFragmentRoot;
+import org.eclipse.jdt.core.IType;
+import org.eclipse.jdt.core.JavaModelException;
+import org.eclipse.jdt.core.dom.CompilationUnit;
+import org.eclipse.jdt.core.search.IJavaSearchConstants;
+import org.eclipse.jdt.core.search.IJavaSearchScope;
+import org.eclipse.jdt.core.search.SearchEngine;
+import org.eclipse.jdt.core.search.TypeNameMatch;
+import org.eclipse.jdt.core.search.TypeNameMatchRequestor;
+import org.eclipse.jdt.internal.core.JavaModel;
+import org.eclipse.jdt.internal.core.JavaModelManager;
+import org.eclipse.jdt.internal.core.JavaProject;
+import org.eclipse.jdt.internal.core.SourceMethod;
+import org.eclipse.jdt.internal.core.SourceType;
+import org.eclipse.jface.text.BadLocationException;
+import org.eclipse.jface.text.Document;
+import org.eclipse.jface.text.IRegion;
+import org.eclipse.lsp4j.jsonrpc.json.adapters.CollectionTypeAdapterFactory;
+import org.eclipse.lsp4j.jsonrpc.json.adapters.EitherTypeAdapterFactory;
+import org.eclipse.lsp4j.jsonrpc.json.adapters.EnumTypeAdapterFactory;
+
+/** @author Anatolii Bazko */
+public class FqnConverter {
+
+ private static final Gson gson =
+ new GsonBuilder()
+ .registerTypeAdapterFactory(new CollectionTypeAdapterFactory())
+ .registerTypeAdapterFactory(new EitherTypeAdapterFactory())
+ .registerTypeAdapterFactory(new EnumTypeAdapterFactory())
+ .create();
+
+ /** Converts {@link LocationParameters} into fqn. */
+ public static String locationToFqn(List