From e78e195e58e4ba552b0862a190fb3c87c0767a6b Mon Sep 17 00:00:00 2001 From: "Egor.Ushakov" Date: Fri, 28 Feb 2014 20:13:50 +0400 Subject: [PATCH] do not save null in text and extra text --- .../com/intellij/util/xmlb/TextBinding.java | 1 + .../intellij/util/xmlb/XmlSerializerTest.java | 25 +++++++++++++++++++ 2 files changed, 26 insertions(+) diff --git a/platform/util/src/com/intellij/util/xmlb/TextBinding.java b/platform/util/src/com/intellij/util/xmlb/TextBinding.java index a195b3b6b134..57cc3ef79315 100644 --- a/platform/util/src/com/intellij/util/xmlb/TextBinding.java +++ b/platform/util/src/com/intellij/util/xmlb/TextBinding.java @@ -32,6 +32,7 @@ public class TextBinding implements Binding { @Override public Object serialize(Object o, Object context, SerializationFilter filter) { final Object v = myAccessor.read(o); + if (v == null) return context; final Object node = myBinding.serialize(v, context, filter); return new Text(((Content)node).getValue()); diff --git a/platform/util/testSrc/com/intellij/util/xmlb/XmlSerializerTest.java b/platform/util/testSrc/com/intellij/util/xmlb/XmlSerializerTest.java index d70588834481..7a147e074468 100644 --- a/platform/util/testSrc/com/intellij/util/xmlb/XmlSerializerTest.java +++ b/platform/util/testSrc/com/intellij/util/xmlb/XmlSerializerTest.java @@ -1029,6 +1029,31 @@ public class XmlSerializerTest extends TestCase { } } + public static class ConversionFromTextToAttributeBean { + @Property(surroundWithTag = false) + public ConditionBean myConditionBean = new ConditionBean(); + } + @Tag("condition") + public static class ConditionBean { + @Attribute("expression") + public String myNewCondition; + @Text + public String myOldCondition; + } + + public void testConversionFromTextToAttribute() { + ConversionFromTextToAttributeBean bean = new ConversionFromTextToAttributeBean(); + bean.myConditionBean.myOldCondition = "2+2"; + doSerializerTest("\n" + + " 2+2\n" + + "", bean); + + bean = new ConversionFromTextToAttributeBean(); + bean.myConditionBean.myNewCondition = "2+2"; + doSerializerTest("\n" + + " \n" + + "", bean); + } public void testDeserializeInto() throws Exception { BeanWithPublicFields bean = new BeanWithPublicFields();