On 04/19/2012 09:28 PM, Eyal Edri wrote:
fyi,
1 unit test fails after these commits: (lots of commits, since the Jenkins server was
stuck during that time).
http://jenkins.ovirt.org/job/ovirt_engine_unit_tests/626/
the failed test:
org.ovirt.engine.core.utils.serialization.json.JsonObjectSerializerTest.testSerialize
That test is serializing an object with Jackson and then manually, and
comparing the result. It is failing because it gets this two things:
Manually:
{"integer":1992604070,"object":["org.ovirt.engine.core.compat.Guid",{"uuid":"7d47be2e-bc38-4d97-8489-21fcb316d799"}],"string":"\\VS|6BfM/!","guid":["org.ovirt.engine.core.compat.Guid",{"uuid":"cb15e87b-2878-4dcf-86e6-e388a32ff228"}]}
Using Jackson:
{"integer":1992604070,"guid":["org.ovirt.engine.core.compat.Guid",{"uuid":"cb15e87b-2878-4dcf-86e6-e388a32ff228"}],"string":"\\VS|6BfM/!","object":["org.ovirt.engine.core.compat.Guid",{"uuid":"7d47be2e-bc38-4d97-8489-21fcb316d799"}]}
The only difference is the order of the fields. When generated manually
the order is the one defined in the code, but when using Jackson the
order depends on the internal ordering of the fields, and that can
change between Jackson versions (we just updated to 1.9.4) or even when
compiling with different compilers.
The @JsonPropertyOrder annotation can be used like this to force the order:
@JsonPropertyOrder({ "integer", "object", "string",
"guid" })
public class JsonSerializablePojo implements Serializable {
I am proposing this change to add the annotation so that the test will pass:
http://gerrit.ovirt.org/3740