AERI reporting UnknownHostException when networking down

Bug: 495223
Change-Id: I6dc26ba06e419cb74d3ae88120166898a5453b13
Signed-off-by: Marcel Bruch <marcel.bruch@codetrails.com>
diff --git a/bundles/org.eclipse.epp.logging.aeri.core/src/org/eclipse/epp/logging/aeri/core/SystemControl.java b/bundles/org.eclipse.epp.logging.aeri.core/src/org/eclipse/epp/logging/aeri/core/SystemControl.java
index 7f6beff..45dd5ed 100644
--- a/bundles/org.eclipse.epp.logging.aeri.core/src/org/eclipse/epp/logging/aeri/core/SystemControl.java
+++ b/bundles/org.eclipse.epp.logging.aeri.core/src/org/eclipse/epp/logging/aeri/core/SystemControl.java
@@ -98,7 +98,7 @@
     }
 
     public static boolean isDebug() {
-        return getSystemSettings().isDebugEnabled();
+        return Constants.DEBUG || getSystemSettings().isDebugEnabled();
     }
 
     public static void registerHandlers(Class<?>... handlers) {
diff --git a/bundles/org.eclipse.epp.logging.aeri.core/src/org/eclipse/epp/logging/aeri/core/filters/DecoratingDebugFilter.java b/bundles/org.eclipse.epp.logging.aeri.core/src/org/eclipse/epp/logging/aeri/core/filters/DecoratingDebugFilter.java
index 60b77c4..93da5f8 100644
--- a/bundles/org.eclipse.epp.logging.aeri.core/src/org/eclipse/epp/logging/aeri/core/filters/DecoratingDebugFilter.java
+++ b/bundles/org.eclipse.epp.logging.aeri.core/src/org/eclipse/epp/logging/aeri/core/filters/DecoratingDebugFilter.java
@@ -7,8 +7,6 @@
  */
 package org.eclipse.epp.logging.aeri.core.filters;
 
-import static org.eclipse.epp.logging.aeri.core.Constants.DEBUG;
-
 import java.text.MessageFormat;
 
 import org.eclipse.core.runtime.ILog;
@@ -17,6 +15,7 @@
 import org.eclipse.core.runtime.Status;
 import org.eclipse.epp.logging.aeri.core.Constants;
 import org.eclipse.epp.logging.aeri.core.IReport;
+import org.eclipse.epp.logging.aeri.core.SystemControl;
 import org.eclipse.jdt.annotation.Nullable;
 import org.osgi.framework.FrameworkUtil;
 
@@ -48,7 +47,7 @@
     @Override
     public boolean apply(@Nullable T input) {
         boolean apply = predicate.apply(input);
-        if (!apply && DEBUG) {
+        if (!apply && SystemControl.isDebug()) {
             if (input instanceof IStatus) {
                 debugStatus((IStatus) input);
             } else if (input instanceof IReport) {
diff --git a/bundles/org.eclipse.epp.logging.aeri.core/src/org/eclipse/epp/logging/aeri/core/util/Logs.java b/bundles/org.eclipse.epp.logging.aeri.core/src/org/eclipse/epp/logging/aeri/core/util/Logs.java
index 2a41fad..754f326 100644
--- a/bundles/org.eclipse.epp.logging.aeri.core/src/org/eclipse/epp/logging/aeri/core/util/Logs.java
+++ b/bundles/org.eclipse.epp.logging.aeri.core/src/org/eclipse/epp/logging/aeri/core/util/Logs.java
@@ -26,7 +26,7 @@
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.Platform;
 import org.eclipse.core.runtime.Status;
-import org.eclipse.epp.logging.aeri.core.Constants;
+import org.eclipse.epp.logging.aeri.core.SystemControl;
 import org.eclipse.epp.logging.aeri.core.l10n.LogMessages;
 import org.eclipse.jdt.annotation.Nullable;
 import org.osgi.framework.Bundle;
@@ -390,7 +390,7 @@
     }
 
     public static void debug(String message, Throwable throwable, Object... args) {
-        if (Constants.DEBUG) {
+        if (SystemControl.isDebug()) {
             LogMessages log = new LogMessages(IStatus.INFO, 404, message);
             log(log, throwable, args);
         }
diff --git a/bundles/org.eclipse.epp.logging.aeri.ide/src/org/eclipse/epp/internal/logging/aeri/ide/notifications/MylynNotificationsSupport.java b/bundles/org.eclipse.epp.logging.aeri.ide/src/org/eclipse/epp/internal/logging/aeri/ide/notifications/MylynNotificationsSupport.java
index 8709b07..95ce710 100644
--- a/bundles/org.eclipse.epp.logging.aeri.ide/src/org/eclipse/epp/internal/logging/aeri/ide/notifications/MylynNotificationsSupport.java
+++ b/bundles/org.eclipse.epp.logging.aeri.ide/src/org/eclipse/epp/internal/logging/aeri/ide/notifications/MylynNotificationsSupport.java
@@ -12,7 +12,6 @@
 import static org.eclipse.epp.internal.logging.aeri.ide.IDEWorkflow.TOPIC_BASE;
 import static org.eclipse.epp.internal.logging.aeri.ide.utils.IDEConstants.BUNDLE_ID;
 import static org.eclipse.epp.internal.logging.aeri.ide.utils.Servers.sort;
-import static org.eclipse.epp.logging.aeri.core.Constants.DEBUG;
 
 import java.util.List;
 import java.util.Set;
@@ -27,6 +26,7 @@
 import org.eclipse.epp.internal.logging.aeri.ide.ILogEventGroup;
 import org.eclipse.epp.internal.logging.aeri.ide.IServerDescriptor;
 import org.eclipse.epp.internal.logging.aeri.ide.l10n.LogMessages;
+import org.eclipse.epp.logging.aeri.core.SystemControl;
 import org.eclipse.epp.logging.aeri.core.util.Logs;
 import org.eclipse.mylyn.commons.notifications.ui.NotificationsUi;
 
@@ -102,7 +102,7 @@
     }
 
     private void testIsNotificationInProgress() {
-        if (DEBUG && isNotificationInProgress()) {
+        if (SystemControl.isDebug() && isNotificationInProgress()) {
             Logs.log(LogMessages.DEBUG_NOTIFICATION_IN_PROGRESS, ImmutableList.of(displayed));
         }
     }
diff --git a/bundles/org.eclipse.epp.logging.aeri.ide/src/org/eclipse/epp/internal/logging/aeri/ide/server/mars/ServerProblemsHistory.java b/bundles/org.eclipse.epp.logging.aeri.ide/src/org/eclipse/epp/internal/logging/aeri/ide/server/mars/ServerProblemsHistory.java
index 7343bbd..7c5fcff 100644
--- a/bundles/org.eclipse.epp.logging.aeri.ide/src/org/eclipse/epp/internal/logging/aeri/ide/server/mars/ServerProblemsHistory.java
+++ b/bundles/org.eclipse.epp.logging.aeri.ide/src/org/eclipse/epp/internal/logging/aeri/ide/server/mars/ServerProblemsHistory.java
@@ -15,6 +15,7 @@
 
 import java.io.File;
 import java.io.IOException;
+import java.net.UnknownHostException;
 import java.util.concurrent.CancellationException;
 import java.util.concurrent.TimeUnit;
 
@@ -302,6 +303,9 @@
                 return Status.OK_STATUS;
             } catch (CancellationException e) {
                 return Status.CANCEL_STATUS;
+            } catch (UnknownHostException e) {
+                Logs.debug("Failed to connect to server", e);
+                return Status.CANCEL_STATUS;
             } catch (Exception e) {
                 log(WARN_INDEX_UPDATE_FAILED, e);
                 return Status.OK_STATUS;
diff --git a/bundles/org.eclipse.epp.logging.aeri.ide/src/org/eclipse/epp/internal/logging/aeri/ide/utils/UploadReportsScheduler.java b/bundles/org.eclipse.epp.logging.aeri.ide/src/org/eclipse/epp/internal/logging/aeri/ide/utils/UploadReportsScheduler.java
index cb3397d..e871db7 100644
--- a/bundles/org.eclipse.epp.logging.aeri.ide/src/org/eclipse/epp/internal/logging/aeri/ide/utils/UploadReportsScheduler.java
+++ b/bundles/org.eclipse.epp.logging.aeri.ide/src/org/eclipse/epp/internal/logging/aeri/ide/utils/UploadReportsScheduler.java
@@ -11,6 +11,7 @@
 import static org.eclipse.epp.internal.logging.aeri.ide.l10n.LogMessages.WARN_RESPONSE_UPLOAD_REPORT_FAILED;
 import static org.eclipse.epp.internal.logging.aeri.ide.utils.Formats.format;
 
+import java.net.UnknownHostException;
 import java.util.concurrent.ConcurrentLinkedQueue;
 
 import org.eclipse.core.runtime.IProgressMonitor;
@@ -52,6 +53,13 @@
             IProblemState response = cx.submit(event.getStatus(), event.getContext(), SubMonitor.convert(monitor, 1));
             checkNotNull(response, "Server returned null response"); //$NON-NLS-1$
             event.setResponse(response);
+        } catch (UnknownHostException e) {
+            Logs.debug("Failed to connect to server ''{0}''", e, server.getName());
+            IProblemState response = IModelFactory.eINSTANCE.createProblemState();
+            response.setStatus(ProblemStatus.FAILURE);
+            response.setMessage(
+                    format(Messages.RESPONSE_REPORT_UPLOAD_FAILED, server.getName(), "Unknown Host Exception: " + e.getMessage()));
+            event.setResponse(response);
         } catch (Exception e) {
             Logs.log(WARN_RESPONSE_UPLOAD_REPORT_FAILED, e, server.getName(), e.getMessage());
             IProblemState response = IModelFactory.eINSTANCE.createProblemState();
@@ -81,8 +89,7 @@
 
     public void schedule(ILogEventGroup group) {
         if (group == null) {
-            Logs.warn(
-                    "Got a NULL log event group. Please comment on bug 494165 if you know how to reproduce this error.");
+            Logs.warn("Got a NULL log event group. Please comment on bug 494165 if you know how to reproduce this error.");
             return;
         }
         uploadQueue.add(group);