public Message decodeJsonMessage(String topic, byte[] payload) throws InvalidProtocolBufferException { try { Method builderGetter = allTopics ? messageClassForAll.getDeclaredMethod("newBuilder") : messageClassByTopic.get(topic).getDeclaredMethod("newBuilder"); com.google.protobuf.GeneratedMessageV3.Builder builder = (com.google.protobuf.GeneratedMessageV3.Builder) builderGetter.invoke(null); jsonParser.merge(new InputStreamReader(new ByteArrayInputStream(payload)), builder); return builder.build(); } catch (InvalidProtocolBufferException e){ throw e; } catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException e) { throw new RuntimeException("Error parsing JSON message", e); } catch (IOException e) { throw new RuntimeException("Error creating read stream for JSON message", e); } }
/** * 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(); } }
/** * 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(); } }
private static Export readManifest(ResourceId fileResource) { Export.Builder result = Export.newBuilder(); try (InputStream stream = Channels.newInputStream(FileSystems.open(fileResource))) { Reader reader = new InputStreamReader(stream); JsonFormat.parser().merge(reader, result); } catch (IOException e) { throw new RuntimeException(e); } return result.build(); } }
private void mergeJsonProto(Path path, Message.Builder builder) { try (InputStream inputStream = Files.newInputStream(path)) { Reader reader = new InputStreamReader(inputStream); JsonFormat.parser().merge(reader, builder); } catch (FileNotFoundException e) { throw new SpecNotFound("Spec not found at filepath " + path.toString(), e); } catch (IOException e) { throw new SpecRetrievalException("Error parsing spec at filepath " + path.toString(), e); } }
@ProcessElement public void processElement(ProcessContext context) { String line = context.element(); FeatureRow.Builder builder = FeatureRow.newBuilder(); try { JsonFormat.parser().merge(line, builder); context.output(builder.build()); } catch (InvalidProtocolBufferException e) { throw new RuntimeException(e); } } }));
JsonFormat.parser().merge(jsonContents, builder);
JsonElement element = new JsonParser().parse(input); cleanJsonElement(element); JsonFormat.parser().ignoringUnknownFields().merge(element.toString(), builder); return (TYPE) builder.build(); } catch (Exception e) {
@Test @Theory public void checkFlagsConstructionWithDeviceSpec( @FromDataPoints("deviceSpecs") String deviceSpecPath) throws Exception { DeviceSpec.Builder expectedDeviceSpecBuilder = DeviceSpec.newBuilder(); try (Reader reader = TestData.openReader(deviceSpecPath)) { JsonFormat.parser().merge(reader, expectedDeviceSpecBuilder); } DeviceSpec expectedDeviceSpec = expectedDeviceSpecBuilder.build(); BuildApksResult tableOfContentsProto = BuildApksResult.getDefaultInstance(); Path apksArchiveFile = createApksArchiveFile(tableOfContentsProto, tmpDir.resolve("bundle.apks")); Path deviceSpecFile = copyToTempDir(deviceSpecPath); GetSizeCommand command = GetSizeCommand.fromFlags( new FlagParser() .parse( "get-size", "total", "--device-spec=" + deviceSpecFile, "--apks=" + apksArchiveFile)); assertThat(command.getDeviceSpec()).isEqualTo(expectedDeviceSpec); }
/** * 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(); } }
private static BundleConfig parseBundleConfigJson(Path bundleConfigJsonPath) { BundleConfig.Builder bundleConfig = BundleConfig.newBuilder(); try (Reader bundleConfigReader = BufferedIo.reader(bundleConfigJsonPath)) { JsonFormat.parser().merge(bundleConfigReader, bundleConfig); } catch (InvalidProtocolBufferException e) { throw CommandExecutionException.builder() .withCause(e) .withMessage("The file '%s' is not a valid BundleConfig JSON file.", bundleConfigJsonPath) .build(); } catch (IOException e) { throw CommandExecutionException.builder() .withCause(e) .withMessage( "An error occurred while trying to read the file '%s'.", bundleConfigJsonPath) .build(); } return bundleConfig.build(); }
@Test public void oneDevice_noDeviceId_works() throws Exception { DeviceSpec deviceSpec = mergeSpecs(sdkVersion(21), abis("x86_64", "x86"), locales("en-GB"), density(360)); Path outputPath = tmp.getRoot().toPath().resolve("device.json"); // We set up a fake ADB server because the real one won't work on Forge. GetDeviceSpecCommand command = GetDeviceSpecCommand.builder() .setAdbPath(adbPath) .setAdbServer(fakeServerOneDevice(deviceSpec)) .setOutputPath(outputPath) .build(); assertThat(command.execute()).isEqualTo(deviceSpec); try (Reader deviceSpecReader = BufferedIo.reader(outputPath)) { DeviceSpec.Builder writtenSpecBuilder = DeviceSpec.newBuilder(); JsonFormat.parser().merge(deviceSpecReader, writtenSpecBuilder); assertThat(writtenSpecBuilder.build()).isEqualTo(deviceSpec); } }
@Test public void deviceSpecFromPbJson() throws Exception { DeviceSpec.Builder expectedDeviceSpecBuilder = DeviceSpec.newBuilder(); try (Reader reader = TestData.openReader("testdata/device/pixel2_spec.json")) { JsonFormat.parser().merge(reader, expectedDeviceSpecBuilder); } DeviceSpec expectedDeviceSpec = expectedDeviceSpecBuilder.build(); BuildApksResult tableOfContentsProto = BuildApksResult.getDefaultInstance(); Path apksArchiveFile = createApksArchiveFile(tableOfContentsProto, tmpDir.resolve("bundle.apks")); Path deviceSpecFile = copyToTempDir("testdata/device/pixel2_spec.json"); ExtractApksCommand command = ExtractApksCommand.fromFlags( new FlagParser().parse("--device-spec=" + deviceSpecFile, "--apks=" + apksArchiveFile)); assertThat(command.getDeviceSpec()).isEqualTo(expectedDeviceSpec); }
/** * Converts a JSON object to a protobuf message. * <p> * Note: Ignores unknown fields * * @param builder the proto message type builder * @param input the JSON object to convert * @return the converted protobuf message */ public static Message fromJson(Message.Builder builder, JsonObject input) throws Exception { JsonFormat.parser().ignoringUnknownFields().merge(input.toString(), builder); return builder.build(); }
private static DeviceSpec parseDeviceSpecInternal(Reader deviceSpecReader, boolean canSkipFields) throws IOException { DeviceSpec.Builder builder = DeviceSpec.newBuilder(); JsonFormat.parser().merge(deviceSpecReader, builder); DeviceSpec deviceSpec = builder.build(); validateDeviceSpec(deviceSpec, canSkipFields); return deviceSpec; }
private void run() throws Exception { stream = new SpannerImpl.GrpcStreamIterator(10); stream.setCall( new SpannerRpc.StreamingCall() { @Override public void cancel(@Nullable String message) {} @Override public void request(int numMessages) {} }); consumer = stream.consumer(); resultSet = new SpannerImpl.GrpcResultSet(stream, new NoOpListener(), QueryMode.NORMAL); JSONArray chunks = testCase.getJSONArray("chunks"); JSONObject expectedResult = testCase.getJSONObject("result"); for (int i = 0; i < chunks.length(); i++) { PartialResultSet.Builder builder = PartialResultSet.newBuilder(); JsonFormat.parser().merge(chunks.getString(i), builder); consumer.onPartialResultSet(builder.build()); } consumer.onCompleted(); assertResultSet(resultSet, expectedResult.getJSONArray("value")); }
@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); } }
@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)); }
@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)); }
@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); } }