Beispiel #1
0
 CodeGeneratorResponse generate(CodeGeneratorRequest request) {
   CodeGeneratorResponse.Builder builder = CodeGeneratorResponse.newBuilder();
   for (FileDescriptorProto file : request.getProtoFileList()) {
     String javaFilename = getJavaFilename(file.getPackage(), file.getName());
     for (DescriptorProto msg : file.getMessageTypeList()) {
       for (EnumDescriptorProto en : msg.getEnumTypeList()) {
         File.Builder f = File.newBuilder();
         f.setName(javaFilename);
         f.setInsertionPoint(
             format("enum_scope:%s.%s.%s", file.getPackage(), msg.getName(), en.getName()));
         f.setContent(getEnumVisitor(en));
         builder.addFile(f);
       }
     }
     // insert visitors at outer_class_scope
   }
   return builder.build();
 }
  /**
   * Returns a Message {@link Descriptor} for a dynamically generated DescriptorProto.
   *
   * @param descProto
   * @throws DescriptorValidationException
   */
  public static Descriptor makeMessageDescriptor(DescriptorProto descProto)
      throws DescriptorValidationException {

    DescriptorProtos.FileDescriptorProto fileDescP =
        DescriptorProtos.FileDescriptorProto.newBuilder().addMessageType(descProto).build();

    Descriptors.FileDescriptor[] fileDescs = new Descriptors.FileDescriptor[0];
    Descriptors.FileDescriptor dynamicDescriptor =
        Descriptors.FileDescriptor.buildFrom(fileDescP, fileDescs);
    return dynamicDescriptor.findMessageTypeByName(descProto.getName());
  }