@SuppressWarnings("unchecked") @Override public Mono<Void> write(Publisher<? extends Message> inputStream, ResolvableType elementType, @Nullable MediaType mediaType, ReactiveHttpOutputMessage message, Map<String, Object> hints) { try { Message.Builder builder = getMessageBuilder(elementType.toClass()); Descriptors.Descriptor descriptor = builder.getDescriptorForType(); message.getHeaders().add(X_PROTOBUF_SCHEMA_HEADER, descriptor.getFile().getName()); message.getHeaders().add(X_PROTOBUF_MESSAGE_HEADER, descriptor.getFullName()); if (inputStream instanceof Flux) { if (mediaType == null) { message.getHeaders().setContentType(((HttpMessageEncoder<?>)getEncoder()).getStreamingMediaTypes().get(0)); } else if (!ProtobufEncoder.DELIMITED_VALUE.equals(mediaType.getParameters().get(ProtobufEncoder.DELIMITED_KEY))) { Map<String, String> parameters = new HashMap<>(mediaType.getParameters()); parameters.put(ProtobufEncoder.DELIMITED_KEY, ProtobufEncoder.DELIMITED_VALUE); message.getHeaders().setContentType(new MediaType(mediaType.getType(), mediaType.getSubtype(), parameters)); } } return super.write(inputStream, elementType, mediaType, message, hints); } catch (Exception ex) { return Mono.error(new DecodingException("Could not read Protobuf message: " + ex.getMessage(), ex)); } }
@SuppressWarnings("unchecked") @Override public Mono<Void> write(Publisher<? extends Message> inputStream, ResolvableType elementType, @Nullable MediaType mediaType, ReactiveHttpOutputMessage message, Map<String, Object> hints) { try { Message.Builder builder = getMessageBuilder(elementType.toClass()); Descriptors.Descriptor descriptor = builder.getDescriptorForType(); message.getHeaders().add(X_PROTOBUF_SCHEMA_HEADER, descriptor.getFile().getName()); message.getHeaders().add(X_PROTOBUF_MESSAGE_HEADER, descriptor.getFullName()); if (inputStream instanceof Flux) { if (mediaType == null) { message.getHeaders().setContentType(((HttpMessageEncoder<?>)getEncoder()).getStreamingMediaTypes().get(0)); } else if (!ProtobufEncoder.DELIMITED_VALUE.equals(mediaType.getParameters().get(ProtobufEncoder.DELIMITED_KEY))) { Map<String, String> parameters = new HashMap<>(mediaType.getParameters()); parameters.put(ProtobufEncoder.DELIMITED_KEY, ProtobufEncoder.DELIMITED_VALUE); message.getHeaders().setContentType(new MediaType(mediaType.getType(), mediaType.getSubtype(), parameters)); } } return super.write(inputStream, elementType, mediaType, message, hints); } catch (Exception ex) { return Mono.error(new DecodingException("Could not read Protobuf message: " + ex.getMessage(), ex)); } }
throws ParseException { FieldDescriptor field; final Descriptor type = builder.getDescriptorForType(); ExtensionRegistry.ExtensionInfo extension = null;
public static final IRepeatedFieldValueBuilder<Object> getBuilderForRepeatedAttribute( final Message.Builder builder, final FieldDescriptor field) { if (!field.isRepeated()) { throw new IllegalArgumentException("the field must be repeated"); } else if (builder.getDescriptorForType() != field.getContainingType()) { throw new IllegalArgumentException("the field doen't belong to this type"); } if (field.getJavaType() == JavaType.MESSAGE) { throw new IllegalArgumentException("the field must be of a non-Message type"); } return new RepeatedFieldValueBuilder<Message.Builder, Object>(builder, field); }
public static void setFieldByName(Message.Builder builder, String name, Object value) { FieldDescriptor fieldDescriptor = builder.getDescriptorForType().findFieldByName(name); if (value == null) { builder.clearField(fieldDescriptor); } else { builder.setField(fieldDescriptor, value); } }
/** * Merges all fields specified by this FieldMaskTree from {@code source} to {@code destination}. */ void merge(Message source, Message.Builder destination, FieldMaskUtil.MergeOptions options) { if (source.getDescriptorForType() != destination.getDescriptorForType()) { throw new IllegalArgumentException("Cannot merge messages of different types."); } if (root.children.isEmpty()) { return; } merge(root, "", source, destination, options); }
private void mergeStruct(JsonElement json, Message.Builder builder) throws InvalidProtocolBufferException { Descriptor descriptor = builder.getDescriptorForType(); FieldDescriptor field = descriptor.findFieldByName("fields"); if (field == null) { throw new InvalidProtocolBufferException("Invalid Struct type."); } mergeMapField(field, json, builder); }
private void merge(JsonElement json, Message.Builder builder) throws InvalidProtocolBufferException { WellKnownTypeParser specialParser = wellKnownTypeParsers.get(builder.getDescriptorForType().getFullName()); if (specialParser != null) { specialParser.merge(this, json, builder); return; } mergeMessage(json, builder, false); }
private void mergeWrapper(JsonElement json, Message.Builder builder) throws InvalidProtocolBufferException { Descriptor type = builder.getDescriptorForType(); FieldDescriptor field = type.findFieldByName("value"); if (field == null) { throw new InvalidProtocolBufferException("Invalid wrapper type: " + type.getFullName()); } builder.setField(field, parseFieldValue(field, json, builder)); }
private void merge(JsonElement json, Message.Builder builder) throws InvalidProtocolBufferException { WellKnownTypeParser specialParser = wellKnownTypeParsers.get(builder.getDescriptorForType().getFullName()); if (specialParser != null) { specialParser.merge(this, json, builder); return; } mergeMessage(json, builder, false); }
private synchronized Message.Builder removeUnwantedServiceTempus(final Message.Builder builder) { // if unknown keep everything if(serviceTempus == ServiceTempus.UNKNOWN) { return builder; } Descriptors.Descriptor descriptorForType = builder.getDescriptorForType(); descriptorForType.getFields().stream().filter((field) -> (field.getType() == Descriptors.FieldDescriptor.Type.MESSAGE)).filter((field) -> (!fieldsToKeep.contains(field.getName()))).forEachOrdered((field) -> { builder.clearField(field); }); return builder; } }
private void mergeWrapper(JsonElement json, Message.Builder builder) throws InvalidProtocolBufferException { Descriptor type = builder.getDescriptorForType(); FieldDescriptor field = type.findFieldByName("value"); if (field == null) { throw new InvalidProtocolBufferException("Invalid wrapper type: " + type.getFullName()); } builder.setField(field, parseFieldValue(field, json, builder)); }
private void mergeStruct(JsonElement json, Message.Builder builder) throws InvalidProtocolBufferException { Descriptor descriptor = builder.getDescriptorForType(); FieldDescriptor field = descriptor.findFieldByName("fields"); if (field == null) { throw new InvalidProtocolBufferException("Invalid Struct type."); } mergeMapField(field, json, builder); }
/** * Gets a list of {@link Descriptors.FieldDescriptor} associated with the {@link Message.Builder} * * @param protoBuilder {@link Message.Builder} instance * @return list of {@link Descriptors.FieldDescriptor} associated with the {@link Message.Builder} */ private static List<Descriptors.FieldDescriptor> getFieldDescriptors(Message.Builder protoBuilder) { return protoBuilder.getDescriptorForType().getFields(); }
@Override protected void populate(V builder, JsonParser parser, DeserializationContext context) throws IOException { FieldDescriptor field = builder.getDescriptorForType().findFieldByName("value"); Object value = readValue(builder, field, null, parser, context); builder.setField(field, value); } }
public FieldDescriptor getFieldDescriptor(Class<? extends TBase<?, ?>> thriftClass, String fieldName) { checkState(thriftClass); Descriptors.Descriptor descriptor = getBuilder(thriftClass).getDescriptorForType(); return descriptor.findFieldByName(fieldName); }
private void mergeListValue(JsonElement json, Message.Builder builder) throws InvalidProtocolBufferException { Descriptor descriptor = builder.getDescriptorForType(); FieldDescriptor field = descriptor.findFieldByName("values"); if (field == null) { throw new InvalidProtocolBufferException("Invalid ListValue type."); } mergeRepeatedField(field, json, builder); }
Message.Builder builder) throws ParseException { FieldDescriptor field; Descriptor type = builder.getDescriptorForType(); ExtensionRegistry.ExtensionInfo extension = null; boolean unknown = false;
@Override public Descriptors.Descriptor getDescriptorForType() { return builder.getDescriptorForType(); }
/** * Gets a list of {@link Descriptors.FieldDescriptor} associated with the {@link Message.Builder} * * @param protoBuilder {@link Message.Builder} instance * @return list of {@link Descriptors.FieldDescriptor} associated with the {@link Message.Builder} */ private static List<Descriptors.FieldDescriptor> getFieldDescriptors(Message.Builder protoBuilder) { return protoBuilder.getDescriptorForType().getFields(); }