Class CoderMetadataSet<T,M extends CoderMetadata<T>>

java.lang.Object
org.eclipse.jetty.websocket.jsr356.metadata.CoderMetadataSet<T,M>
Type Parameters:
T - The type of coder (Decoder or Encoder
M - The metadata for the coder
All Implemented Interfaces:
Iterable<M>
Direct Known Subclasses:
DecoderMetadataSet, EncoderMetadataSet

public abstract class CoderMetadataSet<T,M extends CoderMetadata<T>> extends Object implements Iterable<M>
An durable collection of CoderMetadata.

This is a write-only collection, and cannot be modified once initialized.

  • Field Details

    • metadatas

      private final List<M extends CoderMetadata<T>> metadatas
      Collection of metadatas
    • coders

      private final List<Class<? extends T>> coders
      Collection of declared Coder classes
    • typeMap

      private final Map<Class<?>,Integer> typeMap
      Mapping of supported Type to metadata list index
    • implMap

      private final Map<Class<? extends T>,List<Integer>> implMap
      Mapping of Coder class to list of supported metadata
  • Constructor Details

    • CoderMetadataSet

      protected CoderMetadataSet()
  • Method Details

    • add

      public void add(Class<? extends T> coder)
    • addAll

      public List<M> addAll(Class<? extends T>[] coders)
    • addAll

      public List<M> addAll(List<Class<? extends T>> coders)
    • discover

      protected abstract List<M> discover(Class<? extends T> coder)
      Coder Specific discovery of Metadata for a specific coder.
      Parameters:
      coder - the coder to discover metadata in.
      Returns:
      the list of metadata discovered
      Throws:
      InvalidWebSocketException - if unable to discover some metadata. Sucha as: a duplicate CoderMetadata.getObjectType() encountered, , or if unable to find the concrete generic class reference for the coder, or if the provided coder is not valid per spec.
    • getCoder

      public Class<? extends T> getCoder(Class<?> type)
    • getList

      public List<Class<? extends T>> getList()
    • getMetadataByImplementation

      public List<M> getMetadataByImplementation(Class<? extends T> clazz)
    • getMetadataByType

      public M getMetadataByType(Class<?> type)
    • getMetadataByAssignableType

      private Integer getMetadataByAssignableType(Class<?> type)
    • iterator

      public Iterator<M> iterator()
      Specified by:
      iterator in interface Iterable<T>
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • trackMetadata

      protected void trackMetadata(List<M> metadatas)
    • trackMetadata

      protected void trackMetadata(M metadata)