當前位置: 首頁>>代碼示例>>Java>>正文


Java Descriptor.findFieldByName方法代碼示例

本文整理匯總了Java中com.google.protobuf.Descriptors.Descriptor.findFieldByName方法的典型用法代碼示例。如果您正苦於以下問題:Java Descriptor.findFieldByName方法的具體用法?Java Descriptor.findFieldByName怎麽用?Java Descriptor.findFieldByName使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在com.google.protobuf.Descriptors.Descriptor的用法示例。


在下文中一共展示了Descriptor.findFieldByName方法的13個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Java代碼示例。

示例1: mergeMapField

import com.google.protobuf.Descriptors.Descriptor; //導入方法依賴的package包/類
private void mergeMapField(FieldDescriptor field, JsonElement json, Message.Builder builder)
    throws InvalidProtocolBufferException {
  if (!(json instanceof JsonObject)) {
    throw new InvalidProtocolBufferException("Expect a map object but found: " + json);
  }
  Descriptor type = field.getMessageType();
  FieldDescriptor keyField = type.findFieldByName("key");
  FieldDescriptor valueField = type.findFieldByName("value");
  if (keyField == null || valueField == null) {
    throw new InvalidProtocolBufferException("Invalid map field: " + field.getFullName());
  }
  JsonObject object = (JsonObject) json;
  for (Map.Entry<String, JsonElement> entry : object.entrySet()) {
    Message.Builder entryBuilder = builder.newBuilderForField(field);
    Object key = parseFieldValue(keyField, new JsonPrimitive(entry.getKey()), entryBuilder);
    Object value = parseFieldValue(valueField, entry.getValue(), entryBuilder);
    if (value == null) {
      throw new InvalidProtocolBufferException("Map value cannot be null.");
    }
    entryBuilder.setField(keyField, key);
    entryBuilder.setField(valueField, value);
    builder.addRepeatedField(field, entryBuilder.build());
  }
}
 
開發者ID:SeldonIO,項目名稱:seldon-core,代碼行數:25,代碼來源:JsonFormat.java

示例2: ProtoFieldInfo

import com.google.protobuf.Descriptors.Descriptor; //導入方法依賴的package包/類
ProtoFieldInfo(FieldDescriptor field, Message containingPrototype) {
  this.field = checkNotNull(field, "field");
  this.containingPrototype = checkNotNull(containingPrototype, "containingPrototype");
  builderClass = containingPrototype.newBuilderForType().getClass();

  camelCaseName = underscoresToUpperCamelCase(field.getName());

  if (field.isMapField()) {
    Descriptor mapType = field.getMessageType();
    mapKeyField = new ProtoFieldInfo(mapType.findFieldByName("key"), containingPrototype);
    mapValueField = new ProtoFieldInfo(mapType.findFieldByName("value"), containingPrototype);
  } else {
    mapKeyField = null;
    mapValueField = null;
  }
}
 
開發者ID:curioswitch,項目名稱:curiostack,代碼行數:17,代碼來源:ProtoFieldInfo.java

示例3: printListValue

import com.google.protobuf.Descriptors.Descriptor; //導入方法依賴的package包/類
/** Prints google.protobuf.ListValue */
private void printListValue(MessageOrBuilder message) throws IOException {
  Descriptor descriptor = message.getDescriptorForType();
  FieldDescriptor field = descriptor.findFieldByName("values");
  if (field == null) {
    throw new InvalidProtocolBufferException("Invalid ListValue type.");
  }
  printRepeatedFieldValue(field, message.getField(field));
}
 
開發者ID:SeldonIO,項目名稱:seldon-core,代碼行數:10,代碼來源:JsonFormat.java

示例4: printMapFieldValue

import com.google.protobuf.Descriptors.Descriptor; //導入方法依賴的package包/類
@SuppressWarnings("rawtypes")
private void printMapFieldValue(FieldDescriptor field, Object value) throws IOException {
  Descriptor type = field.getMessageType();
  FieldDescriptor keyField = type.findFieldByName("key");
  FieldDescriptor valueField = type.findFieldByName("value");
  if (keyField == null || valueField == null) {
    throw new InvalidProtocolBufferException("Invalid map field.");
  }
  generator.print("{" + blankOrNewLine);
  generator.indent();
  boolean printedElement = false;
  for (Object element : (List) value) {
    Message entry = (Message) element;
    Object entryKey = entry.getField(keyField);
    Object entryValue = entry.getField(valueField);
    if (printedElement) {
      generator.print("," + blankOrNewLine);
    } else {
      printedElement = true;
    }
    // Key fields are always double-quoted.
    printSingleFieldValue(keyField, entryKey, true);
    generator.print(":" + blankOrSpace);
    printSingleFieldValue(valueField, entryValue);
  }
  if (printedElement) {
    generator.print(blankOrNewLine);
  }
  generator.outdent();
  generator.print("}");
}
 
開發者ID:SeldonIO,項目名稱:seldon-core,代碼行數:32,代碼來源:JsonFormat.java

示例5: printWrapper

import com.google.protobuf.Descriptors.Descriptor; //導入方法依賴的package包/類
/** Prints wrapper types (e.g., google.protobuf.Int32Value) */
private void printWrapper(MessageOrBuilder message) throws IOException {
  Descriptor descriptor = message.getDescriptorForType();
  FieldDescriptor valueField = descriptor.findFieldByName("value");
  if (valueField == null) {
    throw new InvalidProtocolBufferException("Invalid Wrapper type.");
  }
  // When formatting wrapper types, we just print its value field instead of
  // the whole message.
  printSingleFieldValue(valueField, message.getField(valueField));
}
 
開發者ID:SeldonIO,項目名稱:seldon-core,代碼行數:12,代碼來源:JsonFormat.java

示例6: mergeListValue

import com.google.protobuf.Descriptors.Descriptor; //導入方法依賴的package包/類
private void mergeListValue(JsonElement json, Message.Builder builder)
    throws InvalidProtocolBufferException {
  Descriptor descriptor = builder.getDescriptorForType();
  FieldDescriptor field = descriptor.findFieldByName("values");
  if (field == null) {
    throw new InvalidProtocolBufferException("Invalid ListValue type.");
  }
  mergeRepeatedField(field, json, builder);
}
 
開發者ID:SeldonIO,項目名稱:seldon-core,代碼行數:10,代碼來源:JsonFormat.java

示例7: mergeWrapper

import com.google.protobuf.Descriptors.Descriptor; //導入方法依賴的package包/類
private void mergeWrapper(JsonElement json, Message.Builder builder)
    throws InvalidProtocolBufferException {
  Descriptor type = builder.getDescriptorForType();
  FieldDescriptor field = type.findFieldByName("value");
  if (field == null) {
    throw new InvalidProtocolBufferException("Invalid wrapper type: " + type.getFullName());
  }
  builder.setField(field, parseFieldValue(field, json, builder));
}
 
開發者ID:SeldonIO,項目名稱:seldon-core,代碼行數:10,代碼來源:JsonFormat.java

示例8: printStruct

import com.google.protobuf.Descriptors.Descriptor; //導入方法依賴的package包/類
/** Prints google.protobuf.Struct */
private void printStruct(MessageOrBuilder message) throws IOException {
  Descriptor descriptor = message.getDescriptorForType();
  FieldDescriptor field = descriptor.findFieldByName("fields");
  if (field == null) {
    throw new InvalidProtocolBufferException("Invalid Struct type.");
  }
  // Struct is formatted as a map object.
  printMapFieldValue(field, message.getField(field));
}
 
開發者ID:SeldonIO,項目名稱:seldon-core,代碼行數:11,代碼來源:JsonFormat.java

示例9: mergeStruct

import com.google.protobuf.Descriptors.Descriptor; //導入方法依賴的package包/類
private void mergeStruct(JsonElement json, Message.Builder builder)
    throws InvalidProtocolBufferException {
  Descriptor descriptor = builder.getDescriptorForType();
  FieldDescriptor field = descriptor.findFieldByName("fields");
  if (field == null) {
    throw new InvalidProtocolBufferException("Invalid Struct type.");
  }
  mergeMapField(field, json, builder);
}
 
開發者ID:SeldonIO,項目名稱:seldon-core,代碼行數:10,代碼來源:JsonFormat.java

示例10: mergeAny

import com.google.protobuf.Descriptors.Descriptor; //導入方法依賴的package包/類
private void mergeAny(JsonElement json, Message.Builder builder)
    throws InvalidProtocolBufferException {
  Descriptor descriptor = builder.getDescriptorForType();
  FieldDescriptor typeUrlField = descriptor.findFieldByName("type_url");
  FieldDescriptor valueField = descriptor.findFieldByName("value");
  // Validates type of the message. Note that we can't just cast the message
  // to com.google.protobuf.Any because it might be a DynamicMessage.
  if (typeUrlField == null
      || valueField == null
      || typeUrlField.getType() != FieldDescriptor.Type.STRING
      || valueField.getType() != FieldDescriptor.Type.BYTES) {
    throw new InvalidProtocolBufferException("Invalid Any type.");
  }

  if (!(json instanceof JsonObject)) {
    throw new InvalidProtocolBufferException("Expect message object but got: " + json);
  }
  JsonObject object = (JsonObject) json;
  if (object.entrySet().isEmpty()) {
    return; // builder never modified, so it will end up building the default instance of Any
  }
  JsonElement typeUrlElement = object.get("@type");
  if (typeUrlElement == null) {
    throw new InvalidProtocolBufferException("Missing type url when parsing: " + json);
  }
  String typeUrl = typeUrlElement.getAsString();
  Descriptor contentType = registry.find(getTypeName(typeUrl));
  if (contentType == null) {
    throw new InvalidProtocolBufferException("Cannot resolve type: " + typeUrl);
  }
  builder.setField(typeUrlField, typeUrl);
  Message.Builder contentBuilder =
      DynamicMessage.getDefaultInstance(contentType).newBuilderForType();
  WellKnownTypeParser specialParser = wellKnownTypeParsers.get(contentType.getFullName());
  if (specialParser != null) {
    JsonElement value = object.get("value");
    if (value != null) {
      specialParser.merge(this, value, contentBuilder);
    }
  } else {
    mergeMessage(json, contentBuilder, true);
  }
  builder.setField(valueField, contentBuilder.build().toByteString());
}
 
開發者ID:SeldonIO,項目名稱:seldon-core,代碼行數:45,代碼來源:JsonFormat.java

示例11: mergeField

import com.google.protobuf.Descriptors.Descriptor; //導入方法依賴的package包/類
/**
 * Parse a single field from {@code tokenizer} and merge it into {@code builder}. If a ',' is
 * detected after the field ends, the next field will be parsed automatically
 */
protected void mergeField(Tokenizer tokenizer,
                               ExtensionRegistry extensionRegistry,
                               Message.Builder builder) throws ParseException {
    FieldDescriptor field;
    Descriptor type = builder.getDescriptorForType();
    ExtensionRegistry.ExtensionInfo extension = null;
    boolean unknown = false;

    String name = tokenizer.consumeIdentifier();
    field = type.findFieldByName(name);

    // Group names are expected to be capitalized as they appear in the
    // .proto file, which actually matches their type names, not their field
    // names.
    if (field == null) {
        // Explicitly specify US locale so that this code does not break when
        // executing in Turkey.
        String lowerName = name.toLowerCase(Locale.US);
        field = type.findFieldByName(lowerName);
        // If the case-insensitive match worked but the field is NOT a group,
        if ((field != null) && (field.getType() != FieldDescriptor.Type.GROUP)) {
            field = null;
        }
    }
    // Again, special-case group names as described above.
    if ((field != null) && (field.getType() == FieldDescriptor.Type.GROUP)
        && !field.getMessageType().getName().equals(name)) {
        field = null;
    }

    // Last try to lookup by field-index if 'name' is numeric,
    // which indicates a possible unknown field
    if (field == null && TextUtils.isDigits(name)) {
        field = type.findFieldByNumber(Integer.parseInt(name));
        unknown = true;
    }

    // Finally, look for extensions
    extension = extensionRegistry.findExtensionByName(name);
    if (extension != null) {
        if (extension.descriptor.getContainingType() != type) {
          throw tokenizer.parseExceptionPreviousToken("Extension \"" + name
                                                      + "\" does not extend message type \""
                                                      + type.getFullName() + "\".");
        }
        field = extension.descriptor;
    }

    // Disabled throwing exception if field not found, since it could be a different version.
    if (field == null) {
        handleMissingField(tokenizer, extensionRegistry, builder);
        //throw tokenizer.parseExceptionPreviousToken("Message type \"" + type.getFullName()
        //                                            + "\" has no field named \"" + name
        //                                            + "\".");
    }

    if (field != null) {
        tokenizer.consume(":");
        boolean array = tokenizer.tryConsume("[");

        if (array) {
            while (!tokenizer.tryConsume("]")) {
                handleValue(tokenizer, extensionRegistry, builder, field, extension, unknown);
                tokenizer.tryConsume(",");
            }
        } else {
            handleValue(tokenizer, extensionRegistry, builder, field, extension, unknown);
        }
    }

    if (tokenizer.tryConsume(",")) {
        // Continue with the next field
        mergeField(tokenizer, extensionRegistry, builder);
    }
}
 
開發者ID:jigsaw-projects,項目名稱:jigsaw-payment,代碼行數:80,代碼來源:JsonFormat.java

示例12: getField

import com.google.protobuf.Descriptors.Descriptor; //導入方法依賴的package包/類
private static FieldDescriptor getField(Descriptor descriptor, String name) {
  return descriptor.findFieldByName(name);
}
 
開發者ID:google,項目名稱:rejoiner,代碼行數:4,代碼來源:QueryResponseToProto.java

示例13: printAny

import com.google.protobuf.Descriptors.Descriptor; //導入方法依賴的package包/類
/** Prints google.protobuf.Any */
private void printAny(MessageOrBuilder message) throws IOException {
  if (Any.getDefaultInstance().equals(message)) {
    generator.print("{}");
    return;
  }
  Descriptor descriptor = message.getDescriptorForType();
  FieldDescriptor typeUrlField = descriptor.findFieldByName("type_url");
  FieldDescriptor valueField = descriptor.findFieldByName("value");
  // Validates type of the message. Note that we can't just cast the message
  // to com.google.protobuf.Any because it might be a DynamicMessage.
  if (typeUrlField == null
      || valueField == null
      || typeUrlField.getType() != FieldDescriptor.Type.STRING
      || valueField.getType() != FieldDescriptor.Type.BYTES) {
    throw new InvalidProtocolBufferException("Invalid Any type.");
  }
  String typeUrl = (String) message.getField(typeUrlField);
  String typeName = getTypeName(typeUrl);
  Descriptor type = registry.find(typeName);
  if (type == null) {
    throw new InvalidProtocolBufferException("Cannot find type for url: " + typeUrl);
  }
  ByteString content = (ByteString) message.getField(valueField);
  Message contentMessage =
      DynamicMessage.getDefaultInstance(type).getParserForType().parseFrom(content);
  WellKnownTypePrinter printer = wellKnownTypePrinters.get(typeName);
  if (printer != null) {
    // If the type is one of the well-known types, we use a special
    // formatting.
    generator.print("{" + blankOrNewLine);
    generator.indent();
    generator.print("\"@type\":" + blankOrSpace + gson.toJson(typeUrl) + "," + blankOrNewLine);
    generator.print("\"value\":" + blankOrSpace);
    printer.print(this, contentMessage);
    generator.print(blankOrNewLine);
    generator.outdent();
    generator.print("}");
  } else {
    // Print the content message instead (with a "@type" field added).
    print(contentMessage, typeUrl);
  }
}
 
開發者ID:SeldonIO,項目名稱:seldon-core,代碼行數:44,代碼來源:JsonFormat.java


注:本文中的com.google.protobuf.Descriptors.Descriptor.findFieldByName方法示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。