diff --git a/platform/util/src/com/intellij/openapi/util/JDOMUtil.java b/platform/util/src/com/intellij/openapi/util/JDOMUtil.java index 2f3824c93b4c..e2e017ac2466 100644 --- a/platform/util/src/com/intellij/openapi/util/JDOMUtil.java +++ b/platform/util/src/com/intellij/openapi/util/JDOMUtil.java @@ -136,7 +136,7 @@ public class JDOMUtil { @SuppressWarnings({"unchecked"}) @NotNull - public static Object[] getChildNodesWithAttrs(final Element e) { + public static Object[] getChildNodesWithAttrs(@NotNull Element e) { ArrayList result = new ArrayList(); result.addAll(e.getContent()); result.addAll(e.getAttributes()); diff --git a/platform/util/src/com/intellij/util/xmlb/AbstractCollectionBinding.java b/platform/util/src/com/intellij/util/xmlb/AbstractCollectionBinding.java index cf6db68d2dab..82ffb64e5b19 100644 --- a/platform/util/src/com/intellij/util/xmlb/AbstractCollectionBinding.java +++ b/platform/util/src/com/intellij/util/xmlb/AbstractCollectionBinding.java @@ -20,6 +20,7 @@ import com.intellij.openapi.util.JDOMUtil; import com.intellij.util.xmlb.annotations.AbstractCollection; import org.jdom.Content; import org.jdom.Element; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.*; @@ -130,7 +131,7 @@ abstract class AbstractCollectionBinding implements Binding { } } - public Object deserialize(Object o, Object... nodes) { + public Object deserialize(Object o, @NotNull Object... nodes) { Collection result; if (getTagName(o) != null) { diff --git a/platform/util/src/com/intellij/util/xmlb/AccessorBindingWrapper.java b/platform/util/src/com/intellij/util/xmlb/AccessorBindingWrapper.java index 01daa631b141..75a5a28c8d93 100644 --- a/platform/util/src/com/intellij/util/xmlb/AccessorBindingWrapper.java +++ b/platform/util/src/com/intellij/util/xmlb/AccessorBindingWrapper.java @@ -16,6 +16,7 @@ package com.intellij.util.xmlb; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; class AccessorBindingWrapper implements Binding { @@ -33,7 +34,7 @@ class AccessorBindingWrapper implements Binding { } @Nullable - public Object deserialize(Object context, Object... nodes) { + public Object deserialize(Object context, @NotNull Object... nodes) { myAccessor.write(context, myBinding.deserialize(myAccessor.read(context), nodes)); return context; } diff --git a/platform/util/src/com/intellij/util/xmlb/AttributeBinding.java b/platform/util/src/com/intellij/util/xmlb/AttributeBinding.java index 753db1a08dd5..1833947df827 100644 --- a/platform/util/src/com/intellij/util/xmlb/AttributeBinding.java +++ b/platform/util/src/com/intellij/util/xmlb/AttributeBinding.java @@ -19,6 +19,7 @@ package com.intellij.util.xmlb; import com.intellij.util.xmlb.annotations.Attribute; import org.jdom.Content; import org.jdom.Text; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; public class AttributeBinding implements Binding { @@ -39,7 +40,7 @@ public class AttributeBinding implements Binding { } @Nullable - public Object deserialize(Object context, Object... nodes) { + public Object deserialize(Object context, @NotNull Object... nodes) { assert nodes.length == 1; Object node = nodes[0]; assert isBoundTo(node); diff --git a/platform/util/src/com/intellij/util/xmlb/BeanBinding.java b/platform/util/src/com/intellij/util/xmlb/BeanBinding.java index a40a40ed6e3e..0f3433342385 100644 --- a/platform/util/src/com/intellij/util/xmlb/BeanBinding.java +++ b/platform/util/src/com/intellij/util/xmlb/BeanBinding.java @@ -60,6 +60,7 @@ class BeanBinding implements Binding { assert !StringUtil.isEmptyOrSpaces(myTagName) : "Bean name is empty: " + beanClass; } + @Override public void init() { initPropertyBindings(myBeanClass); } @@ -72,6 +73,7 @@ class BeanBinding implements Binding { } } + @Override public Object serialize(Object o, Object context, SerializationFilter filter) { Element element = new Element(myTagName); @@ -112,15 +114,16 @@ class BeanBinding implements Binding { } } - public void deserializeInto(final Object bean, final Element element) { + public void deserializeInto(final Object bean, @NotNull Element element) { _deserializeInto(bean, element); } - public Object deserialize(Object o, Object... nodes) { + @Override + public Object deserialize(Object o, @NotNull Object... nodes) { return _deserializeInto(instantiateBean(), nodes); } - private Object _deserializeInto(final Object result, final Object... aNodes) { + private Object _deserializeInto(final Object result, @NotNull Object... aNodes) { List nodes = new ArrayList(); for (Object aNode : aNodes) { if (XmlSerializerImpl.isIgnoredNode(aNode)) continue; @@ -181,10 +184,12 @@ class BeanBinding implements Binding { return result; } + @Override public boolean isBoundTo(Object node) { return node instanceof Element && ((Element)node).getName().equals(myTagName); } + @Override public Class getBoundNodeType() { return Element.class; } diff --git a/platform/util/src/com/intellij/util/xmlb/Binding.java b/platform/util/src/com/intellij/util/xmlb/Binding.java index 841b45f3094f..53e77dc54bb4 100644 --- a/platform/util/src/com/intellij/util/xmlb/Binding.java +++ b/platform/util/src/com/intellij/util/xmlb/Binding.java @@ -15,13 +15,14 @@ */ package com.intellij.util.xmlb; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; interface Binding { Object serialize(Object o, @Nullable Object context, SerializationFilter filter); @Nullable - Object deserialize(Object context, Object... nodes); + Object deserialize(Object context, @NotNull Object... nodes); boolean isBoundTo(Object node); diff --git a/platform/util/src/com/intellij/util/xmlb/JDOMElementBinding.java b/platform/util/src/com/intellij/util/xmlb/JDOMElementBinding.java index 5d2f59fdc4a7..2c239b9e56ff 100644 --- a/platform/util/src/com/intellij/util/xmlb/JDOMElementBinding.java +++ b/platform/util/src/com/intellij/util/xmlb/JDOMElementBinding.java @@ -18,6 +18,7 @@ package com.intellij.util.xmlb; import com.intellij.util.xmlb.annotations.Tag; import org.jdom.Element; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.ArrayList; @@ -57,7 +58,7 @@ class JDOMElementBinding implements Binding { } @Nullable - public Object deserialize(Object context, Object... nodes) { + public Object deserialize(Object context, @NotNull Object... nodes) { Element[] result = new Element[nodes.length]; System.arraycopy(nodes, 0, result, 0, nodes.length); diff --git a/platform/util/src/com/intellij/util/xmlb/MapBinding.java b/platform/util/src/com/intellij/util/xmlb/MapBinding.java index 04435889b525..74be73e3ea7c 100644 --- a/platform/util/src/com/intellij/util/xmlb/MapBinding.java +++ b/platform/util/src/com/intellij/util/xmlb/MapBinding.java @@ -23,6 +23,7 @@ import org.jdom.Attribute; import org.jdom.Content; import org.jdom.Element; import org.jdom.Text; +import org.jetbrains.annotations.NotNull; import java.lang.reflect.ParameterizedType; import java.lang.reflect.Type; @@ -134,7 +135,7 @@ class MapBinding implements Binding { return myMapAnnotation == null ? KEY : myMapAnnotation.keyAttributeName(); } - public Object deserialize(Object o, Object... nodes) { + public Object deserialize(Object o, @NotNull Object... nodes) { Map map = (Map)o; map.clear(); diff --git a/platform/util/src/com/intellij/util/xmlb/OptionTagBinding.java b/platform/util/src/com/intellij/util/xmlb/OptionTagBinding.java index ad7bd15e67f9..2995bbcf4cdc 100644 --- a/platform/util/src/com/intellij/util/xmlb/OptionTagBinding.java +++ b/platform/util/src/com/intellij/util/xmlb/OptionTagBinding.java @@ -25,6 +25,7 @@ import org.jdom.Content; import org.jdom.Element; import org.jdom.Text; import org.jetbrains.annotations.NonNls; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.ArrayList; @@ -80,7 +81,7 @@ class OptionTagBinding implements Binding { return targetElement; } - public Object deserialize(Object o, Object... nodes) { + public Object deserialize(Object o, @NotNull Object... nodes) { if (nodes.length > 1) { LOG.info("Duplicate options for " + o + " will be ignored"); } diff --git a/platform/util/src/com/intellij/util/xmlb/PrimitiveValueBinding.java b/platform/util/src/com/intellij/util/xmlb/PrimitiveValueBinding.java index 61e934cb0214..7a0c23ac681b 100644 --- a/platform/util/src/com/intellij/util/xmlb/PrimitiveValueBinding.java +++ b/platform/util/src/com/intellij/util/xmlb/PrimitiveValueBinding.java @@ -18,6 +18,7 @@ package com.intellij.util.xmlb; import com.intellij.openapi.util.JDOMUtil; import org.jdom.Text; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; class PrimitiveValueBinding implements Binding { @@ -33,7 +34,7 @@ class PrimitiveValueBinding implements Binding { } @Nullable - public Object deserialize(Object o, Object... nodes) { + public Object deserialize(Object o, @NotNull Object... nodes) { assert nodes != null; if (nodes.length == 0) { diff --git a/platform/util/src/com/intellij/util/xmlb/TagBinding.java b/platform/util/src/com/intellij/util/xmlb/TagBinding.java index 87ae313d2ab1..087f24264c7a 100644 --- a/platform/util/src/com/intellij/util/xmlb/TagBinding.java +++ b/platform/util/src/com/intellij/util/xmlb/TagBinding.java @@ -22,6 +22,7 @@ import com.intellij.util.containers.ContainerUtil; import com.intellij.util.xmlb.annotations.Tag; import org.jdom.Element; import org.jdom.Text; +import org.jetbrains.annotations.NotNull; import java.util.ArrayList; import java.util.List; @@ -53,7 +54,7 @@ class TagBinding implements Binding { return v; } - public Object deserialize(Object o, Object... nodes) { + public Object deserialize(Object o, @NotNull Object... nodes) { assert nodes.length > 0; Object[] children; if (nodes.length == 1) { diff --git a/platform/util/src/com/intellij/util/xmlb/TagBindingWrapper.java b/platform/util/src/com/intellij/util/xmlb/TagBindingWrapper.java index 5b414b894258..6fc29fe43c81 100644 --- a/platform/util/src/com/intellij/util/xmlb/TagBindingWrapper.java +++ b/platform/util/src/com/intellij/util/xmlb/TagBindingWrapper.java @@ -20,6 +20,7 @@ import com.intellij.openapi.util.JDOMUtil; import org.jdom.Content; import org.jdom.Element; import org.jdom.Text; +import org.jetbrains.annotations.NotNull; //todo: merge with option tag binding class TagBindingWrapper implements Binding { @@ -51,7 +52,7 @@ class TagBindingWrapper implements Binding { return e; } - public Object deserialize(Object context, Object... nodes) { + public Object deserialize(Object context, @NotNull Object... nodes) { assert nodes.length == 1; Element e = (Element)nodes[0]; diff --git a/platform/util/src/com/intellij/util/xmlb/TextBinding.java b/platform/util/src/com/intellij/util/xmlb/TextBinding.java index ff6bed258705..9419e5b0b9d2 100644 --- a/platform/util/src/com/intellij/util/xmlb/TextBinding.java +++ b/platform/util/src/com/intellij/util/xmlb/TextBinding.java @@ -18,6 +18,7 @@ package com.intellij.util.xmlb; import org.jdom.Content; import org.jdom.Text; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; public class TextBinding implements Binding { @@ -36,7 +37,7 @@ public class TextBinding implements Binding { } @Nullable - public Object deserialize(Object context, Object... nodes) { + public Object deserialize(Object context, @NotNull Object... nodes) { assert nodes.length == 1; Object node = nodes[0]; assert isBoundTo(node); diff --git a/platform/util/src/com/intellij/util/xmlb/XmlSerializer.java b/platform/util/src/com/intellij/util/xmlb/XmlSerializer.java index 6a2e264aa0d4..7b78227b0e50 100644 --- a/platform/util/src/com/intellij/util/xmlb/XmlSerializer.java +++ b/platform/util/src/com/intellij/util/xmlb/XmlSerializer.java @@ -20,6 +20,7 @@ import com.intellij.openapi.util.JDOMUtil; import org.jdom.Document; import org.jdom.Element; import org.jdom.JDOMException; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.io.IOException; @@ -28,6 +29,7 @@ import java.net.URL; public class XmlSerializer { private static final SerializationFilter TRUE_FILTER = new SerializationFilter() { + @Override public boolean accepts(Accessor accessor, Object bean) { return true; } @@ -54,8 +56,7 @@ public class XmlSerializer { @SuppressWarnings({"unchecked"}) public static T deserialize(Element element, Class aClass) throws XmlSerializationException { try { - XmlSerializerImpl serializer = new XmlSerializerImpl(TRUE_FILTER); - return (T)serializer.getBinding(aClass).deserialize(null, element); + return (T)XmlSerializerImpl.getBinding(aClass).deserialize(null, element); } catch (XmlSerializationException e) { throw e; @@ -91,10 +92,9 @@ public class XmlSerializer { } } - public static void deserializeInto(final Object bean, final Element element) { + public static void deserializeInto(@NotNull Object bean, @NotNull Element element) { try { - XmlSerializerImpl serializer = new XmlSerializerImpl(TRUE_FILTER); - final Binding binding = serializer.getBinding(bean.getClass()); + final Binding binding = XmlSerializerImpl.getBinding(bean.getClass()); assert binding instanceof BeanBinding; ((BeanBinding)binding).deserializeInto(bean, element); @@ -116,8 +116,7 @@ public class XmlSerializer { filter = TRUE_FILTER; } try { - XmlSerializerImpl serializer = new XmlSerializerImpl(filter); - final Binding binding = serializer.getBinding(bean.getClass()); + final Binding binding = XmlSerializerImpl.getBinding(bean.getClass()); assert binding instanceof BeanBinding; ((BeanBinding)binding).serializeInto(bean, element, filter);