Bug 563802 - If no LS hover let JDT hover providers work

Change-Id: I1716e0216b5f9cb85b8155de94895760bab66992
Signed-off-by: BoykoAlex <aboyko@pivotal.io>
diff --git a/org.eclipse.lsp4e.jdt/src/org/eclipse/lsp4e/jdt/LSJavaHoverProvider.java b/org.eclipse.lsp4e.jdt/src/org/eclipse/lsp4e/jdt/LSJavaHoverProvider.java
index 6709af5..50d2785 100644
--- a/org.eclipse.lsp4e.jdt/src/org/eclipse/lsp4e/jdt/LSJavaHoverProvider.java
+++ b/org.eclipse.lsp4e.jdt/src/org/eclipse/lsp4e/jdt/LSJavaHoverProvider.java
@@ -69,6 +69,10 @@
 					lsHoverFuture.thenAccept(lsHtmlHoverContent::set)
 			).get(1000, TimeUnit.MILLISECONDS);
 
+			if (lsHtmlHoverContent.get() == null) {
+				// No hover content from Language Servers. Return null to let JDT compute the hover using its own Hover Providers
+				return null;
+			}
 			input = jdtHoverControlInput.get();
 			if (input != null) {
 				previous = (JavadocBrowserInformationControlInput) input.getPrevious();
@@ -78,9 +82,13 @@
 			}
 
 		} catch (InterruptedException | ExecutionException e) {
-			jdtHtmlHoverContent = noJavadocMessage("Javadoc unavailable. Failed to obtain it.");
+			LanguageServerPlugin.logWarning("Javadoc unavailable. Failed to obtain it.", e);
+			// Return null to let JDT compute the hover using its own Hover Providers
+			return null;
 		} catch (TimeoutException e) {
-			jdtHtmlHoverContent = noJavadocMessage("Javadoc unavailable. Took too long to obtain it.");
+			LanguageServerPlugin.logWarning("Timeout waiting for data to generate LS hover", e);
+			// Return null to let JDT compute the hover using its own Hover Providers
+			return null;
 		}
 		
 		/*
@@ -151,14 +159,6 @@
 		return lsHtml + SEPARATOR + jdtHtml;
 	}
 
-	private String noJavadocMessage(String message) {
-		StringBuilder sb = new StringBuilder();
-		sb.append("<h4>");
-		sb.append(message);
-		sb.append("</h4>");
-		return wrapHtml(sb.toString()).toString();
-	}
-
 	@Override
 	public IRegion getHoverRegion(ITextViewer textViewer, int offset) {
 		return this.lsBasedHover.getHoverRegion(textViewer, offset);