@Override public void handleResponse(AbstractResponse abstractResponse) { AlterConfigsResponse response = (AlterConfigsResponse) abstractResponse; for (Map.Entry<ConfigResource, KafkaFutureImpl<Void>> entry : futures.entrySet()) { KafkaFutureImpl<Void> future = entry.getValue(); ApiException exception = response.errors().get(entry.getKey()).exception(); if (exception != null) { future.completeExceptionally(exception); } else { future.complete(null); } } }
@Override public void handleResponse(AbstractResponse abstractResponse) { CreatePartitionsResponse response = (CreatePartitionsResponse) abstractResponse; // Check for controller change for (ApiError error : response.errors().values()) { if (error.error() == Errors.NOT_CONTROLLER) { metadataManager.clearController(); metadataManager.requestUpdate(); throw error.exception(); } } for (Map.Entry<String, ApiError> result : response.errors().entrySet()) { KafkaFutureImpl<Void> future = futures.get(result.getKey()); if (result.getValue().isSuccess()) { future.complete(null); } else { future.completeExceptionally(result.getValue().exception()); } } }
@Override void handleResponse(AbstractResponse abstractResponse) { CreateAclsResponse response = (CreateAclsResponse) abstractResponse; List<AclCreationResponse> responses = response.aclCreationResponses(); Iterator<AclCreationResponse> iter = responses.iterator(); for (AclCreation aclCreation : aclCreations) { KafkaFutureImpl<Void> future = futures.get(aclCreation.acl()); if (!iter.hasNext()) { future.completeExceptionally(new UnknownServerException( "The broker reported no creation result for the given ACL.")); } else { AclCreationResponse creation = iter.next(); if (creation.error().isFailure()) { future.completeExceptionally(creation.error().exception()); } else { future.complete(null); } } } }
@Override void handleResponse(AbstractResponse abstractResponse) { DeleteAclsResponse response = (DeleteAclsResponse) abstractResponse; List<AclFilterResponse> responses = response.responses(); Iterator<AclFilterResponse> iter = responses.iterator(); for (AclBindingFilter filter : filterList) { KafkaFutureImpl<FilterResults> future = futures.get(filter); if (!iter.hasNext()) { future.completeExceptionally(new UnknownServerException( "The broker reported no deletion result for the given filter.")); } else { AclFilterResponse deletion = iter.next(); if (deletion.error().isFailure()) { future.completeExceptionally(deletion.error().exception()); } else { List<FilterResult> filterResults = new ArrayList<>(); for (AclDeletionResult deletionResult : deletion.deletions()) { filterResults.add(new FilterResult(deletionResult.acl(), deletionResult.error().exception())); } future.complete(new FilterResults(filterResults)); } } } }
@Override void handleResponse(AbstractResponse abstractResponse) { DescribeAclsResponse response = (DescribeAclsResponse) abstractResponse; if (response.error().isFailure()) { future.completeExceptionally(response.error().exception()); } else { future.complete(response.acls()); } }
@Override void handleResponse(AbstractResponse abstractResponse) { DescribeConfigsResponse response = (DescribeConfigsResponse) abstractResponse; for (Map.Entry<ConfigResource, KafkaFutureImpl<Config>> entry : unifiedRequestFutures.entrySet()) { ConfigResource configResource = entry.getKey(); KafkaFutureImpl<Config> future = entry.getValue(); DescribeConfigsResponse.Config config = response.config(configResource); if (config == null) { future.completeExceptionally(new UnknownServerException( "Malformed broker response: missing config for " + configResource)); continue; } if (config.error().isFailure()) { future.completeExceptionally(config.error().exception()); continue; } List<ConfigEntry> configEntries = new ArrayList<>(); for (DescribeConfigsResponse.ConfigEntry configEntry : config.entries()) { configEntries.add(new ConfigEntry(configEntry.name(), configEntry.value(), configSource(configEntry.source()), configEntry.isSensitive(), configEntry.isReadOnly(), configSynonyms(configEntry))); } future.complete(new Config(configEntries)); } }
@Override void handleResponse(AbstractResponse abstractResponse) { DescribeConfigsResponse response = (DescribeConfigsResponse) abstractResponse; DescribeConfigsResponse.Config config = response.configs().get(resource); if (config == null) { brokerFuture.completeExceptionally(new UnknownServerException( "Malformed broker response: missing config for " + resource)); return; } if (config.error().isFailure()) brokerFuture.completeExceptionally(config.error().exception()); else { List<ConfigEntry> configEntries = new ArrayList<>(); for (DescribeConfigsResponse.ConfigEntry configEntry : config.entries()) { configEntries.add(new ConfigEntry(configEntry.name(), configEntry.value(), configSource(configEntry.source()), configEntry.isSensitive(), configEntry.isReadOnly(), configSynonyms(configEntry))); } brokerFuture.complete(new Config(configEntries)); } }