Juan Hernandez has uploaded a new change for review.

Change subject: core: Support JSON serialization in ExternalId
......................................................................

core: Support JSON serialization in ExternalId

This patch adds a default constructor to the ExternalId class in order
to support JSON serialization as required by the compensation mechanism.

Change-Id: I51e643893b9e59cb0cacd1779398946f1babe694
Signed-off-by: Juan Hernandez <juan.hernan...@redhat.com>
---
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/utils/ExternalId.java
A 
backend/manager/modules/common/src/test/java/org/ovirt/engine/core/common/utils/ExternalIdTest.java
2 files changed, 34 insertions(+), 2 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/16/19916/1

diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/utils/ExternalId.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/utils/ExternalId.java
index 2c74e17..fe7e6c1 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/utils/ExternalId.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/utils/ExternalId.java
@@ -20,9 +20,18 @@
     // a key in a hash map:
     private int hash;
 
+    /**
+     * This constructor is intended only for serialization support, please
+     * don't use it directly.
+     */
+    public ExternalId() {
+        bytes = new byte[0];
+        hash = Arrays.hashCode(bytes);
+    }
+
     public ExternalId(byte[] values) {
-        this.bytes = values;
-        this.hash = Arrays.hashCode(values);
+        bytes = values;
+        hash = Arrays.hashCode(values);
     }
 
     /**
@@ -56,6 +65,7 @@
         for (int i = 0; i < values.length; i++) {
             bytes[i] = (byte) (values[i] & 0xff);
         }
+        hash = Arrays.hashCode(values);
     }
 
     public byte[] getBytes() {
diff --git 
a/backend/manager/modules/common/src/test/java/org/ovirt/engine/core/common/utils/ExternalIdTest.java
 
b/backend/manager/modules/common/src/test/java/org/ovirt/engine/core/common/utils/ExternalIdTest.java
new file mode 100644
index 0000000..253f0b0
--- /dev/null
+++ 
b/backend/manager/modules/common/src/test/java/org/ovirt/engine/core/common/utils/ExternalIdTest.java
@@ -0,0 +1,22 @@
+package org.ovirt.engine.core.common.utils;
+
+import static junit.framework.Assert.assertEquals;
+
+import org.codehaus.jackson.map.ObjectMapper;
+import org.junit.Test;
+
+public class ExternalIdTest {
+
+    /**
+     * Check that an external id can be serialized and deserialized using JSON.
+     */
+    @Test
+    public void testJsonSerializationAndDeserialization() throws Exception {
+        ExternalId original = new ExternalId(0, 1, 2, 3);
+        ObjectMapper mapper = new ObjectMapper();
+        String value = mapper.writeValueAsString(original);
+        ExternalId deserialized = mapper.readValue(value, ExternalId.class);
+        assertEquals(original, deserialized);
+    }
+
+}


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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I51e643893b9e59cb0cacd1779398946f1babe694
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Juan Hernandez <juan.hernan...@redhat.com>
_______________________________________________
Engine-patches mailing list
Engine-patches@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to