/** * Converts a list of MapEntry messages into a Map used for equals() and * hashCode(). */ @SuppressWarnings({"rawtypes", "unchecked"}) private static Map convertMapEntryListToMap(List list) { if (list.isEmpty()) { return Collections.emptyMap(); } Map result = new HashMap(); Iterator iterator = list.iterator(); Message entry = (Message) iterator.next(); Descriptors.Descriptor descriptor = entry.getDescriptorForType(); Descriptors.FieldDescriptor key = descriptor.findFieldByName("key"); Descriptors.FieldDescriptor value = descriptor.findFieldByName("value"); Object fieldValue = entry.getField(value); if (fieldValue instanceof EnumValueDescriptor) { fieldValue = ((EnumValueDescriptor) fieldValue).getNumber(); } result.put(entry.getField(key), fieldValue); while (iterator.hasNext()) { entry = (Message) iterator.next(); fieldValue = entry.getField(value); if (fieldValue instanceof EnumValueDescriptor) { fieldValue = ((EnumValueDescriptor) fieldValue).getNumber(); } result.put(entry.getField(key), fieldValue); } return result; }
@Override protected Object getField(Object record, String name, int pos, Object state) { Message m = (Message)record; FieldDescriptor f = ((FieldDescriptor[])state)[pos]; switch (f.getType()) { case MESSAGE: if (!f.isRepeated() && !m.hasField(f)) return null; default: return m.getField(f); } }
private static void writeMessageValue(Message message, JsonWriter writer) { MessageType messageType = MessageType.of(message); if (messageType.doesWrapRepeated) { Descriptors.FieldDescriptor repeatedDescriptor = messageType.fieldDescriptors[0]; if (repeatedDescriptor.isMapField()) { writeMap((Collection<MapEntry>) message.getField(repeatedDescriptor), writer); } else { writeArray(writer, repeatedDescriptor, (Collection) message.getField(repeatedDescriptor)); } } else { writer.beginObject(); writeMessage(message, writer); writer.endObject(); } } }
private static void writeMessage(Message message, JsonWriter writer) { MessageType type = MessageType.of(message); for (Descriptors.FieldDescriptor fieldDescriptor : type.fieldDescriptors) { if (fieldDescriptor.isRepeated()) { writer.name(fieldDescriptor.getName()); if (fieldDescriptor.isMapField()) { writeMap((Collection<MapEntry>) message.getField(fieldDescriptor), writer); } else { writeArray(writer, fieldDescriptor, (Collection) message.getField(fieldDescriptor)); } } else if (message.hasField(fieldDescriptor)) { writer.name(fieldDescriptor.getName()); Object fieldValue = message.getField(fieldDescriptor); writeFieldValue(fieldDescriptor, fieldValue, writer); } } }
message.getDescriptorForType().getFields()) { if (field.isRequired() && !fields.containsKey(field)) { fields.put(field, message.getField(field));
public long extractTimestampMillis(String topic, final byte[] bytes) throws IOException { if (timestampFieldPath != null) { com.google.protobuf.Message decodedMessage = protobufUtil.decodeProtobufOrJsonMessage(topic, bytes); int i = 0; for (; i < timestampFieldPath.length - 1; ++i) { decodedMessage = (com.google.protobuf.Message) decodedMessage .getField(decodedMessage.getDescriptorForType().findFieldByName(timestampFieldPath[i])); } Object timestampObject = decodedMessage .getField(decodedMessage.getDescriptorForType().findFieldByName(timestampFieldPath[i])); if (timestampObject instanceof com.google.protobuf.Timestamp){ return Timestamps.toMillis((com.google.protobuf.Timestamp) timestampObject); }else { return toMillis((Long) timestampObject); } } else { // Assume that the timestamp field is the first field, is required, // and is a uint64. CodedInputStream input = CodedInputStream.newInstance(bytes); // Don't really care about the tag, but need to read it to get, to // the payload. input.readTag(); return toMillis(input.readUInt64()); } } }
actualFields.get(fieldDescriptor), expectedFields.get(fieldDescriptor), actual.getDefaultInstanceForType().getField(fieldDescriptor), shouldCompare == FieldScopeResult.EXCLUDED_NONRECURSIVELY, fieldDescriptor,
for (FieldDescriptor fieldDescriptor : descriptor.getFields()) { if (fieldDescriptor.getName().equals("__actual_type")) { sClass = sClass.getServicesMap().getSType((String)message.getField(fieldDescriptor)); newInstance = sClass.newInstance(); } else if (fieldDescriptor.getName().startsWith("__")) { if (fieldDescriptor.getName().substring(2).equals(sClass.getSimpleName())) { subTypeMessage = (Message) message.getField(fieldDescriptor); Object val = message.getField(fieldDescriptor); SField field = newInstance.getSClass().getField(fieldDescriptor.getName()); if (field == null) {
Message result = channel.callBlockingMethod(methodDescriptorContainer, message); FieldDescriptor errorMessageField = methodDescriptorContainer.getOutputField("errorMessage"); String errorMessage = (String) result.getField(errorMessageField); if (errorMessage.equals("OKE")) { if (result.getDescriptorForType().getName().equals("VoidResponse")) { } else { FieldDescriptor outputField = methodDescriptorContainer.getOutputField("value"); Object value = result.getField(outputField); if (outputField.isRepeated()) { if (value instanceof Collection) {
for (FieldDescriptor fieldDescriptor : inputType.getFields()) { SParameter sParameter = sMethod.getParameter(i); Object value = request.getField(fieldDescriptor); if (value instanceof EnumValueDescriptor) { EnumValueDescriptor enumValueDescriptor = (EnumValueDescriptor)value;
protected Object getObjectAt(int idx) { FieldDescriptor fieldDescriptor = fieldDescriptors_.get(idx); Object fieldValue = msg_.getField(fieldDescriptor); return protoConv_.fieldToPig(fieldDescriptor, fieldValue); }
@Override public Object getFieldValue(T msg, String fieldName) { Descriptors.FieldDescriptor fd = checkFieldDescriptor(fieldName); return msg.getField(fd); }
Message subMessage = (Message)message.getField( message.getDescriptorForType().findFieldByName("bar")); return subMessage.getField( subMessage.getDescriptorForType().findFieldByName("a"));
@Override public K map(M input) { if (input == null) { throw new IllegalArgumentException("Null inputs not supported by Protos.ExtractKeyFn"); } else if (fd == null) { fd = input.getDescriptorForType().findFieldByName(fieldName); if (fd == null) { throw new IllegalStateException("Could not find field: " + fieldName + " in message: " + input); } } return (K) input.getField(fd); }
@Override public K map(M input) { if (input == null) { throw new IllegalArgumentException("Null inputs not supported by Protos.ExtractKeyFn"); } else if (fd == null) { fd = input.getDescriptorForType().findFieldByName(fieldName); if (fd == null) { throw new IllegalStateException("Could not find field: " + fieldName + " in message: " + input); } } return (K) input.getField(fd); }
@Override SoyValue soyFromProto(Object field) { @SuppressWarnings("unchecked") List<Message> entries = (List<Message>) field; Map<SoyValue, SoyValueProvider> map = Maps.newHashMapWithExpectedSize(entries.size()); for (Message message : entries) { SoyValue key = keyField.soyFromProto(message.getField(keyDescriptor)).resolve(); map.put(key, valueField.soyFromProto(message.getField(valueDescriptor))); } return SoyMapImpl.forProviderMap(map); }
@Override SoyValue soyFromProto(Object field) { @SuppressWarnings("unchecked") List<Message> entries = (List<Message>) field; ImmutableMap.Builder<SoyValue, SoyValueProvider> builder = ImmutableMap.builder(); for (Message message : entries) { SoyValue key = keyField.soyFromProto(message.getField(keyDescriptor)).resolve(); builder.put(key, valueField.soyFromProto(message.getField(valueDescriptor))); } return SoyMapImpl.forProviderMap(builder.build()); }
public static JsonObject protoAsJson(JsonObject template, Message source) { JsonObject body = template.deepCopy(); source.getDescriptorForType().getFields().forEach(item -> body.add(item.getJsonName(), new Gson().toJsonTree(source.getField(item)).getAsJsonPrimitive())); return body; }
@Override public boolean isFieldSet(T msg, String fieldName) { Descriptors.FieldDescriptor fd = checkFieldDescriptor(fieldName); if (fd.isRepeated()) { return !((Collection<?>) msg.getField(fd)).isEmpty(); } return msg.hasField(fd); }
protected List<Object> fetchResultValues(RecordQueryPlan plan, final int fieldNumber, Opener opener, TestHelpers.DangerousConsumer<FDBRecordContext> checkDiscarded) throws Exception { return fetchResultValues(plan, opener, rec -> rec.getField(rec.getDescriptorForType().findFieldByNumber(fieldNumber)), checkDiscarded); }