Hello Yair Zaslavsky,

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

    http://gerrit.ovirt.org/21307

to review the following change.

Change subject: introspector - should be fixed up on the third patch in the 
series (PropertyRename patch)
......................................................................

introspector - should be fixed up on the third patch in the series 
(PropertyRename patch)

Change-Id: I0f3e063d28adb460f1165e6ff062954fbb5da20d
Signed-off-by: Yair Zaslavsky <yzasl...@redhat.com>
---
M 
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/DeserializationResolver.java
M 
backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/serialization/json/JsonObjectDeserializer.java
M 
backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/serialization/json/JsonObjectSerializer.java
M 
backend/manager/modules/utils/src/test/java/org/ovirt/engine/core/utils/serialization/json/BackwardCompatbilityAnnotationIntrospectorTest.java
5 files changed, 61 insertions(+), 15 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/07/21307/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
index 2f155c0..d8d2070 100644
--- 
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
@@ -1,5 +1,7 @@
 package org.ovirt.engine.core.utils.serialization.json;
 
+import java.lang.annotation.Annotation;
+
 import org.codehaus.jackson.map.introspect.AnnotatedMethod;
 import org.codehaus.jackson.map.introspect.JacksonAnnotationIntrospector;
 
@@ -9,6 +11,16 @@
     public String findSettablePropertyName(AnnotatedMethod am)
     {
         System.out.println("annotated method is " + am.getName());
+        // Todo - for all setters check that they have the JsonProperyRename 
property
+        if (am.getName().equals("setAge") || 
am.getAnnotation(JsonPropertyRename.class) != null) {
+            // Todo - use the DeserializationResolver to resolve the field name
+            return "blabla";
+        }
         return super.findSettablePropertyName(am);
     }
+
+    @Override
+    public boolean isHandled(Annotation ann) {
+        return ann.annotationType().equals(JsonPropertyRename.class) || 
super.isHandled(ann);
+    }
 }
diff --git 
a/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/serialization/json/DeserializationResolver.java
 
b/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/serialization/json/DeserializationResolver.java
index 806a8d6..2cc925d 100644
--- 
a/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/serialization/json/DeserializationResolver.java
+++ 
b/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/serialization/json/DeserializationResolver.java
@@ -7,18 +7,18 @@
 
 public class DeserializationResolver {
     private static DeserializationResolver instance = new 
DeserializationResolver();
-    
+
     private Map<Pair<String, String>, Pair<String, String>> classResolvingMap 
= new HashMap<>();
     private Map<ClassFieldNameInfo, ClassFieldNameInfo> fieldResolvingMap = 
new HashMap<>();
 
     public static DeserializationResolver getInstance() {
         return instance;
     }
-    
+
     public void add(String oldClassName, String oldClassVer, String className, 
String classVer) {
         classResolvingMap.put(new Pair<String, String>(oldClassVer, 
oldClassName),
                 new Pair<String, String>(classVer, className));
-        
+
     }
 
     public void addFieldName(
@@ -26,7 +26,7 @@
             String className, String classVer, String fieldName) {
         fieldResolvingMap.put(new ClassFieldNameInfo(oldClassVer, 
oldClassName, oldFieldName),
                 new ClassFieldNameInfo(classVer, className, fieldName));
-        
+
     }
 
     public String reolveClassName(String className, String originalVer, String 
resolvingVer) {
@@ -69,7 +69,7 @@
             // while (pair.getFirst().compareTo(resolvingVer) >= 0) {
             while (true) {
                 ClassFieldNameInfo auxFieldInfo = 
fieldResolvingMap.get(fieldInfo);
-                if (auxFieldInfo == null || 
+                if (auxFieldInfo == null ||
                         
(auxFieldInfo.getClassNameVersionPair().getSecond().equals(fieldInfo.getClassNameVersionPair().getSecond())
                         &&
                         
auxFieldInfo.getFieldName().equals(fieldInfo.getFieldName())
@@ -80,7 +80,7 @@
         }
         return null;
     }
- 
+
     public void add(String className, String ver) {
         add(className, ver, className, ver);
     }
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 c7f180a..e03eba2 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
@@ -9,12 +9,8 @@
 import org.apache.commons.lang.SerializationException;
 import org.apache.commons.lang.StringUtils;
 import org.codehaus.jackson.JsonNode;
-import org.codehaus.jackson.JsonToken;
 import org.codehaus.jackson.map.DeserializationConfig.Feature;
-import org.codehaus.jackson.map.MapperConfig;
 import org.codehaus.jackson.map.ObjectMapper;
-import org.codehaus.jackson.map.PropertyNamingStrategy;
-import org.codehaus.jackson.map.introspect.AnnotatedField;
 import org.codehaus.jackson.map.introspect.AnnotatedMethod;
 import org.codehaus.jackson.map.introspect.JacksonAnnotationIntrospector;
 import org.codehaus.jackson.node.ObjectNode;
@@ -44,7 +40,7 @@
     static {
         formattedMapper = new ObjectMapper();
         
formattedMapper.setDeserializationConfig(formattedMapper.getDeserializationConfig()
-                .withAnnotationIntrospector(new 
BackwardCompatbilityAnnotationIntrospector2()));
+                .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/JsonObjectSerializer.java
 
b/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/serialization/json/JsonObjectSerializer.java
index 08cafed..6007144 100644
--- 
a/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/serialization/json/JsonObjectSerializer.java
+++ 
b/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/serialization/json/JsonObjectSerializer.java
@@ -88,7 +88,7 @@
     public String serializeUnformattedJson(Serializable payload) throws 
SerializationExeption {
         return writeJsonAsString(payload, unformattedMapper);
     }
-    
+
     static class Person {
         private String name;
         private String lastname;
@@ -119,7 +119,7 @@
         JsonObjectSerializer jos = new JsonObjectSerializer();
         JsonObjectDeserializer jod = new JsonObjectDeserializer("3.2");
         DeserializationResolver.getInstance().addFieldName(
-                "org.ovirt.engine.core.common.businessentities.VmStatic", 
"3.1", "osOldId", 
+                "org.ovirt.engine.core.common.businessentities.VmStatic", 
"3.1", "osOldId",
                 "org.ovirt.engine.core.common.businessentities.VmStatic", 
"3.2", "osId");
 
         String vmSs = "{\n" +
@@ -137,7 +137,7 @@
 "  \"comment\" : null,\n" +
 "  \"memSizeMb\" : 0\n}";
         VmStatic vmS2 = jod.deserialize(vmSs, VmStatic.class);
-        
+
         System.out.println("Os Id = "+vmS2.getOsId());
     }
 }
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
index 54955c9..30ac0fe 100644
--- 
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
@@ -1,12 +1,33 @@
 package org.ovirt.engine.core.utils.serialization.json;
 
+import static org.junit.Assert.assertEquals;
+
+import java.io.Serializable;
+
 import org.junit.Test;
 
 public class BackwardCompatbilityAnnotationIntrospectorTest {
 
-    public static class Person {
+    public static class Person implements Serializable {
+        /**
+         *
+         */
+        private static final long serialVersionUID = 9208114474860242367L;
         private String name;
         private int age;
+
+        public Person() {
+        }
+
+        @Override
+        public boolean equals(Object other) {
+            if (!(other instanceof Person)) {
+                return false;
+            }
+            Person otherPerson = (Person) other;
+            return age == otherPerson.getAge() && 
name.equals(otherPerson.getName());
+
+        }
 
         public Person(String name, int age) {
             this.name = name;
@@ -30,8 +51,25 @@
         }
     }
 
+    public static abstract class PersonMixin extends Person {
+
+        @JsonPropertyRename
+        @Override
+        public abstract void setAge(int age);
+
+    }
+
     @Test
     public void test() {
+        JsonObjectSerializer ser = new JsonObjectSerializer();
+        Person person = new Person("John Smith", 6);
+        String serialized = ser.serialize(person);
+        serialized = serialized.replace("age", "blabla");
+        JsonObjectDeserializer der = new JsonObjectDeserializer();
+        der.addMixin(Person.class, PersonMixin.class);
+        Person derPerson = der.deserialize(serialized, Person.class);
+        assertEquals(person, derPerson);
+
 
     }
 


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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I0f3e063d28adb460f1165e6ff062954fbb5da20d
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