/** * {@inheritDoc} */ @Override public void setPropertyValue(Object bean, Object value, FieldMap fieldMap) { if (!(bean instanceof ProtoBeanBuilder)) { throw new MappingException("Expected a ProtoBeanBuilder instance, but got " + bean.getClass().getCanonicalName()); } ProtoBeanBuilder builder = (ProtoBeanBuilder)bean; value = ProtoUtils.wrapEnums(value); if (value != null) { if (getFieldDescriptor().isMapField()) { // Capitalize the first letter of the string; String propertyName = Character.toUpperCase(fieldName.charAt(0)) + fieldName.substring(1); String methodName = String.format("putAll%s", propertyName); try { Method mapSetterMethod = builder.internalProtoBuilder().getClass().getMethod(methodName, Map.class); mapSetterMethod.invoke(builder.internalProtoBuilder(), value); } catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException ex) { throw new MappingException("Could not call map setter method " + methodName, ex); } } else { builder.internalProtoBuilder().setField(getFieldDescriptor(), value); } } else { builder.internalProtoBuilder().clearField(getFieldDescriptor()); } }
private static void eagerlyMergeMessageSetExtension( CodedInputStream input, ExtensionRegistry.ExtensionInfo extension, ExtensionRegistryLite extensionRegistry, Message.Builder builder, FieldSet<FieldDescriptor> extensions) throws IOException { FieldDescriptor field = extension.descriptor; Message value = null; if (hasOriginalMessage(builder, extensions, field)) { Message originalMessage = getOriginalMessage(builder, extensions, field); Message.Builder subBuilder = originalMessage.toBuilder(); input.readMessage(subBuilder, extensionRegistry); value = subBuilder.buildPartial(); } else { value = input.readMessage(extension.defaultInstance.getParserForType(), extensionRegistry); } if (builder != null) { builder.setField(field, value); } else { extensions.setField(field, value); } }
builder.addRepeatedField(field, value); } else { builder.setField(field, value);
public MergeTarget setField(Descriptors.FieldDescriptor field, Object value) { builder.setField(field, value); return this; }
@Override public MergeTarget setField(Descriptors.FieldDescriptor field, Object value) { builder.setField(field, value); return this; }
private void setRequestedState() throws CouldNotPerformException { try (ClosableDataBuilder dataBuilder = unit.getDataBuilder(this)) { // set the responsible action for the service attribute Message.Builder serviceStateBuilder = serviceAttribute.toBuilder(); Descriptors.FieldDescriptor fieldDescriptor = ProtoBufFieldProcessor.getFieldDescriptor(serviceStateBuilder, Service.RESPONSIBLE_ACTION_FIELD_NAME); serviceStateBuilder.setField(fieldDescriptor, actionDescriptionBuilder.build()); // set the updated service attribute as requested state in the unit data builder Services.invokeServiceMethod(serviceDescription.getType(), serviceDescription.getPattern(), ServiceTempus.REQUESTED, dataBuilder.getInternalBuilder(), serviceStateBuilder); } }
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)); }
public static void setFieldSafely(Message.Builder builder, Descriptors.FieldDescriptor fd, List<String> value) throws InvalidProtocolBufferException { Object valueToSet = getValueFor(fd, value); builder.setField(fd, valueToSet); }
@Override protected void populate(V builder, JsonParser parser, DeserializationContext context) throws IOException { FieldDescriptor field = builder.getDescriptorForType().findFieldByName("value"); Object value = readValue(builder, field, null, parser, context); builder.setField(field, value); } }
@Override public Object setStructFieldData(Object data, StructField field, Object fieldValue) { return ((Message) data) .toBuilder() .setField(descriptor.findFieldByName(field.getFieldName()), fieldValue) .build(); }
@Override public void add(Object value) { parentBuilder.setField(fieldDescriptor, value); } };
@Override public void copy(@Nonnull Descriptors.Descriptor recordDescriptor, @Nonnull Message.Builder recordBuilder, @Nonnull IndexEntry kv) { final Descriptors.FieldDescriptor fieldDescriptor = recordDescriptor.findFieldByName(field); switch (fieldDescriptor.getType()) { case MESSAGE: break; default: throw new RecordCoreException("only nested message should be handled by MessageCopier"); } recordBuilder.setField(fieldDescriptor, nested.toRecord(fieldDescriptor.getMessageType(), kv)); }
@Override protected void setUnionField(@Nonnull RecordMetaData metaData, @Nonnull RecordType recordType, @Nonnull Message.Builder unionBuilder, @Nonnull Message record) { Descriptors.FieldDescriptor unionField = metaData.getUnionFieldForRecordType(recordType); unionBuilder.setField(unionField, record); }
Builder builder = response.newBuilderForType(); if (methodDescriptor.getOutputDescriptor().getName().equals("VoidResponse")) { builder.setField(errorMessageField, "OKE"); } else { FieldDescriptor valueField = protocolBuffersMetaData.getMessageDescriptor(response.getDescriptorForType().getName()).getField("value"); if (result != null) { if (valueField.getType().getJavaType() == JavaType.ENUM) { builder.setField(valueField, valueField.getEnumType().findValueByName(result.toString())); } else if (valueField.getType().getJavaType() != JavaType.MESSAGE) { if (result instanceof Date) { builder.setField(valueField, ((Date)result).getTime()); } else { if (valueField.isRepeated()) { builder.setField(valueField, new ArrayList()); } else { builder.setField(valueField, result); builder.setField(valueField, list); } else if (result instanceof Set) { List list = new ArrayList(); builder.setField(valueField, list); } else { builder.setField(valueField, convertSObjectToProtocolBuffersObject((SBase) result, sMethod.getBestReturnType())); builder.setField(errorMessageField, "OKE"); errorMessage.setField(errorMessageField, e.getMessage()); } else {
builder.setField(messageDescriptor.getField("__actual_type"), sClass.getSimpleName()); builder.setField(messageDescriptor.getField("__" + sClass.getSimpleName()), convertSObjectToProtocolBuffersObject(object, sClass)); if (value.getClass().isPrimitive() || value.getClass() == String.class || value.getClass() == Long.class || value.getClass() == Double.class || value.getClass() == Integer.class || value.getClass() == Boolean.class) { builder.setField(fieldDescriptor, value); } else if (value.getClass().isEnum()) { Enum eNum = (Enum) value; int ordinal = eNum.ordinal(); EnumValueDescriptor findValueByNumber = fieldDescriptor.getEnumType().findValueByNumber(ordinal); builder.setField(fieldDescriptor, findValueByNumber); } else if (value.getClass() == Date.class) { builder.setField(fieldDescriptor, ((Date) value).getTime()); } else if (value.getClass() == DataHandler.class) { DataHandler dataHandler = (DataHandler) value; IOUtils.copy(inputStream, byteArrayOutputStream); ByteString byteString = ByteString.copyFrom(byteArrayOutputStream.toByteArray()); builder.setField(fieldDescriptor, byteString); } else if (List.class.isAssignableFrom(value.getClass())) { List list = (List) value; builder.setField(fieldDescriptor, newList); } else { LOGGER.error("Unimplemented: " + fieldDescriptor.getName() + ": " + value);
private static void handleValue(Tokenizer tokenizer, ExtensionRegistry extensionRegistry, Message.Builder builder, FieldDescriptor field, ExtensionRegistry.ExtensionInfo extension, boolean unknown) throws ParseException { Object value = null; if (field.getJavaType() == FieldDescriptor.JavaType.MESSAGE) { value = handleObject(tokenizer, extensionRegistry, builder, field, extension, unknown); } else { value = handlePrimitive(tokenizer, field); } if (value != null) { if (field.isRepeated()) { builder.addRepeatedField(field, value); } else { builder.setField(field, value); } } }
@Override protected void setField(Object r, String n, int pos, Object o, Object state) { Builder b = (Builder)r; FieldDescriptor f = ((FieldDescriptor[])state)[pos]; switch (f.getType()) { case MESSAGE: if (o == null) { b.clearField(f); break; } default: b.setField(f, o); } }
@Override public MergeTarget setField(Descriptors.FieldDescriptor field, Object value) { builder.setField(field, value); return this; }
/** helper method to handle {@code builder} and {@code extensions}. */ private static void setField( Message.Builder builder, FieldSet<FieldDescriptor> extensions, FieldDescriptor field, Object value) { if (builder != null) { builder.setField(field, value); } else { extensions.setField(field, value); } }