Fix NPEs in Sequence Diagram Framework during shutdown
authorBernd Hufmann <bhufmann@gmail.com>
Tue, 20 Nov 2012 16:47:09 +0000 (11:47 -0500)
committerBernd Hufmann <bhufmann@gmail.com>
Tue, 20 Nov 2012 17:51:46 +0000 (12:51 -0500)
Multiple instances of NPEs:
- TmfUml2SDSyncLoader
- LoaderManager
- SDView

Change-Id: Iaea3f46b60527cd84dd8f51bd79319c27925ecce
Reviewed-on: https://git.eclipse.org/r/8781
Reviewed-by: Patrick Tasse <patrick.tasse@gmail.com>
IP-Clean: Patrick Tasse <patrick.tasse@gmail.com>
Tested-by: Hudson CI
org.eclipse.linuxtools.tmf.ui/src/org/eclipse/linuxtools/tmf/ui/views/uml2sd/SDView.java [changed mode: 0755->0644]
org.eclipse.linuxtools.tmf.ui/src/org/eclipse/linuxtools/tmf/ui/views/uml2sd/load/LoadersManager.java [changed mode: 0755->0644]
org.eclipse.linuxtools.tmf.ui/src/org/eclipse/linuxtools/tmf/ui/views/uml2sd/loader/TmfUml2SDSyncLoader.java

old mode 100755 (executable)
new mode 100644 (file)
index 721abdc..5c16712
@@ -764,8 +764,11 @@ public class SDView extends ViewPart {
         }
 
         IUml2SDLoader loader = LoadersManager.getInstance().getCurrentLoader(getViewSite().getId(), this);
+        if (loader == null) {
+            return;
+        }
 
-        if ((loader != null) && (loader.getTitleString() != null)) {
+        if (loader.getTitleString() != null) {
             setContentDescription(loader.getTitleString());
         }
 
old mode 100755 (executable)
new mode 100644 (file)
index 447a9c8..97d0474
@@ -29,6 +29,8 @@ import org.eclipse.linuxtools.internal.tmf.ui.Activator;
 import org.eclipse.linuxtools.tmf.ui.views.uml2sd.SDView;
 import org.eclipse.ui.IViewReference;
 import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.PlatformUI;
 
 /**
  * Manager class for the UML2SD extension point.
@@ -161,7 +163,13 @@ public class LoadersManager {
             return null;
         }
 
-        IWorkbenchPage persp = Activator.getDefault().getWorkbench().getActiveWorkbenchWindow().getActivePage();
+        IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
+        // During Eclipse shutdown the active workbench window is null
+        if (window == null) {
+            return null;
+        }
+
+        IWorkbenchPage persp = window.getActivePage();
 
         SDView sdView = view;
 
@@ -233,7 +241,12 @@ public class LoadersManager {
 
         if ((currentLoader != null) && (currentLoader != loader)) {
             if (loader != null) {
-                IWorkbenchPage persp = Activator.getDefault().getWorkbench().getActiveWorkbenchWindow().getActivePage();
+                IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
+                // During Eclipse shutdown the active workbench window is null
+                if (window == null) {
+                    return;
+                }
+                IWorkbenchPage persp = window.getActivePage();
                 try {
                     // Search view corresponding to the viewId
                     SDView sdview = null;
index 5c39b7d70db04759a48aa8a277933e35c18e31a2..85c32be609ca9815c3d34df437db8581a9d60f5b 100644 (file)
@@ -534,6 +534,15 @@ public class TmfUml2SDSyncLoader extends TmfComponent implements IUml2SDLoader,
            if (window != null) {
                window.getSelectionService().removePostSelectionListener(this);
            }
+
+           if (fIndexRequest != null) {
+               if (!fIndexRequest.isCompleted()) {
+                   fIndexRequest.cancel();
+               }
+               fIndexRequest = null;
+           }
+           cancelOngoingRequests();
+
            fView.setSDFindProvider(null);
            fView.setSDPagingProvider(null);
            fView.setSDFilterProvider(null);
@@ -1501,6 +1510,9 @@ public class TmfUml2SDSyncLoader extends TmfComponent implements IUml2SDLoader,
      */
     protected static class IndexingJob extends Job {
 
+        /**
+         * @param name The job name
+         */
         public IndexingJob(String name) {
             super(name);
         }
This page took 0.027197 seconds and 5 git commands to generate.