Class FlexibleConneg


public class FlexibleConneg extends StrictConneg
Content negotiation algorithm that flexibly interprets the content negotiation preferences to try to always return a variant even if the client preferences don't exactly match.
Author:
Jerome Louvel
  • Constructor Details

    • FlexibleConneg

      public FlexibleConneg(Request request, MetadataService metadataService)
      Constructor.
      Parameters:
      request - The request including client preferences.
      metadataService - The metadata service used to get default metadata values.
  • Method Details

    • canAdd

      protected <T extends Metadata> boolean canAdd(T metadata, List<T> undesired)
      Returns true if the metadata can be added.
      Type Parameters:
      T -
      Parameters:
      metadata - The metadata to add.
      undesired - The list of prohibited metadata.
      Returns:
      True if the metadata can be added.
    • getCharacterSetPrefs

      protected List<Preference<CharacterSet>> getCharacterSetPrefs()
      Returns the enriched list of character set preferences.
      Overrides:
      getCharacterSetPrefs in class StrictConneg
      Returns:
      The enriched list of character set preferences.
    • getEncodingPrefs

      protected List<Preference<Encoding>> getEncodingPrefs()
      Returns the enriched list of encoding preferences.
      Overrides:
      getEncodingPrefs in class StrictConneg
      Returns:
      The enriched list of encoding preferences.
    • getEnrichedPreferences

      protected <T extends Metadata> List<Preference<T>> getEnrichedPreferences(List<Preference<T>> userPreferences, T defaultValue, T allValue)
      Returns an enriched list of preferences. Contains the user preferences, implied user parent preferences (quality between 0.005 and 0.006), default preference (quality of 0.003), default parent preference (quality of 0.002), all preference (quality of 0.001).

      This necessary to compensate the misconfiguration of many browsers which don't expose all the metadata actually understood by end users.
      Type Parameters:
      T -
      Parameters:
      userPreferences - The user preferences to enrich.
      defaultValue - The default value.
      allValue - The ALL value.
      Returns:
      The enriched user preferences.
    • getLanguagePrefs

      protected List<Preference<Language>> getLanguagePrefs()
      Returns the enriched list of language preferences.
      Overrides:
      getLanguagePrefs in class StrictConneg
      Returns:
      The enriched list of language preferences.
    • getMediaTypePrefs

      protected List<Preference<MediaType>> getMediaTypePrefs()
      Returns the enriched list of media type preferences.
      Overrides:
      getMediaTypePrefs in class StrictConneg
      Returns:
      The enriched list of media type preferences.