@SuppressWarnings("unchecked") @Override public IN apply(byte[] bytes) { try { Message msg = messages.get(type); if(null == msg) { msg = (Message)type.getMethod("getDefaultInstance").invoke(null); messages.put(type, msg); } IN obj = (IN)msg.newBuilderForType().mergeFrom(bytes).build(); if(null != next) { next.accept(obj); return null; } else { return obj; } } catch(Exception e) { throw new IllegalStateException(e.getMessage(), e); } } };
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(); }
@Override public Mono<Message> decodeToMono(Publisher<DataBuffer> inputStream, ResolvableType elementType, @Nullable MimeType mimeType, @Nullable Map<String, Object> hints) { return DataBufferUtils.join(inputStream).map(dataBuffer -> { try { Message.Builder builder = getMessageBuilder(elementType.toClass()); ByteBuffer buffer = dataBuffer.asByteBuffer(); builder.mergeFrom(CodedInputStream.newInstance(buffer), this.extensionRegistry); return builder.build(); } catch (IOException ex) { throw new DecodingException("I/O error while parsing input stream", ex); } catch (Exception ex) { throw new DecodingException("Could not read Protobuf message: " + ex.getMessage(), ex); } finally { DataBufferUtils.release(dataBuffer); } } ); }
/** * Parse a text-format message from {@code input}. Extensions will be * recognized if they are registered in {@code extensionRegistry}. * * @return the parsed message, guaranteed initialized */ public static <T extends Message> T parse( final CharSequence input, final ExtensionRegistry extensionRegistry, final Class<T> protoClass) throws ParseException { Message.Builder builder = Internal.getDefaultInstance(protoClass).newBuilderForType(); merge(input, extensionRegistry, builder); @SuppressWarnings("unchecked") T output = (T) builder.build(); return output; }
@Override protected Message readInternal(Class<? extends Message> clazz, HttpInputMessage inputMessage) throws IOException, HttpMessageNotReadableException { MediaType contentType = inputMessage.getHeaders().getContentType(); if (contentType == null) { contentType = PROTOBUF; } Charset charset = contentType.getCharset(); if (charset == null) { charset = DEFAULT_CHARSET; } Message.Builder builder = getMessageBuilder(clazz); if (PROTOBUF.isCompatibleWith(contentType)) { builder.mergeFrom(inputMessage.getBody(), this.extensionRegistry); } else if (TEXT_PLAIN.isCompatibleWith(contentType)) { InputStreamReader reader = new InputStreamReader(inputMessage.getBody(), charset); TextFormat.merge(reader, this.extensionRegistry, builder); } else if (this.protobufFormatSupport != null) { this.protobufFormatSupport.merge( inputMessage.getBody(), charset, contentType, this.extensionRegistry, builder); } return builder.build(); }
@Override public Mono<Message> decodeToMono(Publisher<DataBuffer> inputStream, ResolvableType elementType, @Nullable MimeType mimeType, @Nullable Map<String, Object> hints) { return DataBufferUtils.join(inputStream).map(dataBuffer -> { try { Message.Builder builder = getMessageBuilder(elementType.toClass()); ByteBuffer buffer = dataBuffer.asByteBuffer(); builder.mergeFrom(CodedInputStream.newInstance(buffer), this.extensionRegistry); return builder.build(); } catch (IOException ex) { throw new DecodingException("I/O error while parsing input stream", ex); } catch (Exception ex) { throw new DecodingException("Could not read Protobuf message: " + ex.getMessage(), ex); } finally { DataBufferUtils.release(dataBuffer); } } ); }
public static Message getResponse( org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.CoprocessorServiceResponse result, com.google.protobuf.Message responsePrototype) throws IOException { Message response; if (result.getValue().hasValue()) { Message.Builder builder = responsePrototype.newBuilderForType(); builder.mergeFrom(result.getValue().getValue().newInput()); response = builder.build(); } else { response = responsePrototype.getDefaultInstanceForType(); } if (LOG.isTraceEnabled()) { LOG.trace("Master Result is value=" + response); } return response; }
/** * Parse a text-format message from {@code input}. * * @return the parsed message, guaranteed initialized */ public static <T extends Message> T parse(final CharSequence input, final Class<T> protoClass) throws ParseException { Message.Builder builder = Internal.getDefaultInstance(protoClass).newBuilderForType(); merge(input, builder); @SuppressWarnings("unchecked") T output = (T) builder.build(); return output; }
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; }
@Override protected Object readRecord(Object old, Schema expected, ResolvingDecoder in) throws IOException { Message.Builder b = (Message.Builder)super.readRecord(old, expected, in); return b.build(); // build instance }
/** * {@inheritDoc} */ @Override public Object build() { return internalProtoBuilder.build(); } }
@Override public KeyValue next() throws IOException { Builder messageBuilder = (Builder) reader.read(); if (messageBuilder != null) { return new KeyValue(offset++, messageBuilder.build().toByteArray()); } return null; }
private Object coerceType(final Object value) { if (type.isInstance(value)) { return value; } else { // 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 ((Message.Builder) invokeOrDie(newBuilderMethod, null)) .mergeFrom((Message) value).build(); } }
ByteBuffer buffer = this.output.asByteBuffer(); builder.mergeFrom(CodedInputStream.newInstance(buffer), extensionRegistry); messages.add(builder.build()); DataBufferUtils.release(this.output); this.output = null;
private Object coerceType(final Object value) { if (type.isInstance(value)) { return value; } else { // 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 ((Message.Builder) invokeOrDie(newBuilderMethod, null)) .mergeFrom((Message) value).build(); } }
/** * Creates a new message of type "Type" which is a copy of "source". "source" * must have the same descriptor but may be a different class (e.g. * DynamicMessage). */ @SuppressWarnings("unchecked") private static <Type extends Message> Type copyAsType( final Type typeDefaultInstance, final Message source) { return (Type) typeDefaultInstance .newBuilderForType().mergeFrom(source).build(); }
private Object coerceType(final Object value) { if (type.isInstance(value)) { return value; } else { // 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 ((Message.Builder) invokeOrDie(newBuilderMethod, null)) .mergeFrom((Message) value).build(); } }
/** * Creates a new message of type "Type" which is a copy of "source". "source" * must have the same descriptor but may be a different class (e.g. * DynamicMessage). */ @SuppressWarnings("unchecked") private static <Type extends Message> Type copyAsType( final Type typeDefaultInstance, final Message source) { return (Type)typeDefaultInstance.newBuilderForType() .mergeFrom(source) .build(); }
public static Message getRequest(Service service, Descriptors.MethodDescriptor methodDesc, org.apache.hbase.thirdparty.com.google.protobuf.ByteString shadedRequest) throws IOException { Message.Builder builderForType = service.getRequestPrototype(methodDesc).newBuilderForType(); org.apache.hadoop.hbase.protobuf.ProtobufUtil.mergeFrom(builderForType, // TODO: COPY FROM SHADED TO NON_SHADED. DO I HAVE TOO? shadedRequest.toByteArray()); return builderForType.build(); }
@Override protected Message readInternal(Class<? extends Message> clazz, HttpInputMessage inputMessage) throws IOException, HttpMessageNotReadableException { MediaType contentType = inputMessage.getHeaders().getContentType(); if (contentType == null) { contentType = PROTOBUF; } Charset charset = contentType.getCharset(); if (charset == null) { charset = DEFAULT_CHARSET; } Message.Builder builder = getMessageBuilder(clazz); if (PROTOBUF.isCompatibleWith(contentType)) { builder.mergeFrom(inputMessage.getBody(), this.extensionRegistry); } else if (TEXT_PLAIN.isCompatibleWith(contentType)) { InputStreamReader reader = new InputStreamReader(inputMessage.getBody(), charset); TextFormat.merge(reader, this.extensionRegistry, builder); } else if (this.protobufFormatSupport != null) { this.protobufFormatSupport.merge( inputMessage.getBody(), charset, contentType, this.extensionRegistry, builder); } return builder.build(); }