/** * Sets the character set preferences. Note that when used with HTTP * connectors, this property maps to the "Accept-Charset" header. * * @param acceptedCharacterSets * The character set preferences. */ public void setAcceptedCharacterSets( List<Preference<CharacterSet>> acceptedCharacterSets) { synchronized (this) { List<Preference<CharacterSet>> ac = getAcceptedCharacterSets(); ac.clear(); ac.addAll(acceptedCharacterSets); } }
/** * Returns the preferred character set among a list of supported ones, based * on the client preferences. * * @param supported * The supported character sets. * @return The preferred character set. */ public CharacterSet getPreferredCharacterSet(List<CharacterSet> supported) { return getPreferredMetadata(supported, getAcceptedCharacterSets()); }
/** * Returns the enriched list of character set preferences. * * @return The enriched list of character set preferences. */ protected List<Preference<CharacterSet>> getCharacterSetPrefs() { return getRequest().getClientInfo().getAcceptedCharacterSets(); }
/** * Parses character set preferences from a header. * * @param acceptCharsetHeader * The header to parse. * @param clientInfo * The client info to update. */ @SuppressWarnings({ "unchecked", "rawtypes" }) public static void addCharacterSets(String acceptCharsetHeader, ClientInfo clientInfo) { if (acceptCharsetHeader != null) { // Implementation according to // http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.2 if (acceptCharsetHeader.length() == 0) { clientInfo.getAcceptedCharacterSets().add( new Preference<CharacterSet>(CharacterSet.ISO_8859_1)); } else { PreferenceReader pr = new PreferenceReader( PreferenceReader.TYPE_CHARACTER_SET, acceptCharsetHeader); pr.addValues(clientInfo.getAcceptedCharacterSets()); } } else { clientInfo.getAcceptedCharacterSets().add( new Preference(CharacterSet.ALL)); } }
/** * Updates the client info with the given metadata. It clears existing * preferences for the same type of metadata if necessary. * * @param clientInfo * The client info to update. * @param metadata * The metadata to use. */ private void updateMetadata(ClientInfo clientInfo, Metadata metadata) { if (metadata != null) { if (metadata instanceof CharacterSet) { clientInfo.getAcceptedCharacterSets().clear(); clientInfo.getAcceptedCharacterSets().add( new Preference<CharacterSet>((CharacterSet) metadata)); } else if (metadata instanceof Encoding) { clientInfo.getAcceptedEncodings().clear(); clientInfo.getAcceptedEncodings().add( new Preference<Encoding>((Encoding) metadata)); } else if (metadata instanceof Language) { clientInfo.getAcceptedLanguages().clear(); clientInfo.getAcceptedLanguages().add( new Preference<Language>((Language) metadata)); } else if (metadata instanceof MediaType) { clientInfo.getAcceptedMediaTypes().clear(); clientInfo.getAcceptedMediaTypes().add( new Preference<MediaType>((MediaType) metadata)); } } }
/** * Updates the client preferences to accept the given metadata (media types, * character sets, etc.) with a given quality in addition to existing ones. * * @param metadata * The metadata to accept. * @param quality * The quality to set. */ public void accept(Metadata metadata, float quality) { if (metadata instanceof MediaType) { getAcceptedMediaTypes().add( new Preference<MediaType>((MediaType) metadata, quality)); } else if (metadata instanceof Language) { getAcceptedLanguages().add( new Preference<Language>((Language) metadata, quality)); } else if (metadata instanceof Encoding) { getAcceptedEncodings().add( new Preference<Encoding>((Encoding) metadata, quality)); } else { getAcceptedCharacterSets().add( new Preference<CharacterSet>((CharacterSet) metadata, quality)); } }
/** * Creates a {@link ClientInfo} instance with preferences matching exactly * the current variant. * * @return The new {@link ClientInfo} instance. */ public ClientInfo createClientInfo() { ClientInfo result = new ClientInfo(); if (getCharacterSet() != null) { result.getAcceptedCharacterSets().add( new Preference<CharacterSet>(getCharacterSet())); } if (getEncodings() != null) { for (Encoding encoding : getEncodings()) { result.getAcceptedEncodings().add( new Preference<Encoding>(encoding)); } } if (getLanguages() != null) { for (Language language : getLanguages()) { result.getAcceptedLanguages().add( new Preference<Language>(language)); } } if (getMediaType() != null) { result.getAcceptedMediaTypes().add( new Preference<MediaType>(getMediaType())); } return result; }
.getDefaultMediaType(), MediaType.ALL); this.characterSetPrefs = getEnrichedPreferences( clientInfo.getAcceptedCharacterSets(), (metadataService == null) ? null : metadataService .getDefaultCharacterSet(), CharacterSet.ALL);
clientInfo = new ClientInfo(); for (Preference<CharacterSet> o : rci.getAcceptedCharacterSets()) { clientInfo.getAcceptedCharacterSets().add(o);
if ((request.getClientInfo().getAcceptedCharacterSets() .isEmpty()) && (request.getClientInfo().getAcceptedEncodings()
if ((request.getClientInfo().getAcceptedCharacterSets().isEmpty()) && (request.getClientInfo().getAcceptedEncodings() .isEmpty())
if (!clientInfo.getAcceptedCharacterSets().isEmpty()) { addHeader(HEADER_ACCEPT_CHARSET, PreferenceWriter.write(clientInfo .getAcceptedCharacterSets()), headers);