diff --git a/plugins/plugin-java-debugger/che-plugin-java-debugger-server/src/main/java/org/eclipse/che/plugin/jdb/server/model/JdbLocation.java b/plugins/plugin-java-debugger/che-plugin-java-debugger-server/src/main/java/org/eclipse/che/plugin/jdb/server/model/JdbLocation.java
index 4b570458f0..9a64261e20 100644
--- a/plugins/plugin-java-debugger/che-plugin-java-debugger-server/src/main/java/org/eclipse/che/plugin/jdb/server/model/JdbLocation.java
+++ b/plugins/plugin-java-debugger/che-plugin-java-debugger-server/src/main/java/org/eclipse/che/plugin/jdb/server/model/JdbLocation.java
@@ -32,12 +32,6 @@ public class JdbLocation implements Location {
this(languageServer, stackFrame, new JdbMethod(stackFrame));
}
- public JdbLocation(Location internal, Method method) {
- this.method = method;
- this.internal = internal;
- this.jdiStackFrame = null;
- }
-
/**
* Intends to create location when thread is not suspended. Information concerning thread and
* frame are not available.
diff --git a/plugins/plugin-languageserver/che-plugin-languageserver-ide/src/main/java/org/eclipse/che/plugin/languageserver/ide/service/ServiceUtil.java b/plugins/plugin-languageserver/che-plugin-languageserver-ide/src/main/java/org/eclipse/che/plugin/languageserver/ide/service/ServiceUtil.java
new file mode 100644
index 0000000000..b024992f83
--- /dev/null
+++ b/plugins/plugin-languageserver/che-plugin-languageserver-ide/src/main/java/org/eclipse/che/plugin/languageserver/ide/service/ServiceUtil.java
@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 2012-2018 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.plugin.languageserver.ide.service;
+
+import org.eclipse.che.api.core.jsonrpc.commons.JsonRpcError;
+import org.eclipse.che.api.core.jsonrpc.commons.JsonRpcException;
+import org.eclipse.che.api.promises.client.PromiseError;
+
+public class ServiceUtil {
+ private ServiceUtil() {}
+
+ public static PromiseError getPromiseError(JsonRpcError jsonRpcError) {
+ return new PromiseError() {
+ @Override
+ public String getMessage() {
+ return jsonRpcError.getMessage();
+ }
+
+ @Override
+ public Throwable getCause() {
+ return new JsonRpcException(jsonRpcError.getCode(), jsonRpcError.getMessage());
+ }
+ };
+ }
+}
diff --git a/plugins/plugin-maven/che-plugin-maven-server/src/main/java/org/eclipse/che/plugin/maven/server/core/reconcile/PomReconciler.java b/plugins/plugin-maven/che-plugin-maven-server/src/main/java/org/eclipse/che/plugin/maven/server/core/reconcile/PomReconciler.java
deleted file mode 100644
index 2b6e1d82f0..0000000000
--- a/plugins/plugin-maven/che-plugin-maven-server/src/main/java/org/eclipse/che/plugin/maven/server/core/reconcile/PomReconciler.java
+++ /dev/null
@@ -1,298 +0,0 @@
-/*
- * Copyright (c) 2012-2018 Red Hat, Inc.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Red Hat, Inc. - initial API and implementation
- */
-package org.eclipse.che.plugin.maven.server.core.reconcile;
-/**
- * ***************************************************************************** Copyright (c)
- * 2012-2018 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
- * *****************************************************************************
- */
-
-import static com.google.common.base.Strings.isNullOrEmpty;
-import static java.lang.String.format;
-import static java.nio.charset.Charset.defaultCharset;
-import static org.eclipse.che.maven.data.MavenConstants.POM_FILE_NAME;
-
-import java.io.ByteArrayInputStream;
-import java.io.File;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.SortedSet;
-import java.util.TreeSet;
-import java.util.stream.Collectors;
-import javax.annotation.PreDestroy;
-import org.eclipse.che.api.core.NotFoundException;
-import org.eclipse.che.api.core.ServerException;
-import org.eclipse.che.api.core.notification.EventService;
-import org.eclipse.che.api.core.notification.EventSubscriber;
-import org.eclipse.che.api.editor.server.impl.EditorWorkingCopy;
-import org.eclipse.che.api.editor.server.impl.EditorWorkingCopyManager;
-import org.eclipse.che.api.editor.server.impl.EditorWorkingCopyUpdatedEvent;
-import org.eclipse.che.api.languageserver.service.LanguageServiceUtils;
-import org.eclipse.che.api.project.shared.dto.EditorChangesDto;
-import org.eclipse.che.commons.xml.XMLTreeException;
-import org.eclipse.che.dto.server.DtoFactory;
-import org.eclipse.che.ide.ext.java.shared.dto.Problem;
-import org.eclipse.che.ide.maven.tools.Model;
-import org.eclipse.che.maven.data.MavenProjectProblem;
-import org.eclipse.che.plugin.maven.server.core.MavenProjectManager;
-import org.eclipse.che.plugin.maven.server.core.project.MavenProject;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.Path;
-import org.eclipse.jface.text.BadLocationException;
-import org.eclipse.jface.text.Document;
-import org.eclipse.lsp4j.Diagnostic;
-import org.eclipse.lsp4j.DiagnosticSeverity;
-import org.eclipse.lsp4j.MessageParams;
-import org.eclipse.lsp4j.MessageType;
-import org.eclipse.lsp4j.Position;
-import org.eclipse.lsp4j.PublishDiagnosticsParams;
-import org.eclipse.lsp4j.Range;
-import org.eclipse.lsp4j.services.LanguageClient;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.xml.sax.SAXParseException;
-
-/**
- * Handles reconcile operations for pom.xml file.
- *
- * @author Roman Nikitenko
- */
-public class PomReconciler {
- private static final Logger LOG = LoggerFactory.getLogger(PomReconciler.class);
-
- private MavenProjectManager mavenProjectManager;
- private EditorWorkingCopyManager editorWorkingCopyManager;
- private EventService eventService;
- private EventSubscriber editorContentUpdateEventSubscriber;
- private LanguageClient client;
-
- public PomReconciler(
- MavenProjectManager mavenProjectManager,
- EditorWorkingCopyManager editorWorkingCopyManager,
- EventService eventService,
- LanguageClient client) {
- this.mavenProjectManager = mavenProjectManager;
- this.editorWorkingCopyManager = editorWorkingCopyManager;
- this.eventService = eventService;
- this.client = client;
-
- editorContentUpdateEventSubscriber =
- new EventSubscriber() {
- @Override
- public void onEvent(EditorWorkingCopyUpdatedEvent event) {
- onEditorContentUpdated(event);
- }
- };
- eventService.subscribe(editorContentUpdateEventSubscriber);
- }
-
- @PreDestroy
- private void unsubscribe() {
- eventService.unsubscribe(editorContentUpdateEventSubscriber);
- }
-
- List reconcile(String pomPath, String projectPath, String pomContent)
- throws ServerException, NotFoundException {
- List result = new ArrayList<>();
-
- if (isNullOrEmpty(pomContent)) {
- Problem problem =
- DtoFactory.newDto(Problem.class)
- .withError(true)
- .withMessage("Content of pom file is empty")
- .withSourceStart(1)
- .withSourceEnd(1);
- result.add(problem);
- return result;
- }
-
- try {
- Model.readFrom(new ByteArrayInputStream(pomContent.getBytes(defaultCharset())));
-
- if (isNullOrEmpty(projectPath)) {
- return result;
- }
-
- IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(projectPath);
- MavenProject mavenProject = mavenProjectManager.findMavenProject(project);
- if (mavenProject == null) {
- return result;
- }
-
- List problems = mavenProject.getProblems();
-
- int start = pomContent.indexOf(" problemList =
- problems
- .stream()
- .map(
- mavenProjectProblem ->
- DtoFactory.newDto(Problem.class)
- .withError(true)
- .withSourceStart(start)
- .withSourceEnd(end)
- .withMessage(mavenProjectProblem.getDescription()))
- .collect(Collectors.toList());
- result.addAll(problemList);
- } catch (XMLTreeException exception) {
- Throwable cause = exception.getCause();
- if (cause != null && cause instanceof SAXParseException) {
- result.add(createProblem(pomContent, (SAXParseException) cause));
-
- } else {
- String error =
- format(
- "Couldn't reconcile pom file '%s', the reason is '%s'",
- pomPath, exception.getLocalizedMessage());
- LOG.error(error, exception);
- throw new ServerException(error);
- }
- } catch (IOException e) {
- String error =
- format(
- "Couldn't reconcile pom file '%s', the reason is '%s'",
- pomPath, e.getLocalizedMessage());
- LOG.error(error, e);
- throw new ServerException(error);
- }
- return result;
- }
-
- private void onEditorContentUpdated(EditorWorkingCopyUpdatedEvent event) {
- EditorChangesDto editorChanges = event.getChanges();
- String fileLocation = editorChanges.getFileLocation();
- String projectPath = editorChanges.getProjectPath();
- reconcilePath(fileLocation, projectPath);
- }
-
- public void reconcilePath(String fileLocation, String projectPath) {
- String fileName = new Path(fileLocation).lastSegment();
- if (!POM_FILE_NAME.equals(fileName)) {
- return;
- }
-
- EditorWorkingCopy workingCopy = editorWorkingCopyManager.getWorkingCopy(fileLocation);
- if (workingCopy == null) {
- return;
- }
-
- try {
- String newPomContent = workingCopy.getContentAsString();
- List problems = reconcile(fileLocation, projectPath, newPomContent);
- List diagnostics = convertProblems(newPomContent, problems);
-
- client.publishDiagnostics(
- new PublishDiagnosticsParams(LanguageServiceUtils.prefixURI(fileLocation), diagnostics));
- } catch (ServerException | NotFoundException e) {
- LOG.error(e.getMessage(), e);
- client.showMessage(new MessageParams(MessageType.Error, "Error reconciling " + fileLocation));
- }
- }
-
- private Problem createProblem(String pomContent, SAXParseException spe) {
- Problem problem = DtoFactory.newDto(Problem.class);
- problem.setError(true);
- problem.setMessage(spe.getMessage());
- if (pomContent != null) {
- int lineNumber = spe.getLineNumber();
- int columnNumber = spe.getColumnNumber();
- try {
- Document document = new Document(pomContent);
- int lineOffset = document.getLineOffset(lineNumber - 1);
- problem.setSourceStart(lineOffset + columnNumber - 1);
- problem.setSourceEnd(lineOffset + columnNumber);
- } catch (BadLocationException e) {
- LOG.error(e.getMessage(), e);
- }
- }
- return problem;
- }
-
- public void reconcileUri(String uri, String text) {
- try {
- String pomPath = LanguageServiceUtils.removePrefixUri(uri);
- List problems = reconcile(pomPath, new File(pomPath).getParent(), text);
- List diagnostics = convertProblems(text, problems);
- client.publishDiagnostics(new PublishDiagnosticsParams(uri, diagnostics));
- } catch (ServerException | NotFoundException e) {
- LOG.error("Error reconciling content: " + uri, e);
- client.showMessage(new MessageParams(MessageType.Error, "Error reconciling " + uri));
- }
- }
-
- private static List convertProblems(String text, List problems) {
- Map positions = mapPositions(text, problems);
- List diagnostics =
- problems
- .stream()
- .map((Problem p) -> convertProblem(positions, p))
- .filter(o -> o != null)
- .collect(Collectors.toList());
- return diagnostics;
- }
-
- private static Map mapPositions(String text, List problems) {
- SortedSet offsets = new TreeSet<>();
- for (Problem problem : problems) {
- offsets.add(problem.getSourceStart());
- offsets.add(problem.getSourceEnd());
- }
- Map result = new HashMap<>();
- int line = 0;
- int character = 0;
- int pos = 0;
- for (int offset : offsets) {
- while (pos < offset && pos < text.length()) {
- char ch = text.charAt(pos++);
- if (ch == '\r') {
- if (text.charAt(pos) == '\n') {
- pos++;
- }
- line++;
- character = 0;
- } else if (ch == '\n') {
- line++;
- character = 0;
- } else {
- character++;
- }
- }
- result.put(offset, new Position(line, character));
- }
- ;
- return result;
- }
-
- private static Diagnostic convertProblem(Map positionMap, Problem problem) {
- Diagnostic result = new Diagnostic();
- Position start = positionMap.get(problem.getSourceStart());
- Position end = positionMap.get(problem.getSourceEnd());
- if (start == null || end == null) {
- LOG.error("Could not map problem range: " + problem);
- return null;
- }
- result.setRange(new Range(start, end));
- result.setMessage(problem.getMessage());
- result.setSeverity(problem.isError() ? DiagnosticSeverity.Error : DiagnosticSeverity.Warning);
- return result;
- }
-}
diff --git a/selenium/che-selenium-test/src/main/java/org/eclipse/che/selenium/pageobject/CodenvyEditor.java b/selenium/che-selenium-test/src/main/java/org/eclipse/che/selenium/pageobject/CodenvyEditor.java
index f6bf91e7d8..402b0e7d70 100644
--- a/selenium/che-selenium-test/src/main/java/org/eclipse/che/selenium/pageobject/CodenvyEditor.java
+++ b/selenium/che-selenium-test/src/main/java/org/eclipse/che/selenium/pageobject/CodenvyEditor.java
@@ -25,6 +25,7 @@ import static org.eclipse.che.selenium.pageobject.CodenvyEditor.Locators.ACTIVE_
import static org.eclipse.che.selenium.pageobject.CodenvyEditor.Locators.ALL_TABS_XPATH;
import static org.eclipse.che.selenium.pageobject.CodenvyEditor.Locators.ASSIST_CONTENT_CONTAINER;
import static org.eclipse.che.selenium.pageobject.CodenvyEditor.Locators.AUTOCOMPLETE_CONTAINER;
+import static org.eclipse.che.selenium.pageobject.CodenvyEditor.Locators.AUTOCOMPLETE_PROPOSAL_DOC_ID;
import static org.eclipse.che.selenium.pageobject.CodenvyEditor.Locators.CONTEXT_MENU;
import static org.eclipse.che.selenium.pageobject.CodenvyEditor.Locators.DEBUGGER_BREAKPOINT_CONDITION;
import static org.eclipse.che.selenium.pageobject.CodenvyEditor.Locators.DEBUGGER_BREAKPOINT_DISABLED;
@@ -40,6 +41,7 @@ import static org.eclipse.che.selenium.pageobject.CodenvyEditor.Locators.IMPLEME
import static org.eclipse.che.selenium.pageobject.CodenvyEditor.Locators.ITEM_TAB_LIST;
import static org.eclipse.che.selenium.pageobject.CodenvyEditor.Locators.JAVA_DOC_POPUP;
import static org.eclipse.che.selenium.pageobject.CodenvyEditor.Locators.LANGUAGE_SERVER_REFACTORING_RENAME_FIELD_CSS;
+import static org.eclipse.che.selenium.pageobject.CodenvyEditor.Locators.LANGUAGE_SERVER_REFACTORING_RENAME_FIELD_CSS;
import static org.eclipse.che.selenium.pageobject.CodenvyEditor.Locators.ORION_ACTIVE_EDITOR_CONTAINER_XPATH;
import static org.eclipse.che.selenium.pageobject.CodenvyEditor.Locators.ORION_CONTENT_ACTIVE_EDITOR_XPATH;
import static org.eclipse.che.selenium.pageobject.CodenvyEditor.Locators.POSITION_CURSOR_NUMBER;
@@ -90,7 +92,6 @@ import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Arrays;
import java.util.List;
-import java.util.regex.Pattern;
import org.eclipse.che.commons.lang.Pair;
import org.eclipse.che.selenium.core.SeleniumWebDriver;
import org.eclipse.che.selenium.core.action.ActionsFactory;
@@ -347,8 +348,13 @@ public class CodenvyEditor {
@FindBy(xpath = HOVER_POPUP_XPATH)
private WebElement hoverPopup;
+ @FindBy(id = AUTOCOMPLETE_PROPOSAL_DOC_ID)
+ private WebElement proposalDoc;
+
@FindBy(css = LANGUAGE_SERVER_REFACTORING_RENAME_FIELD_CSS)
private WebElement languageServerRenameField;
+
+
/**
* Waits until specified {@code editorTab} is presented, selected, focused and editor activated.
*
@@ -2277,47 +2283,6 @@ public class CodenvyEditor {
loader.waitOnClosed();
}
- /**
- * Get html code of java doc of autocomplete proposal.
- *
- * @return html code of JavaDoc of already opened autocomplete proposal by making request on 'src'
- * attribute of iframe of JavaDoc popup.
- */
- public String getAutocompleteProposalJavaDocHtml() throws IOException {
- return getJavaDocPopupText();
- }
-
- /**
- * Waits until specified {@code expectedText} is present in javadoc.
- *
- * @param expectedText text which should be present in javadoc
- */
- public void waitContextMenuJavaDocText(String expectedText) {
- webDriverWaitFactory
- .get()
- .until(
- (ExpectedCondition)
- driver -> {
- String javaDocPopupHtmlText = "";
- try {
- javaDocPopupHtmlText = getJavaDocPopupText();
- } catch (StaleElementReferenceException e) {
- LOG.warn(
- "Can not get java doc HTML text from autocomplete context menu in editor");
- }
- return javaDocPopupHtmlText.length() > 0
- && verifyJavaDoc(javaDocPopupHtmlText, expectedText);
- });
- }
-
- private String getJavaDocPopupText() {
- return seleniumWebDriverHelper.waitVisibilityAndGetText(autocompleteProposalJavaDocPopup);
- }
-
- private boolean verifyJavaDoc(String javaDocHtml, String regex) {
- return Pattern.compile(regex, Pattern.DOTALL).matcher(javaDocHtml).matches();
- }
-
private List getAllTabsWithProvidedName(String tabName) {
return seleniumWebDriverHelper.waitVisibilityOfAllElements(
By.xpath(
@@ -2329,7 +2294,6 @@ public class CodenvyEditor {
By.xpath(format(Locators.TEXT_TO_MOVE_CURSOR_XPATH, text)));
}
-<<<<<<< HEAD
public void checkProposalDocumentation(String expectedText) {
seleniumWebDriverHelper.waitTextContains(proposalDoc, expectedText);
}
@@ -2354,8 +2318,6 @@ public class CodenvyEditor {
seleniumWebDriverHelper.pressEnter();
}
-=======
->>>>>>> Readd removed code to fix build
/** Type the comment line in the file by keyboard */
public void launchCommentCodeFeature() {
actionsFactory
diff --git a/selenium/che-selenium-test/src/test/java/org/eclipse/che/selenium/editor/autocomplete/AutocompleteProposalJavaDocTest.java b/selenium/che-selenium-test/src/test/java/org/eclipse/che/selenium/editor/autocomplete/AutocompleteProposalJavaDocTest.java
index 506ff2950d..61eaea0364 100644
--- a/selenium/che-selenium-test/src/test/java/org/eclipse/che/selenium/editor/autocomplete/AutocompleteProposalJavaDocTest.java
+++ b/selenium/che-selenium-test/src/test/java/org/eclipse/che/selenium/editor/autocomplete/AutocompleteProposalJavaDocTest.java
@@ -92,7 +92,7 @@ public class AutocompleteProposalJavaDocTest {
editor.selectAutocompleteProposal("concat(String part1, String part2, char divider) : String");
// then
- editor.waitContextMenuJavaDocText(
+ editor.checkProposalDocumentation(
".*Deprecated. As of version 1.0, use "
+ "org.apache.commons.lang.StringUtils.join\\(Object \\[\\], char\\)"
+ "
Returns concatination of two strings into one divided by special symbol."
@@ -114,7 +114,7 @@ public class AutocompleteProposalJavaDocTest {
editor.selectAutocompleteProposal("App()");
// then
- editor.waitContextMenuJavaDocText(".*No documentation found.*");
+ editor.checkProposalDocumentation(".*No documentation found.*");
}
@Test
@@ -127,7 +127,7 @@ public class AutocompleteProposalJavaDocTest {
editor.selectAutocompleteProposal("isEquals(Object o) : boolean ");
// then
- editor.waitContextMenuJavaDocText(
+ editor.checkProposalDocumentation(
".*Returns true if the argument is equal to instance. otherwise false"
+ "
- Parameters:
"
+ "- o an object.
"
@@ -155,7 +155,7 @@ public class AutocompleteProposalJavaDocTest {
editor.selectAutocompleteProposal("BookImpl");
// then
- editor.waitContextMenuJavaDocText(".*UPDATE. Implementation of Book interface..*");
+ editor.checkProposalDocumentation(".*UPDATE. Implementation of Book interface..*");
}
@Test
@@ -168,7 +168,7 @@ public class AutocompleteProposalJavaDocTest {
editor.selectAutocompleteProposal("hashCode() : int");
// then
- editor.waitContextMenuJavaDocText(
+ editor.checkProposalDocumentation(
".*Returns a hash code value for the object. "
+ "This method is supported for the benefit of hash tables such as those provided by "
+ "java.util.HashMap.*");
@@ -184,7 +184,7 @@ public class AutocompleteProposalJavaDocTest {
editor.selectAutocompleteProposal("info(String arg0) : void");
// then
- editor.waitContextMenuJavaDocText(".*No documentation found.*");
+ editor.checkProposalDocumentation(".*No documentation found.*");
// when
editor.closeAutocomplete();
@@ -202,7 +202,7 @@ public class AutocompleteProposalJavaDocTest {
editor.selectAutocompleteProposal("info(String msg) : void");
// then
- editor.waitContextMenuJavaDocText(
+ editor.checkProposalDocumentation(
".*Log a message at the .* level."
+ "- Parameters:
"
+ "- msg"