本文整理汇总了Java中com.google.protobuf.DescriptorProtos.FileDescriptorSet方法的典型用法代码示例。如果您正苦于以下问题:Java DescriptorProtos.FileDescriptorSet方法的具体用法?Java DescriptorProtos.FileDescriptorSet怎么用?Java DescriptorProtos.FileDescriptorSet使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类com.google.protobuf.DescriptorProtos
的用法示例。
在下文中一共展示了DescriptorProtos.FileDescriptorSet方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: getFileDescProtoForMsgType
import com.google.protobuf.DescriptorProtos; //导入方法依赖的package包/类
private static DescriptorProtos.FileDescriptorProto getFileDescProtoForMsgType(
String packageName,
String messageType,
DescriptorProtos.FileDescriptorSet set
) {
DescriptorProtos.FileDescriptorProto file = null;
for (DescriptorProtos.FileDescriptorProto fileDescriptorProto : set.getFileList()) {
if (!packageMatch(fileDescriptorProto, packageName)) {
continue;
}
file = containsMessageType(fileDescriptorProto, messageType);
if (file != null) {
break;
}
}
return file;
}
示例2: getAllFileDescriptors
import com.google.protobuf.DescriptorProtos; //导入方法依赖的package包/类
/**
* Loads a Protobuf file descriptor set into an ubermap of file descriptors.
*
* @param set FileDescriptorSet
* @param dependenciesMap FileDescriptor dependency map
* @param fileDescriptorMap The populated map of FileDescriptors
* @throws StageException
*/
public static void getAllFileDescriptors(
DescriptorProtos.FileDescriptorSet set,
Map<String, Set<Descriptors.FileDescriptor>> dependenciesMap,
Map<String, Descriptors.FileDescriptor> fileDescriptorMap
) throws StageException {
List<DescriptorProtos.FileDescriptorProto> fileList = set.getFileList();
try {
for (DescriptorProtos.FileDescriptorProto fdp : fileList) {
if (!fileDescriptorMap.containsKey(fdp.getName())) {
Set<Descriptors.FileDescriptor> dependencies = dependenciesMap.get(fdp.getName());
if (dependencies == null) {
dependencies = new LinkedHashSet<>();
dependenciesMap.put(fdp.getName(), dependencies);
dependencies.addAll(getDependencies(dependenciesMap, fileDescriptorMap, fdp, set));
}
Descriptors.FileDescriptor fileDescriptor = Descriptors.FileDescriptor.buildFrom(
fdp,
dependencies.toArray(new Descriptors.FileDescriptor[dependencies.size()])
);
fileDescriptorMap.put(fdp.getName(), fileDescriptor);
}
}
} catch (Descriptors.DescriptorValidationException e) {
throw new StageException(Errors.PROTOBUF_07, e.getDescription(), e);
}
}
示例3: getDescriptor
import com.google.protobuf.DescriptorProtos; //导入方法依赖的package包/类
/**
* 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);
}
示例4: getDependencies
import com.google.protobuf.DescriptorProtos; //导入方法依赖的package包/类
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;
}