Class ProtobufferCodec

  • All Implemented Interfaces:
    io.micronaut.http.codec.MediaTypeCodec

    @Singleton
    public class ProtobufferCodec
    extends java.lang.Object
    implements io.micronaut.http.codec.MediaTypeCodec
    Protocol buffers codec.
    • Field Summary

      Fields 
      Modifier and Type Field Description
      static java.util.List<io.micronaut.http.MediaType> DEFAULT_MEDIA_TYPES
      List of default protobuf media types.
      static java.lang.String PROTOBUFFER_ENCODED
      Protobuffer encoded data: application/x-protobuf.
      static io.micronaut.http.MediaType PROTOBUFFER_ENCODED_TYPE
      Protobuffer encoded data: application/x-protobuf.
      static io.micronaut.http.MediaType PROTOBUFFER_ENCODED_TYPE2
      Protobuffer encoded data: application/protobuf.
      static java.lang.String PROTOBUFFER_ENCODED2
      Protobuffer encoded data: application/protobuf.
      static java.lang.String X_PROTOBUF_MESSAGE_HEADER
      This Header is to say the fully qualified name of the message builder to use.
    • Constructor Summary

      Constructors 
      Constructor Description
      ProtobufferCodec​(com.google.protobuf.ExtensionRegistry extensionRegistry)
      Default constructor.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      <T> T decode​(io.micronaut.core.type.Argument<T> type, byte[] bytes)  
      <T> T decode​(io.micronaut.core.type.Argument<T> type, io.micronaut.core.io.buffer.ByteBuffer<?> buffer)  
      <T> T decode​(io.micronaut.core.type.Argument<T> type, java.io.InputStream inputStream)  
      <T> byte[] encode​(T object)  
      <T,​B>
      io.micronaut.core.io.buffer.ByteBuffer<B>
      encode​(T object, io.micronaut.core.io.buffer.ByteBufferFactory<?,​B> allocator)  
      <T> void encode​(T object, java.io.OutputStream outputStream)  
      com.google.protobuf.ExtensionRegistry getExtensionRegistry()  
      java.util.Collection<io.micronaut.http.MediaType> getMediaTypes()  
      java.util.Optional<com.google.protobuf.Message.Builder> getMessageBuilder​(java.lang.Class<? extends com.google.protobuf.Message> clazz)
      Create a new Message.Builder instance for the given class.
      void setMediaTypes​(java.util.List<io.micronaut.http.MediaType> mediaTypes)
      Method to customize media types for this codec.
      boolean supportsType​(java.lang.Class<?> type)  
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • Methods inherited from interface io.micronaut.http.codec.MediaTypeCodec

        decode, decode, decode, decode, decode, encode, encode, encode
    • Field Detail

      • X_PROTOBUF_MESSAGE_HEADER

        public static final java.lang.String X_PROTOBUF_MESSAGE_HEADER
        This Header is to say the fully qualified name of the message builder to use. This is needed when the request is untyped
        See Also:
        Constant Field Values
      • PROTOBUFFER_ENCODED

        public static final java.lang.String PROTOBUFFER_ENCODED
        Protobuffer encoded data: application/x-protobuf.
        See Also:
        Constant Field Values
      • PROTOBUFFER_ENCODED2

        public static final java.lang.String PROTOBUFFER_ENCODED2
        Protobuffer encoded data: application/protobuf.
        See Also:
        Constant Field Values
      • PROTOBUFFER_ENCODED_TYPE

        public static final io.micronaut.http.MediaType PROTOBUFFER_ENCODED_TYPE
        Protobuffer encoded data: application/x-protobuf.
      • PROTOBUFFER_ENCODED_TYPE2

        public static final io.micronaut.http.MediaType PROTOBUFFER_ENCODED_TYPE2
        Protobuffer encoded data: application/protobuf.
      • DEFAULT_MEDIA_TYPES

        public static final java.util.List<io.micronaut.http.MediaType> DEFAULT_MEDIA_TYPES
        List of default protobuf media types.
    • Constructor Detail

      • ProtobufferCodec

        public ProtobufferCodec​(com.google.protobuf.ExtensionRegistry extensionRegistry)
        Default constructor.
        Parameters:
        extensionRegistry - The extension registry
    • Method Detail

      • supportsType

        public boolean supportsType​(java.lang.Class<?> type)
        Specified by:
        supportsType in interface io.micronaut.http.codec.MediaTypeCodec
      • getMediaTypes

        public java.util.Collection<io.micronaut.http.MediaType> getMediaTypes()
        Specified by:
        getMediaTypes in interface io.micronaut.http.codec.MediaTypeCodec
      • setMediaTypes

        public void setMediaTypes​(java.util.List<io.micronaut.http.MediaType> mediaTypes)
        Method to customize media types for this codec.
        Parameters:
        mediaTypes - media types for which need use this codec.
      • decode

        public <T> T decode​(io.micronaut.core.type.Argument<T> type,
                            java.io.InputStream inputStream)
                     throws io.micronaut.http.codec.CodecException
        Specified by:
        decode in interface io.micronaut.http.codec.MediaTypeCodec
        Throws:
        io.micronaut.http.codec.CodecException
      • decode

        public <T> T decode​(io.micronaut.core.type.Argument<T> type,
                            io.micronaut.core.io.buffer.ByteBuffer<?> buffer)
                     throws io.micronaut.http.codec.CodecException
        Specified by:
        decode in interface io.micronaut.http.codec.MediaTypeCodec
        Throws:
        io.micronaut.http.codec.CodecException
      • decode

        public <T> T decode​(io.micronaut.core.type.Argument<T> type,
                            byte[] bytes)
                     throws io.micronaut.http.codec.CodecException
        Specified by:
        decode in interface io.micronaut.http.codec.MediaTypeCodec
        Throws:
        io.micronaut.http.codec.CodecException
      • encode

        public <T> void encode​(T object,
                               java.io.OutputStream outputStream)
                        throws io.micronaut.http.codec.CodecException
        Specified by:
        encode in interface io.micronaut.http.codec.MediaTypeCodec
        Throws:
        io.micronaut.http.codec.CodecException
      • encode

        public <T> byte[] encode​(T object)
                          throws io.micronaut.http.codec.CodecException
        Specified by:
        encode in interface io.micronaut.http.codec.MediaTypeCodec
        Throws:
        io.micronaut.http.codec.CodecException
      • encode

        public <T,​B> io.micronaut.core.io.buffer.ByteBuffer<B> encode​(T object,
                                                                            io.micronaut.core.io.buffer.ByteBufferFactory<?,​B> allocator)
                                                                     throws io.micronaut.http.codec.CodecException
        Specified by:
        encode in interface io.micronaut.http.codec.MediaTypeCodec
        Throws:
        io.micronaut.http.codec.CodecException
      • getExtensionRegistry

        public com.google.protobuf.ExtensionRegistry getExtensionRegistry()
        Returns:
        The extension registry
      • getMessageBuilder

        public java.util.Optional<com.google.protobuf.Message.Builder> getMessageBuilder​(java.lang.Class<? extends com.google.protobuf.Message> clazz)
        Create a new Message.Builder instance for the given class.

        This method uses a ConcurrentHashMap for caching method lookups.

        Parameters:
        clazz - The class.
        Returns:
        The message builder