Fix ClassNotFoundException when clients don't have aeri dependency

Bug: 521657
Change-Id: Iaeaa31bd655ef2e9104e61adbf3cea679a4308a7
Signed-off-by: Johannes Dorn <johannes.dorn@codetrails.com>
diff --git a/bundles/org.eclipse.epp.logging.aeri.ide/src/org/eclipse/epp/internal/logging/aeri/ide/handlers/CreateConfigureDialogHandler.java b/bundles/org.eclipse.epp.logging.aeri.ide/src/org/eclipse/epp/internal/logging/aeri/ide/handlers/CreateConfigureDialogHandler.java
index 4b386bf..4819a73 100644
--- a/bundles/org.eclipse.epp.logging.aeri.ide/src/org/eclipse/epp/internal/logging/aeri/ide/handlers/CreateConfigureDialogHandler.java
+++ b/bundles/org.eclipse.epp.logging.aeri.ide/src/org/eclipse/epp/internal/logging/aeri/ide/handlers/CreateConfigureDialogHandler.java
@@ -43,7 +43,12 @@
         }
         Class<? extends Dialog> clazz;
         try {
-            clazz = (Class<? extends Dialog>) ext.loadClass(clazzName);
+            try {
+                clazz = (Class<? extends Dialog>) ext.loadClass(clazzName);
+            } catch (ClassNotFoundException e) {
+                // If the contributing bundle's classloader can't find the class, try our own.
+                clazz = (Class<? extends Dialog>) getClass().getClassLoader().loadClass(clazzName);
+            }
             Dialog object = ContextInjectionFactory.make(clazz, child);
             return object;
         } catch (Exception e) {
diff --git a/bundles/org.eclipse.epp.logging.aeri.ide/src/org/eclipse/epp/internal/logging/aeri/ide/handlers/CreateReportProcessorHandler.java b/bundles/org.eclipse.epp.logging.aeri.ide/src/org/eclipse/epp/internal/logging/aeri/ide/handlers/CreateReportProcessorHandler.java
index 66a75f8..83f6381 100644
--- a/bundles/org.eclipse.epp.logging.aeri.ide/src/org/eclipse/epp/internal/logging/aeri/ide/handlers/CreateReportProcessorHandler.java
+++ b/bundles/org.eclipse.epp.logging.aeri.ide/src/org/eclipse/epp/internal/logging/aeri/ide/handlers/CreateReportProcessorHandler.java
@@ -24,7 +24,13 @@
     public ReportProcessorSafeWrapper execute(String providerClass, IEclipseContext context, String contributor) {
         Bundle ext = Platform.getBundle(contributor);
         try {
-            Class<? extends IReportProcessor> clazz = (Class<? extends IReportProcessor>) ext.loadClass(providerClass);
+            Class<? extends IReportProcessor> clazz;
+            try {
+                clazz = (Class<? extends IReportProcessor>) ext.loadClass(providerClass);
+            } catch (ClassNotFoundException e) {
+                // If the contributing bundle's classloader can't find the class, try our own.
+                clazz = (Class<? extends IReportProcessor>) getClass().getClassLoader().loadClass(providerClass);
+            }
             IReportProcessor reportProcessor = ContextInjectionFactory.make(clazz, context);
             if (reportProcessor instanceof IEditableReportProcessor) {
                 return new EditableReportProcessorSafeWrapper((IEditableReportProcessor) reportProcessor);
diff --git a/bundles/org.eclipse.epp.logging.aeri.ide/src/org/eclipse/epp/internal/logging/aeri/ide/handlers/CreateServerConnectionHandler.java b/bundles/org.eclipse.epp.logging.aeri.ide/src/org/eclipse/epp/internal/logging/aeri/ide/handlers/CreateServerConnectionHandler.java
index 5cce75b..20a9a0c 100644
--- a/bundles/org.eclipse.epp.logging.aeri.ide/src/org/eclipse/epp/internal/logging/aeri/ide/handlers/CreateServerConnectionHandler.java
+++ b/bundles/org.eclipse.epp.logging.aeri.ide/src/org/eclipse/epp/internal/logging/aeri/ide/handlers/CreateServerConnectionHandler.java
@@ -25,7 +25,13 @@
         Bundle ext = Platform.getBundle(contributor);
         String clazzName = server.getClazz();
         try {
-            Class<? extends IServerConnection> clazz = (Class<? extends IServerConnection>) ext.loadClass(clazzName);
+            Class<? extends IServerConnection> clazz;
+            try {
+                clazz = (Class<? extends IServerConnection>) ext.loadClass(clazzName);
+            } catch (ClassNotFoundException e) {
+                // If the contributing bundle's classloader can't find the class, try our own.
+                clazz = (Class<? extends IServerConnection>) getClass().getClassLoader().loadClass(clazzName);
+            }
             IServerConnection object = ContextInjectionFactory.make(clazz, context);
             server.setConnection(object);
             return object;