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.
    • Field Detail

      • characterSetPrefs

        private volatile java.util.List<Preference<CharacterSet>> characterSetPrefs
        The enriched list of character set preferences.
      • encodingPrefs

        private volatile java.util.List<Preference<Encoding>> encodingPrefs
        The enriched list of encoding preferences.
      • languagePrefs

        private volatile java.util.List<Preference<Language>> languagePrefs
        The enriched list of language preferences.
      • mediaTypePrefs

        private volatile java.util.List<Preference<MediaType>> mediaTypePrefs
        The enriched list of media type preferences.
    • Constructor Detail

      • 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 Detail

      • canAdd

        protected <T extends Metadata> boolean canAdd​(T metadata,
                                                      java.util.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.
      • getEncodingPrefs

        protected java.util.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> java.util.List<Preference<T>> getEnrichedPreferences​(java.util.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 java.util.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 java.util.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.