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();