public Key parseOldStyleAppEngineKey(final String urlsafeKey) throws InvalidProtocolBufferException { Descriptors.Descriptor referenceDescriptor = keyDescriptor.findMessageTypeByName("Reference"); byte[] userKey = Base64.decodeBase64(urlsafeKey); DynamicMessage userKeyMessage = DynamicMessage.newBuilder(referenceDescriptor).mergeFrom(userKey).build(); Descriptors.Descriptor pathDescriptor = keyDescriptor.findMessageTypeByName("Path"); Descriptors.Descriptor elementDescriptor = keyDescriptor.findMessageTypeByName("Element");
public String formatOldStyleAppEngineKey(Key key) { Descriptors.Descriptor referenceDescriptor = keyDescriptor.findMessageTypeByName("Reference"); DynamicMessage.Builder keyMessageBuilder = DynamicMessage.newBuilder(referenceDescriptor); String fullProjectId = key.getProjectId(); Descriptors.Descriptor elementDescriptor = keyDescriptor.findMessageTypeByName("Element"); } while ((key = key.getParent()) != null); Descriptors.Descriptor pathDescriptor = keyDescriptor.findMessageTypeByName("Path"); DynamicMessage.Builder pathBuilder = DynamicMessage.newBuilder(pathDescriptor); for (DynamicMessage elementMessage: elementMessages) {
if (message.hasProtoFileDescriptorTree()) { FileDescriptor fileDescriptor = hydrateFileDescriptorTree(message.getProtoFileDescriptorTree()); protoDescriptor = fileDescriptor.findMessageTypeByName(message.getProtoMessageName()); } else if (message.hasProtoFileDescriptor()) { FileDescriptorProto fileProto = FileDescriptorProto.parseFrom(message.getProtoFileDescriptor()); FileDescriptor fileDescriptor = FileDescriptor.buildFrom(fileProto, new FileDescriptor[0]); protoDescriptor = fileDescriptor.findMessageTypeByName(message.getProtoMessageName()); FileDescriptorProto fileProto = FileDescriptorProto.parseFrom(message.getProtoFileDescriptor()); FileDescriptor fileDescriptor = FileDescriptor.buildFrom(fileProto, new FileDescriptor[0]); protoDescriptor = fileDescriptor.findMessageTypeByName(message.getProtoMessageName()); } catch (Exception e) { log.warn("Failed to parse FileDescriptorProto.", e);
testAllTypes = baseDescriptor; } else { testAllTypes = file.findMessageTypeByName("TestAllTypes"); Assert.assertNotNull(testAllTypes); } else { this.optionalGroup = file.findMessageTypeByName("OptionalGroup_extension"); this.repeatedGroup = file.findMessageTypeByName("RepeatedGroup_extension"); this.foreignMessage = file.findMessageTypeByName("ForeignMessage"); this.importMessage = importFile.findMessageTypeByName("ImportMessage"); this.publicImportMessage = publicImportFile.findMessageTypeByName( "PublicImportMessage");
Descriptors.FileDescriptor filedesc = Descriptors.FileDescriptor.buildFrom(fdproto, fdescs); Descriptors.Descriptor mdesc = filedesc .findMessageTypeByName(ProtobufNaming.getSpecificationIdentifier(specification));
Descriptors.FileDescriptor filedesc = Descriptors.FileDescriptor.buildFrom(fdproto, fdescs); Descriptors.Descriptor mdesc = filedesc .findMessageTypeByName(ProtobufNaming.getDeviceTypeIdentifier(deviceType));
if (message.hasProtoFileDescriptorTree()) { FileDescriptor fileDescriptor = hydrateFileDescriptorTree(message.getProtoFileDescriptorTree()); protoDescriptor = fileDescriptor.findMessageTypeByName(message.getProtoMessageName()); } else if (message.hasProtoFileDescriptor()) { FileDescriptorProto fileProto = FileDescriptorProto.parseFrom(message.getProtoFileDescriptor()); FileDescriptor fileDescriptor = FileDescriptor.buildFrom(fileProto, new FileDescriptor[0]); protoDescriptor = fileDescriptor.findMessageTypeByName(message.getProtoMessageName()); FileDescriptorProto fileProto = FileDescriptorProto.parseFrom(message.getProtoFileDescriptor()); FileDescriptor fileDescriptor = FileDescriptor.buildFrom(fileProto, new FileDescriptor[0]); protoDescriptor = fileDescriptor.findMessageTypeByName(message.getProtoMessageName()); } catch (Exception e) { log.warn("Failed to parse FileDescriptorProto.", e);
Descriptors.Descriptor msgDescriptor = dynamicDescriptor.findMessageTypeByName(type); messageBuilderMap.put(type, DynamicMessage.newBuilder(msgDescriptor));
/** * 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()); }
private Descriptors.Descriptor mutateUnionDescriptor(@Nonnull UnaryOperator<DescriptorProtos.DescriptorProto> mutation) throws Descriptors.DescriptorValidationException { final Descriptors.Descriptor oldUnionDescriptor = metaData.getUnionDescriptor(); final DescriptorProtos.DescriptorProto oldUnionDescriptorProto = oldUnionDescriptor.toProto(); final DescriptorProtos.FileDescriptorProto fileDescriptorProto = metaData.getRecordsDescriptor().toProto(); int unionDescriptorIndex = fileDescriptorProto.getMessageTypeList().indexOf(oldUnionDescriptorProto); final DescriptorProtos.FileDescriptorProto newFileDescriptorProto = metaData.getRecordsDescriptor().toProto().toBuilder() .setMessageType(unionDescriptorIndex, mutation.apply(oldUnionDescriptorProto)) .build(); return buildRecordDescriptor(newFileDescriptorProto).findMessageTypeByName(oldUnionDescriptor.getName()); }
public ProtobufDecoderUsingDescriptor(byte[] bytes, String name) throws InvalidProtocolBufferException, Descriptors.DescriptorValidationException { this.gson = new Gson(); DescriptorProtos.FileDescriptorSet fileDescriptorSet = DescriptorProtos.FileDescriptorSet.parseFrom(bytes); DescriptorProtos.FileDescriptorProto fileProto = fileDescriptorSet.getFile(0); Descriptors.FileDescriptor fileDescriptor = Descriptors.FileDescriptor.buildFrom(fileProto, new Descriptors.FileDescriptor[0]); descriptor = fileDescriptor.findMessageTypeByName(name); }