Frank Kobzik has uploaded a new change for review.

Change subject: frontend: Fix NPE in os info
......................................................................

frontend: Fix NPE in os info

This patch takes care of console-related methods in AsyncDataProvider.
NPE can occur when existing vm is edited, but its OS was removed from os
info file.

Fixed by handling nulls in AsyncDataProvider and handling non-existent
OS case in client code (UnitVmModel).

Change-Id: I2aef27aee8e079497c9eaa22dfaa6cb9b5502aae
Bug-Url: https://bugzilla.redhat.com/1046809
Signed-off-by: Frantisek Kobzik <[email protected]>
---
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/dataprovider/AsyncDataProvider.java
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/UnitVmModel.java
2 files changed, 12 insertions(+), 2 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/73/32973/1

diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/dataprovider/AsyncDataProvider.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/dataprovider/AsyncDataProvider.java
index 7dd3047..a1106d8 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/dataprovider/AsyncDataProvider.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/dataprovider/AsyncDataProvider.java
@@ -3392,11 +3392,17 @@
     }
 
     public boolean hasSpiceSupport(int osId, Version version) {
-        return getDisplayTypes(osId, version).contains(DisplayType.qxl);
+        List<DisplayType> osDisplayTypes = getDisplayTypes(osId, version);
+        return osDisplayTypes == null
+                ? false
+                : osDisplayTypes.contains(DisplayType.qxl);
     }
 
     public List<DisplayType> getDisplayTypes(int osId, Version version) {
-        return displayTypes.get(osId).get(version);
+        Map<Version, List<DisplayType>> osDisplayTypes = 
displayTypes.get(osId);
+        return osDisplayTypes == null
+                ? null
+                : osDisplayTypes.get(version);
     }
 
     private void initDisplayTypes() {
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/UnitVmModel.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/UnitVmModel.java
index 80119eb..e983553 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/UnitVmModel.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/UnitVmModel.java
@@ -1881,6 +1881,10 @@
         }
 
         List<DisplayType> displayTypes = 
AsyncDataProvider.getInstance().getDisplayTypes(osType, 
cluster.getcompatibility_version());
+        if (displayTypes == null) {
+            Integer defaultOs = 
AsyncDataProvider.getInstance().getDefaultOs(cluster.getArchitecture());
+            displayTypes = 
AsyncDataProvider.getInstance().getDisplayTypes(defaultOs, 
cluster.getcompatibility_version());
+        }
         initDisplayProtocolWithTypes(displayTypes);
     }
 


-- 
To view, visit http://gerrit.ovirt.org/32973
To unsubscribe, visit http://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I2aef27aee8e079497c9eaa22dfaa6cb9b5502aae
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Frank Kobzik <[email protected]>
_______________________________________________
Engine-patches mailing list
[email protected]
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to