|
|
|
@ -728,7 +728,7 @@ public abstract class GeneratedMessageV3 extends AbstractMessage implements Seri |
|
|
|
|
if (field.isRepeated()) { |
|
|
|
|
// The underlying list object is still modifiable at this point.
|
|
|
|
|
// Make sure not to expose the modifiable list to the caller.
|
|
|
|
|
return Collections.unmodifiableList((List<?>) object); |
|
|
|
|
return Collections.unmodifiableList((List) object); |
|
|
|
|
} else { |
|
|
|
|
return object; |
|
|
|
|
} |
|
|
|
@ -953,7 +953,7 @@ public abstract class GeneratedMessageV3 extends AbstractMessage implements Seri |
|
|
|
|
// Extensions-related stuff
|
|
|
|
|
|
|
|
|
|
/** Extends {@link MessageOrBuilder} with extension-related functions. */ |
|
|
|
|
public interface ExtendableMessageOrBuilder<MessageT extends ExtendableMessage<MessageT>> |
|
|
|
|
public interface ExtendableMessageOrBuilder<MessageT extends ExtendableMessage> |
|
|
|
|
extends MessageOrBuilder { |
|
|
|
|
// Re-define for return type covariance.
|
|
|
|
|
@Override |
|
|
|
@ -1055,7 +1055,7 @@ public abstract class GeneratedMessageV3 extends AbstractMessage implements Seri |
|
|
|
|
* |
|
|
|
|
* <p>See also {@link ExtendableBuilder}. |
|
|
|
|
*/ |
|
|
|
|
public abstract static class ExtendableMessage<MessageT extends ExtendableMessage<MessageT>> |
|
|
|
|
public abstract static class ExtendableMessage<MessageT extends ExtendableMessage> |
|
|
|
|
extends GeneratedMessageV3 implements ExtendableMessageOrBuilder<MessageT> { |
|
|
|
|
|
|
|
|
|
private static final long serialVersionUID = 1L; |
|
|
|
@ -1085,6 +1085,7 @@ public abstract class GeneratedMessageV3 extends AbstractMessage implements Seri |
|
|
|
|
|
|
|
|
|
/** Check if a singular extension is present. */ |
|
|
|
|
@Override |
|
|
|
|
@SuppressWarnings("unchecked") |
|
|
|
|
public final <T> boolean hasExtension(final ExtensionLite<MessageT, T> extensionLite) { |
|
|
|
|
Extension<MessageT, T> extension = checkNotLite(extensionLite); |
|
|
|
|
|
|
|
|
@ -1094,6 +1095,7 @@ public abstract class GeneratedMessageV3 extends AbstractMessage implements Seri |
|
|
|
|
|
|
|
|
|
/** Get the number of elements in a repeated extension. */ |
|
|
|
|
@Override |
|
|
|
|
@SuppressWarnings("unchecked") |
|
|
|
|
public final <T> int getExtensionCount(final ExtensionLite<MessageT, List<T>> extensionLite) { |
|
|
|
|
Extension<MessageT, List<T>> extension = checkNotLite(extensionLite); |
|
|
|
|
|
|
|
|
@ -1450,7 +1452,7 @@ public abstract class GeneratedMessageV3 extends AbstractMessage implements Seri |
|
|
|
|
*/ |
|
|
|
|
@SuppressWarnings("unchecked") |
|
|
|
|
public abstract static class ExtendableBuilder< |
|
|
|
|
MessageT extends ExtendableMessage<MessageT>, |
|
|
|
|
MessageT extends ExtendableMessage, |
|
|
|
|
BuilderT extends ExtendableBuilder<MessageT, BuilderT>> |
|
|
|
|
extends Builder<BuilderT> implements ExtendableMessageOrBuilder<MessageT> { |
|
|
|
|
|
|
|
|
@ -1586,8 +1588,8 @@ public abstract class GeneratedMessageV3 extends AbstractMessage implements Seri |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** Clear an extension. */ |
|
|
|
|
public final <T> BuilderT clearExtension(final ExtensionLite<MessageT, T> extensionLite) { |
|
|
|
|
Extension<MessageT, T> extension = checkNotLite(extensionLite); |
|
|
|
|
public final BuilderT clearExtension(final ExtensionLite<MessageT, ?> extensionLite) { |
|
|
|
|
Extension<MessageT, ?> extension = checkNotLite(extensionLite); |
|
|
|
|
|
|
|
|
|
verifyExtensionContainingType(extension); |
|
|
|
|
ensureExtensionsIsMutable(); |
|
|
|
@ -1720,16 +1722,16 @@ public abstract class GeneratedMessageV3 extends AbstractMessage implements Seri |
|
|
|
|
* <p>TODO(b/258340024): handled by ExtensionLite version |
|
|
|
|
*/ |
|
|
|
|
public final <T> BuilderT clearExtension( |
|
|
|
|
final Extension<MessageT, T> extension) { |
|
|
|
|
return clearExtension((ExtensionLite<MessageT, T>) extension); |
|
|
|
|
final Extension<MessageT, ?> extension) { |
|
|
|
|
return clearExtension((ExtensionLite<MessageT, ?>) extension); |
|
|
|
|
} |
|
|
|
|
/** |
|
|
|
|
* Clears an extension. |
|
|
|
|
* Clear an extension. |
|
|
|
|
* <p>TODO(b/258340024): handled by ExtensionLite version |
|
|
|
|
*/ |
|
|
|
|
public <T> BuilderT clearExtension( |
|
|
|
|
final GeneratedExtension<MessageT, T> extension) { |
|
|
|
|
return clearExtension((ExtensionLite<MessageT, T>) extension); |
|
|
|
|
final GeneratedExtension<MessageT, ?> extension) { |
|
|
|
|
return clearExtension((ExtensionLite<MessageT, ?>) extension); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** Called by subclasses to check if all extensions are initialized. */ |
|
|
|
@ -1938,7 +1940,7 @@ public abstract class GeneratedMessageV3 extends AbstractMessage implements Seri |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
protected final void mergeExtensionFields(final ExtendableMessage<?> other) { |
|
|
|
|
protected final void mergeExtensionFields(final ExtendableMessage other) { |
|
|
|
|
if (other.extensions != null) { |
|
|
|
|
ensureExtensionsIsMutable(); |
|
|
|
|
extensions.mergeFrom(other.extensions); |
|
|
|
@ -1980,8 +1982,9 @@ public abstract class GeneratedMessageV3 extends AbstractMessage implements Seri |
|
|
|
|
// =================================================================
|
|
|
|
|
|
|
|
|
|
/** Calls Class.getMethod and throws a RuntimeException if it fails. */ |
|
|
|
|
@SuppressWarnings("unchecked") |
|
|
|
|
private static Method getMethodOrDie( |
|
|
|
|
final Class<?> clazz, final String name, final Class<?>... params) { |
|
|
|
|
final Class clazz, final String name, final Class... params) { |
|
|
|
|
try { |
|
|
|
|
return clazz.getMethod(name, params); |
|
|
|
|
} catch (NoSuchMethodException e) { |
|
|
|
@ -2049,7 +2052,7 @@ public abstract class GeneratedMessageV3 extends AbstractMessage implements Seri |
|
|
|
|
final Descriptor descriptor, |
|
|
|
|
final String[] camelCaseNames, |
|
|
|
|
final Class<? extends GeneratedMessageV3> messageClass, |
|
|
|
|
final Class<? extends Builder<?>> builderClass) { |
|
|
|
|
final Class<? extends Builder> builderClass) { |
|
|
|
|
this(descriptor, camelCaseNames); |
|
|
|
|
ensureFieldAccessorsInitialized(messageClass, builderClass); |
|
|
|
|
} |
|
|
|
@ -2074,7 +2077,7 @@ public abstract class GeneratedMessageV3 extends AbstractMessage implements Seri |
|
|
|
|
* @return this |
|
|
|
|
*/ |
|
|
|
|
public FieldAccessorTable ensureFieldAccessorsInitialized( |
|
|
|
|
Class<? extends GeneratedMessageV3> messageClass, Class<? extends Builder<?>> builderClass) { |
|
|
|
|
Class<? extends GeneratedMessageV3> messageClass, Class<? extends Builder> builderClass) { |
|
|
|
|
if (initialized) { |
|
|
|
|
return this; |
|
|
|
|
} |
|
|
|
@ -2189,29 +2192,35 @@ public abstract class GeneratedMessageV3 extends AbstractMessage implements Seri |
|
|
|
|
private interface FieldAccessor { |
|
|
|
|
Object get(GeneratedMessageV3 message); |
|
|
|
|
|
|
|
|
|
Object get(GeneratedMessageV3.Builder<?> builder); |
|
|
|
|
Object get(GeneratedMessageV3.Builder builder); |
|
|
|
|
|
|
|
|
|
Object getRaw(GeneratedMessageV3 message); |
|
|
|
|
|
|
|
|
|
void set(Builder<?> builder, Object value); |
|
|
|
|
Object getRaw(GeneratedMessageV3.Builder builder); |
|
|
|
|
|
|
|
|
|
void set(Builder builder, Object value); |
|
|
|
|
|
|
|
|
|
Object getRepeated(GeneratedMessageV3 message, int index); |
|
|
|
|
|
|
|
|
|
Object getRepeated(GeneratedMessageV3.Builder<?> builder, int index); |
|
|
|
|
Object getRepeated(GeneratedMessageV3.Builder builder, int index); |
|
|
|
|
|
|
|
|
|
Object getRepeatedRaw(GeneratedMessageV3 message, int index); |
|
|
|
|
|
|
|
|
|
void setRepeated(Builder<?> builder, int index, Object value); |
|
|
|
|
Object getRepeatedRaw(GeneratedMessageV3.Builder builder, int index); |
|
|
|
|
|
|
|
|
|
void addRepeated(Builder<?> builder, Object value); |
|
|
|
|
void setRepeated(Builder builder, int index, Object value); |
|
|
|
|
|
|
|
|
|
void addRepeated(Builder builder, Object value); |
|
|
|
|
|
|
|
|
|
boolean has(GeneratedMessageV3 message); |
|
|
|
|
|
|
|
|
|
boolean has(GeneratedMessageV3.Builder<?> builder); |
|
|
|
|
boolean has(GeneratedMessageV3.Builder builder); |
|
|
|
|
|
|
|
|
|
int getRepeatedCount(GeneratedMessageV3 message); |
|
|
|
|
|
|
|
|
|
int getRepeatedCount(GeneratedMessageV3.Builder<?> builder); |
|
|
|
|
int getRepeatedCount(GeneratedMessageV3.Builder builder); |
|
|
|
|
|
|
|
|
|
void clear(Builder<?> builder); |
|
|
|
|
void clear(Builder builder); |
|
|
|
|
|
|
|
|
|
Message.Builder newBuilder(); |
|
|
|
|
|
|
|
|
@ -2227,7 +2236,7 @@ public abstract class GeneratedMessageV3 extends AbstractMessage implements Seri |
|
|
|
|
final int oneofIndex, |
|
|
|
|
final String camelCaseName, |
|
|
|
|
final Class<? extends GeneratedMessageV3> messageClass, |
|
|
|
|
final Class<? extends Builder<?>> builderClass) { |
|
|
|
|
final Class<? extends Builder> builderClass) { |
|
|
|
|
this.descriptor = descriptor; |
|
|
|
|
OneofDescriptor oneofDescriptor = descriptor.getOneofs().get(oneofIndex); |
|
|
|
|
if (oneofDescriptor.isSynthetic()) { |
|
|
|
@ -2256,7 +2265,7 @@ public abstract class GeneratedMessageV3 extends AbstractMessage implements Seri |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public boolean has(GeneratedMessageV3.Builder<?> builder) { |
|
|
|
|
public boolean has(GeneratedMessageV3.Builder builder) { |
|
|
|
|
if (fieldDescriptor != null) { |
|
|
|
|
return builder.hasField(fieldDescriptor); |
|
|
|
|
} else { |
|
|
|
@ -2276,7 +2285,7 @@ public abstract class GeneratedMessageV3 extends AbstractMessage implements Seri |
|
|
|
|
return null; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public FieldDescriptor get(GeneratedMessageV3.Builder<?> builder) { |
|
|
|
|
public FieldDescriptor get(GeneratedMessageV3.Builder builder) { |
|
|
|
|
if (fieldDescriptor != null) { |
|
|
|
|
return builder.hasField(fieldDescriptor) ? fieldDescriptor : null; |
|
|
|
|
} else { |
|
|
|
@ -2289,7 +2298,7 @@ public abstract class GeneratedMessageV3 extends AbstractMessage implements Seri |
|
|
|
|
return null; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public void clear(final Builder<?> builder) { |
|
|
|
|
public void clear(final Builder builder) { |
|
|
|
|
// TODO(b/230609037): remove the unused variable
|
|
|
|
|
Object unused = invokeOrDie(clearMethod, builder); |
|
|
|
|
} |
|
|
|
@ -2330,7 +2339,7 @@ public abstract class GeneratedMessageV3 extends AbstractMessage implements Seri |
|
|
|
|
final FieldDescriptor descriptor, |
|
|
|
|
final String camelCaseName, |
|
|
|
|
final Class<? extends GeneratedMessageV3> messageClass, |
|
|
|
|
final Class<? extends Builder<?>> builderClass, |
|
|
|
|
final Class<? extends Builder> builderClass, |
|
|
|
|
final String containingOneofCamelCaseName, |
|
|
|
|
boolean isOneofField, |
|
|
|
|
boolean hasHasMethod) { |
|
|
|
@ -2399,7 +2408,7 @@ public abstract class GeneratedMessageV3 extends AbstractMessage implements Seri |
|
|
|
|
final FieldDescriptor descriptor, |
|
|
|
|
final String camelCaseName, |
|
|
|
|
final Class<? extends GeneratedMessageV3> messageClass, |
|
|
|
|
final Class<? extends Builder<?>> builderClass, |
|
|
|
|
final Class<? extends Builder> builderClass, |
|
|
|
|
final String containingOneofCamelCaseName) { |
|
|
|
|
isOneofField = |
|
|
|
|
descriptor.getContainingOneof() != null |
|
|
|
@ -2441,7 +2450,7 @@ public abstract class GeneratedMessageV3 extends AbstractMessage implements Seri |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public Object get(GeneratedMessageV3.Builder<?> builder) { |
|
|
|
|
public Object get(GeneratedMessageV3.Builder builder) { |
|
|
|
|
return invoker.get(builder); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -2451,7 +2460,12 @@ public abstract class GeneratedMessageV3 extends AbstractMessage implements Seri |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public void set(final Builder<?> builder, final Object value) { |
|
|
|
|
public Object getRaw(GeneratedMessageV3.Builder builder) { |
|
|
|
|
return get(builder); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public void set(final Builder builder, final Object value) { |
|
|
|
|
invoker.set(builder, value); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -2461,17 +2475,29 @@ public abstract class GeneratedMessageV3 extends AbstractMessage implements Seri |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public Object getRepeated(GeneratedMessageV3.Builder<?> builder, int index) { |
|
|
|
|
public Object getRepeatedRaw(final GeneratedMessageV3 message, final int index) { |
|
|
|
|
throw new UnsupportedOperationException( |
|
|
|
|
"getRepeatedFieldRaw() called on a singular field."); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public Object getRepeated(GeneratedMessageV3.Builder builder, int index) { |
|
|
|
|
throw new UnsupportedOperationException("getRepeatedField() called on a singular field."); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public void setRepeated(final Builder<?> builder, final int index, final Object value) { |
|
|
|
|
public Object getRepeatedRaw(GeneratedMessageV3.Builder builder, int index) { |
|
|
|
|
throw new UnsupportedOperationException( |
|
|
|
|
"getRepeatedFieldRaw() called on a singular field."); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public void setRepeated(final Builder builder, final int index, final Object value) { |
|
|
|
|
throw new UnsupportedOperationException("setRepeatedField() called on a singular field."); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public void addRepeated(final Builder<?> builder, final Object value) { |
|
|
|
|
public void addRepeated(final Builder builder, final Object value) { |
|
|
|
|
throw new UnsupportedOperationException("addRepeatedField() called on a singular field."); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -2487,7 +2513,7 @@ public abstract class GeneratedMessageV3 extends AbstractMessage implements Seri |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public boolean has(GeneratedMessageV3.Builder<?> builder) { |
|
|
|
|
public boolean has(GeneratedMessageV3.Builder builder) { |
|
|
|
|
if (!hasHasMethod) { |
|
|
|
|
if (isOneofField) { |
|
|
|
|
return invoker.getOneofFieldNumber(builder) == field.getNumber(); |
|
|
|
@ -2504,13 +2530,13 @@ public abstract class GeneratedMessageV3 extends AbstractMessage implements Seri |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public int getRepeatedCount(GeneratedMessageV3.Builder<?> builder) { |
|
|
|
|
public int getRepeatedCount(GeneratedMessageV3.Builder builder) { |
|
|
|
|
throw new UnsupportedOperationException( |
|
|
|
|
"getRepeatedFieldSize() called on a singular field."); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public void clear(final Builder<?> builder) { |
|
|
|
|
public void clear(final Builder builder) { |
|
|
|
|
invoker.clear(builder); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -2569,7 +2595,7 @@ public abstract class GeneratedMessageV3 extends AbstractMessage implements Seri |
|
|
|
|
final FieldDescriptor descriptor, |
|
|
|
|
final String camelCaseName, |
|
|
|
|
final Class<? extends GeneratedMessageV3> messageClass, |
|
|
|
|
final Class<? extends Builder<?>> builderClass) { |
|
|
|
|
final Class<? extends Builder> builderClass) { |
|
|
|
|
getMethod = getMethodOrDie(messageClass, "get" + camelCaseName + "List"); |
|
|
|
|
getMethodBuilder = getMethodOrDie(builderClass, "get" + camelCaseName + "List"); |
|
|
|
|
getRepeatedMethod = getMethodOrDie(messageClass, "get" + camelCaseName, Integer.TYPE); |
|
|
|
@ -2634,14 +2660,14 @@ public abstract class GeneratedMessageV3 extends AbstractMessage implements Seri |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
protected final Class<?> type; |
|
|
|
|
protected final Class type; |
|
|
|
|
protected final MethodInvoker invoker; |
|
|
|
|
|
|
|
|
|
RepeatedFieldAccessor( |
|
|
|
|
final FieldDescriptor descriptor, |
|
|
|
|
final String camelCaseName, |
|
|
|
|
final Class<? extends GeneratedMessageV3> messageClass, |
|
|
|
|
final Class<? extends Builder<?>> builderClass) { |
|
|
|
|
final Class<? extends Builder> builderClass) { |
|
|
|
|
ReflectionInvoker reflectionInvoker = |
|
|
|
|
new ReflectionInvoker(descriptor, camelCaseName, messageClass, builderClass); |
|
|
|
|
type = reflectionInvoker.getRepeatedMethod.getReturnType(); |
|
|
|
@ -2658,7 +2684,7 @@ public abstract class GeneratedMessageV3 extends AbstractMessage implements Seri |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public Object get(GeneratedMessageV3.Builder<?> builder) { |
|
|
|
|
public Object get(GeneratedMessageV3.Builder builder) { |
|
|
|
|
return invoker.get(builder); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -2668,7 +2694,12 @@ public abstract class GeneratedMessageV3 extends AbstractMessage implements Seri |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public void set(final Builder<?> builder, final Object value) { |
|
|
|
|
public Object getRaw(GeneratedMessageV3.Builder builder) { |
|
|
|
|
return get(builder); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public void set(final Builder builder, final Object value) { |
|
|
|
|
// Add all the elements individually. This serves two purposes:
|
|
|
|
|
// 1) Verifies that each element has the correct type.
|
|
|
|
|
// 2) Insures that the caller cannot modify the list later on and
|
|
|
|
@ -2685,17 +2716,27 @@ public abstract class GeneratedMessageV3 extends AbstractMessage implements Seri |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public Object getRepeated(GeneratedMessageV3.Builder<?> builder, int index) { |
|
|
|
|
public Object getRepeated(GeneratedMessageV3.Builder builder, int index) { |
|
|
|
|
return invoker.getRepeated(builder, index); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public void setRepeated(final Builder<?> builder, final int index, final Object value) { |
|
|
|
|
public Object getRepeatedRaw(GeneratedMessageV3 message, int index) { |
|
|
|
|
return getRepeated(message, index); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public Object getRepeatedRaw(GeneratedMessageV3.Builder builder, int index) { |
|
|
|
|
return getRepeated(builder, index); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public void setRepeated(final Builder builder, final int index, final Object value) { |
|
|
|
|
invoker.setRepeated(builder, index, value); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public void addRepeated(final Builder<?> builder, final Object value) { |
|
|
|
|
public void addRepeated(final Builder builder, final Object value) { |
|
|
|
|
invoker.addRepeated(builder, value); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -2705,7 +2746,7 @@ public abstract class GeneratedMessageV3 extends AbstractMessage implements Seri |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public boolean has(GeneratedMessageV3.Builder<?> builder) { |
|
|
|
|
public boolean has(GeneratedMessageV3.Builder builder) { |
|
|
|
|
throw new UnsupportedOperationException("hasField() called on a repeated field."); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -2715,12 +2756,12 @@ public abstract class GeneratedMessageV3 extends AbstractMessage implements Seri |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public int getRepeatedCount(GeneratedMessageV3.Builder<?> builder) { |
|
|
|
|
public int getRepeatedCount(GeneratedMessageV3.Builder builder) { |
|
|
|
|
return invoker.getRepeatedCount(builder); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public void clear(final Builder<?> builder) { |
|
|
|
|
public void clear(final Builder builder) { |
|
|
|
|
invoker.clear(builder); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -2759,11 +2800,11 @@ public abstract class GeneratedMessageV3 extends AbstractMessage implements Seri |
|
|
|
|
return (MapField<?, ?>) message.internalGetMapField(field.getNumber()); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private MapField<?, ?> getMapField(GeneratedMessageV3.Builder<?> builder) { |
|
|
|
|
private MapField<?, ?> getMapField(GeneratedMessageV3.Builder builder) { |
|
|
|
|
return (MapField<?, ?>) builder.internalGetMapField(field.getNumber()); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private MapField<?, ?> getMutableMapField(GeneratedMessageV3.Builder<?> builder) { |
|
|
|
|
private MapField<?, ?> getMutableMapField(GeneratedMessageV3.Builder builder) { |
|
|
|
|
return (MapField<?, ?>) builder.internalGetMutableMapField(field.getNumber()); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -2782,8 +2823,9 @@ public abstract class GeneratedMessageV3 extends AbstractMessage implements Seri |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
@SuppressWarnings("unchecked") |
|
|
|
|
public Object get(GeneratedMessageV3 message) { |
|
|
|
|
List<Object> result = new ArrayList<>(); |
|
|
|
|
List result = new ArrayList<>(); |
|
|
|
|
for (int i = 0; i < getRepeatedCount(message); i++) { |
|
|
|
|
result.add(getRepeated(message, i)); |
|
|
|
|
} |
|
|
|
@ -2791,8 +2833,9 @@ public abstract class GeneratedMessageV3 extends AbstractMessage implements Seri |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public Object get(Builder<?> builder) { |
|
|
|
|
List<Object> result = new ArrayList<>(); |
|
|
|
|
@SuppressWarnings("unchecked") |
|
|
|
|
public Object get(Builder builder) { |
|
|
|
|
List result = new ArrayList<>(); |
|
|
|
|
for (int i = 0; i < getRepeatedCount(builder); i++) { |
|
|
|
|
result.add(getRepeated(builder, i)); |
|
|
|
|
} |
|
|
|
@ -2805,9 +2848,14 @@ public abstract class GeneratedMessageV3 extends AbstractMessage implements Seri |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public void set(Builder<?> builder, Object value) { |
|
|
|
|
public Object getRaw(GeneratedMessageV3.Builder builder) { |
|
|
|
|
return get(builder); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public void set(Builder builder, Object value) { |
|
|
|
|
clear(builder); |
|
|
|
|
for (Object entry : (List<?>) value) { |
|
|
|
|
for (Object entry : (List) value) { |
|
|
|
|
addRepeated(builder, entry); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
@ -2818,17 +2866,27 @@ public abstract class GeneratedMessageV3 extends AbstractMessage implements Seri |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public Object getRepeated(Builder<?> builder, int index) { |
|
|
|
|
public Object getRepeated(Builder builder, int index) { |
|
|
|
|
return getMapField(builder).getList().get(index); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public void setRepeated(Builder<?> builder, int index, Object value) { |
|
|
|
|
public Object getRepeatedRaw(GeneratedMessageV3 message, int index) { |
|
|
|
|
return getRepeated(message, index); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public Object getRepeatedRaw(Builder builder, int index) { |
|
|
|
|
return getRepeated(builder, index); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public void setRepeated(Builder builder, int index, Object value) { |
|
|
|
|
getMutableMapField(builder).getMutableList().set(index, coerceType((Message) value)); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public void addRepeated(Builder<?> builder, Object value) { |
|
|
|
|
public void addRepeated(Builder builder, Object value) { |
|
|
|
|
getMutableMapField(builder).getMutableList().add(coerceType((Message) value)); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -2838,7 +2896,7 @@ public abstract class GeneratedMessageV3 extends AbstractMessage implements Seri |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public boolean has(Builder<?> builder) { |
|
|
|
|
public boolean has(Builder builder) { |
|
|
|
|
throw new UnsupportedOperationException("hasField() is not supported for repeated fields."); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -2848,12 +2906,12 @@ public abstract class GeneratedMessageV3 extends AbstractMessage implements Seri |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public int getRepeatedCount(Builder<?> builder) { |
|
|
|
|
public int getRepeatedCount(Builder builder) { |
|
|
|
|
return getMapField(builder).getList().size(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public void clear(Builder<?> builder) { |
|
|
|
|
public void clear(Builder builder) { |
|
|
|
|
getMutableMapField(builder).getMutableList().clear(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -2880,7 +2938,7 @@ public abstract class GeneratedMessageV3 extends AbstractMessage implements Seri |
|
|
|
|
final FieldDescriptor descriptor, |
|
|
|
|
final String camelCaseName, |
|
|
|
|
final Class<? extends GeneratedMessageV3> messageClass, |
|
|
|
|
final Class<? extends Builder<?>> builderClass, |
|
|
|
|
final Class<? extends Builder> builderClass, |
|
|
|
|
final String containingOneofCamelCaseName) { |
|
|
|
|
super(descriptor, camelCaseName, messageClass, builderClass, containingOneofCamelCaseName); |
|
|
|
|
|
|
|
|
@ -2917,7 +2975,7 @@ public abstract class GeneratedMessageV3 extends AbstractMessage implements Seri |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public Object get(final GeneratedMessageV3.Builder<?> builder) { |
|
|
|
|
public Object get(final GeneratedMessageV3.Builder builder) { |
|
|
|
|
if (supportUnknownEnumValue) { |
|
|
|
|
int value = (Integer) invokeOrDie(getValueMethodBuilder, builder); |
|
|
|
|
return enumDescriptor.findValueByNumberCreatingIfUnknown(value); |
|
|
|
@ -2926,7 +2984,7 @@ public abstract class GeneratedMessageV3 extends AbstractMessage implements Seri |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public void set(final Builder<?> builder, final Object value) { |
|
|
|
|
public void set(final Builder builder, final Object value) { |
|
|
|
|
if (supportUnknownEnumValue) { |
|
|
|
|
// TODO(b/230609037): remove the unused variable
|
|
|
|
|
Object unused = |
|
|
|
@ -2942,7 +3000,7 @@ public abstract class GeneratedMessageV3 extends AbstractMessage implements Seri |
|
|
|
|
final FieldDescriptor descriptor, |
|
|
|
|
final String camelCaseName, |
|
|
|
|
final Class<? extends GeneratedMessageV3> messageClass, |
|
|
|
|
final Class<? extends Builder<?>> builderClass) { |
|
|
|
|
final Class<? extends Builder> builderClass) { |
|
|
|
|
super(descriptor, camelCaseName, messageClass, builderClass); |
|
|
|
|
|
|
|
|
|
enumDescriptor = descriptor.getEnumType(); |
|
|
|
@ -2986,7 +3044,7 @@ public abstract class GeneratedMessageV3 extends AbstractMessage implements Seri |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public Object get(final GeneratedMessageV3.Builder<?> builder) { |
|
|
|
|
public Object get(final GeneratedMessageV3.Builder builder) { |
|
|
|
|
final List<Object> newList = new ArrayList<>(); |
|
|
|
|
final int size = getRepeatedCount(builder); |
|
|
|
|
for (int i = 0; i < size; i++) { |
|
|
|
@ -3005,7 +3063,7 @@ public abstract class GeneratedMessageV3 extends AbstractMessage implements Seri |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public Object getRepeated(final GeneratedMessageV3.Builder<?> builder, final int index) { |
|
|
|
|
public Object getRepeated(final GeneratedMessageV3.Builder builder, final int index) { |
|
|
|
|
if (supportUnknownEnumValue) { |
|
|
|
|
int value = (Integer) invokeOrDie(getRepeatedValueMethodBuilder, builder, index); |
|
|
|
|
return enumDescriptor.findValueByNumberCreatingIfUnknown(value); |
|
|
|
@ -3014,7 +3072,7 @@ public abstract class GeneratedMessageV3 extends AbstractMessage implements Seri |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public void setRepeated(final Builder<?> builder, final int index, final Object value) { |
|
|
|
|
public void setRepeated(final Builder builder, final int index, final Object value) { |
|
|
|
|
if (supportUnknownEnumValue) { |
|
|
|
|
// TODO(b/230609037): remove the unused variable
|
|
|
|
|
Object unused = |
|
|
|
@ -3029,7 +3087,7 @@ public abstract class GeneratedMessageV3 extends AbstractMessage implements Seri |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public void addRepeated(final Builder<?> builder, final Object value) { |
|
|
|
|
public void addRepeated(final Builder builder, final Object value) { |
|
|
|
|
if (supportUnknownEnumValue) { |
|
|
|
|
// TODO(b/230609037): remove the unused variable
|
|
|
|
|
Object unused = |
|
|
|
@ -3058,7 +3116,7 @@ public abstract class GeneratedMessageV3 extends AbstractMessage implements Seri |
|
|
|
|
final FieldDescriptor descriptor, |
|
|
|
|
final String camelCaseName, |
|
|
|
|
final Class<? extends GeneratedMessageV3> messageClass, |
|
|
|
|
final Class<? extends Builder<?>> builderClass, |
|
|
|
|
final Class<? extends Builder> builderClass, |
|
|
|
|
final String containingOneofCamelCaseName) { |
|
|
|
|
super(descriptor, camelCaseName, messageClass, builderClass, containingOneofCamelCaseName); |
|
|
|
|
getBytesMethod = getMethodOrDie(messageClass, "get" + camelCaseName + "Bytes"); |
|
|
|
@ -3075,7 +3133,7 @@ public abstract class GeneratedMessageV3 extends AbstractMessage implements Seri |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public void set(GeneratedMessageV3.Builder<?> builder, Object value) { |
|
|
|
|
public void set(GeneratedMessageV3.Builder builder, Object value) { |
|
|
|
|
if (value instanceof ByteString) { |
|
|
|
|
// TODO(b/230609037): remove the unused variable
|
|
|
|
|
Object unused = invokeOrDie(setBytesMethodBuilder, builder, value); |
|
|
|
@ -3092,7 +3150,7 @@ public abstract class GeneratedMessageV3 extends AbstractMessage implements Seri |
|
|
|
|
final FieldDescriptor descriptor, |
|
|
|
|
final String camelCaseName, |
|
|
|
|
final Class<? extends GeneratedMessageV3> messageClass, |
|
|
|
|
final Class<? extends Builder<?>> builderClass, |
|
|
|
|
final Class<? extends Builder> builderClass, |
|
|
|
|
final String containingOneofCamelCaseName) { |
|
|
|
|
super(descriptor, camelCaseName, messageClass, builderClass, containingOneofCamelCaseName); |
|
|
|
|
|
|
|
|
@ -3118,7 +3176,7 @@ public abstract class GeneratedMessageV3 extends AbstractMessage implements Seri |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public void set(final Builder<?> builder, final Object value) { |
|
|
|
|
public void set(final Builder builder, final Object value) { |
|
|
|
|
super.set(builder, coerceType(value)); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -3138,7 +3196,7 @@ public abstract class GeneratedMessageV3 extends AbstractMessage implements Seri |
|
|
|
|
final FieldDescriptor descriptor, |
|
|
|
|
final String camelCaseName, |
|
|
|
|
final Class<? extends GeneratedMessageV3> messageClass, |
|
|
|
|
final Class<? extends Builder<?>> builderClass) { |
|
|
|
|
final Class<? extends Builder> builderClass) { |
|
|
|
|
super(descriptor, camelCaseName, messageClass, builderClass); |
|
|
|
|
|
|
|
|
|
newBuilderMethod = getMethodOrDie(type, "newBuilder"); |
|
|
|
@ -3164,12 +3222,12 @@ public abstract class GeneratedMessageV3 extends AbstractMessage implements Seri |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public void setRepeated(final Builder<?> builder, final int index, final Object value) { |
|
|
|
|
public void setRepeated(final Builder builder, final int index, final Object value) { |
|
|
|
|
super.setRepeated(builder, index, coerceType(value)); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public void addRepeated(final Builder<?> builder, final Object value) { |
|
|
|
|
public void addRepeated(final Builder builder, final Object value) { |
|
|
|
|
super.addRepeated(builder, coerceType(value)); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|