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 <[email protected]>
---
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 <[email protected]>
Gerrit-Reviewer: Yair Zaslavsky <[email protected]>
_______________________________________________
Engine-patches mailing list
[email protected]
http://lists.ovirt.org/mailman/listinfo/engine-patches