protected static final <E extends DataObject> void streamList(final Class<E> childClass,
final DataObjectStreamer<E> childStreamer, final DataObjectSerializerRegistry registry,
final BindingStreamEventWriter writer, final List<? extends E> value) throws IOException {
- if (value != null) {
- writer.startUnkeyedList(childClass, value.size());
+ final int size = nullSize(value);
+ if (size != 0) {
+ writer.startUnkeyedList(childClass, size);
commonStreamList(registry, writer, childStreamer, value);
}
}
protected static final <E extends DataObject & Identifiable<?>> void streamMap(final Class<E> childClass,
final DataObjectStreamer<E> childStreamer, final DataObjectSerializerRegistry registry,
final BindingStreamEventWriter writer, final Map<?, ? extends E> value) throws IOException {
- if (value != null) {
- writer.startMapNode(childClass, value.size());
+ final int size = nullSize(value);
+ if (size != 0) {
+ writer.startMapNode(childClass, size);
commonStreamList(registry, writer, childStreamer, value.values());
}
}
protected static final <E extends DataObject & Identifiable<?>> void streamOrderedMap(final Class<E> childClass,
final DataObjectStreamer<E> childStreamer, final DataObjectSerializerRegistry registry,
final BindingStreamEventWriter writer, final List<? extends E> value) throws IOException {
- if (value != null) {
- writer.startOrderedMapNode(childClass, value.size());
+ final int size = nullSize(value);
+ if (size != 0) {
+ writer.startOrderedMapNode(childClass, size);
commonStreamList(registry, writer, childStreamer, value);
}
}
private static <T extends DataObject> boolean tryCache(final BindingStreamEventWriter writer, final T value) {
return writer instanceof BindingSerializer ? ((BindingSerializer<?, T>) writer).serialize(value) == null : true;
}
+
+ private static int nullSize(final List<?> list) {
+ return list == null ? 0 : list.size();
+ }
+
+ private static int nullSize(final Map<?, ?> map) {
+ return map == null ? 0 : map.size();
+ }
}