Hello Yair Zaslavsky,

I'd like you to do a code review.  Please visit

    http://gerrit.ovirt.org/21305

to review the following change.

Change subject: core: Adding JsonPropertyRename
......................................................................

core: Adding JsonPropertyRename

Adding the JsonPropertyRename annotation
which can be set on a Mixin setter method.
This annotation means that the the field got
changed from a previous version, so it should be
looked up at the Deserialization resolver, and be
translated to the field as existed at the time
the payload was serialized.

Change-Id: Ib3cebac37a7a0352a2859835ee3f2f350252d9c5
Signed-off-by: Yair Zaslavsky <yzasl...@redhat.com>
---
A 
backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/serialization/json/BackwardCompatbilityAnnotationIntrospector.java
M 
backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/serialization/json/JsonObjectDeserializer.java
A 
backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/serialization/json/JsonPropertyRename.java
A 
backend/manager/modules/utils/src/test/java/org/ovirt/engine/core/utils/serialization/json/BackwardCompatbilityAnnotationIntrospectorTest.java
4 files changed, 70 insertions(+), 0 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/05/21305/1

diff --git 
a/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/serialization/json/BackwardCompatbilityAnnotationIntrospector.java
 
b/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/serialization/json/BackwardCompatbilityAnnotationIntrospector.java
new file mode 100644
index 0000000..2f155c0
--- /dev/null
+++ 
b/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/serialization/json/BackwardCompatbilityAnnotationIntrospector.java
@@ -0,0 +1,14 @@
+package org.ovirt.engine.core.utils.serialization.json;
+
+import org.codehaus.jackson.map.introspect.AnnotatedMethod;
+import org.codehaus.jackson.map.introspect.JacksonAnnotationIntrospector;
+
+public class BackwardCompatbilityAnnotationIntrospector extends 
JacksonAnnotationIntrospector {
+
+    @Override
+    public String findSettablePropertyName(AnnotatedMethod am)
+    {
+        System.out.println("annotated method is " + am.getName());
+        return super.findSettablePropertyName(am);
+    }
+}
diff --git 
a/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/serialization/json/JsonObjectDeserializer.java
 
b/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/serialization/json/JsonObjectDeserializer.java
index d3d4cb2..1b91316 100644
--- 
a/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/serialization/json/JsonObjectDeserializer.java
+++ 
b/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/serialization/json/JsonObjectDeserializer.java
@@ -32,6 +32,8 @@
     private static final ObjectMapper formattedMapper;
     static {
         formattedMapper = new ObjectMapper();
+        
formattedMapper.setDeserializationConfig(formattedMapper.getDeserializationConfig()
+                .withAnnotationIntrospector(new 
BackwardCompatbilityAnnotationIntrospector()));
         addMixin(Guid.class, JsonGuidMixIn.class);
         addMixin(VdcActionParametersBase.class, 
JsonVdcActionParametersBaseMixIn.class);
         addMixin(IVdcQueryable.class, JsonIVdcQueryableMixIn.class);
diff --git 
a/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/serialization/json/JsonPropertyRename.java
 
b/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/serialization/json/JsonPropertyRename.java
new file mode 100644
index 0000000..fc2941b
--- /dev/null
+++ 
b/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/serialization/json/JsonPropertyRename.java
@@ -0,0 +1,16 @@
+package org.ovirt.engine.core.utils.serialization.json;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * The following annotation marks that a property name of an entity has 
changed and that during deserialization there
+ * should be an attempt to deserialize from
+ */
+@Target(ElementType.METHOD)
+@Retention(RetentionPolicy.RUNTIME)
+public @interface JsonPropertyRename {
+
+}
diff --git 
a/backend/manager/modules/utils/src/test/java/org/ovirt/engine/core/utils/serialization/json/BackwardCompatbilityAnnotationIntrospectorTest.java
 
b/backend/manager/modules/utils/src/test/java/org/ovirt/engine/core/utils/serialization/json/BackwardCompatbilityAnnotationIntrospectorTest.java
new file mode 100644
index 0000000..54955c9
--- /dev/null
+++ 
b/backend/manager/modules/utils/src/test/java/org/ovirt/engine/core/utils/serialization/json/BackwardCompatbilityAnnotationIntrospectorTest.java
@@ -0,0 +1,38 @@
+package org.ovirt.engine.core.utils.serialization.json;
+
+import org.junit.Test;
+
+public class BackwardCompatbilityAnnotationIntrospectorTest {
+
+    public static class Person {
+        private String name;
+        private int age;
+
+        public Person(String name, int age) {
+            this.name = name;
+            this.age = age;
+        }
+
+        public int getAge() {
+            return age;
+        }
+
+        public void setAge(int age) {
+            this.age = age;
+        }
+
+        public String getName() {
+            return name;
+        }
+
+        public void setName(String name) {
+            this.name = name;
+        }
+    }
+
+    @Test
+    public void test() {
+
+    }
+
+}


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

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

Reply via email to