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