private void processCustomOptions(ProtoContext context, Message sourceMessage, Descriptor owningDescriptor, DynamicMessage options) { ExtensionRegistry extensionRegistry = context.getExtensionRegistry(); Map<String, Field> extensionFields = extensionRegistry.getExtensionFields(sourceMessage); Map<DynamicMessage.Key, String> fullyQualifiedNames = new HashMap<>(); for (Map.Entry<DynamicMessage.Key, DynamicMessage.Value> entry : options.getFields()) { DynamicMessage.Key key = entry.getKey(); DynamicMessage.Value value = entry.getValue(); if (!key.isExtension()) { continue; } String fullyQualifiedName = getFullyQualifiedName(owningDescriptor, extensionFields, key, value); Field extensionField = extensionFields.get(fullyQualifiedName); fullyQualifiedNames.put(key, fullyQualifiedName); checkFieldValue(context, owningDescriptor, extensionField, value); } for (Map.Entry<DynamicMessage.Key, String> entry : fullyQualifiedNames.entrySet()) { options.normalizeName(entry.getKey(), entry.getValue()); } }
private void processCustomOptions(ProtoContext context, Message sourceMessage, Descriptor owningDescriptor, DynamicMessage options) { ExtensionRegistry extensionRegistry = context.getExtensionRegistry(); Map<String, Field> extensionFields = extensionRegistry.getExtensionFields(sourceMessage); Map<DynamicMessage.Key, String> fullyQualifiedNames = new HashMap<>(); for (Map.Entry<DynamicMessage.Key, DynamicMessage.Value> entry : options.getFields()) { DynamicMessage.Key key = entry.getKey(); DynamicMessage.Value value = entry.getValue(); if (!key.isExtension()) { continue; } String fullyQualifiedName = getFullyQualifiedName(owningDescriptor, extensionFields, key, value); Field extensionField = extensionFields.get(fullyQualifiedName); fullyQualifiedNames.put(key, fullyQualifiedName); checkFieldValue(context, owningDescriptor, extensionField, value); } for (Map.Entry<DynamicMessage.Key, String> entry : fullyQualifiedNames.entrySet()) { options.normalizeName(entry.getKey(), entry.getValue()); } }
private void processStandardOptions(ProtoContext context, Message sourceMessage, Descriptor owningDescriptor, DynamicMessage options) { for (Map.Entry<DynamicMessage.Key, DynamicMessage.Value> entry : options.getFields()) { DynamicMessage.Key key = entry.getKey(); DynamicMessage.Value value = entry.getValue(); if (key.isExtension()) { continue; } // check standard option String fieldName = key.getName(); Field field = sourceMessage.getField(fieldName); if (DEFAULT.equals(fieldName)) { // TODO: check value of default option } else { if (field == null) { throw new ParserException(value, "Unknown option: '%s'", fieldName); } checkFieldValue(context, owningDescriptor, field, value); } } }
private void processStandardOptions(ProtoContext context, Message sourceMessage, Descriptor owningDescriptor, DynamicMessage options) { for (Map.Entry<DynamicMessage.Key, DynamicMessage.Value> entry : options.getFields()) { DynamicMessage.Key key = entry.getKey(); DynamicMessage.Value value = entry.getValue(); if (key.isExtension()) { continue; } // check standard option String fieldName = key.getName(); Field field = sourceMessage.getField(fieldName); if (DEFAULT.equals(fieldName)) { // TODO: check value of default option } else { if (field == null) { throw new ParserException(value, "Unknown option: '%s'", fieldName); } checkFieldValue(context, owningDescriptor, field, value); } } }