java类com.google.protobuf.DescriptorProtos.DescriptorProto的实例源码

PrintMessageFile.java 文件源码 项目:saluki 阅读 70 收藏 0 点赞 0 评论 0
private String getMessageJavaType(String packageName, DescriptorProto sourceMessageDesc,
    FieldDescriptorProto field) {
  String fieldType = CommonUtils.findNotIncludePackageType(field.getTypeName());
  Map<String, Pair<DescriptorProto, List<FieldDescriptorProto>>> nestedFieldType =
      transform(sourceMessageDesc);
  // isMap
  if (nestedFieldType.containsKey(fieldType)) {
    Pair<DescriptorProto, List<FieldDescriptorProto>> nestedFieldPair =
        nestedFieldType.get(fieldType);
    if (nestedFieldPair.getRight().size() == 2) {
      DescriptorProto mapSourceMessageDesc = nestedFieldPair.getLeft();
      List<FieldDescriptorProto> mapFieldList = nestedFieldPair.getRight();
      String nestedJavaType =
          "java.util.Map<" + findJavaType(packageName, mapSourceMessageDesc, mapFieldList.get(0))
              + "," + findJavaType(packageName, mapSourceMessageDesc, mapFieldList.get(1)) + ">";
      return nestedJavaType;
    } else {
      return null;
    }
  } else {
    return CommonUtils.findPojoTypeFromCache(field.getTypeName(), pojoTypeCache);
  }
}
CommonProto2Java.java 文件源码 项目:saluki 阅读 41 收藏 0 点赞 0 评论 0
private void printMessage(List<DescriptorProto> messageDescList, String javaPackage,
    String outerClassName) {
  for (DescriptorProto messageDesc : messageDescList) {
    String pojoClassType = messageDesc.getName();
    String pojoPackageName = javaPackage + "." + outerClassName;
    String fullpojoType = pojoPackageName.toLowerCase() + "." + pojoClassType;
    pojoTypes.put(pojoClassType, fullpojoType);
    PrintMessageFile messageFile =
        new PrintMessageFile(generatePath, pojoPackageName, pojoClassType);
    try {
      messageFile.setMessageFields(messageDesc.getFieldList());
      messageFile.setPojoTypeCache(pojoTypes);
      messageFile.setSourceMessageDesc(messageDesc);
    } finally {
      messageFile.print();
    }
  }
}
Descriptors.java 文件源码 项目:play-store-api 阅读 39 收藏 0 点赞 0 评论 0
Descriptor(final String fullname) throws DescriptorValidationException {
  String name = fullname;
  String packageName = "";
  int pos = fullname.lastIndexOf('.');
  if (pos != -1) {
    name = fullname.substring(pos + 1);
    packageName = fullname.substring(0, pos);
  }
  this.index = 0;
  this.proto = DescriptorProto.newBuilder().setName(name).addExtensionRange(
      DescriptorProto.ExtensionRange.newBuilder().setStart(1)
      .setEnd(536870912).build()).build();
  this.fullName = fullname;
  this.containingType = null;

  this.nestedTypes = new Descriptor[0];
  this.enumTypes = new EnumDescriptor[0];
  this.fields = new FieldDescriptor[0];
  this.extensions = new FieldDescriptor[0];
  this.oneofs = new OneofDescriptor[0];

  // Create a placeholder FileDescriptor to hold this message.
  this.file = new FileDescriptor(packageName, this);
}
Descriptors.java 文件源码 项目:play-store-api 阅读 35 收藏 0 点赞 0 评论 0
/** See {@link FileDescriptor#setProto}. */
private void setProto(final DescriptorProto proto) {
  this.proto = proto;

  for (int i = 0; i < nestedTypes.length; i++) {
    nestedTypes[i].setProto(proto.getNestedType(i));
  }

  for (int i = 0; i < oneofs.length; i++) {
    oneofs[i].setProto(proto.getOneofDecl(i));
  }

  for (int i = 0; i < enumTypes.length; i++) {
    enumTypes[i].setProto(proto.getEnumType(i));
  }

  for (int i = 0; i < fields.length; i++) {
    fields[i].setProto(proto.getField(i));
  }

  for (int i = 0; i < extensions.length; i++) {
    extensions[i].setProto(proto.getExtension(i));
  }
}
ProtobufDecompiler.java 文件源码 项目:sql-layer 阅读 30 收藏 0 点赞 0 评论 0
public void decompile(FileDescriptorProto fileDescriptor) throws IOException {
    if (fileDescriptor.hasPackage()) {
        indentedFormat("package %s;", fileDescriptor.getPackage());
        absolutePackage = "." + fileDescriptor.getPackage() + ".";
    }
    for (String dependency : fileDescriptor.getDependencyList()) {
        indentedFormat("import \"%s\";", dependency);
    }
    if (fileDescriptor.hasOptions()) {
        decompileOptions(fileDescriptor.getOptions());
    }
    decompileMembers(fileDescriptor.getEnumTypeList(),
                     fileDescriptor.getMessageTypeList(),
                     Collections.<FieldDescriptorProto>emptyList(),
                     Collections.<DescriptorProto.ExtensionRange>emptyList(),
                     fileDescriptor.getExtensionList());
    for (ServiceDescriptorProto serviceDescriptor : fileDescriptor.getServiceList()) {
        decompile(serviceDescriptor);
    }
    newline();
    flush();
}
DescriptorsTest.java 文件源码 项目:vsminecraft 阅读 45 收藏 0 点赞 0 评论 0
public void testPackedEnumField() throws Exception {
  FileDescriptorProto fileDescriptorProto = FileDescriptorProto.newBuilder()
      .setName("foo.proto")
      .addEnumType(EnumDescriptorProto.newBuilder()
        .setName("Enum")
        .addValue(EnumValueDescriptorProto.newBuilder()
          .setName("FOO")
          .setNumber(1)
          .build())
        .build())
      .addMessageType(DescriptorProto.newBuilder()
        .setName("Message")
        .addField(FieldDescriptorProto.newBuilder()
          .setName("foo")
          .setTypeName("Enum")
          .setNumber(1)
          .setLabel(FieldDescriptorProto.Label.LABEL_REPEATED)
          .setOptions(DescriptorProtos.FieldOptions.newBuilder()
            .setPacked(true)
            .build())
          .build())
        .build())
      .build();
  Descriptors.FileDescriptor.buildFrom(
      fileDescriptorProto, new FileDescriptor[0]);
}
GrpcDocStringExtractor.java 文件源码 项目:armeria 阅读 44 收藏 0 点赞 0 评论 0
private static Optional<String> getFullName(FileDescriptorProto descriptor, List<Integer> path) {
    String fullNameSoFar = descriptor.getPackage();
    switch (path.get(0)) {
        case FileDescriptorProto.MESSAGE_TYPE_FIELD_NUMBER:
            DescriptorProto message = descriptor.getMessageType(path.get(1));
            return appendMessageToFullName(message, path, fullNameSoFar);
        case FileDescriptorProto.ENUM_TYPE_FIELD_NUMBER:
            EnumDescriptorProto enumDescriptor = descriptor.getEnumType(path.get(1));
            return Optional.of(appendEnumToFullName(enumDescriptor, path, fullNameSoFar));
        case FileDescriptorProto.SERVICE_FIELD_NUMBER:
            ServiceDescriptorProto serviceDescriptor = descriptor.getService(path.get(1));
            fullNameSoFar = appendNameComponent(fullNameSoFar, serviceDescriptor.getName());
            if (path.size() > 2) {
                fullNameSoFar = appendFieldComponent(
                        fullNameSoFar, serviceDescriptor.getMethod(path.get(3)).getName());
            }
            return Optional.of(fullNameSoFar);
        default:
            return Optional.empty();
    }
}
GrpcDocStringExtractor.java 文件源码 项目:armeria 阅读 29 收藏 0 点赞 0 评论 0
private static Optional<String> appendToFullName(
        DescriptorProto messageDescriptor, List<Integer> path, String fullNameSoFar) {
    switch (path.get(0)) {
        case DescriptorProto.NESTED_TYPE_FIELD_NUMBER:
            DescriptorProto nestedMessage = messageDescriptor.getNestedType(path.get(1));
            return appendMessageToFullName(nestedMessage, path, fullNameSoFar);
        case DescriptorProto.ENUM_TYPE_FIELD_NUMBER:
            EnumDescriptorProto enumDescriptor = messageDescriptor.getEnumType(path.get(1));
            return Optional.of(appendEnumToFullName(enumDescriptor, path, fullNameSoFar));
        case DescriptorProto.FIELD_FIELD_NUMBER:
            FieldDescriptorProto fieldDescriptor = messageDescriptor.getField(path.get(1));
            return Optional.of(appendFieldComponent(fullNameSoFar, fieldDescriptor.getName()));
        default:
            return Optional.empty();
    }
}
Descriptors.java 文件源码 项目:Beam 阅读 42 收藏 0 点赞 0 评论 0
Descriptor (final String fullname) throws DescriptorValidationException {
    String name = fullname;
    String packageName = "";
    int pos = fullname.lastIndexOf ('.');
    if (pos != -1) {
        name = fullname.substring (pos + 1);
        packageName = fullname.substring (0, pos);
    }
    this.index = 0;
    this.proto = DescriptorProto.newBuilder ().setName (name).addExtensionRange (
            DescriptorProto.ExtensionRange.newBuilder ().setStart (1)
            .setEnd (536870912).build ()).build ();
    this.fullName = fullname;
    this.containingType = null;

    this.nestedTypes = new Descriptor[0];
    this.enumTypes = new EnumDescriptor[0];
    this.fields = new FieldDescriptor[0];
    this.extensions = new FieldDescriptor[0];
    this.oneofs = new OneofDescriptor[0];

    // Create a placeholder FileDescriptor to hold this message.
    this.file = new FileDescriptor (packageName, this);
}
Descriptors.java 文件源码 项目:Beam 阅读 45 收藏 0 点赞 0 评论 0
/**
 * See {@link FileDescriptor#setProto}.
 */
private void setProto (final DescriptorProto proto) {
    this.proto = proto;

    for (int i = 0; i < nestedTypes.length; i++) {
        nestedTypes[i].setProto (proto.getNestedType (i));
    }

    for (int i = 0; i < enumTypes.length; i++) {
        enumTypes[i].setProto (proto.getEnumType (i));
    }

    for (int i = 0; i < fields.length; i++) {
        fields[i].setProto (proto.getField (i));
    }

    for (int i = 0; i < extensions.length; i++) {
        extensions[i].setProto (proto.getExtension (i));
    }
}
FileDescriptors.java 文件源码 项目:protobuf-el 阅读 38 收藏 0 点赞 0 评论 0
private FileDescriptorProto makeCanonicalProto(final FileDescriptor fileDescriptor) {
  final FileDescriptorProto.Builder protoBuilder =
      FileDescriptorProto.newBuilder(fileDescriptor.toProto());

  for (final FieldDescriptorProto.Builder field : protoBuilder.getExtensionBuilderList()) {
    makeCanonicalField(field, fileDescriptor.findExtensionByName(field.getName()));
  }

  for (final DescriptorProto.Builder message : protoBuilder.getMessageTypeBuilderList()) {
    makeCanonicalMessage(message, fileDescriptor.findMessageTypeByName(message.getName()));
  }

  // for (EnumDescriptorProto.Builder enumProto :
  // protoBuilder.getEnumTypeBuilderList()) {
  // makeCanonicalEnum(enumProto,
  // fileDescriptor.findEnumTypeByName(enumProto.getName()));
  // }

  for (final ServiceDescriptorProto.Builder serviceProto : protoBuilder.getServiceBuilderList()) {
    makeCanonicalService(serviceProto, fileDescriptor.findServiceByName(serviceProto.getName()));
  }

  // TODO: incorporate options' tree walking into canonicalization to eliminate double walking
  return OptionResolver.newBuilder().setCustomOptionsAsExtensions(false)
      .resolveAllOptionsFor(fileDescriptor, protoBuilder).build();
}
OptionResolver.java 文件源码 项目:protobuf-el 阅读 35 收藏 0 点赞 0 评论 0
private void buildAllOptions(final FileDescriptorProto.Builder proto) {
  if (!buildOptions(proto.getOptionsBuilder())) {
    proto.clearOptions();
  }

  for (final FieldDescriptorProto.Builder extensionProto : proto.getExtensionBuilderList()) {
    if (!buildOptions(extensionProto.getOptionsBuilder())) {
      extensionProto.clearOptions();
    }
  }

  for (final EnumDescriptorProto.Builder enumProto : proto.getEnumTypeBuilderList()) {
    buildAllOptions(enumProto);
  }

  for (final ServiceDescriptorProto.Builder serviceProto : proto.getServiceBuilderList()) {
    buildAllOptions(serviceProto);
  }

  for (final DescriptorProto.Builder messageProto : proto.getMessageTypeBuilderList()) {
    buildAllOptions(messageProto);
  }
}
OptionResolver.java 文件源码 项目:protobuf-el 阅读 36 收藏 0 点赞 0 评论 0
private void buildAllOptions(final DescriptorProto.Builder proto) {
  if (!buildOptions(proto.getOptionsBuilder())) {
    proto.clearOptions();
  }

  for (final FieldDescriptorProto.Builder fieldProto : proto.getFieldBuilderList()) {
    if (!buildOptions(fieldProto.getOptionsBuilder())) {
      fieldProto.clearOptions();
    }
  }

  for (final FieldDescriptorProto.Builder extensionProto : proto.getExtensionBuilderList()) {
    if (!buildOptions(extensionProto.getOptionsBuilder())) {
      extensionProto.clearOptions();
    }
  }

  for (final EnumDescriptorProto.Builder enumProto : proto.getEnumTypeBuilderList()) {
    buildAllOptions(enumProto);
  }

  for (final DescriptorProto.Builder messageProto : proto.getNestedTypeBuilderList()) {
    buildAllOptions(messageProto);
  }
}
FileDescriptorEx.java 文件源码 项目:protobuf-el 阅读 30 收藏 0 点赞 0 评论 0
private FileDescriptorProto makeCanonicalProto(final FileDescriptor file) {
  final FileDescriptorProto.Builder protoBuilder = FileDescriptorProto.newBuilder(file.toProto());

  for (final FieldDescriptorProto.Builder field : protoBuilder.getExtensionBuilderList()) {
    makeCanonicalField(field, file.findExtensionByName(field.getName()));
  }

  for (final DescriptorProto.Builder message : protoBuilder.getMessageTypeBuilderList()) {
    makeCanonicalMessage(message, file.findMessageTypeByName(message.getName()));
  }

  // for (EnumDescriptorProto.Builder enumProto :
  // protoBuilder.getEnumTypeBuilderList()) {
  // makeCanonicalEnum(enumProto,
  // file.findEnumTypeByName(enumProto.getName()));
  // }

  for (final ServiceDescriptorProto.Builder serviceProto : protoBuilder.getServiceBuilderList()) {
    makeCanonicalService(serviceProto, file.findServiceByName(serviceProto.getName()));
  }

  return OptionResolver.newBuilder().setCustomOptionsAsExtensions(reparseCustomOptions)
      .resolveAllOptionsFor(file, protoBuilder).build();
}
Misc.java 文件源码 项目:protobuf-el 阅读 41 收藏 0 点赞 0 评论 0
@SuppressWarnings("null")
public static FileDescriptorProto.Builder makeProtoRefsRelative(final FileDescriptorProto proto,
    final FieldTypeRefsMode fieldTypeRefsMode) {
  if (fieldTypeRefsMode == FieldTypeRefsMode.AS_IS) {
    return FileDescriptorProto.newBuilder(proto);
  }

  final FileDescriptorProto.Builder protoBuilder = FileDescriptorProto.newBuilder(proto);
  final String packagePath = "." + proto.getPackage();

  for (final FieldDescriptorProto.Builder field : protoBuilder.getExtensionBuilderList()) {
    makeFieldRefsRelative(packagePath, field, fieldTypeRefsMode, packagePath);
  }

  for (final DescriptorProto.Builder message : protoBuilder.getMessageTypeBuilderList()) {
    makeMessageRefsRelative(packagePath, message, fieldTypeRefsMode, packagePath);
  }

  return protoBuilder;
}
DescriptorFactoryTest.java 文件源码 项目:protobuf-el 阅读 33 收藏 0 点赞 0 评论 0
@Test
public void testTextFormatWithDescriptor() throws Exception {
  //TestUtil.getAllSet();
  String allSet = TextFormat.printToString(TestUtil.getAllSet());
  final DescriptorProto expectedAllSetProto = TestAllTypes.getDescriptor().toProto();
  String allSetProto = TextFormat.printToString(expectedAllSetProto);
  log.debug("the message: {}", allSet);
  log.debug("the proto: {}", allSetProto);

  DynamicMessage.Builder builder = DynamicMessage.newBuilder(DescriptorProto.getDescriptor());
  TextFormat.merge(allSetProto, builder);
  Message actualAllSetProto = builder.build();

  assertThat(actualAllSetProto).isEqualTo(expectedAllSetProto);

  FieldDescriptor field = FileDescriptorProto.getDescriptor()
      .findFieldByNumber(FileDescriptorProto.MESSAGE_TYPE_FIELD_NUMBER);
  FileDescriptorProto fileProto = FileDescriptorProto.newBuilder().setName("my file1")
      .addRepeatedField(field, actualAllSetProto)
      .build();
  FileDescriptor fileDescriptor = FileDescriptor.buildFrom(fileProto, new FileDescriptor[0]);
  Descriptor actualAllTypesDescriptor = fileDescriptor.findMessageTypeByName(
      TestAllTypes.getDescriptor().getFullName());

  assertThat(actualAllTypesDescriptor, equalTo(TestAllTypes.getDescriptor()));
}
DescriptorFactoryTest.java 文件源码 项目:protobuf-el 阅读 44 收藏 0 点赞 0 评论 0
private FileDescriptorProto.Builder addDeepMessageTypeToFile(
    FileDescriptorProto.Builder builder, Message descriptorProto) {
  //TODO delete this method!!!
  final FieldDescriptor field = FileDescriptorProto.getDescriptor()
      .findFieldByNumber(FileDescriptorProto.MESSAGE_TYPE_FIELD_NUMBER);
  final FieldDescriptor nestedTypeField = DescriptorProto.getDescriptor().findFieldByNumber(
      DescriptorProto.NESTED_TYPE_FIELD_NUMBER);
  builder.addRepeatedField(field, descriptorProto);

  for (Message nestedMessageType : (List<Message>) descriptorProto.getField(nestedTypeField)) {
    // builder.addRepeatedField(field, nestedMessageType);
    addDeepMessageTypeToFile(builder, nestedMessageType);
  }

  return builder;
}
DescriptorFactoryTest.java 文件源码 项目:protobuf-el 阅读 38 收藏 0 点赞 0 评论 0
private FileDescriptorProto.Builder addDeepMessageTypeToFile(
    FileDescriptorProto.Builder builder, Message descriptorProto) {
  //TODO delete this method!!!
  final FieldDescriptor field = FileDescriptorProto.getDescriptor()
      .findFieldByNumber(FileDescriptorProto.MESSAGE_TYPE_FIELD_NUMBER);
  final FieldDescriptor nestedTypeField = DescriptorProto.getDescriptor().findFieldByNumber(
      DescriptorProto.NESTED_TYPE_FIELD_NUMBER);
  builder.addRepeatedField(field, descriptorProto);

  for (Message nestedMessageType : (List<Message>) descriptorProto.getField(nestedTypeField)) {
    // builder.addRepeatedField(field, nestedMessageType);
    addDeepMessageTypeToFile(builder, nestedMessageType);
  }

  return builder;
}
JavaQualifiedNames.java 文件源码 项目:closure-templates 阅读 34 收藏 0 点赞 0 评论 0
/** Used by the other overload, descends recursively into messages. */
private static boolean hasConflictingClassName(DescriptorProto messageDesc, String name) {
  if (name.equals(messageDesc.getName())) {
    return true;
  }
  for (EnumDescriptorProto enumDesc : messageDesc.getEnumTypeList()) {
    if (name.equals(enumDesc.getName())) {
      return true;
    }
  }
  for (DescriptorProto nestedMessageDesc : messageDesc.getNestedTypeList()) {
    if (hasConflictingClassName(nestedMessageDesc, name)) {
      return true;
    }
  }
  return false;
}
JavaQualifiedNames.java 文件源码 项目:closure-templates 阅读 35 收藏 0 点赞 0 评论 0
/** Checks whether any generated classes conflict with the given name. */
private static boolean hasConflictingClassName(FileDescriptorProto file, String name) {
  for (EnumDescriptorProto enumDesc : file.getEnumTypeList()) {
    if (name.equals(enumDesc.getName())) {
      return true;
    }
  }
  for (ServiceDescriptorProto serviceDesc : file.getServiceList()) {
    if (name.equals(serviceDesc.getName())) {
      return true;
    }
  }
  for (DescriptorProto messageDesc : file.getMessageTypeList()) {
    if (hasConflictingClassName(messageDesc, name)) {
      return true;
    }
  }
  return false;
}
DescriptorsTest.java 文件源码 项目:bazel 阅读 43 收藏 0 点赞 0 评论 0
public void testUnknownFieldsDenied() throws Exception {
  FileDescriptorProto fooProto = FileDescriptorProto.newBuilder()
      .setName("foo.proto")
      .addMessageType(DescriptorProto.newBuilder()
          .setName("Foo")
          .addField(FieldDescriptorProto.newBuilder()
              .setLabel(FieldDescriptorProto.Label.LABEL_OPTIONAL)
              .setTypeName("Bar")
              .setName("bar")
              .setNumber(1)))
      .build();

  try {
    Descriptors.FileDescriptor.buildFrom(fooProto, new FileDescriptor[0]);
    fail("DescriptorValidationException expected");
  } catch (DescriptorValidationException e) {
    assertTrue(e.getMessage().indexOf("Bar") != -1);
    assertTrue(e.getMessage().indexOf("is not defined") != -1);
  }
}
DescriptorsTest.java 文件源码 项目:bazel 阅读 42 收藏 0 点赞 0 评论 0
public void testPackedEnumField() throws Exception {
  FileDescriptorProto fileDescriptorProto = FileDescriptorProto.newBuilder()
      .setName("foo.proto")
      .addEnumType(EnumDescriptorProto.newBuilder()
        .setName("Enum")
        .addValue(EnumValueDescriptorProto.newBuilder()
          .setName("FOO")
          .setNumber(1)
          .build())
        .build())
      .addMessageType(DescriptorProto.newBuilder()
        .setName("Message")
        .addField(FieldDescriptorProto.newBuilder()
          .setName("foo")
          .setTypeName("Enum")
          .setNumber(1)
          .setLabel(FieldDescriptorProto.Label.LABEL_REPEATED)
          .setOptions(DescriptorProtos.FieldOptions.newBuilder()
            .setPacked(true)
            .build())
          .build())
        .build())
      .build();
  Descriptors.FileDescriptor.buildFrom(
      fileDescriptorProto, new FileDescriptor[0]);
}
TypeMap.java 文件源码 项目:piezo 阅读 35 收藏 0 点赞 0 评论 0
public static TypeMap of(FileDescriptorProto protoFile) {
  ImmutableMap.Builder<String, JavaType> types = ImmutableMap.builder();
  FileOptions options = protoFile.getOptions();

  String protoPackage = "." + (protoFile.hasPackage() ?
      protoFile.getPackage() : "");
  String javaPackage = options.hasJavaPackage() ?
      options.getJavaPackage() : protoFile.hasPackage() ?
      protoFile.getPackage() : null;
  String enclosingClass = options.getJavaMultipleFiles() ?
      null : options.hasJavaOuterClassname() ?
      options.getJavaOuterClassname() : createOuterJavaClassname(protoFile.getName());

  for (DescriptorProto message : protoFile.getMessageTypeList()) {
    types.put(protoPackage + "." + message.getName(),
        new JavaType(javaPackage, enclosingClass, message.getName()));
  }

  return new TypeMap(types.build());
}
DescriptorsTest.java 文件源码 项目:sstore-soft 阅读 36 收藏 0 点赞 0 评论 0
/**
 * Tests that the DescriptorValidationException works as intended.
 */
public void testDescriptorValidatorException() throws Exception {
  FileDescriptorProto fileDescriptorProto = FileDescriptorProto.newBuilder()
    .setName("foo.proto")
    .addMessageType(DescriptorProto.newBuilder()
    .setName("Foo")
      .addField(FieldDescriptorProto.newBuilder()
        .setLabel(FieldDescriptorProto.Label.LABEL_OPTIONAL)
        .setType(FieldDescriptorProto.Type.TYPE_INT32)
        .setName("foo")
        .setNumber(1)
        .setDefaultValue("invalid")
        .build())
      .build())
    .build();
  try {
    Descriptors.FileDescriptor.buildFrom(fileDescriptorProto, 
        new FileDescriptor[0]);
    fail("DescriptorValidationException expected");
  } catch (DescriptorValidationException e) {
    // Expected; check that the error message contains some useful hints
    assertTrue(e.getMessage().indexOf("foo") != -1);
    assertTrue(e.getMessage().indexOf("Foo") != -1);
    assertTrue(e.getMessage().indexOf("invalid") != -1);
    assertTrue(e.getCause() instanceof NumberFormatException);
    assertTrue(e.getCause().getMessage().indexOf("invalid") != -1);
  }
}
DescriptorsTest.java 文件源码 项目:s-store 阅读 32 收藏 0 点赞 0 评论 0
/**
 * Tests that the DescriptorValidationException works as intended.
 */
public void testDescriptorValidatorException() throws Exception {
  FileDescriptorProto fileDescriptorProto = FileDescriptorProto.newBuilder()
    .setName("foo.proto")
    .addMessageType(DescriptorProto.newBuilder()
    .setName("Foo")
      .addField(FieldDescriptorProto.newBuilder()
        .setLabel(FieldDescriptorProto.Label.LABEL_OPTIONAL)
        .setType(FieldDescriptorProto.Type.TYPE_INT32)
        .setName("foo")
        .setNumber(1)
        .setDefaultValue("invalid")
        .build())
      .build())
    .build();
  try {
    Descriptors.FileDescriptor.buildFrom(fileDescriptorProto, 
        new FileDescriptor[0]);
    fail("DescriptorValidationException expected");
  } catch (DescriptorValidationException e) {
    // Expected; check that the error message contains some useful hints
    assertTrue(e.getMessage().indexOf("foo") != -1);
    assertTrue(e.getMessage().indexOf("Foo") != -1);
    assertTrue(e.getMessage().indexOf("invalid") != -1);
    assertTrue(e.getCause() instanceof NumberFormatException);
    assertTrue(e.getCause().getMessage().indexOf("invalid") != -1);
  }
}
PrintMessageFile.java 文件源码 项目:saluki 阅读 35 收藏 0 点赞 0 评论 0
private Map<String, Pair<DescriptorProto, List<FieldDescriptorProto>>> transform(
    DescriptorProto sourceMessageDesc) {
  Map<String, Pair<DescriptorProto, List<FieldDescriptorProto>>> nestedFieldMap =
      Maps.newHashMap();
  sourceMessageDesc.getNestedTypeList().forEach(new Consumer<DescriptorProto>() {

    @Override
    public void accept(DescriptorProto t) {
      nestedFieldMap.put(t.getName(),
          new ImmutablePair<DescriptorProto, List<FieldDescriptorProto>>(t, t.getFieldList()));
    }

  });
  return nestedFieldMap;
}
CommonProto2Java.java 文件源码 项目:saluki 阅读 35 收藏 0 点赞 0 评论 0
private void doPrint(FileDescriptorProto fdp, String javaPackage, String outerClassName) {
  List<DescriptorProto> messageDescList = Lists.newArrayList(fdp.getMessageTypeList());
  List<ServiceDescriptorProto> serviceDescList = Lists.newArrayList(fdp.getServiceList());
  List<EnumDescriptorProto> enumDescList = Lists.newArrayList(fdp.getEnumTypeList());
  messageDescList.stream().filter(temp -> temp.getEnumTypeList() != null)
      .forEach(temp -> enumDescList.addAll(temp.getEnumTypeList()));
  printEnum(enumDescList, javaPackage, outerClassName);
  printMessage(messageDescList, javaPackage, outerClassName);
  printService(serviceDescList, javaPackage);
}
CausalOrderProtobufSerializer.java 文件源码 项目:RxBroadcast 阅读 35 收藏 0 点赞 0 评论 0
public CausalOrderProtobufSerializer(@NotNull final Serializer<T> objectSerializer) {
    this.objectSerializer = objectSerializer;
    try {
        final FileDescriptorProto timestampedMessageFile = FileDescriptorProto.newBuilder()
            .addMessageType(
                DescriptorProto.newBuilder()
                    .setName(MESSAGE_NAME)
                    .addField(
                        FieldDescriptorProto.newBuilder()
                            .setLabel(FieldDescriptorProto.Label.LABEL_REPEATED)
                            .setName(IDS_FIELD_NAME)
                            .setNumber(IDS_FIELD_NUMBER)
                            .setType(FieldDescriptorProto.Type.TYPE_BYTES))
                    .addField(
                        FieldDescriptorProto.newBuilder()
                            .setLabel(FieldDescriptorProto.Label.LABEL_REPEATED)
                            .setName(TIMESTAMPS_FIELD_NAME)
                            .setNumber(TIMESTAMPS_FIELD_NUMBER)
                            .setOptions(FieldOptions.newBuilder()
                                .setPacked(true))
                            .setType(FieldDescriptorProto.Type.TYPE_UINT64))
                    .addField(
                        FieldDescriptorProto.newBuilder()
                            .setName(VALUE_FIELD_NAME)
                            .setNumber(VALUE_FIELD_NUMBER)
                            .setType(FieldDescriptorProto.Type.TYPE_BYTES)))
            .build();
        this.messageDescriptor = FileDescriptor
            .buildFrom(timestampedMessageFile, new FileDescriptor[0])
            .findMessageTypeByName(MESSAGE_NAME);
        this.ids = messageDescriptor.findFieldByName(IDS_FIELD_NAME);
        this.timestamps = messageDescriptor.findFieldByName(TIMESTAMPS_FIELD_NAME);
        this.value = messageDescriptor.findFieldByName(VALUE_FIELD_NAME);
        this.messageParser = DynamicMessage.newBuilder(messageDescriptor)
            .buildPartial()
            .getParserForType();
    } catch (final DescriptorValidationException e) {
        throw new RuntimeException(e);
    }
}
SingleSourceFifoOrderProtobufSerializer.java 文件源码 项目:RxBroadcast 阅读 34 收藏 0 点赞 0 评论 0
public SingleSourceFifoOrderProtobufSerializer(@NotNull final Serializer<T> objectSerializer) {
    this.objectSerializer = objectSerializer;
    try {
        final FileDescriptorProto timestampedMessageFile = FileDescriptorProto.newBuilder()
            .addMessageType(
                DescriptorProto.newBuilder()
                    .setName(MESSAGE_NAME)
                    .addField(
                        FieldDescriptorProto.newBuilder()
                            .setName(TIMESTAMP_FIELD_NAME)
                            .setNumber(TIMESTAMP_FIELD_NUMBER)
                            .setType(FieldDescriptorProto.Type.TYPE_INT64))
                    .addField(
                        FieldDescriptorProto.newBuilder()
                            .setName(VALUE_FIELD_NAME)
                            .setNumber(VALUE_FIELD_NUMBER)
                            .setType(FieldDescriptorProto.Type.TYPE_BYTES)))
            .build();
        final Descriptor message = FileDescriptor
            .buildFrom(timestampedMessageFile, new FileDescriptor[0])
            .findMessageTypeByName(MESSAGE_NAME);
        this.timestampedMessageField = message.findFieldByName(TIMESTAMP_FIELD_NAME);
        this.valueMessageField = message.findFieldByName(VALUE_FIELD_NAME);
        this.messageBuilder = DynamicMessage.newBuilder(message);
        this.messageParser = messageBuilder.buildPartial().getParserForType();
    } catch (final DescriptorValidationException e) {
        throw new RuntimeException(e);
    }
}
ExtensionPool.java 文件源码 项目:api-compiler 阅读 45 收藏 0 点赞 0 评论 0
private void add(DescriptorProto message) {
  fullNameSegments.push(message.getName());
  pathSegments.push(DescriptorProto.EXTENSION_FIELD_NUMBER);
  add(message.getExtensionList());
  pathSegments.pop();
  pathSegments.push(DescriptorProto.NESTED_TYPE_FIELD_NUMBER);
  for (int i = 0; i < message.getNestedTypeCount(); i++) {
    pathSegments.push(i);
    DescriptorProto nested = message.getNestedType(i);
    add(nested);
    pathSegments.pop();
  }
  pathSegments.pop();
  fullNameSegments.pop();
}


问题


面经


文章

微信
公众号

扫码关注公众号