com.google.protobuf.DescriptorProtos#FileDescriptorSet ( )源码实例Demo

下面列出了com.google.protobuf.DescriptorProtos#FileDescriptorSet ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

源代码1 项目: rejoiner   文件: DescriptorSet.java
/** Returns a map containing the comments for types and fields. */
public static ImmutableMap<String, String> getCommentsFromDescriptorFile(
    InputStream descriptorSetInputStream) {
  try {
    DescriptorProtos.FileDescriptorSet descriptors =
        DescriptorProtos.FileDescriptorSet.parseFrom(descriptorSetInputStream);
    return descriptors.getFileList().stream()
        .flatMap(
            fileDescriptorProto -> parseDescriptorFile(fileDescriptorProto).entrySet().stream())
        .collect(
            ImmutableMap.toImmutableMap(
                Map.Entry::getKey, Map.Entry::getValue, (value1, value2) -> value1));
  } catch (IOException ignored) {
  }
  return ImmutableMap.of();
}
 
源代码2 项目: product-microgateway   文件: ProtobufParser.java
/**
 * Compile the protobuf and generate descriptor file.
 *
 * @param protoPath      protobuf file path
 * @param descriptorPath descriptor file path
 * @return {@link DescriptorProtos.FileDescriptorSet} object
 */
private static DescriptorProtos.FileDescriptorProto generateRootFileDescriptor(String protoPath,
                                                                              String descriptorPath) {
    String command = new ProtocCommandBuilder
            (protoPath, resolveProtoFolderPath(protoPath), descriptorPath).build();
    generateDescriptor(command);
    File initialFile = new File(descriptorPath);
    try (InputStream targetStream = new FileInputStream(initialFile)) {
        ExtensionRegistry extensionRegistry = ExtensionRegistry.newInstance();
        //to register all custom extensions in order to parse properly
        ExtensionHolder.registerAllExtensions(extensionRegistry);
        DescriptorProtos.FileDescriptorSet set = DescriptorProtos.FileDescriptorSet.parseFrom(targetStream,
                extensionRegistry);
        logger.debug("Descriptor file is parsed successfully. file:" , descriptorPath);
        if (set.getFileList().size() > 0) {
            return set.getFile(0);
        }
    } catch (IOException e) {
        throw new CLIInternalException("Error reading generated descriptor file '" + descriptorPath + "'.", e);
    }
    return null;
}
 
源代码3 项目: karate-grpc   文件: ServiceResolver.java
/**
 * Returns a map from descriptor proto name as found inside the descriptors to protos.
 */
private static ImmutableMap<String, DescriptorProtos.FileDescriptorProto> computeDescriptorProtoIndex(
        DescriptorProtos.FileDescriptorSet fileDescriptorSet) {
    ImmutableMap.Builder<String, DescriptorProtos.FileDescriptorProto> resultBuilder = ImmutableMap.builder();

    List<DescriptorProtos.FileDescriptorProto> descriptorProtos = fileDescriptorSet.getFileList();
    descriptorProtos.forEach(descriptorProto -> resultBuilder.put(descriptorProto.getName(), descriptorProto));

    return resultBuilder.build();
}
 
源代码4 项目: grpc-swagger   文件: ServiceRegisterUtils.java
public static List<DescriptorProtos.FileDescriptorSet> registerByIpAndPort(String host, int port) {
    HostAndPort hostAndPort = HostAndPort.fromParts(host, port);
    Channel channel = ManagedChannelBuilder.forAddress(hostAndPort.getHost(), hostAndPort.getPort())
            .usePlaintext()
            .build();

    List<DescriptorProtos.FileDescriptorSet> fileDescriptorSets = GrpcReflectionUtils.resolveServices(channel);
    fileDescriptorSets.forEach(fileDescriptorSet -> {
        ServiceResolver serviceResolver = ServiceResolver.fromFileDescriptorSet(fileDescriptorSet);
        parseDefinition(serviceResolver);
    });
    return fileDescriptorSets;
}
 
源代码5 项目: metastore   文件: ProtoDomain.java
public DescriptorProtos.FileDescriptorSet toFileDescriptorSet() {
  DescriptorProtos.FileDescriptorSet.Builder setBuilder =
      DescriptorProtos.FileDescriptorSet.newBuilder();
  fileDescriptorMap.forEach(
      (name, fd) -> {
        DescriptorProtos.FileDescriptorProto fileDescriptorProto =
            DescriptorProtos.FileDescriptorProto.newBuilder(fd.toProto()).build();
        setBuilder.addFile(fileDescriptorProto);
      });
  return setBuilder.build();
}
 
源代码6 项目: datacollector   文件: ProtobufTypeUtil.java
/**
 * Generates a protobuf descriptor instance from a FileDescriptor set.
 *
 * @param set               set of file descriptors
 * @param fileDescriptorMap map of message types to file descriptors
 * @param descriptorFile    descriptor file for message to be decoded
 * @param qualifiedMessageType       the name of the message to be decoded
 * @return protobuf descriptor instance
 * @throws StageException
 */
public static Descriptors.Descriptor getDescriptor(
    DescriptorProtos.FileDescriptorSet set,
    Map<String, Descriptors.FileDescriptor> fileDescriptorMap,
    String descriptorFile,
    String qualifiedMessageType
) throws StageException {

  // find the FileDescriptorProto which contains the message type
  // IF cannot find, then bail out
  String packageName = null;
  String messageType = qualifiedMessageType;
  int lastIndex = qualifiedMessageType.lastIndexOf('.');
  if (lastIndex != -1) {
    packageName = qualifiedMessageType.substring(0, lastIndex);
    messageType = qualifiedMessageType.substring(lastIndex + 1);
  }
  DescriptorProtos.FileDescriptorProto file = getFileDescProtoForMsgType(packageName, messageType, set);
  if (file == null) {
    // could not find the message type from all the proto files contained in the descriptor file
    throw new StageException(Errors.PROTOBUF_00, qualifiedMessageType, descriptorFile);
  }
  // finally get the FileDescriptor for the message type
  Descriptors.FileDescriptor fileDescriptor = fileDescriptorMap.get(file.getName());
  // create builder using the FileDescriptor
  // this can only find the top level message types
  return fileDescriptor.findMessageTypeByName(messageType);

}
 
源代码7 项目: grpc-swagger   文件: ServiceRegisterUtils.java
public static List<DescriptorProtos.FileDescriptorSet> registerByIpAndPort(String host, int port) {
    HostAndPort hostAndPort = HostAndPort.fromParts(host, port);
    Channel channel = ManagedChannelBuilder.forAddress(hostAndPort.getHost(), hostAndPort.getPort())
            .usePlaintext()
            .build();

    List<DescriptorProtos.FileDescriptorSet> fileDescriptorSets = GrpcReflectionUtils.resolveServices(channel);
    fileDescriptorSets.forEach(fileDescriptorSet -> {
        ServiceResolver serviceResolver = ServiceResolver.fromFileDescriptorSet(fileDescriptorSet);
        parseDefinition(serviceResolver);
    });
    return fileDescriptorSets;
}
 
源代码8 项目: grpc-swagger   文件: ServiceRegisterUtils.java
public static List<String> getServiceNames(List<DescriptorProtos.FileDescriptorSet> fileDescriptorSets) {
    List<String> serviceNames = new ArrayList<>();
    fileDescriptorSets.forEach(fileDescriptorSet -> {
        ServiceResolver serviceResolver = ServiceResolver.fromFileDescriptorSet(fileDescriptorSet);
        serviceResolver.listServices().forEach(serviceDescriptor -> {
            String serviceName = serviceDescriptor.getFullName();
            if (blockServiceSet.contains(serviceName.toLowerCase())) {
                return;
            }
            serviceNames.add(serviceName);
        });
    });
    return serviceNames;
}
 
源代码9 项目: grpc-swagger   文件: ServiceRegisterUtils.java
public static List<String> getServiceNames(List<DescriptorProtos.FileDescriptorSet> fileDescriptorSets) {
    List<String> serviceNames = new ArrayList<>();
    fileDescriptorSets.forEach(fileDescriptorSet -> {
        ServiceResolver serviceResolver = ServiceResolver.fromFileDescriptorSet(fileDescriptorSet);
        serviceResolver.listServices().forEach(serviceDescriptor -> {
            String serviceName = serviceDescriptor.getFullName();
            if (blockServiceSet.contains(serviceName.toLowerCase())) {
                return;
            }
            serviceNames.add(serviceName);
        });
    });
    return serviceNames;
}
 
源代码10 项目: stateful-functions   文件: ProtobufDescriptorMap.java
public static ProtobufDescriptorMap from(String fileDescriptorPath) throws IOException {
  File file = new File(fileDescriptorPath);
  byte[] descriptorBytes = Files.readAllBytes(file.toPath());
  DescriptorProtos.FileDescriptorSet fileDescriptorSet =
      DescriptorProtos.FileDescriptorSet.parseFrom(descriptorBytes);
  return from(fileDescriptorSet);
}
 
源代码11 项目: stateful-functions   文件: ProtobufDescriptorMap.java
public static ProtobufDescriptorMap from(URL fileDescriptorUrl) throws IOException {
  InputStream stream = fileDescriptorUrl.openStream();

  DescriptorProtos.FileDescriptorSet fileDescriptorSet =
      DescriptorProtos.FileDescriptorSet.parseFrom(stream);
  return from(fileDescriptorSet);
}
 
源代码12 项目: stateful-functions   文件: ProtobufDescriptorMap.java
public static ProtobufDescriptorMap from(DescriptorProtos.FileDescriptorSet fileDescriptorSet) {
  Map<String, Descriptors.FileDescriptor> resolvedSet =
      FileDescriptorResolver.resolve(fileDescriptorSet);

  Map<String, Descriptors.GenericDescriptor> messageOrEnumDescriptors = new HashMap<>();

  for (Descriptors.FileDescriptor fileDescriptor : resolvedSet.values()) {
    addMessages(messageOrEnumDescriptors, fileDescriptor, packageName(fileDescriptor));
    addEnums(messageOrEnumDescriptors, fileDescriptor, packageName(fileDescriptor));
  }
  return new ProtobufDescriptorMap(messageOrEnumDescriptors);
}
 
源代码13 项目: flink-statefun   文件: FileDescriptorResolver.java
private FileDescriptorResolver(DescriptorProtos.FileDescriptorSet descriptorSet) {
  // dependencies are specified in the form of a proto filename, therefore we need to index the
  // FileDescriptorProto's in that file by their name.
  this.descriptorByName =
      descriptorSet.getFileList().stream()
          .map(FileDescriptorProtoWrapper::new)
          .collect(toMap(FileDescriptorProtoWrapper::name, Function.identity()));
}
 
源代码14 项目: flink-statefun   文件: ProtobufDescriptorMap.java
public static ProtobufDescriptorMap from(URL fileDescriptorUrl) throws IOException {
  InputStream stream = fileDescriptorUrl.openStream();

  DescriptorProtos.FileDescriptorSet fileDescriptorSet =
      DescriptorProtos.FileDescriptorSet.parseFrom(stream);
  return from(fileDescriptorSet);
}
 
源代码15 项目: beam   文件: ProtoDomain.java
public static ProtoDomain buildFrom(DescriptorProtos.FileDescriptorSet fileDescriptorSet) {
  return new ProtoDomain(fileDescriptorSet);
}
 
源代码16 项目: metastore   文件: ProtoDomain.java
public DescriptorProtos.FileDescriptorSet getFileDescriptorSet() {
  return fileDescriptorSet;
}
 
源代码17 项目: metastore   文件: Convert.java
static Map<String, Descriptors.FileDescriptor> convertFileDescriptorSet(
    DescriptorProtos.FileDescriptorSet fileDescriptorSet) {
  Map<String, DescriptorProtos.FileDescriptorProto> inMap = extractProtoMap(fileDescriptorSet);
  return convertToFileDescriptorMap(inMap);
}
 
static Map<String, Descriptors.FileDescriptor> resolve(
    DescriptorProtos.FileDescriptorSet fileDescriptorSet) {
  FileDescriptorResolver resolver = new FileDescriptorResolver(fileDescriptorSet);
  return resolver.resolve();
}
 
源代码19 项目: datacollector   文件: ProtobufTypeUtil.java
private static Set<Descriptors.FileDescriptor> getDependencies(
    Map<String, Set<Descriptors.FileDescriptor>> dependenciesMap,
    Map<String, Descriptors.FileDescriptor> fileDescriptorMap,
    DescriptorProtos.FileDescriptorProto file,
    DescriptorProtos.FileDescriptorSet set
) throws StageException {
  Set<Descriptors.FileDescriptor> result = new LinkedHashSet<>();
  for (String name : file.getDependencyList()) {
    DescriptorProtos.FileDescriptorProto fileDescriptorProto = null;
    for (DescriptorProtos.FileDescriptorProto fdp : set.getFileList()) {
      if (name.equals(fdp.getName())) {
        fileDescriptorProto = fdp;
        break;
      }
    }
    if (fileDescriptorProto == null) {
      // could not find the message type from all the proto files contained in the descriptor file
      throw new StageException(Errors.PROTOBUF_01, file.getName());
    }
    Descriptors.FileDescriptor fileDescriptor;
    if (fileDescriptorMap.containsKey(fileDescriptorProto.getName())) {
      fileDescriptor = fileDescriptorMap.get(fileDescriptorProto.getName());
    } else {
      Set<Descriptors.FileDescriptor> deps = new LinkedHashSet<>();
      if (dependenciesMap.containsKey(name)) {
        deps.addAll(dependenciesMap.get(name));
      } else {
        deps.addAll(getDependencies(dependenciesMap, fileDescriptorMap, fileDescriptorProto, set));
      }
      try {
        fileDescriptor = Descriptors.FileDescriptor.buildFrom(
            fileDescriptorProto,
            deps.toArray(new Descriptors.FileDescriptor[deps.size()])
        );
      } catch (Descriptors.DescriptorValidationException e) {
        throw new StageException(Errors.PROTOBUF_07, e.getDescription(), e);
      }
    }
    result.add(fileDescriptor);
  }
  return result;
}
 
源代码20 项目: beam   文件: ProtoDomain.java
private static Map<String, DescriptorProtos.FileDescriptorProto> extractProtoMap(
    DescriptorProtos.FileDescriptorSet fileDescriptorSet) {
  HashMap<String, DescriptorProtos.FileDescriptorProto> map = new HashMap<>();
  fileDescriptorSet.getFileList().forEach(fdp -> map.put(fdp.getName(), fdp));
  return map;
}