Package com.google.protobuf.Descriptors

Examples of com.google.protobuf.Descriptors.FieldDescriptor


    extensionsByNumber.put(
      new DescriptorIntPair(extension.descriptor.getContainingType(),
                            extension.descriptor.getNumber()),
      extension);

    FieldDescriptor field = extension.descriptor;
    if (field.getContainingType().getOptions().getMessageSetWireFormat() &&
        field.getType() == FieldDescriptor.Type.MESSAGE &&
        field.isOptional() &&
        field.getExtensionScope() == field.getMessageType()) {
      // This is an extension of a MessageSet type defined within the extension
      // type's own scope.  For backwards-compatibility, allow it to be looked
      // up by type name.
      extensionsByName.put(field.getMessageType().getFullName(), extension);
    }
  }
View Full Code Here


   * that all required fields are present.
   */
  @SuppressWarnings("unchecked")
  public boolean isInitialized() {
    for (Map.Entry<FieldDescriptor, Object> entry : fields.entrySet()) {
      FieldDescriptor field = entry.getKey();
      if (field.getJavaType() == FieldDescriptor.JavaType.MESSAGE) {
        if (field.isRepeated()) {
          for (Message element : (List<Message>) entry.getValue()) {
            if (!element.isInitialized()) {
              return false;
            }
          }
View Full Code Here

    // TODO(kenton):  Provide a function somewhere called makeDeepCopy()
    //   which allows people to make secure deep copies of messages.

    for (Map.Entry<FieldDescriptor, Object> entry :
         other.getAllFields().entrySet()) {
      FieldDescriptor field = entry.getKey();
      if (field.isRepeated()) {
        List existingValue = (List)fields.get(field);
        if (existingValue == null) {
          existingValue = new ArrayList();
          fields.put(field, existingValue);
        }
        existingValue.addAll((List)entry.getValue());
      } else if (field.getJavaType() == FieldDescriptor.JavaType.MESSAGE) {
        Message existingValue = (Message)fields.get(field);
        if (existingValue == null) {
          setField(field, entry.getValue());
        } else {
          setField(field,
View Full Code Here

   * Like {@link #mergeFrom(Message)}, but merges from another {@link FieldSet}.
   */
  @SuppressWarnings("unchecked")
  public void mergeFrom(FieldSet other) {
    for (Map.Entry<FieldDescriptor, Object> entry : other.fields.entrySet()) {
      FieldDescriptor field = entry.getKey();
      Object value = entry.getValue();

      if (field.isRepeated()) {
        List existingValue = (List)fields.get(field);
        if (existingValue == null) {
          existingValue = new ArrayList();
          fields.put(field, existingValue);
        }
        existingValue.addAll((List)value);
      } else if (field.getJavaType() == FieldDescriptor.JavaType.MESSAGE) {
        Message existingValue = (Message)fields.get(field);
        if (existingValue == null) {
          setField(field, value);
        } else {
          setField(field,
View Full Code Here

    }

    int wireType = WireFormat.getTagWireType(tag);
    int fieldNumber = WireFormat.getTagFieldNumber(tag);

    FieldDescriptor field;
    Message defaultInstance = null;

    if (type.isExtensionNumber(fieldNumber)) {
      ExtensionRegistry.ExtensionInfo extension =
        extensionRegistry.findExtensionByNumber(type, fieldNumber);
      if (extension == null) {
        field = null;
      } else {
        field = extension.descriptor;
        defaultInstance = extension.defaultInstance;
      }
    } else {
      field = type.findFieldByNumber(fieldNumber);
    }

    if (field == null ||
        wireType != WireFormat.getWireFormatForField(field)) {
      // Unknown field or wrong wire type.  Skip.
      return unknownFields.mergeFieldFrom(tag, input);
    } else {
      if (field.getOptions().getPacked()) {
        int length = input.readRawVarint32();
        int limit = input.pushLimit(length);
        if (field.getType() == FieldDescriptor.Type.ENUM) {
          while (input.getBytesUntilLimit() > 0) {
            int rawValue = input.readEnum();
            Object value = field.getEnumType().findValueByNumber(rawValue);
            if (value == null) {
              // If the number isn't recognized as a valid value for this
              // enum, drop it (don't even add it to unknownFields).
              return true;
            }
            builder.addRepeatedField(field, value);
          }
        } else {
          while (input.getBytesUntilLimit() > 0) {
            Object value = input.readPrimitiveField(field.getType());
            builder.addRepeatedField(field, value);
          }
        }
        input.popLimit(limit);
      } else {
        Object value;
        switch (field.getType()) {
          case GROUP: {
            Message.Builder subBuilder;
            if (defaultInstance != null) {
              subBuilder = defaultInstance.newBuilderForType();
            } else {
              subBuilder = builder.newBuilderForField(field);
            }
            if (!field.isRepeated()) {
              subBuilder.mergeFrom((Message) builder.getField(field));
            }
            input.readGroup(field.getNumber(), subBuilder, extensionRegistry);
            value = subBuilder.build();
            break;
          }
          case MESSAGE: {
            Message.Builder subBuilder;
            if (defaultInstance != null) {
              subBuilder = defaultInstance.newBuilderForType();
            } else {
              subBuilder = builder.newBuilderForField(field);
            }
            if (!field.isRepeated()) {
              subBuilder.mergeFrom((Message) builder.getField(field));
            }
            input.readMessage(subBuilder, extensionRegistry);
            value = subBuilder.build();
            break;
          }
          case ENUM: {
            int rawValue = input.readEnum();
            value = field.getEnumType().findValueByNumber(rawValue);
            // If the number isn't recognized as a valid value for this enum,
            // drop it.
            if (value == null) {
              unknownFields.mergeVarintField(fieldNumber, rawValue);
              return true;
            }
            break;
          }
          default:
            value = input.readPrimitiveField(field.getType());
            break;
        }

        if (field.isRepeated()) {
          builder.addRepeatedField(field, value);
        } else {
          builder.setField(field, value);
        }
      }
View Full Code Here

    // should be prepared to accept them.

    int typeId = 0;
    ByteString rawBytes = null// If we encounter "message" before "typeId"
    Message.Builder subBuilder = null;
    FieldDescriptor field = null;

    while (true) {
      int tag = input.readTag();
      if (tag == 0) {
        break;
View Full Code Here

   * the resulting size if desired.
   */
  public int getSerializedSize() {
    int size = 0;
    for (Map.Entry<FieldDescriptor, Object> entry : fields.entrySet()) {
      FieldDescriptor field = entry.getKey();
      Object value = entry.getValue();

      if (field.isExtension() &&
          field.getContainingType().getOptions().getMessageSetWireFormat()) {
        size += CodedOutputStream.computeMessageSetExtensionSize(
          field.getNumber(), (Message) value);
      } else {
        if (field.isRepeated()) {
          if (field.getOptions().getPacked()) {
            int dataSize = 0;
            for (Object element : (List)value) {
              dataSize += CodedOutputStream.computeFieldSizeNoTag(
                  field.getType(), element);
            }
            size += dataSize +
                CodedOutputStream.computeTagSize(field.getNumber()) +
                CodedOutputStream.computeRawVarint32Size(dataSize);
          } else {
            for (Object element : (List)value) {
              size += CodedOutputStream.computeFieldSize(
                  field.getType(), field.getNumber(), element);
            }
          }
        } else {
          size += CodedOutputStream.computeFieldSize(
            field.getType(), field.getNumber(), value);
        }
      }
    }
    return size;
  }
View Full Code Here

      }
    }

    for (Map.Entry<FieldDescriptor, Object> entry :
         message.getAllFields().entrySet()) {
      FieldDescriptor field = entry.getKey();
      Object value = entry.getValue();

      if (field.getJavaType() == FieldDescriptor.JavaType.MESSAGE) {
        if (field.isRepeated()) {
          int i = 0;
          for (Object element : (List) value) {
            findMissingFields((Message) element,
                              subMessagePrefix(prefix, field, i++),
                              results);
View Full Code Here

                 UnittestImport.getDescriptor().getServices());
    for (int i = 0; i < file.getServices().size(); i++) {
      assertEquals(i, file.getServices().get(i).getIndex());
    }

    FieldDescriptor extension =
      UnittestProto.optionalInt32Extension.getDescriptor();
    assertEquals(extension, file.getExtensions().get(0));
    assertEquals(extension,
                 file.findExtensionByName("optional_int32_extension"));
    assertNull(file.findExtensionByName("no_such_ext"));
View Full Code Here

    assertEquals("protobuf_unittest.TestAllTypes.NestedMessage",
                 nestedType.getFullName());
    assertEquals(UnittestProto.getDescriptor(), nestedType.getFile());
    assertEquals(messageType, nestedType.getContainingType());

    FieldDescriptor field = messageType.getFields().get(0);
    assertEquals("optional_int32", field.getName());
    assertEquals(field, messageType.findFieldByName("optional_int32"));
    assertNull(messageType.findFieldByName("no_such_field"));
    assertEquals(field, messageType.findFieldByNumber(1));
    assertNull(messageType.findFieldByNumber(571283));
    for (int i = 0; i < messageType.getFields().size(); i++) {
View Full Code Here

TOP

Related Classes of com.google.protobuf.Descriptors.FieldDescriptor

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.