org.restlet.engine.application
Class FlexibleConneg

java.lang.Object
  extended by org.restlet.engine.application.Conneg
      extended by org.restlet.engine.application.StrictConneg
          extended by org.restlet.engine.application.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 Summary
FlexibleConneg(Request request, MetadataService metadataService)
          Constructor.
 
Method Summary
protected
<T extends Metadata>
boolean
canAdd(T metadata, List<T> undesired)
          Returns true if the metadata can be added.
protected  List<Preference<CharacterSet>> getCharacterSetPrefs()
          Returns the enriched list of character set preferences.
protected  List<Preference<Encoding>> getEncodingPrefs()
          Returns the enriched list of encoding preferences.
protected
<T extends Metadata>
List<Preference<T>>
getEnrichedPreferences(List<Preference<T>> userPreferences, T defaultValue, T allValue)
          Returns an enriched list of preferences.
protected  List<Preference<Language>> getLanguagePrefs()
          Returns the enriched list of language preferences.
protected  List<Preference<MediaType>> getMediaTypePrefs()
          Returns the enriched list of media type preferences.
 
Methods inherited from class org.restlet.engine.application.StrictConneg
scoreAnnotation, scoreCharacterSet, scoreEncodings, scoreLanguages, scoreMediaType, scoreMetadata, scoreMetadata, scoreVariant
 
Methods inherited from class org.restlet.engine.application.Conneg
getPreferredVariant, getRequest
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

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,
                                              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.


Copyright © 2005-2013 Restlet.