31 package com.google.protobuf;
37 import java.io.IOException;
38 import java.io.InputStream;
39 import java.util.Arrays;
40 import java.util.Collections;
41 import java.util.HashMap;
42 import java.util.Iterator;
43 import java.util.List;
58 return MessageReflection.isInitialized(
this);
83 throw new UnsupportedOperationException(
"Nested builder is not supported for this type.");
89 return MessageReflection.findMissingFields(
this);
100 throw new UnsupportedOperationException(
"hasOneof() is not implemented.");
106 throw new UnsupportedOperationException(
"getOneofFieldDescriptor() is not implemented.");
122 int getMemoizedSerializedSize() {
127 void setMemoizedSerializedSize(
int size) {
143 public boolean equals(
final Object other) {
147 if (!(other instanceof
Message)) {
172 if (
value instanceof
byte[]) {
184 if (
a instanceof
byte[] &&
b instanceof
byte[]) {
185 return Arrays.equals((
byte[])
a, (
byte[])
b);
191 @SuppressWarnings({
"rawtypes",
"unchecked"})
193 if (list.isEmpty()) {
194 return Collections.emptyMap();
196 Map result =
new HashMap();
197 Iterator iterator = list.iterator();
207 while (iterator.hasNext()) {
208 entry = (
Message) iterator.next();
219 @SuppressWarnings({
"rawtypes",
"unchecked"})
233 static boolean compareFields(Map<FieldDescriptor, Object>
a, Map<FieldDescriptor, Object>
b) {
234 if (
a.size() !=
b.size()) {
245 List list1 = (List) value1;
246 List list2 = (List) value2;
247 if (list1.size() != list2.size()) {
250 for (
int i = 0;
i < list1.size();
i++) {
267 if (!value1.equals(value2)) {
276 @SuppressWarnings(
"unchecked")
282 @SuppressWarnings(
"unchecked")
286 Object
value = entry.getValue();
287 hash = (37 * hash) +
field.getNumber();
288 if (
field.isMapField()) {
291 hash = (53 * hash) +
value.hashCode();
292 }
else if (
field.isRepeated()) {
293 List<? extends EnumLite> list = (List<? extends EnumLite>)
value;
308 return Builder.newUninitializedMessageException(
this);
317 @SuppressWarnings(
"unchecked")
325 throw new UnsupportedOperationException(
"clone() should be implemented in subclasses.");
331 throw new UnsupportedOperationException(
"hasOneof() is not implemented.");
337 throw new UnsupportedOperationException(
"getOneofFieldDescriptor() is not implemented.");
343 throw new UnsupportedOperationException(
"clearOneof() is not implemented.");
349 clearField(entry.getKey());
351 return (BuilderType)
this;
356 return MessageReflection.findMissingFields(
this);
366 return mergeFrom((
Message) other);
374 BuilderType mergeFrom(
final Message other, Map<FieldDescriptor, Object> allFields) {
376 throw new IllegalArgumentException(
377 "mergeFrom(Message) can only merge messages of the same type.");
391 if (
field.isRepeated()) {
392 for (
final Object element : (List) entry.getValue()) {
393 addRepeatedField(
field, element);
397 if (existingValue == existingValue.getDefaultInstanceForType()) {
398 setField(
field, entry.getValue());
404 .mergeFrom(existingValue)
405 .mergeFrom((Message) entry.getValue())
409 setField(
field, entry.getValue());
415 return (BuilderType)
this;
427 boolean discardUnknown =
input.shouldDiscardUnknownFields();
431 final int tag =
input.readTag();
436 MessageReflection.BuilderAdapter builderAdapter =
437 new MessageReflection.BuilderAdapter(
this);
438 if (!MessageReflection.mergeFieldFrom(
444 if (unknownFields !=
null) {
445 setUnknownFields(unknownFields.build());
447 return (BuilderType)
this;
454 return (BuilderType)
this;
459 throw new UnsupportedOperationException(
460 "getFieldBuilder() called on an unsupported message type.");
465 throw new UnsupportedOperationException(
466 "getRepeatedFieldBuilder() called on an unsupported message type.");
489 throw new IllegalStateException(
"Should be overridden by subclasses.");
500 throw new IllegalStateException(
"Should be overridden by subclasses.");
524 return (BuilderType) super.mergeFrom(
data);
531 return (BuilderType) super.mergeFrom(
data, extensionRegistry);
536 return (BuilderType) super.mergeFrom(
data);
542 return (BuilderType) super.mergeFrom(
data, off,
len);
548 return (BuilderType) super.mergeFrom(
data, extensionRegistry);
558 return (BuilderType) super.mergeFrom(
data, off,
len, extensionRegistry);
563 return (BuilderType) super.mergeFrom(
input);
569 return (BuilderType) super.mergeFrom(
input, extensionRegistry);
574 return super.mergeDelimitedFrom(
input);
580 return super.mergeDelimitedFrom(
input, extensionRegistry);
590 return (
int) (
n ^ (
n >>> 32));
599 return b ? 1231 : 1237;