@Override protected Struct toStruct(short version) { Struct struct = new Struct(ApiKeys.ALTER_CONFIGS.responseSchema(version)); struct.set(THROTTLE_TIME_MS, throttleTimeMs); List<Struct> resourceStructs = new ArrayList<>(errors.size()); for (Map.Entry<ConfigResource, ApiError> entry : errors.entrySet()) { Struct resourceStruct = struct.instance(RESOURCES_KEY_NAME); ConfigResource resource = entry.getKey(); entry.getValue().write(resourceStruct); resourceStruct.set(RESOURCE_TYPE_KEY_NAME, resource.type().id()); resourceStruct.set(RESOURCE_NAME_KEY_NAME, resource.name()); resourceStructs.add(resourceStruct); } struct.set(RESOURCES_KEY_NAME, resourceStructs.toArray(new Struct[0])); return struct; }
@Override protected Struct toStruct() { Struct struct = new Struct(ApiKeys.DESCRIBE_CONFIGS.requestSchema(version())); List<Struct> resourceStructs = new ArrayList<>(resources().size()); for (Map.Entry<ConfigResource, Collection<String>> entry : resourceToConfigNames.entrySet()) { ConfigResource resource = entry.getKey(); Struct resourceStruct = struct.instance(RESOURCES_KEY_NAME); resourceStruct.set(RESOURCE_TYPE_KEY_NAME, resource.type().id()); resourceStruct.set(RESOURCE_NAME_KEY_NAME, resource.name()); String[] configNames = entry.getValue() == null ? null : entry.getValue().toArray(new String[0]); resourceStruct.set(CONFIG_NAMES_KEY_NAME, configNames); resourceStructs.add(resourceStruct); } struct.set(RESOURCES_KEY_NAME, resourceStructs.toArray(new Struct[0])); struct.setIfExists(INCLUDE_SYNONYMS, includeSynonyms); return struct; }
@Override protected Struct toStruct() { Struct struct = new Struct(ApiKeys.ALTER_CONFIGS.requestSchema(version())); struct.set(VALIDATE_ONLY_KEY_NAME, validateOnly); List<Struct> resourceStructs = new ArrayList<>(configs.size()); for (Map.Entry<ConfigResource, Config> entry : configs.entrySet()) { Struct resourceStruct = struct.instance(RESOURCES_KEY_NAME); ConfigResource resource = entry.getKey(); resourceStruct.set(RESOURCE_TYPE_KEY_NAME, resource.type().id()); resourceStruct.set(RESOURCE_NAME_KEY_NAME, resource.name()); Config config = entry.getValue(); List<Struct> configEntryStructs = new ArrayList<>(config.entries.size()); for (ConfigEntry configEntry : config.entries) { Struct configEntriesStruct = resourceStruct.instance(CONFIG_ENTRIES_KEY_NAME); configEntriesStruct.set(CONFIG_NAME, configEntry.name); configEntriesStruct.set(CONFIG_VALUE, configEntry.value); configEntryStructs.add(configEntriesStruct); } resourceStruct.set(CONFIG_ENTRIES_KEY_NAME, configEntryStructs.toArray(new Struct[0])); resourceStructs.add(resourceStruct); } struct.set(RESOURCES_KEY_NAME, resourceStructs.toArray(new Struct[0])); return struct; }
resourceStruct.set(RESOURCE_TYPE_KEY_NAME, resource.type().id()); resourceStruct.set(RESOURCE_NAME_KEY_NAME, resource.name());
@Test public void shouldRoundTripEveryType() { Arrays.stream(ConfigResource.Type.values()).forEach(type -> assertEquals(type.toString(), type, ConfigResource.Type.forId(type.id()))); } }