private Message coerceType(Message value) { if (value == null) { return null; } if (mapEntryMessageDefaultInstance.getClass().isInstance(value)) { return value; } // The value is not the exact right message type. However, if it // is an alternative implementation of the same type -- e.g. a // DynamicMessage -- we should accept it. In this case we can make // a copy of the message. return mapEntryMessageDefaultInstance.toBuilder().mergeFrom(value).build(); }
private static void eagerlyMergeMessageSetExtension( CodedInputStream input, ExtensionRegistry.ExtensionInfo extension, ExtensionRegistryLite extensionRegistry, Message.Builder builder, FieldSet<FieldDescriptor> extensions) throws IOException { FieldDescriptor field = extension.descriptor; Message value = null; if (hasOriginalMessage(builder, extensions, field)) { Message originalMessage = getOriginalMessage(builder, extensions, field); Message.Builder subBuilder = originalMessage.toBuilder(); input.readMessage(subBuilder, extensionRegistry); value = subBuilder.buildPartial(); } else { value = input.readMessage(extension.defaultInstance.getParserForType(), extensionRegistry); } if (builder != null) { builder.setField(field, value); } else { extensions.setField(field, value); } }
ProtoTextMatcher(Class<T> clazz, String expectedTextFormat) { T defaultInstance = getDefaultInstance(clazz); Message.Builder builder = defaultInstance.toBuilder(); try { TextFormat.merge(expectedTextFormat, builder); } catch (TextFormat.ParseException e) { throw new IllegalArgumentException("Invalid text format for " + clazz.getName(), e); } @SuppressWarnings("unchecked") // T.builder().build() always returns T. T expectedInstance = (T) builder.build(); expected = expectedInstance; }
static FieldScope createFromSetFields(Iterable<? extends Message> messages) { if (emptyOrAllNull(messages)) { return create( FieldScopeLogic.none(), Functions.constant(String.format("FieldScopes.fromSetFields(%s)", messages.toString()))); } Optional<Descriptor> optDescriptor = FieldScopeUtil.getSingleDescriptor(messages); checkArgument( optDescriptor.isPresent(), "Cannot create scope from messages with different descriptors: %s", getDescriptors(messages)); Message.Builder builder = null; for (Message message : messages) { if (message == null) { continue; } if (builder != null) { builder.mergeFrom(message); } else { builder = message.toBuilder(); } } Message aggregateMessage = builder.build(); return create( FieldScopeLogic.partialScope(aggregateMessage), Functions.constant(String.format("FieldScopes.fromSetFields(%s)", formatList(messages)))); }
@SuppressWarnings("unchecked") @Override public Builder<K, V> setField(FieldDescriptor field, Object value) { checkFieldDescriptor(field); if (field.getNumber() == 1) { setKey((K) value); } else { if (field.getType() == FieldDescriptor.Type.ENUM) { value = ((EnumValueDescriptor) value).getNumber(); } else if (field.getType() == FieldDescriptor.Type.MESSAGE) { if (value != null && !metadata.defaultValue.getClass().isInstance(value)) { // The value is not the exact right message type. However, if it // is an alternative implementation of the same type -- e.g. a // DynamicMessage -- we should accept it. In this case we can make // a copy of the message. value = ((Message) metadata.defaultValue).toBuilder().mergeFrom((Message) value).build(); } } setValue((V) value); } return this; }
Message originalMessage = getOriginalMessage(builder, extensions, field); Message.Builder subBuilder= originalMessage.toBuilder(); subBuilder.mergeFrom(rawBytes, extensionRegistry); value = subBuilder.buildPartial();
public static <T extends Message> T mergeFromProtos(T proto, T... rest) { Message.Builder builder = proto.toBuilder(); for (T message : rest) { builder.mergeFrom(message); } @SuppressWarnings("unchecked") // Safe by contract of toBuilder(). T result = (T) builder.build(); return result; }
/** Constructs a builder from this configuration message. */ public Builder toBuilder() { return new Builder(configMessage, configMessage.toBuilder(), new LinkedHashMap<>(locations)); }
/** Constructs a builder from this configuration message. */ public Builder toBuilder() { return new Builder(configMessage, configMessage.toBuilder(), new LinkedHashMap<>(locations)); }
/** * Constructs a new empty builder, based on the given default instance for the underlying config * message. * * <p>An initialized message can also be passed, however, no source location tracking will happen * for it. */ public static Builder newBuilder(Message defaultInstance) { return new Builder( defaultInstance, defaultInstance.toBuilder(), new LinkedHashMap<MessageKey, ImmutableMap<LocationKey, Location>>()); }
/** * Constructs a new empty builder, based on the given default instance for the underlying config * message. * * <p>An initialized message can also be passed, however, no source location tracking will happen * for it. */ public static Builder newBuilder(Message defaultInstance) { return new Builder( defaultInstance, defaultInstance.toBuilder(), new LinkedHashMap<MessageKey, ImmutableMap<LocationKey, Location>>()); }
public static Message addField(Message m, String name, Object value) { Message.Builder builder = m.toBuilder(); setFieldByName(builder, name, value); return builder.build(); }
private <T extends Message> Map<String, T> getSpecs( T prototype, String type, Iterable<String> ids) { Map<String, T> specs = new HashMap<>(); for (String id : ids) { Message.Builder builder = prototype.toBuilder(); mergeJsonProto(getSpecFile(type, id), builder); //noinspection unchecked specs.put(id, (T) builder.build()); } return specs; }
@SuppressWarnings("unchecked") @Override protected final void read(EB msg, JsonParser par) throws IOException { Object extObj = msg.getExtension(key); if (extObj instanceof Message) { readSingle(msg, par, (XB) ((Message) extObj).toBuilder()); } else if (extObj instanceof List<?>) { readRepeated(msg, par); } else { throw new IllegalStateException("Extension must be Message or repeated Message"); } }
@SuppressWarnings("unchecked") @Override public T setFieldValue(T msg, String fieldName, Object fieldValue) { Descriptors.FieldDescriptor fd = checkFieldDescriptor(fieldName); return (T) msg.toBuilder().setField(fd, fieldValue).build(); }
@SuppressWarnings("unchecked") public static <T extends Builder> T createBuilder(Class<T> builderType, ExtensionRegistry extensionRegistry) { Class<? extends Message> messageType = (Class<? extends Message>) builderType.getDeclaringClass(); return (T) create(messageType, extensionRegistry).toBuilder(); }
@Override public Object setStructFieldData(Object data, StructField field, Object fieldValue) { return ((Message) data) .toBuilder() .setField(descriptor.findFieldByName(field.getFieldName()), fieldValue) .build(); }
public UnitDataFilteredObservable(final DataProvider<M> dataProvider, final ServiceTempus serviceTempus, final UnitTemplate unitTemplate) { super(dataProvider); this.unit = dataProvider; this.serviceTempus = serviceTempus; this.setHashGenerator((M value) -> removeUnwantedServiceTempus(value.toBuilder()).build().hashCode()); this.fieldsToKeep = new HashSet<>(); this.unitTemplate = unitTemplate; if (unitTemplate != null) { updateFieldsToKeep(); } }
public ServiceDataFilteredObservable(final DataProvider<M> source) { super(source); this.setHashGenerator((M value) -> removeResponsibleActoin(removeTimestamps(value.toBuilder())).build().hashCode()); }
private void setRequestedState() throws CouldNotPerformException { try (ClosableDataBuilder dataBuilder = unit.getDataBuilder(this)) { // set the responsible action for the service attribute Message.Builder serviceStateBuilder = serviceAttribute.toBuilder(); Descriptors.FieldDescriptor fieldDescriptor = ProtoBufFieldProcessor.getFieldDescriptor(serviceStateBuilder, Service.RESPONSIBLE_ACTION_FIELD_NAME); serviceStateBuilder.setField(fieldDescriptor, actionDescriptionBuilder.build()); // set the updated service attribute as requested state in the unit data builder Services.invokeServiceMethod(serviceDescription.getType(), serviceDescription.getPattern(), ServiceTempus.REQUESTED, dataBuilder.getInternalBuilder(), serviceStateBuilder); } }