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