diff --git a/server/src/main/java/org/apache/druid/server/http/MetadataResource.java b/server/src/main/java/org/apache/druid/server/http/MetadataResource.java index af106fb863fb..da0abe79aeab 100644 --- a/server/src/main/java/org/apache/druid/server/http/MetadataResource.java +++ b/server/src/main/java/org/apache/druid/server/http/MetadataResource.java @@ -19,8 +19,6 @@ package org.apache.druid.server.http; -import com.fasterxml.jackson.core.JsonFactory; -import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.databind.ObjectMapper; import com.google.common.base.Function; import com.google.common.collect.Collections2; @@ -51,14 +49,12 @@ import javax.ws.rs.core.Context; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; -import javax.ws.rs.core.StreamingOutput; import java.util.Collection; import java.util.Collections; import java.util.List; import java.util.Optional; import java.util.Set; import java.util.TreeSet; -import java.util.stream.Collectors; import java.util.stream.Stream; /** @@ -68,9 +64,7 @@ public class MetadataResource { private final MetadataSegmentManager metadataSegmentManager; private final IndexerMetadataStorageCoordinator metadataStorageCoordinator; - private final AuthConfig authConfig; private final AuthorizerMapper authorizerMapper; - private final ObjectMapper jsonMapper; @Inject public MetadataResource( @@ -83,9 +77,7 @@ public MetadataResource( { this.metadataSegmentManager = metadataSegmentManager; this.metadataStorageCoordinator = metadataStorageCoordinator; - this.authConfig = authConfig; this.authorizerMapper = authorizerMapper; - this.jsonMapper = jsonMapper; } @GET @@ -161,15 +153,11 @@ public Response getDatabaseSegments( // If we haven't polled the metadata store yet, use an empty list of datasources. Collection druidDataSources = Optional.ofNullable(metadataSegmentManager.getDataSources()) .orElse(Collections.emptyList()); - + Stream dataSourceStream = druidDataSources.stream(); if (datasources != null && !datasources.isEmpty()) { - druidDataSources = druidDataSources.stream() - .filter(src -> datasources.contains(src.getName())) - .collect(Collectors.toSet()); + dataSourceStream = dataSourceStream.filter(src -> datasources.contains(src.getName())); } - final Stream metadataSegments = druidDataSources - .stream() - .flatMap(t -> t.getSegments().stream()); + final Stream metadataSegments = dataSourceStream.flatMap(t -> t.getSegments().stream()); final Function> raGenerator = segment -> Collections.singletonList( AuthorizationUtils.DATASOURCE_READ_RA_GENERATOR.apply(segment.getDataSource())); @@ -177,20 +165,8 @@ public Response getDatabaseSegments( final Iterable authorizedSegments = AuthorizationUtils.filterAuthorizedResources(req, metadataSegments::iterator, raGenerator, authorizerMapper); - final StreamingOutput stream = outputStream -> { - final JsonFactory jsonFactory = jsonMapper.getFactory(); - try (final JsonGenerator jsonGenerator = jsonFactory.createGenerator(outputStream)) { - jsonGenerator.writeStartArray(); - for (DataSegment ds : authorizedSegments) { - jsonGenerator.writeObject(ds); - jsonGenerator.flush(); - } - jsonGenerator.writeEndArray(); - } - }; - - Response.ResponseBuilder builder = Response.status(Response.Status.OK); - return builder.entity(stream).build(); + final Response.ResponseBuilder builder = Response.status(Response.Status.OK); + return builder.entity(authorizedSegments).build(); } @GET