Ravi Nori has uploaded a new change for review.

Change subject: engine : Add custom json deserializer for VdcActionType
......................................................................

engine : Add custom json deserializer for VdcActionType

If a VdcActionType is removed json deserialization
of VdcActionType fails leading to exceptions in
Commands Cache initialization.

Change-Id: Ia8236c4f57ceea557b1e60aa7c40e180c0a43b98
Bug-Url: https://bugzilla.redhat.com/1133041
Signed-off-by: Ravi Nori <rn...@redhat.com>
---
M 
backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/serialization/json/JsonVdcActionParametersBaseMixIn.java
A 
backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/serialization/json/VdcActionTypeDeserializer.java
2 files changed, 38 insertions(+), 0 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/19/32719/1

diff --git 
a/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/serialization/json/JsonVdcActionParametersBaseMixIn.java
 
b/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/serialization/json/JsonVdcActionParametersBaseMixIn.java
index 5847c81..aff501d 100644
--- 
a/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/serialization/json/JsonVdcActionParametersBaseMixIn.java
+++ 
b/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/serialization/json/JsonVdcActionParametersBaseMixIn.java
@@ -6,7 +6,9 @@
 import org.codehaus.jackson.annotate.JsonTypeInfo;
 import org.codehaus.jackson.annotate.JsonTypeInfo.As;
 import org.codehaus.jackson.annotate.JsonTypeInfo.Id;
+import org.codehaus.jackson.map.annotate.JsonDeserialize;
 import org.ovirt.engine.core.common.action.VdcActionParametersBase;
+import org.ovirt.engine.core.common.action.VdcActionType;
 
 @SuppressWarnings("serial")
 @JsonTypeInfo(use = Id.CLASS, include = As.PROPERTY)
@@ -22,4 +24,11 @@
     @Override
     public abstract ArrayList<VdcActionParametersBase> getImagesParameters();
 
+    @JsonDeserialize (using=VdcActionTypeDeserializer.class)
+    @Override
+    public abstract void setParentCommand(VdcActionType value);
+
+    @JsonDeserialize (using=VdcActionTypeDeserializer.class)
+    @Override
+    public abstract void setCommandType(VdcActionType commandType);
 }
diff --git 
a/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/serialization/json/VdcActionTypeDeserializer.java
 
b/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/serialization/json/VdcActionTypeDeserializer.java
new file mode 100644
index 0000000..678ceab
--- /dev/null
+++ 
b/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/serialization/json/VdcActionTypeDeserializer.java
@@ -0,0 +1,29 @@
+package org.ovirt.engine.core.utils.serialization.json;
+
+import org.codehaus.jackson.JsonParser;
+import org.codehaus.jackson.map.DeserializationContext;
+import org.codehaus.jackson.map.JsonDeserializer;
+import org.ovirt.engine.core.common.action.VdcActionType;
+
+import java.io.IOException;
+import java.util.HashMap;
+
+public class VdcActionTypeDeserializer extends JsonDeserializer<VdcActionType> 
{
+    private static HashMap<String, VdcActionType> mappings = new HashMap<>();
+
+    static {
+        for (VdcActionType action : VdcActionType.values()) {
+            mappings.put(action.name(), action);
+        }
+    }
+
+    @Override
+    public VdcActionType deserialize(JsonParser jsonParser, 
DeserializationContext deserializationContext) throws IOException {
+        String jsonValue = jsonParser.getText();
+        VdcActionType actionType = mappings.get(jsonValue);
+        if (actionType == null) {
+            actionType = VdcActionType.Unknown;
+        }
+        return actionType;
+    }
+}


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

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ia8236c4f57ceea557b1e60aa7c40e180c0a43b98
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: ovirt-engine-3.5
Gerrit-Owner: Ravi Nori <rn...@redhat.com>
_______________________________________________
Engine-patches mailing list
Engine-patches@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to