private static long durationToUnits(Duration duration, TimeUnit units) { // TODO(user): Handle overflow. switch (units) { case NANOSECONDS: return Durations.toNanos(duration); case MICROSECONDS: return Durations.toMicros(duration); default: return units.convert(Durations.toMillis(duration), TimeUnit.MILLISECONDS); } } }
private static Duration createDuration(long num, TimeUnit units) { switch (units) { case NANOSECONDS: return Durations.fromNanos(num); case MICROSECONDS: return Durations.fromMicros(num); default: return Durations.fromMillis(units.toMillis(num)); } }
/** * Parses the JSON input file containing the list of features. */ public static List<Feature> parseFeatures(URL file) throws IOException { InputStream input = file.openStream(); try { Reader reader = new InputStreamReader(input); try { FeatureDatabase.Builder database = FeatureDatabase.newBuilder(); JsonFormat.parser().merge(reader, database); return database.getFeatureList(); } finally { reader.close(); } } finally { input.close(); } }
public static <T extends Message> MethodDescriptor.Marshaller<T> jsonMarshaller(final T defaultInstance) { final JsonFormat.Printer printer = JsonFormat.printer().preservingProtoFieldNames(); final JsonFormat.Parser parser = JsonFormat.parser(); final Charset charset = Charset.forName("UTF-8");
@Override public Optional<String> serializeExampleRequest(String serviceName, String methodName, Object exampleRequest) { try { return Optional.of(JsonFormat.printer().print((MessageOrBuilder) exampleRequest)); } catch (InvalidProtocolBufferException e) { throw new UncheckedIOException( "Invalid example request protobuf. Is it missing required fields?", e); } }
@Override public void merge(InputStream input, Charset charset, MediaType contentType, ExtensionRegistry extensionRegistry, Message.Builder builder) throws IOException, HttpMessageConversionException { if (contentType.isCompatibleWith(APPLICATION_JSON)) { InputStreamReader reader = new InputStreamReader(input, charset); this.parser.merge(reader, builder); } else { throw new HttpMessageConversionException( "protobuf-java-util does not support parsing " + contentType); } }
@Override public void print(Message message, OutputStream output, MediaType contentType, Charset charset) throws IOException, HttpMessageConversionException { if (contentType.isCompatibleWith(APPLICATION_JSON)) { OutputStreamWriter writer = new OutputStreamWriter(output, charset); this.printer.appendTo(message, writer); writer.flush(); } else { throw new HttpMessageConversionException( "protobuf-java-util does not support printing " + contentType); } } }
StringBuilder toString(StringBuilder b) { // TODO(user): Convert all internal toString(StringBuilder) methods to return StringBuilder. switch (mode) { case STRONG: return b.append("strong"); case READ_TIMESTAMP: return b.append("exact_timestamp: ").append(timestamp.toString()); case MIN_READ_TIMESTAMP: return b.append("min_read_timestamp: ").append(timestamp.toString()); case EXACT_STALENESS: return b.append("exact_staleness: ").append(Durations.toString(staleness)); case MAX_STALENESS: return b.append("max_staleness: ").append(Durations.toString(staleness)); default: throw new AssertionError("Unexpected mode: " + mode); } }
static long extractRetryDelay(Throwable cause) { if (cause != null) { Metadata trailers = Status.trailersFromThrowable(cause); if (trailers != null && trailers.containsKey(KEY_RETRY_INFO)) { RetryInfo retryInfo = trailers.get(KEY_RETRY_INFO); if (retryInfo.hasRetryDelay()) { return Durations.toMillis(retryInfo.getRetryDelay()); } } } return -1L; } }
private void updateFieldMask(int fieldNumber) { FieldMask newMask = FieldMaskUtil.fromFieldNumbers(com.google.bigtable.admin.v2.AppProfile.class, fieldNumber); proto.setUpdateMask(FieldMaskUtil.union(proto.getUpdateMask(), newMask)); }
/** * Creates an instance representing the value of {@code seconds} and {@code nanos} since January * 1, 1970, 00:00:00 UTC. * * @param seconds seconds since January 1, 1970, 00:00:00 UTC. A negative value is the number of * seconds before January 1, 1970, 00:00:00 UTC. * @param nanos the fractional seconds component, in the range 0..999999999. * @throws IllegalArgumentException if the timestamp is outside the representable range */ public static Timestamp ofTimeSecondsAndNanos(long seconds, int nanos) { checkArgument( Timestamps.isValid(seconds, nanos), "timestamp out of range: %s, %s", seconds, nanos); return new Timestamp(seconds, nanos); }
/** * Parses the JSON input file containing the list of features. */ public static List<Feature> parseFeatures(URL file) throws IOException { InputStream input = file.openStream(); try { Reader reader = new InputStreamReader(input); try { FeatureDatabase.Builder database = FeatureDatabase.newBuilder(); JsonFormat.parser().merge(reader, database); return database.getFeatureList(); } finally { reader.close(); } } finally { input.close(); } }
@Override public void merge(InputStream input, Charset charset, MediaType contentType, ExtensionRegistry extensionRegistry, Message.Builder builder) throws IOException, HttpMessageConversionException { if (contentType.isCompatibleWith(APPLICATION_JSON)) { InputStreamReader reader = new InputStreamReader(input, charset); this.parser.merge(reader, builder); } else { throw new HttpMessageConversionException( "protobuf-java-util does not support parsing " + contentType); } }
@Override public void print(Message message, OutputStream output, MediaType contentType, Charset charset) throws IOException, HttpMessageConversionException { if (contentType.isCompatibleWith(APPLICATION_JSON)) { OutputStreamWriter writer = new OutputStreamWriter(output, charset); this.printer.appendTo(message, writer); writer.flush(); } else { throw new HttpMessageConversionException( "protobuf-java-util does not support printing " + contentType); } } }
private void updateFieldMask(int fieldNumber) { FieldMask newMask = FieldMaskUtil.fromFieldNumbers(Instance.class, fieldNumber); builder.setUpdateMask(FieldMaskUtil.union(builder.getUpdateMask(), newMask)); }
@Test public void writeJsonWithGoogleProtobuf() throws IOException { this.converter = new ProtobufHttpMessageConverter( new ProtobufHttpMessageConverter.ProtobufJavaUtilSupport(null, null), this.extensionRegistry); MockHttpOutputMessage outputMessage = new MockHttpOutputMessage(); MediaType contentType = MediaType.APPLICATION_JSON_UTF8; this.converter.write(this.testMsg, contentType, outputMessage); assertEquals(contentType, outputMessage.getHeaders().getContentType()); final String body = outputMessage.getBodyAsString(Charset.forName("UTF-8")); assertFalse("body is empty", body.isEmpty()); Msg.Builder builder = Msg.newBuilder(); JsonFormat.parser().merge(body, builder); assertEquals(this.testMsg, builder.build()); assertNull(outputMessage.getHeaders().getFirst( ProtobufHttpMessageConverter.X_PROTOBUF_MESSAGE_HEADER)); assertNull(outputMessage.getHeaders().getFirst( ProtobufHttpMessageConverter.X_PROTOBUF_SCHEMA_HEADER)); }
@Before public void setup() { this.registryInitializer = mock(ExtensionRegistryInitializer.class); this.extensionRegistry = mock(ExtensionRegistry.class); this.converter = new ProtobufJsonFormatHttpMessageConverter( JsonFormat.parser(), JsonFormat.printer(), this.registryInitializer); this.testMsg = Msg.newBuilder().setFoo("Foo").setBlah(SecondMsg.newBuilder().setBlah(123).build()).build(); }
@Test public void writeJsonWithJavaFormat() throws IOException { this.converter = new ProtobufHttpMessageConverter( new ProtobufHttpMessageConverter.ProtobufJavaFormatSupport(), this.extensionRegistry); MockHttpOutputMessage outputMessage = new MockHttpOutputMessage(); MediaType contentType = MediaType.APPLICATION_JSON_UTF8; this.converter.write(this.testMsg, contentType, outputMessage); assertEquals(contentType, outputMessage.getHeaders().getContentType()); final String body = outputMessage.getBodyAsString(Charset.forName("UTF-8")); assertFalse("body is empty", body.isEmpty()); Msg.Builder builder = Msg.newBuilder(); JsonFormat.parser().merge(body, builder); assertEquals(this.testMsg, builder.build()); assertNull(outputMessage.getHeaders().getFirst( ProtobufHttpMessageConverter.X_PROTOBUF_MESSAGE_HEADER)); assertNull(outputMessage.getHeaders().getFirst( ProtobufHttpMessageConverter.X_PROTOBUF_SCHEMA_HEADER)); }