类com.google.protobuf.Descriptors.FileDescriptor.Syntax源码实例Demo

下面列出了怎么用com.google.protobuf.Descriptors.FileDescriptor.Syntax的API类实例代码及写法,或者点击链接到github查看源代码。

源代码1 项目: play-store-api   文件: Descriptors.java
/** Get the syntax of the .proto file. */
public Syntax getSyntax() {
  if (Syntax.PROTO3.name.equals(proto.getSyntax())) {
    return Syntax.PROTO3;
  }
  return Syntax.PROTO2;
}
 
源代码2 项目: play-store-api   文件: Descriptors.java
/** For internal use only. */
public boolean needsUtf8Check() {
  if (type != Type.STRING) {
    return false;
  }
  if (getContainingType().getOptions().getMapEntry()) {
    // Always enforce strict UTF-8 checking for map fields.
    return true;
  }
  if (getFile().getSyntax() == Syntax.PROTO3) {
    return true;
  }
  return getFile().getOptions().getJavaStringCheckUtf8();
}
 
源代码3 项目: play-store-api   文件: Descriptors.java
/** Does this field have the {@code [packed = true]} option or is this field
 *  packable in proto3 and not explicitly setted to unpacked?
 */
@Override
public boolean isPacked() {
  if (!isPackable()) {
    return false;
  }
  if (getFile().getSyntax() == FileDescriptor.Syntax.PROTO2) {
    return getOptions().getPacked();
  } else {
    return !getOptions().hasPacked() || getOptions().getPacked();
  }
}
 
源代码4 项目: beam   文件: ProtobufUtil.java
/**
 * Recursively walks the given {@link Message} class and verifies that every field or message
 * linked in uses the Protocol Buffers proto2 syntax.
 */
static void checkProto2Syntax(Class<? extends Message> clazz, ExtensionRegistry registry) {
  for (GenericDescriptor d : getRecursiveDescriptorsForClass(clazz, registry)) {
    Syntax s = d.getFile().getSyntax();
    checkArgument(
        s == Syntax.PROTO2,
        "Message %s or one of its dependencies does not use proto2 syntax: %s in file %s",
        clazz.getName(),
        d.getFullName(),
        d.getFile().getName());
  }
}
 
源代码5 项目: play-store-api   文件: Descriptors.java
Syntax(String name) {
  this.name = name;
}
 
源代码6 项目: play-store-api   文件: Descriptors.java
boolean supportsUnknownEnumValue() {
  return getSyntax() == Syntax.PROTO3;
}
 
@Override
public void serialize(
        MessageOrBuilder message,
        JsonGenerator generator,
        SerializerProvider serializerProvider
) throws IOException {
  generator.writeStartObject();

  boolean proto3 = message.getDescriptorForType().getFile().getSyntax() == Syntax.PROTO3;
  Include include = serializerProvider.getConfig().getDefaultPropertyInclusion().getValueInclusion();
  boolean writeDefaultValues = proto3 && include != Include.NON_DEFAULT;
  boolean writeEmptyCollections = include != Include.NON_DEFAULT && include != Include.NON_EMPTY;
  PropertyNamingStrategyBase namingStrategy =
          new PropertyNamingStrategyWrapper(serializerProvider.getConfig().getPropertyNamingStrategy());

  Descriptor descriptor = message.getDescriptorForType();
  List<FieldDescriptor> fields = new ArrayList<>(descriptor.getFields());
  if (message instanceof ExtendableMessageOrBuilder<?>) {
    for (ExtensionInfo extensionInfo : config.extensionRegistry().getExtensionsByDescriptor(descriptor)) {
      fields.add(extensionInfo.descriptor);
    }
  }

  for (FieldDescriptor field : fields) {
    if (field.isRepeated()) {
      List<?> valueList = (List<?>) message.getField(field);

      if (!valueList.isEmpty() || writeEmptyCollections) {
        if (field.isMapField()) {
          generator.writeFieldName(namingStrategy.translate(field.getName()));
          writeMap(field, valueList, generator, serializerProvider);
        } else if (valueList.size() == 1 && writeSingleElementArraysUnwrapped(serializerProvider)) {
          generator.writeFieldName(namingStrategy.translate(field.getName()));
          writeValue(field, valueList.get(0), generator, serializerProvider);
        } else {
          generator.writeArrayFieldStart(namingStrategy.translate(field.getName()));
          for (Object subValue : valueList) {
            writeValue(field, subValue, generator, serializerProvider);
          }
          generator.writeEndArray();
        }
      }
    } else if (message.hasField(field) || (writeDefaultValues && !supportsFieldPresence(field) && field.getContainingOneof() == null)) {
      generator.writeFieldName(namingStrategy.translate(field.getName()));
      writeValue(field, message.getField(field), generator, serializerProvider);
    } else if (include == Include.ALWAYS && field.getContainingOneof() == null) {
      generator.writeFieldName(namingStrategy.translate(field.getName()));
      generator.writeNull();
    }
  }

  generator.writeEndObject();
}
 
 类所在包
 类方法
 同包方法