/** * {@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()); } }
/** Recursively crawls the proto message while clearing each field of type {@link Source}. */ @VisibleForTesting static void stripSourceReferences(Message.Builder msg) { for (FieldDescriptor fieldDesc : msg.getAllFields().keySet()) { if (!fieldDesc.getJavaType().equals(JavaType.MESSAGE)) { continue; } if (fieldDesc.getMessageType().getFullName().equals(Source.getDescriptor().getFullName())) { msg.clearField(fieldDesc); } else { if (fieldDesc.isRepeated()) { int repeatCount = msg.getRepeatedFieldCount(fieldDesc); for (int i = 0; i < repeatCount; i++) { stripSourceReferences(msg.getRepeatedFieldBuilder(fieldDesc, i)); } } else { stripSourceReferences(msg.getFieldBuilder(fieldDesc)); } } } } }
private synchronized Message.Builder removeUnwantedServiceTempus(final Message.Builder builder) { // if unknown keep everything if(serviceTempus == ServiceTempus.UNKNOWN) { return builder; } Descriptors.Descriptor descriptorForType = builder.getDescriptorForType(); descriptorForType.getFields().stream().filter((field) -> (field.getType() == Descriptors.FieldDescriptor.Type.MESSAGE)).filter((field) -> (!fieldsToKeep.contains(field.getName()))).forEachOrdered((field) -> { builder.clearField(field); }); return builder; } }
if (options.replaceMessageFields()) { if (!source.hasField(field)) { destination.clearField(field); } else { destination.setField(field, source.getField(field)); destination.setField(field, source.getField(field)); } else { destination.clearField(field);
configBuilder.clearField(fieldInLocationsToMerge);
configBuilder.clearField(fieldInLocationsToMerge);
/** * {@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()); } }
String serviceAttributeRepresentation = StringProcessor.formatHumanReadable(serviceAttribute.toBuilder().clearField(ProtoBufFieldProcessor.getFieldDescriptor(serviceAttribute, Service.RESPONSIBLE_ACTION_FIELD_NAME)).build().toString()); description = description.replace(ActionDescriptionProcessor.SERVICE_ATTIBUTE_KEY, serviceAttributeRepresentation); actionDescription.setLabel(actionDescription.getLabel().replace(ActionDescriptionProcessor.SERVICE_ATTIBUTE_KEY, serviceAttributeRepresentation));
/** * Processes the deletion of children via a particular child field of the current node's * descriptor (e.g. fields within a message; nested message types within a message; etc). */ @Override public void processDeletedChildren(FieldDescriptor childFieldDesc) { Message.Builder parentBuilder = node(); if (!toBeDeleted().isEmpty()) { if (getContainingFile() != null) { getContainingFile().processDeletedChildren(toBeDeleted()); } List<Message.Builder> keepItems = new ArrayList<>(); int fieldCount = parentBuilder.getRepeatedFieldCount(childFieldDesc); for (int i = 0; i < fieldCount; i++) { Message.Builder messageBuilder = parentBuilder.getRepeatedFieldBuilder(childFieldDesc, i); if (!toBeDeleted().contains(messageBuilder)) { keepItems.add(messageBuilder); } } toBeDeleted().clear(); parentBuilder.clearField(childFieldDesc); for (Message.Builder newChild : keepItems) { parentBuilder.addRepeatedField(childFieldDesc, newChild.build()); } } }
/** * Processes the deletion of children via a particular child field of the current node's * descriptor (e.g. fields within a message; nested message types within a message; etc). */ @Override public void processDeletedChildren(FieldDescriptor childFieldDesc) { Message.Builder parentBuilder = node(); if (!toBeDeleted().isEmpty()) { if (getContainingFile() != null) { getContainingFile().processDeletedChildren(toBeDeleted()); } List<Message.Builder> keepItems = new ArrayList<>(); int fieldCount = parentBuilder.getRepeatedFieldCount(childFieldDesc); for (int i = 0; i < fieldCount; i++) { Message.Builder messageBuilder = parentBuilder.getRepeatedFieldBuilder(childFieldDesc, i); if (!toBeDeleted().contains(messageBuilder)) { keepItems.add(messageBuilder); } } toBeDeleted().clear(); parentBuilder.clearField(childFieldDesc); for (Message.Builder newChild : keepItems) { parentBuilder.addRepeatedField(childFieldDesc, newChild.build()); } } }
/** * Serialize a serviceAttribute and filter a list of fields beforehand. * * @param serviceAttribute the service attribute which is serialized * @param filteredFieldList a list of field names which shall be filtered before serialization * @return a jSon string representation of the service attribute without the filtered fields * @throws CouldNotPerformException if the serialization fails or the service attribute does not contain any context */ public String serialize(final Message serviceAttribute, final List<String> filteredFieldList) throws CouldNotPerformException { final Message.Builder builder = serviceAttribute.toBuilder(); for (String filteredField : filteredFieldList) { FieldDescriptor fieldDescriptor = ProtoBufFieldProcessor.getFieldDescriptor(builder, filteredField); if (!builder.hasField(fieldDescriptor)) { continue; } builder.clearField(fieldDescriptor); } return super.serialize(builder.build()); } }
public static void clearResponsibleAction(final Message.Builder serviceState) throws NotAvailableException { serviceState.clearField(getResponsibleActionField(serviceState)); }
@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); } }
public MergeTarget clearField(Descriptors.FieldDescriptor field) { builder.clearField(field); return this; }
private Builder removeResponsibleActoin(final Builder builder) { Descriptors.Descriptor descriptorForType = builder.getDescriptorForType(); descriptorForType.getFields().stream().filter((field) -> (field.getType() == Descriptors.FieldDescriptor.Type.MESSAGE && field.getName().equals(RESPONSIBLE_ACTION_FIELD))).forEachOrdered((field) -> { builder.clearField(field); }); return builder; }
@Override public IRepeatedFieldValueBuilder<E> clear() { parent.clearField(field); changedIndex = -1; return this; }
public static void setFieldByName(Message.Builder builder, String name, Object value) { FieldDescriptor fieldDescriptor = builder.getDescriptorForType().findFieldByName(name); if (value == null) { builder.clearField(fieldDescriptor); } else { builder.setField(fieldDescriptor, value); } }
@Override public MergeTarget clearField(Descriptors.FieldDescriptor field) { builder.clearField(field); return this; }
@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 clearField(Descriptors.FieldDescriptor field) { builder.clearField(field); return this; }