Class JsonEntityStreamingSupport

    • Constructor Detail

      • JsonEntityStreamingSupport

        public JsonEntityStreamingSupport​(int maxObjectSize,
                                          ContentTypeRange supported,
                                          ContentType contentType,
                                          akka.stream.scaladsl.Flow<akka.util.ByteString,​akka.util.ByteString,​akka.NotUsed> framingRenderer,
                                          int parallelism,
                                          boolean unordered)
      • JsonEntityStreamingSupport

        public JsonEntityStreamingSupport​(int maxObjectSize)
    • Method Detail

      • framingDecoder

        public akka.stream.scaladsl.Flow<akka.util.ByteString,​akka.util.ByteString,​akka.NotUsed> framingDecoder()
        Description copied from class: EntityStreamingSupport
        Read-side, decode incoming framed entity. For example with an incoming JSON array, chunk it up into JSON objects contained within that array.
        Specified by:
        framingDecoder in class EntityStreamingSupport
        Returns:
        (undocumented)
      • framingRenderer

        public akka.stream.scaladsl.Flow<akka.util.ByteString,​akka.util.ByteString,​akka.NotUsed> framingRenderer()
        Description copied from class: EntityStreamingSupport
        Write-side, apply framing to outgoing entity stream.

        Most typical usage will be a variant of Flow[ByteString].intersperse.

        For example for rendering a JSON array one would return Flow[ByteString].intersperse(ByteString("["), ByteString(","), ByteString("]")) and for rendering a new-line separated CSV simply Flow[ByteString].intersperse(ByteString("\n")).

        Specified by:
        framingRenderer in class EntityStreamingSupport
        Returns:
        (undocumented)
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object
      • withContentType

        public JsonEntityStreamingSupport withContentType​(ContentType ct)
        Description copied from class: EntityStreamingSupport
        Write-side, defines what Content-Type the Marshaller should offer and the final Content-Type of the response.

        EntityStreamingSupport traits MUST support re-configuring the offered ContentType. This is due to the need integrating with existing systems which sometimes expect custom Content-Types, however really are just plain JSON or something else internally (perhaps with slight extensions).

        NOTE: Implementations should specialize the return type to their own Type!

        Specified by:
        withContentType in class EntityStreamingSupport
        Parameters:
        ct - (undocumented)
        Returns:
        (undocumented)
      • withFramingRenderer

        public JsonEntityStreamingSupport withFramingRenderer​(akka.stream.scaladsl.Flow<akka.util.ByteString,​akka.util.ByteString,​akka.NotUsed> framingRendererFlow)
      • withFramingRendererFlow

        public JsonEntityStreamingSupport withFramingRendererFlow​(akka.stream.javadsl.Flow<akka.util.ByteString,​akka.util.ByteString,​akka.NotUsed> framingRendererFlow)
        Description copied from class: JsonEntityStreamingSupport
        Java API: Write-side, apply framing to outgoing entity stream.

        Most typical usage will be a variant of Flow[ByteString].intersperse.

        For example for rendering a JSON array one would return Flow[ByteString].intersperse(ByteString("["), ByteString(","), ByteString("]")) and for rendering a new-line separated CSV simply Flow[ByteString].intersperse(ByteString("\n")).

        Specified by:
        withFramingRendererFlow in class JsonEntityStreamingSupport
        Parameters:
        framingRendererFlow - (undocumented)
        Returns:
        (undocumented)
      • withParallelMarshalling

        public JsonEntityStreamingSupport withParallelMarshalling​(int parallelism,
                                                                  boolean unordered)
        Description copied from class: EntityStreamingSupport
        Write-side / read-side, defines parallelism and if ordering should be preserved or not of Source element marshalling.

        Sometimes marshalling multiple elements at once (esp. when elements are not evenly sized, and ordering is not enforced) may yield in higher throughput.

        NOTE: Implementations should specialize the return type to their own Type!

        Specified by:
        withParallelMarshalling in class EntityStreamingSupport
        Parameters:
        parallelism - (undocumented)
        unordered - (undocumented)
        Returns:
        (undocumented)
      • withSupported

        public JsonEntityStreamingSupport withSupported​(ContentTypeRange range)
        Description copied from class: EntityStreamingSupport
        Read-side, allows changing what content types are accepted by this framing.

        EntityStreamingSupport traits MUST support re-configuring the accepted ContentTypeRange.

        This is in order to support a-typical APIs which users still want to communicate with using the provided support trait. Typical examples include APIs which return valid application/json however advertise the content type as being application/javascript or vendor specific content types, which still parse correctly as JSON, CSV or something else that a provided support trait is built for.

        NOTE: Implementations should specialize the return type to their own Type!

        Specified by:
        withSupported in class EntityStreamingSupport
        Parameters:
        range - (undocumented)
        Returns:
        (undocumented)