Roy Golan has uploaded a new change for review.

Change subject: core: Fix JSON serialization for diskMap at VmTemplate
......................................................................

core: Fix JSON serialization for diskMap at VmTemplate

JSON de-serialization of java class with a member of an interface type
is loosing its concrete type due to erasure so

 class A {
   private Map x
 }

is serialized to
  A {
    x {}  <- x is considered an arbitraty object
  }

and couldn't deserialized back to Map, throwing an error

while it should have been

 private HashMap x

and then

 A {
   x: [ "java.util.HashMap" , { ... } ]
 }

See Also - http://wiki.fasterxml.com/JacksonPolymorphicDeserialization

Change-Id: Ie56dca3f2cae063c28515e904d644a0f1f39feeb
Signed-off-by: Roy Golan <[email protected]>
Bug-Url: https://bugzilla.redhat.com/996005
---
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ImportVmTemplateCommand.java
M 
backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/AddVmCommandTest.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmTemplate.java
3 files changed, 6 insertions(+), 6 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/01/18001/1

diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ImportVmTemplateCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ImportVmTemplateCommand.java
index 6df80ef..8e5067c 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ImportVmTemplateCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ImportVmTemplateCommand.java
@@ -121,7 +121,7 @@
                 getParameters().setImages(images);
                 getVmTemplate().setImages(images);
                 ensureDomainMap(getParameters().getImages(), 
getParameters().getDestDomainId());
-                Map<Guid, DiskImage> imageMap = new HashMap<Guid, DiskImage>();
+                HashMap<Guid, DiskImage> imageMap = new HashMap<Guid, 
DiskImage>();
                 for (DiskImage image : images) {
                     if (Guid.Empty.equals(image.getVmSnapshotId())) {
                         retVal = 
failCanDoAction(VdcBllMessages.ACTION_TYPE_FAILED_CORRUPTED_VM_SNAPSHOT_ID);
diff --git 
a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/AddVmCommandTest.java
 
b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/AddVmCommandTest.java
index 35723d1..1295c6f 100644
--- 
a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/AddVmCommandTest.java
+++ 
b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/AddVmCommandTest.java
@@ -385,7 +385,7 @@
             vmTemplate.setStoragePoolId(STORAGE_POOL_ID);
             DiskImage image = createDiskImageTemplate();
             vmTemplate.getDiskMap().put(image.getImageId(), image);
-            Map<Guid, DiskImage> diskImageMap = new HashMap<Guid, DiskImage>();
+            HashMap<Guid, DiskImage> diskImageMap = new HashMap<Guid, 
DiskImage>();
             DiskImage diskImage = createDiskImage(REQUIRED_DISK_SIZE_GB);
             diskImageMap.put(diskImage.getId(), diskImage);
             vmTemplate.setDiskImageMap(diskImageMap);
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmTemplate.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmTemplate.java
index 3288096..2b23dfb 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmTemplate.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmTemplate.java
@@ -4,7 +4,6 @@
 import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
-import java.util.Map;
 
 import javax.validation.constraints.Size;
 import javax.validation.groups.Default;
@@ -37,7 +36,7 @@
 
     private String storagePoolName;
 
-    private Map<Guid, DiskImage> diskMap = new HashMap<Guid, DiskImage>();
+    private HashMap<Guid, DiskImage> diskMap = new HashMap<Guid, DiskImage>();
 
     private ArrayList<DiskImage> diskList = new ArrayList<DiskImage>();
 
@@ -201,14 +200,15 @@
     }
 
     @JsonIgnore
-    public Map<Guid, DiskImage> getDiskImageMap() {
+    public HashMap<Guid, DiskImage> getDiskImageMap() {
         return diskMap;
     }
 
-    public void setDiskImageMap(Map<Guid, DiskImage> value) {
+    public void setDiskImageMap(HashMap<Guid, DiskImage> value) {
         diskMap = value;
     }
 
+
     @Override
     @JsonIgnore
     public ArrayList<DiskImage> getDiskList() {


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

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

Reply via email to