31 package com.google.protobuf;
36 class MapFieldSchemaFull
implements MapFieldSchema {
38 public Map<?, ?> forMutableMapData(Object mapField) {
39 return ((MapField<?, ?>) mapField).getMutableMap();
43 public Map<?, ?> forMapData(Object mapField) {
44 return ((MapField<?, ?>) mapField).getMap();
48 public boolean isImmutable(Object mapField) {
49 return !((MapField<?, ?>) mapField).isMutable();
53 public Object toImmutable(Object mapField) {
54 ((MapField<?, ?>) mapField).makeImmutable();
59 public Object newMapField(Object mapDefaultEntry) {
60 return MapField.newMapField((MapEntry<?, ?>) mapDefaultEntry);
64 public Metadata<?, ?> forMapMetadata(Object mapDefaultEntry) {
65 return ((MapEntry<?, ?>) mapDefaultEntry).getMetadata();
69 public Object mergeFrom(Object destMapField, Object srcMapField) {
70 return mergeFromFull(destMapField, srcMapField);
73 @SuppressWarnings(
"unchecked")
74 private static <
K, V> Object mergeFromFull(Object destMapField, Object srcMapField) {
75 MapField<K, V> mine = (MapField<K, V>) destMapField;
76 MapField<K, V> other = (MapField<K, V>) srcMapField;
77 if (!mine.isMutable()) {
80 mine.mergeFrom(other);
85 public int getSerializedSize(
int number, Object mapField, Object mapDefaultEntry) {
86 return getSerializedSizeFull(
number, mapField, mapDefaultEntry);
89 @SuppressWarnings(
"unchecked")
90 private static <
K, V>
int getSerializedSizeFull(
91 int number, Object mapField, Object defaultEntryObject) {
93 if (mapField ==
null) {
98 MapEntry<K, V> defaultEntry = (MapEntry<K, V>) defaultEntryObject;
103 for (
Map.Entry<
K, V> entry :
map.entrySet()) {
105 CodedOutputStream.computeTagSize(
number)
106 + CodedOutputStream.computeLengthDelimitedFieldSize(
107 MapEntryLite.computeSerializedSize(
108 defaultEntry.getMetadata(), entry.getKey(), entry.getValue()));