@Override protected Struct toStruct(short version) { Struct struct = new Struct(ApiKeys.CREATE_PARTITIONS.responseSchema(version)); List<Struct> topicErrors = new ArrayList<>(errors.size()); for (Map.Entry<String, ApiError> error : errors.entrySet()) { Struct errorStruct = struct.instance(TOPIC_ERRORS_KEY_NAME); errorStruct.set(TOPIC_NAME, error.getKey()); error.getValue().write(errorStruct); topicErrors.add(errorStruct); } struct.set(THROTTLE_TIME_MS, throttleTimeMs); struct.set(TOPIC_ERRORS_KEY_NAME, topicErrors.toArray(new Object[topicErrors.size()])); return struct; }
@Override protected Struct toStruct(short version) { Struct struct = new Struct(ApiKeys.CREATE_TOPICS.responseSchema(version)); struct.setIfExists(THROTTLE_TIME_MS, throttleTimeMs); List<Struct> topicErrorsStructs = new ArrayList<>(errors.size()); for (Map.Entry<String, ApiError> topicError : errors.entrySet()) { Struct topicErrorsStruct = struct.instance(TOPIC_ERRORS_KEY_NAME); topicErrorsStruct.set(TOPIC_NAME, topicError.getKey()); topicError.getValue().write(topicErrorsStruct); topicErrorsStructs.add(topicErrorsStruct); } struct.set(TOPIC_ERRORS_KEY_NAME, topicErrorsStructs.toArray()); return struct; }
@Override protected Struct toStruct(short version) { Struct struct = new Struct(ApiKeys.CREATE_ACLS.responseSchema(version)); struct.set(THROTTLE_TIME_MS, throttleTimeMs); List<Struct> responseStructs = new ArrayList<>(); for (AclCreationResponse response : aclCreationResponses) { Struct responseStruct = struct.instance(CREATION_RESPONSES_KEY_NAME); response.error.write(responseStruct); responseStructs.add(responseStruct); } struct.set(CREATION_RESPONSES_KEY_NAME, responseStructs.toArray()); 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; }
@Override protected Struct toStruct(short version) { validate(version); Struct struct = new Struct(ApiKeys.DESCRIBE_ACLS.responseSchema(version)); struct.set(THROTTLE_TIME_MS, throttleTimeMs); error.write(struct); Map<ResourcePattern, List<AccessControlEntry>> resourceToData = new HashMap<>(); for (AclBinding acl : acls) { resourceToData .computeIfAbsent(acl.pattern(), k -> new ArrayList<>()) .add(acl.entry()); } List<Struct> resourceStructs = new ArrayList<>(); for (Map.Entry<ResourcePattern, List<AccessControlEntry>> tuple : resourceToData.entrySet()) { ResourcePattern resource = tuple.getKey(); Struct resourceStruct = struct.instance(RESOURCES_KEY_NAME); RequestUtils.resourcePatternSetStructFields(resource, resourceStruct); List<Struct> dataStructs = new ArrayList<>(); for (AccessControlEntry entry : tuple.getValue()) { Struct dataStruct = resourceStruct.instance(ACLS_KEY_NAME); RequestUtils.aceSetStructFields(entry, dataStruct); dataStructs.add(dataStruct); } resourceStruct.set(ACLS_KEY_NAME, dataStructs.toArray()); resourceStructs.add(resourceStruct); } struct.set(RESOURCES_KEY_NAME, resourceStructs.toArray()); return struct; }
@Override protected Struct toStruct(short version) { validate(version); Struct struct = new Struct(ApiKeys.DELETE_ACLS.responseSchema(version)); struct.set(THROTTLE_TIME_MS, throttleTimeMs); List<Struct> responseStructs = new ArrayList<>(); for (AclFilterResponse response : responses) { Struct responseStruct = struct.instance(FILTER_RESPONSES_KEY_NAME); response.error.write(responseStruct); List<Struct> deletionStructs = new ArrayList<>(); for (AclDeletionResult deletion : response.deletions()) { Struct deletionStruct = responseStruct.instance(MATCHING_ACLS_KEY_NAME); deletion.error.write(deletionStruct); RequestUtils.resourcePatternSetStructFields(deletion.acl().pattern(), deletionStruct); RequestUtils.aceSetStructFields(deletion.acl().entry(), deletionStruct); deletionStructs.add(deletionStruct); } responseStruct.set(MATCHING_ACLS_KEY_NAME, deletionStructs.toArray(new Struct[0])); responseStructs.add(responseStruct); } struct.set(FILTER_RESPONSES_KEY_NAME, responseStructs.toArray()); return struct; }
config.error.write(resourceStruct);