@VisibleForTesting StructInfo newStructInfo(Descriptor descriptor) { return new StructInfo( descriptor.getFullName(), descriptor.getFields().stream() .map(GrpcDocServicePlugin::newFieldInfo) .collect(toImmutableList())); }
private static Iterable<String> getDescriptors(Iterable<? extends Message> messages) { List<String> descriptors = Lists.newArrayList(); for (Message message : messages) { descriptors.add(message == null ? "null" : message.getDescriptorForType().getFullName()); } return descriptors; }
@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)); } }
@Override public void validate( Descriptor rootDescriptor, FieldDescriptorValidator fieldDescriptorValidator) { super.validate(rootDescriptor, fieldDescriptorValidator); for (int fieldNumber : fieldNumbers) { FieldDescriptor fieldDescriptor = rootDescriptor.findFieldByNumber(fieldNumber); checkArgument( fieldDescriptor != null, "Message type %s has no field with number %s.", rootDescriptor.getFullName(), fieldNumber); fieldDescriptorValidator.validate(fieldDescriptor); } }
@Override public void validate( Descriptor rootDescriptor, FieldDescriptorValidator fieldDescriptorValidator) { Verify.verify( fieldDescriptorValidator == FieldDescriptorValidator.ALLOW_ALL, "PartialScopeLogic doesn't support custom field validators."); checkArgument( expectedDescriptor.equals(rootDescriptor), "Message given to FieldScopes.fromSetFields() does not have the same descriptor as the " + "message being tested. Expected %s, got %s.", expectedDescriptor.getFullName(), rootDescriptor.getFullName()); }
static Any toAny(Message message) { return Any.newBuilder() .setTypeUrl("type.googleapis.com/" + message.getDescriptorForType().getFullName()) .setValue(message.toByteString()) .build(); }
private void checkFieldDescriptor(FieldDescriptor field) { if (field.getContainingType() != metadata.descriptor) { throw new RuntimeException( "Wrong FieldDescriptor \"" + field.getFullName() + "\" used in message \"" + metadata.descriptor.getFullName()); } }
private void verifyExtensionContainingType( final Extension<MessageType, ?> extension) { if (extension.getDescriptor().getContainingType() != getDescriptorForType()) { // This can only happen if someone uses unchecked operations. throw new IllegalArgumentException( "Extension is for type \"" + extension.getDescriptor().getContainingType().getFullName() + "\" which does not match message type \"" + getDescriptorForType().getFullName() + "\"."); } }
private void verifyExtensionContainingType( final Extension<MessageType, ?> extension) { if (extension.getDescriptor().getContainingType() != getDescriptorForType()) { // This can only happen if someone uses unchecked operations. throw new IllegalArgumentException( "Extension is for type \"" + extension.getDescriptor().getContainingType().getFullName() + "\" which does not match message type \"" + getDescriptorForType().getFullName() + "\"."); } }
private void verifyExtensionContainingType( final Extension<MessageType, ?> extension) { if (extension.getDescriptor().getContainingType() != getDescriptorForType()) { // This can only happen if someone uses unchecked operations. throw new IllegalArgumentException( "Extension is for type \"" + extension.getDescriptor().getContainingType().getFullName() + "\" which does not match message type \"" + getDescriptorForType().getFullName() + "\"."); } }
private static String computeFullName(final FileDescriptor file, final Descriptor parent, final String name) { if (parent != null) { return parent.getFullName() + '.' + name; } else if (file.getPackage().length() > 0) { return file.getPackage() + '.' + name; } else { return name; } }
private void verifyExtensionContainingType( final GeneratedExtension<MessageType, ?> extension) { if (extension.getDescriptor().getContainingType() != getDescriptorForType()) { // This can only happen if someone uses unchecked operations. throw new IllegalArgumentException( "Extension is for type \"" + extension.getDescriptor().getContainingType().getFullName() + "\" which does not match message type \"" + getDescriptorForType().getFullName() + "\"."); } }
private void verifyExtensionContainingType( final GeneratedExtension<MessageType, ?> extension) { if (extension.getDescriptor().getContainingType() != getDescriptorForType()) { // This can only happen if someone uses unchecked operations. throw new IllegalArgumentException( "Extension is for type \"" + extension.getDescriptor().getContainingType().getFullName() + "\" which does not match message type \"" + getDescriptorForType().getFullName() + "\"."); } }
public <T extends com.google.protobuf.Message> boolean is( java.lang.Class<T> clazz) { T defaultInstance = com.google.protobuf.Internal.getDefaultInstance(clazz); return getTypeNameFromTypeUrl(getTypeUrl()).equals( defaultInstance.getDescriptorForType().getFullName()); }
private static String getTypeUrl( java.lang.String typeUrlPrefix, com.google.protobuf.Descriptors.Descriptor descriptor) { return typeUrlPrefix.endsWith("/") ? typeUrlPrefix + descriptor.getFullName() : typeUrlPrefix + "/" + descriptor.getFullName(); }
private void checkFieldDescriptor(FieldDescriptor field) { if (field.getContainingType() != metadata.descriptor) { throw new RuntimeException( "Wrong FieldDescriptor \"" + field.getFullName() + "\" used in message \"" + metadata.descriptor.getFullName()); } }
private static String computeFullName(final FileDescriptor file, final Descriptor parent, final String name) { if (parent != null) { return parent.getFullName() + '.' + name; } else if (file.getPackage().length() > 0) { return file.getPackage() + '.' + name; } else { return name; } }
private void verifyExtensionContainingType( final Extension<MessageType, ?> extension) { if (extension.getDescriptor().getContainingType() != getDescriptorForType()) { // This can only happen if someone uses unchecked operations. throw new IllegalArgumentException( "Extension is for type \"" + extension.getDescriptor().getContainingType().getFullName() + "\" which does not match message type \"" + getDescriptorForType().getFullName() + "\"."); } }
/** * Set the "X-Protobuf-*" HTTP headers when responding with a message of * content type "application/x-protobuf" * <p><b>Note:</b> <code>outputMessage.getBody()</code> should not have been called * before because it writes HTTP headers (making them read only).</p> */ private void setProtoHeader(HttpOutputMessage response, Message message) { response.getHeaders().set(X_PROTOBUF_SCHEMA_HEADER, message.getDescriptorForType().getFile().getName()); response.getHeaders().set(X_PROTOBUF_MESSAGE_HEADER, message.getDescriptorForType().getFullName()); }
/** * Set the "X-Protobuf-*" HTTP headers when responding with a message of * content type "application/x-protobuf" * <p><b>Note:</b> <code>outputMessage.getBody()</code> should not have been called * before because it writes HTTP headers (making them read only).</p> */ private void setProtoHeader(HttpOutputMessage response, Message message) { response.getHeaders().set(X_PROTOBUF_SCHEMA_HEADER, message.getDescriptorForType().getFile().getName()); response.getHeaders().set(X_PROTOBUF_MESSAGE_HEADER, message.getDescriptorForType().getFullName()); }