类com.google.protobuf.ListValue源码实例Demo

下面列出了怎么用com.google.protobuf.ListValue的API类实例代码及写法,或者点击链接到github查看源代码。

@Test
public void addBasicBinding() {
  StatementBindings statementBindings = new StatementBindings();
  statementBindings.createBind("name", "John");
  statementBindings.createBind("age", 50);
  statementBindings.createBind("array", new String[]{"a", "b"});
  statementBindings.completeBinding();

  assertThat(statementBindings.getTypes())
      .containsExactly(
        entry("array", Type.newBuilder().setCode(TypeCode.ARRAY)
            .setArrayElementType(Type.newBuilder().setCode(TypeCode.STRING).build()).build()),
        entry("name", Type.newBuilder().setCode(TypeCode.STRING).build()),
        entry("age", Type.newBuilder().setCode(TypeCode.INT64).build())
      );

  assertThat(statementBindings.getBindings())
      .containsExactly(
          Struct.newBuilder()
              .putFields("name", Value.newBuilder().setStringValue("John").build())
              .putFields("age", Value.newBuilder().setStringValue("50").build())
              .putFields("array", Value.newBuilder().setListValue(
                  ListValue.newBuilder().addValues(Value.newBuilder().setStringValue("a").build())
                      .addValues(Value.newBuilder().setStringValue("b").build()).build()).build())
              .build());
}
 
源代码2 项目: rejoiner   文件: HelloWorldSchemaModule.java
@Query("sayHello")
HelloReply sayHello(
    HelloRequest request,
    StreamingGreeterGrpc.StreamingGreeterStub client,
    DataFetchingEnvironment dataFetchingEnvironment) {
  client.sayHelloStreaming(
      request,
      new GraphQlStreamObserver<HelloReply, GraphQlResponse>(dataFetchingEnvironment) {
        @Override
        protected GraphQlResponse getData(HelloReply value, ListValue path) {
          // TODO: how can this be improved?
          QueryType data =
              QueryType.newBuilder()
                  .setHelloReply(
                      io.grpc.examples.graphql.HelloReply.newBuilder()
                          .setMessage(value.getMessage())
                          .build())
                  .build();

          return GraphQlResponse.newBuilder().setPath(path).setData(data).build();
        }
      });

  return null;
}
 
源代码3 项目: curiostack   文件: WellKnownTypeMarshaller.java
@Override
public void doMerge(JsonParser parser, int currentDepth, Message.Builder messageBuilder)
    throws IOException {
  Value.Builder builder = (Value.Builder) messageBuilder;
  JsonToken token = parser.currentToken();
  if (token.isBoolean()) {
    builder.setBoolValue(ParseSupport.parseBool(parser));
  } else if (token.isNumeric()) {
    builder.setNumberValue(ParseSupport.parseDouble(parser));
  } else if (token == JsonToken.VALUE_NULL) {
    builder.setNullValue(NullValue.NULL_VALUE);
  } else if (token.isScalarValue()) {
    builder.setStringValue(ParseSupport.parseString(parser));
  } else if (token == JsonToken.START_OBJECT) {
    Struct.Builder structBuilder = builder.getStructValueBuilder();
    StructMarshaller.INSTANCE.mergeValue(parser, currentDepth + 1, structBuilder);
  } else if (token == JsonToken.START_ARRAY) {
    ListValue.Builder listValueBuilder = builder.getListValueBuilder();
    ListValueMarshaller.INSTANCE.mergeValue(parser, currentDepth + 1, listValueBuilder);
  } else {
    throw new IllegalStateException("Unexpected json data: " + parser.getText());
  }
}
 
源代码4 项目: curiostack   文件: MessageMarshallerTest.java
@Test
public void anyInMaps() throws Exception {
  TestAny.Builder testAny = TestAny.newBuilder();
  testAny.putAnyMap("int32_wrapper", Any.pack(Int32Value.newBuilder().setValue(123).build()));
  testAny.putAnyMap("int64_wrapper", Any.pack(Int64Value.newBuilder().setValue(456).build()));
  testAny.putAnyMap("timestamp", Any.pack(Timestamps.parse("1969-12-31T23:59:59Z")));
  testAny.putAnyMap("duration", Any.pack(Durations.parse("12345.1s")));
  testAny.putAnyMap("field_mask", Any.pack(FieldMaskUtil.fromString("foo.bar,baz")));
  Value numberValue = Value.newBuilder().setNumberValue(1.125).build();
  Struct.Builder struct = Struct.newBuilder();
  struct.putFields("number", numberValue);
  testAny.putAnyMap("struct", Any.pack(struct.build()));
  Value nullValue = Value.newBuilder().setNullValue(NullValue.NULL_VALUE).build();
  testAny.putAnyMap(
      "list_value",
      Any.pack(ListValue.newBuilder().addValues(numberValue).addValues(nullValue).build()));
  testAny.putAnyMap("number_value", Any.pack(numberValue));
  testAny.putAnyMap("any_value_number", Any.pack(Any.pack(numberValue)));
  testAny.putAnyMap("any_value_default", Any.pack(Any.getDefaultInstance()));
  testAny.putAnyMap("default", Any.getDefaultInstance());

  assertMatchesUpstream(testAny.build(), TestAllTypes.getDefaultInstance());
}
 
源代码5 项目: genomewarp   文件: VcfToVariant.java
private static boolean parseInlineGenotypeFields(String field, VariantCall.Builder vcBuilder,
    ListValue.Builder lvBuilder, IntGenotypeFieldAccessors.Accessor accessor, Genotype g) {

  final int[] intValues = accessor.getValues(g);
  if (intValues == null || intValues.length == 0) {
    return false;
  }

  if (field.equals(VCFConstants.GENOTYPE_PL_KEY)) {
    // HTSJDK folds GL's into PL's. We only use PL's to store genotype likelihood.
    for (int i = 0; i < intValues.length; i++) {
      // We add 0.0 to remove the possiblity of getting -0.0.
      vcBuilder.addGenotypeLikelihood(-(double) intValues[i] / 10.0 + 0.0);
    }
    return false;
  }

  for (int i = 0; i < intValues.length; i++) {
    lvBuilder.addValues(Value.newBuilder().setNumberValue(intValues[i]));
  }
  return true;
}
 
源代码6 项目: genomewarp   文件: GenomeWarpTestUtils.java
private static VariantCall makeVariantCall(
    String name, int[] g, double[] gl, boolean isPhased, Map<String, ListValue> info) {
  VariantCall.Builder vcBuilder = VariantCall.newBuilder().setCallSetName(name);
  if (g != null) {
    for (int i = 0; i < g.length; i++) {
      vcBuilder.addGenotype(g[i]);
    }
    if (isPhased && g.length > 1) {
      vcBuilder.setPhaseset("*");
    }
  }
  if (gl != null) {
    for (int i = 0; i < gl.length; i++) {
      vcBuilder.addGenotypeLikelihood(gl[i]);
    }
  }
  if (info != null) {
    vcBuilder.getMutableInfo().putAll(info);
  }

  return vcBuilder.build();
}
 
源代码7 项目: dataflow-java   文件: VerifyBamId.java
@ProcessElement
public void processElement(ProcessContext c) throws Exception {
  ListValue lv = c.element().getInfo().get("AF");
  if (lv != null && lv.getValuesCount() > 0) {
    Position position = Position.newBuilder()
        .setPosition(c.element().getStart())
        .setReferenceName(c.element().getReferenceName())
        .build();
    AlleleFreq af = new AlleleFreq();
    af.setRefFreq(Double.parseDouble(lv.getValues(0).getStringValue()));
    af.setAltBases(c.element().getAlternateBasesList());
    af.setRefBases(c.element().getReferenceBases());
    c.output(KV.of(position, af));
  } else {
    // AF field wasn't populated in info, so we don't have frequency information
    // for this Variant.
    // TODO instead of straight throwing an exception, log a warning.  If at the end of this
    // step the number of AlleleFreqs retrieved is below a given threshold, then throw an
    // exception.
    throw new IllegalArgumentException("Variant " + c.element().getId() + " does not have "
       + "allele frequency information stored in INFO field AF.");
  }
}
 
源代码8 项目: dataflow-java   文件: VerifyBamIdTest.java
@Test
public void testGetAlleleFreq() throws Exception {
  DoFnTester<Variant, KV<Position, AlleleFreq>> getAlleleFreq = DoFnTester.of(
      new GetAlleleFreq());
  Position pos = Position.newBuilder()
      .setReferenceName("1")
      .setPosition(123L)
      .build();
  Variant.Builder vBuild = Variant.newBuilder()
      .setReferenceName("1")
      .setStart(123L)
      .setReferenceBases("C")
      .addAlternateBases("T");
  vBuild.getMutableInfo().put("AF", ListValue.newBuilder()
      .addValues(Value.newBuilder().setStringValue("0.25").build()).build());
  AlleleFreq af = new AlleleFreq();
  af.setAltBases(Lists.newArrayList("T"));
  af.setRefBases("C");
  af.setRefFreq(0.25);
  Assert.assertThat(getAlleleFreq.processBundle(vBuild.build()),
      CoreMatchers.hasItems(KV.of(pos, af)));
}
 
源代码9 项目: jackson-datatype-protobuf   文件: StructTest.java
@Test
public void itReadsAllStructValueTypes() throws IOException {
  String json = "{\"struct\":{\"null\":null,\"number\":1.5,\"string\":\"test\",\"boolean\":true,\"struct\":{\"key\":\"nested\"},\"list\":[\"nested\"]}}";
  HasStruct message = camelCase().readValue(json, HasStruct.class);
  assertThat(message.hasStruct()).isTrue();

  Map<String, Value> map = message.getStruct().getFieldsMap();
  Value nested = Value.newBuilder().setStringValue("nested").build();
  Struct nestedStruct = Struct.newBuilder().putFields("key", nested).build();
  ListValue list = ListValue.newBuilder().addValues(nested).build();

  assertThat(map.size()).isEqualTo(6);
  assertThat(map.get("null")).isEqualTo(Value.newBuilder().setNullValue(NullValue.NULL_VALUE).build());
  assertThat(map.get("number")).isEqualTo(Value.newBuilder().setNumberValue(1.5).build());
  assertThat(map.get("string")).isEqualTo(Value.newBuilder().setStringValue("test").build());
  assertThat(map.get("boolean")).isEqualTo(Value.newBuilder().setBoolValue(true).build());
  assertThat(map.get("struct")).isEqualTo(Value.newBuilder().setStructValue(nestedStruct).build());
  assertThat(map.get("list")).isEqualTo(Value.newBuilder().setListValue(list).build());
}
 
源代码10 项目: jackson-datatype-protobuf   文件: ValueTest.java
@Test
public void itWritesMixedListValue() throws IOException {
  Value nestedValue = Value.newBuilder().setStringValue("nested").build();
  Struct struct = Struct.newBuilder().putFields("key", nestedValue).build();
  ListValue nestedList = ListValue.newBuilder().addValues(nestedValue).build();
  ListValue list = ListValue
          .newBuilder()
          .addValues(Value.newBuilder().setNullValue(NullValue.NULL_VALUE).build())
          .addValues(Value.newBuilder().setNumberValue(1.5d).build())
          .addValues(Value.newBuilder().setStringValue("test").build())
          .addValues(Value.newBuilder().setBoolValue(true).build())
          .addValues(Value.newBuilder().setStructValue(struct).build())
          .addValues(Value.newBuilder().setListValue(nestedList).build())
          .build();
  HasValue message = HasValue
          .newBuilder()
          .setValue(Value.newBuilder().setListValue(list).build())
          .build();
  String json = camelCase().writeValueAsString(message);
  assertThat(json).isEqualTo("{\"value\":[null,1.5,\"test\",true,{\"key\":\"nested\"},[\"nested\"]]}");
}
 
源代码11 项目: jackson-datatype-protobuf   文件: ValueTest.java
@Test
public void itReadsListValue() throws IOException {
  String json = "{\"value\":[\"test\"]}";
  HasValue valueWrapper = camelCase().readValue(json, HasValue.class);
  assertThat(valueWrapper.hasValue()).isTrue();

  Value value = valueWrapper.getValue();
  ListValue list = ListValue.newBuilder().addValues(Value.newBuilder().setStringValue("test").build()).build();
  switch (value.getKindCase()) {
    case LIST_VALUE:
      assertThat(value.getListValue()).isEqualTo(list);
      break;
    default:
      fail("Unexpected value kind: " + value.getKindCase());
  }
}
 
源代码12 项目: jackson-datatype-protobuf   文件: ValueTest.java
@Test
public void itReadsMixedStruct() throws IOException {
  String json = "{\"value\":{\"null\":null,\"number\":1.5,\"string\":\"test\",\"boolean\":true,\"struct\":{\"key\":\"nested\"},\"list\":[\"nested\"]}}";
  HasValue message = camelCase().readValue(json, HasValue.class);
  assertThat(message.hasValue()).isTrue();
  Value value = message.getValue();
  switch (value.getKindCase()) {
    case STRUCT_VALUE:
      Map<String, Value> map = value.getStructValue().getFieldsMap();
      Value nested = Value.newBuilder().setStringValue("nested").build();
      Struct nestedStruct = Struct.newBuilder().putFields("key", nested).build();
      ListValue list = ListValue.newBuilder().addValues(nested).build();
      assertThat(map.size()).isEqualTo(6);
      assertThat(map.get("null")).isEqualTo(Value.newBuilder().setNullValue(NullValue.NULL_VALUE).build());
      assertThat(map.get("number")).isEqualTo(Value.newBuilder().setNumberValue(1.5).build());
      assertThat(map.get("string")).isEqualTo(Value.newBuilder().setStringValue("test").build());
      assertThat(map.get("boolean")).isEqualTo(Value.newBuilder().setBoolValue(true).build());
      assertThat(map.get("struct")).isEqualTo(Value.newBuilder().setStructValue(nestedStruct).build());
      assertThat(map.get("list")).isEqualTo(Value.newBuilder().setListValue(list).build());
      break;
    default:
      fail("Unexpected value kind: " + value.getKindCase());
  }
}
 
源代码13 项目: jackson-datatype-protobuf   文件: ValueTest.java
@Test
public void itReadsMixedListValue() throws IOException {
  String json = "{\"value\":[null,1.5,\"test\",true,{\"key\":\"nested\"},[\"nested\"]]}";
  HasValue message = camelCase().readValue(json, HasValue.class);
  assertThat(message.hasValue()).isTrue();
  Value value = message.getValue();
  switch (value.getKindCase()) {
    case LIST_VALUE:
      ListValue list = value.getListValue();
      Value nested = Value.newBuilder().setStringValue("nested").build();
      Struct struct = Struct.newBuilder().putFields("key", nested).build();
      ListValue nestedList = ListValue.newBuilder().addValues(nested).build();
      assertThat(list.getValuesCount()).isEqualTo(6);
      assertThat(list.getValues(0)).isEqualTo(Value.newBuilder().setNullValue(NullValue.NULL_VALUE).build());
      assertThat(list.getValues(1)).isEqualTo(Value.newBuilder().setNumberValue(1.5).build());
      assertThat(list.getValues(2)).isEqualTo(Value.newBuilder().setStringValue("test").build());
      assertThat(list.getValues(3)).isEqualTo(Value.newBuilder().setBoolValue(true).build());
      assertThat(list.getValues(4)).isEqualTo(Value.newBuilder().setStructValue(struct).build());
      assertThat(list.getValues(5)).isEqualTo(Value.newBuilder().setListValue(nestedList).build());
      break;
    default:
      fail("Unexpected value kind: " + value.getKindCase());
  }
}
 
源代码14 项目: jackson-datatype-protobuf   文件: ListValueTest.java
@Test
public void itReadsNestedListValues() throws IOException {
  String json = "{\"listValue\":[[\"nested\"]]}";
  HasListValue message = camelCase().readValue(json, HasListValue.class);
  assertThat(message.hasListValue()).isTrue();
  assertThat(message.getListValue().getValuesList()).hasSize(1);
  Value value = message.getListValue().getValues(0);
  ListValue list = ListValue.newBuilder().addValues(Value.newBuilder().setStringValue("nested")).build();
  switch (value.getKindCase()) {
    case LIST_VALUE:
      assertThat(value.getListValue()).isEqualToComparingFieldByField(list);
      break;
    default:
      fail("Unexpected value kind: " + value.getKindCase());
  }
}
 
源代码15 项目: jackson-datatype-protobuf   文件: ListValueTest.java
@Test
public void itReadsMixedTypeValues() throws IOException {
  String json = "{\"listValue\":[null,1.5,\"test\",true,{\"key\":\"value\"},[\"nested\"]]}";
  HasListValue message = camelCase().readValue(json, HasListValue.class);
  Struct struct = Struct.newBuilder().putFields("key", Value.newBuilder().setStringValue("value").build()).build();
  ListValue list = ListValue.newBuilder().addValues(Value.newBuilder().setStringValue("nested")).build();
  ListValue expected = ListValue
          .newBuilder()
          .addValues(Value.newBuilder().setNullValue(NullValue.NULL_VALUE).build())
          .addValues(Value.newBuilder().setNumberValue(1.5d).build())
          .addValues(Value.newBuilder().setStringValue("test").build())
          .addValues(Value.newBuilder().setBoolValue(true).build())
          .addValues(Value.newBuilder().setStructValue(struct).build())
          .addValues(Value.newBuilder().setListValue(list).build())
          .build();
  assertThat(message.hasListValue()).isTrue();
  assertThat(message.getListValue()).isEqualTo(expected);
}
 
源代码16 项目: cloud-spanner-r2dbc   文件: ArrayCodec.java
@Override
Value doEncode(A[] value) {
  Builder builder = ListValue.newBuilder();
  for (A val : value) {
    builder.addValues(this.codecs.encode(val));
  }
  return Value.newBuilder().setListValue(builder.build()).build();
}
 
源代码17 项目: cloud-spanner-r2dbc   文件: ValueUtils.java
static Object decodeValue(Type fieldType, com.google.protobuf.Value proto) {
  if (proto.getKindCase() == KindCase.NULL_VALUE) {
    return null;
  }
  switch (fieldType.getCode()) {
    case BOOL:
      checkType(fieldType, proto, KindCase.BOOL_VALUE);
      return parseBoolean(proto);
    case INT64:
      checkType(fieldType, proto, KindCase.STRING_VALUE);
      return parseLong(proto);
    case FLOAT64:
      return valueProtoToFloat64(proto);
    case STRING:
      checkType(fieldType, proto, KindCase.STRING_VALUE);
      return proto.getStringValue();
    case BYTES:
      checkType(fieldType, proto, KindCase.STRING_VALUE);
      return parseBytes(proto);
    case TIMESTAMP:
      checkType(fieldType, proto, KindCase.STRING_VALUE);
      return parseTimestamp(proto);
    case DATE:
      checkType(fieldType, proto, KindCase.STRING_VALUE);
      return parseDate(proto);
    case ARRAY:
      checkType(fieldType, proto, KindCase.LIST_VALUE);
      ListValue listValue = proto.getListValue();
      return decodeArrayValue(fieldType.getArrayElementType(), listValue);
    default:
      throw new AssertionError("Unhandled type code: " + fieldType.getCode());
  }
}
 
源代码18 项目: cloud-spanner-r2dbc   文件: ValueUtils.java
private static Object decodeArrayValue(Type elementType, ListValue listValue) {
  switch (elementType.getCode()) {
    case BOOL:
      return listValue.getValuesList().stream()
          .map(ValueUtils::parseBoolean)
          .toArray(Boolean[]::new);
    case INT64:
      return listValue.getValuesList().stream()
          .map(ValueUtils::parseLong)
          .toArray(Long[]::new);
    case FLOAT64:
      return listValue.getValuesList().stream()
          .map(ValueUtils::valueProtoToFloat64)
          .toArray(Double[]::new);
    case STRING:
      return listValue.getValuesList().stream()
          .map(ValueUtils::parseString)
          .toArray(String[]::new);
    case BYTES:
      return listValue.getValuesList().stream()
          .map(ValueUtils::parseBytes)
          .toArray(ByteBuffer[]::new);
    case TIMESTAMP:
      return listValue.getValuesList().stream()
          .map(ValueUtils::parseTimestamp)
          .toArray(LocalDateTime[]::new);
    case DATE:
      return listValue.getValuesList().stream()
          .map(ValueUtils::parseDate)
          .toArray(LocalDate[]::new);

    default:
      throw new AssertionError("Unhandled type code: " + elementType.getCode());
  }
}
 
private void emitCompleteFirstValue(PartialResultSet partialResultSet, List<SpannerRow> rows) {
  Value val = this.prevIsChunk ? this.incompletePieceKind == KindCase.STRING_VALUE
      ? Value.newBuilder().setStringValue((String) this.incompletePiece)
      .build()
      : Value.newBuilder()
          .setListValue(
              ListValue.newBuilder()
                  .addAllValues((List<Value>) this.incompletePiece))
          .build()
      : partialResultSet.getValues(0);
  appendToRow(val, rows);
  this.prevIsChunk = false;
}
 
/**
 * Used to merge List-column value chunks. From Client lib.
 */
private void concatLists(List<com.google.protobuf.Value> a, List<com.google.protobuf.Value> b) {
  if (a.size() == 0 || b.size() == 0) {
    a.addAll(b);
  } else {
    com.google.protobuf.Value last = a.get(a.size() - 1);
    com.google.protobuf.Value first = b.get(0);
    KindCase lastKind = last.getKindCase();
    KindCase firstKind = first.getKindCase();
    if (isMergeable(lastKind) && lastKind == firstKind) {
      com.google.protobuf.Value merged = null;
      if (lastKind == KindCase.STRING_VALUE) {
        String lastStr = last.getStringValue();
        String firstStr = first.getStringValue();
        merged =
            com.google.protobuf.Value.newBuilder().setStringValue(lastStr + firstStr).build();
      } else { // List
        List<Value> mergedList = new ArrayList<>(last.getListValue().getValuesList());
        concatLists(mergedList, first.getListValue().getValuesList());
        merged =
            com.google.protobuf.Value.newBuilder()
                .setListValue(ListValue.newBuilder().addAllValues(mergedList))
                .build();
      }
      a.set(a.size() - 1, merged);
      a.addAll(b.subList(1, b.size()));
    } else {
      a.addAll(b);
    }
  }
}
 
源代码21 项目: rejoiner   文件: GraphQlStreamObserver.java
@Override
public void onNext(T value) {
  List<Value> path =
      dataFetchingEnvironment
          .getExecutionStepInfo()
          .getPath()
          .toList()
          .stream()
          .map(
              p ->
                  p instanceof Number
                      ? Value.newBuilder()
                          .setNumberValue(Double.parseDouble(p.toString()))
                          .build()
                      : Value.newBuilder().setStringValue(p.toString()).build())
          .collect(ImmutableList.toImmutableList());

  ListValue pathListVale =
      ListValue.newBuilder()
          .addAllValues(path)
          .addValues(Value.newBuilder().setNumberValue(pathIndex.incrementAndGet()))
          .build();

  R graphQlResponse = getData(value, pathListVale);

  rejoinerStreamingContext.responseStreamObserver().onNext(graphQlResponse);

  try {
    System.out.println(
        "Streaming response as Json: " + JsonFormat.printer().print(graphQlResponse));
  } catch (InvalidProtocolBufferException e) {
    throw new RuntimeException(e);
  }
}
 
源代码22 项目: rejoiner   文件: StructUtil.java
private static ImmutableList<Object> toList(ListValue listValue) {
  return listValue
      .getValuesList()
      .stream()
      .map(
          value ->
              Value.KindCase.STRUCT_VALUE.equals(value.getKindCase())
                  ? toMap(value.getStructValue())
                  : getScalarValue(value))
      .collect(ImmutableList.toImmutableList());
}
 
源代码23 项目: curiostack   文件: WellKnownTypeMarshaller.java
@Override
public void doMerge(JsonParser parser, int currentDepth, Message.Builder messageBuilder)
    throws IOException {
  JsonToken token = parser.currentToken();
  if (token != JsonToken.START_ARRAY) {
    throw new InvalidProtocolBufferException("Expect an array but found: " + parser.getText());
  }
  ListValue.Builder builder = (ListValue.Builder) messageBuilder;
  while (parser.nextValue() != JsonToken.END_ARRAY) {
    Value.Builder valueBuilder = builder.addValuesBuilder();
    ValueMarshaller.INSTANCE.mergeValue(parser, currentDepth + 1, valueBuilder);
  }
}
 
源代码24 项目: curiostack   文件: WellKnownTypeMarshaller.java
@Override
public void doWrite(ListValue message, JsonGenerator gen) throws IOException {
  List<Value> values = message.getValuesList();
  int numElements = values.size();
  gen.writeStartArray(numElements);
  for (int i = 0; i < numElements; i++) {
    ValueMarshaller.INSTANCE.writeValue(values.get(i), gen);
  }
  gen.writeEndArray();
}
 
源代码25 项目: curiostack   文件: MessageMarshallerTest.java
@Test
public void struct() throws Exception {
  // Build a struct with all possible values.
  TestStruct.Builder builder = TestStruct.newBuilder();
  Struct.Builder structBuilder = builder.getStructValueBuilder();
  structBuilder.putFields("null_value", Value.newBuilder().setNullValueValue(0).build());
  structBuilder.putFields("number_value", Value.newBuilder().setNumberValue(1.25).build());
  structBuilder.putFields("string_value", Value.newBuilder().setStringValue("hello").build());
  Struct.Builder subStructBuilder = Struct.newBuilder();
  subStructBuilder.putFields("number_value", Value.newBuilder().setNumberValue(1234).build());
  structBuilder.putFields(
      "struct_value", Value.newBuilder().setStructValue(subStructBuilder.build()).build());
  ListValue.Builder listBuilder = ListValue.newBuilder();
  listBuilder.addValues(Value.newBuilder().setNumberValue(1.125).build());
  listBuilder.addValues(Value.newBuilder().setNullValueValue(0).build());
  structBuilder.putFields(
      "list_value", Value.newBuilder().setListValue(listBuilder.build()).build());
  TestStruct message = builder.build();
  assertMatchesUpstream(message);

  builder = TestStruct.newBuilder();
  builder.setValue(Value.newBuilder().setNullValueValue(0).build());
  message = builder.build();
  assertMatchesUpstream(message);

  builder = TestStruct.newBuilder();
  listBuilder = builder.getListValueBuilder();
  listBuilder.addValues(Value.newBuilder().setNumberValue(31831.125).build());
  listBuilder.addValues(Value.newBuilder().setNullValueValue(0).build());
  message = builder.build();
  assertMatchesUpstream(message);
}
 
源代码26 项目: api-compiler   文件: TypesBuilderFromDescriptor.java
/**
 * Creates additional types (Value, Struct and ListValue) to be added to the Service config.
 * TODO (guptasu): Fix this hack. Find a better way to add the predefined types.
 * TODO (guptasu): Add them only when required and not in all cases.
 */

static Iterable<Type> createAdditionalServiceTypes() {
  Map<String, DescriptorProto> additionalMessages = Maps.newHashMap();
  additionalMessages.put(Struct.getDescriptor().getFullName(),
      Struct.getDescriptor().toProto());
  additionalMessages.put(Value.getDescriptor().getFullName(),
      Value.getDescriptor().toProto());
  additionalMessages.put(ListValue.getDescriptor().getFullName(),
      ListValue.getDescriptor().toProto());
  additionalMessages.put(Empty.getDescriptor().getFullName(),
      Empty.getDescriptor().toProto());
  additionalMessages.put(Int32Value.getDescriptor().getFullName(),
      Int32Value.getDescriptor().toProto());
  additionalMessages.put(DoubleValue.getDescriptor().getFullName(),
      DoubleValue.getDescriptor().toProto());
  additionalMessages.put(BoolValue.getDescriptor().getFullName(),
      BoolValue.getDescriptor().toProto());
  additionalMessages.put(StringValue.getDescriptor().getFullName(),
      StringValue.getDescriptor().toProto());

  for (Descriptor descriptor : Struct.getDescriptor().getNestedTypes()) {
    additionalMessages.put(descriptor.getFullName(), descriptor.toProto());
  }

  // TODO (guptasu): Remove this hard coding. Without this, creation of Model from Service throws.
  // Needs investigation.
  String fileName = "struct.proto";
  List<Type> additionalTypes = Lists.newArrayList();
  for (String typeName : additionalMessages.keySet()) {
    additionalTypes.add(TypesBuilderFromDescriptor.createType(typeName,
        additionalMessages.get(typeName), fileName));
  }
  return additionalTypes;
}
 
源代码27 项目: genomewarp   文件: VcfToVariant.java
@VisibleForTesting
static Map<String, ListValue> getInfo(VariantContext vc, VCFHeader header) {
  Map<String, ListValue> toReturn = new HashMap<>();

  for (Map.Entry<String, Object> entry : vc.getAttributes().entrySet()) {
    String currKey = entry.getKey();
    VCFInfoHeaderLine metaData = header.getInfoHeaderLine(currKey);

    // All info fields must have a corresponding header field.
    if (metaData == null) {
      logger.log(Level.WARNING, String.format("Could not find matching VCF header field, "
          + "skipping info field %s", currKey));
      continue;
    }

    Object currObject = entry.getValue();
    ListValue.Builder listValueBuilder = ListValue.newBuilder();

    VCFHeaderLineType type = metaData.getType();
    if (!(currObject instanceof List)) {
      toReturn.put(currKey,
          listValueBuilder.addValues(createTypedValue(type, currObject)).build());
      continue;
    }

    List<Object> currObjectList = (List<Object>) currObject;
    for (Object currObj : currObjectList) {
      listValueBuilder.addValues(createTypedValue(type, currObj));
    }
    toReturn.put(currKey, listValueBuilder.build());
  }

  return toReturn;
}
 
源代码28 项目: genomewarp   文件: GenomeWarpTestUtils.java
private static ListValue listFromObject(Object obj) {
  ListValue.Builder lvBuilder = ListValue.newBuilder();
  if (!(obj instanceof List)) {
    lvBuilder.addValues(valueFromObject(obj));
  } else {
    List<Object> objList = (List<Object>) obj;

    for (int i = 0; i < objList.size(); i++) {
      lvBuilder.addValues(valueFromObject(objList.get(i)));
    }
  }

  return lvBuilder.build();
}
 
源代码29 项目: genomewarp   文件: VcfToVariantTest.java
@Test
public void testGetInfo() throws Exception {
  File vcfFile =
      new File(VcfToVariant.class.getClassLoader().getResource(VALID_VCF_4_1).getFile());
  VCFFileReader vcfReader = new VCFFileReader(vcfFile, false);
  VCFHeader vcfHeader = vcfReader.getFileHeader();
  int currVariant = 0;

  for (final VariantContext vc : vcfReader) {
    Map<String, ListValue> info = VcfToVariant.getInfo(vc, vcfHeader);
    assertEquals(info, TRUTH.get(currVariant).getInfo());
    currVariant++;
  }
}
 
源代码30 项目: grpc-java   文件: Bootstrapper.java
/**
 * Converts Java representation of the given JSON value to protobuf's {@link
 * com.google.protobuf.Value} representation.
 *
 * <p>The given {@code rawObject} must be a valid JSON value in Java representation, which is
 * either a {@code Map<String, ?>}, {@code List<?>}, {@code String}, {@code Double},
 * {@code Boolean}, or {@code null}.
 */
private static Value convertToValue(Object rawObject) {
  Value.Builder valueBuilder = Value.newBuilder();
  if (rawObject == null) {
    valueBuilder.setNullValue(NullValue.NULL_VALUE);
  } else if (rawObject instanceof Double) {
    valueBuilder.setNumberValue((Double) rawObject);
  } else if (rawObject instanceof String) {
    valueBuilder.setStringValue((String) rawObject);
  } else if (rawObject instanceof Boolean) {
    valueBuilder.setBoolValue((Boolean) rawObject);
  } else if (rawObject instanceof Map) {
    Struct.Builder structBuilder = Struct.newBuilder();
    @SuppressWarnings("unchecked")
    Map<String, ?> map = (Map<String, ?>) rawObject;
    for (Map.Entry<String, ?> entry : map.entrySet()) {
      structBuilder.putFields(entry.getKey(), convertToValue(entry.getValue()));
    }
    valueBuilder.setStructValue(structBuilder);
  } else if (rawObject instanceof List) {
    ListValue.Builder listBuilder = ListValue.newBuilder();
    List<?> list = (List<?>) rawObject;
    for (Object obj : list) {
      listBuilder.addValues(convertToValue(obj));
    }
    valueBuilder.setListValue(listBuilder);
  }
  return valueBuilder.build();
}
 
 类所在包
 同包方法