public DescribeConfigsRequest(Struct struct, short version) { super(ApiKeys.DESCRIBE_CONFIGS, version); Object[] resourcesArray = struct.getArray(RESOURCES_KEY_NAME); resourceToConfigNames = new HashMap<>(resourcesArray.length); for (Object resourceObj : resourcesArray) { Struct resourceStruct = (Struct) resourceObj; ConfigResource.Type resourceType = ConfigResource.Type.forId(resourceStruct.getByte(RESOURCE_TYPE_KEY_NAME)); String resourceName = resourceStruct.getString(RESOURCE_NAME_KEY_NAME); Object[] configNamesArray = resourceStruct.getArray(CONFIG_NAMES_KEY_NAME); List<String> configNames = null; if (configNamesArray != null) { configNames = new ArrayList<>(configNamesArray.length); for (Object configNameObj : configNamesArray) configNames.add((String) configNameObj); } resourceToConfigNames.put(new ConfigResource(resourceType, resourceName), configNames); } this.includeSynonyms = struct.hasField(INCLUDE_SYNONYMS) ? struct.getBoolean(INCLUDE_SYNONYMS) : false; }
resourceStruct.set(RESOURCE_TYPE_KEY_NAME, resource.type().id()); resourceStruct.set(RESOURCE_NAME_KEY_NAME, resource.name());
@Override public int hashCode() { int result = type.hashCode(); result = 31 * result + name.hashCode(); return result; }
ConfigResource.Type resourceType = ConfigResource.Type.forId(resourceStruct.getByte(RESOURCE_TYPE_KEY_NAME)); String resourceName = resourceStruct.getString(RESOURCE_NAME_KEY_NAME); ConfigResource resource = new ConfigResource(resourceType, resourceName);
public AlterConfigsRequest(Struct struct, short version) { super(ApiKeys.ALTER_CONFIGS, version); validateOnly = struct.getBoolean(VALIDATE_ONLY_KEY_NAME); Object[] resourcesArray = struct.getArray(RESOURCES_KEY_NAME); configs = new HashMap<>(resourcesArray.length); for (Object resourcesObj : resourcesArray) { Struct resourcesStruct = (Struct) resourcesObj; ConfigResource.Type resourceType = ConfigResource.Type.forId(resourcesStruct.getByte(RESOURCE_TYPE_KEY_NAME)); String resourceName = resourcesStruct.getString(RESOURCE_NAME_KEY_NAME); ConfigResource resource = new ConfigResource(resourceType, resourceName); Object[] configEntriesArray = resourcesStruct.getArray(CONFIG_ENTRIES_KEY_NAME); List<ConfigEntry> configEntries = new ArrayList<>(configEntriesArray.length); for (Object configEntriesObj: configEntriesArray) { Struct configEntriesStruct = (Struct) configEntriesObj; String configName = configEntriesStruct.getString(CONFIG_NAME); String configValue = configEntriesStruct.getString(CONFIG_VALUE); configEntries.add(new ConfigEntry(configName, configValue)); } Config config = new Config(configEntries); configs.put(resource, config); } }
@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; }
@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(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; }
public AlterConfigsResponse(Struct struct) { throttleTimeMs = struct.get(THROTTLE_TIME_MS); Object[] resourcesArray = struct.getArray(RESOURCES_KEY_NAME); errors = new HashMap<>(resourcesArray.length); for (Object resourceObj : resourcesArray) { Struct resourceStruct = (Struct) resourceObj; ApiError error = new ApiError(resourceStruct); ConfigResource.Type resourceType = ConfigResource.Type.forId(resourceStruct.getByte(RESOURCE_TYPE_KEY_NAME)); String resourceName = resourceStruct.getString(RESOURCE_NAME_KEY_NAME); errors.put(new ConfigResource(resourceType, resourceName), error); } }