@GET
@Produces({"application/hocon", "text/x-java-properties", "text/plain"})
@Path("/v2/tables/{tableName}")
@ApiOperation("Displays the configuration of a table")
public Response readTableConfiguration(@PathParam("tableName") String tableName, @Context Request request) {
TableConfig offlineTableConfig =
_resourceManager.getTableConfig(tableName, CommonConstants.Helix.TableType.OFFLINE);
TableConfig realtimeTableConfig =
_resourceManager.getTableConfig(tableName, CommonConstants.Helix.TableType.REALTIME);
Schema tableSchema = _resourceManager.getTableSchema(tableName);
if (offlineTableConfig == null && realtimeTableConfig == null) {
return Response.status(Response.Status.NOT_FOUND).build();
}
CombinedConfig combinedConfig = new CombinedConfig(offlineTableConfig, realtimeTableConfig, tableSchema);
String serializedConfig;
List<Variant> variants =
Variant.mediaTypes(APPLICATION_HOCON, TEXT_JAVA_PROPERTIES, MediaType.TEXT_PLAIN_TYPE).build();
Variant variant = request.selectVariant(variants);
if (variant == null) {
return Response.notAcceptable(variants).build();
} else if (APPLICATION_HOCON.equals(variant.getMediaType()) || MediaType.TEXT_PLAIN_TYPE
.equals(variant.getMediaType())) {
serializedConfig = Serializer.serializeToString(combinedConfig);
} else if (TEXT_JAVA_PROPERTIES.equals(variant.getMediaType())) {
serializedConfig = Serializer.serializeToPropertiesString(combinedConfig);
} else {
return Response.notAcceptable(variants).build();
}
return Response.ok(serializedConfig, variant).header("Content-Disposition", "inline").build();
}