/* * Copyright 2014 cruxframework.org. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package org.cruxframework.crux.core.server.rest.core; import java.util.ArrayList; import java.util.Collections; import java.util.Date; import java.util.List; import java.util.Locale; import java.util.Map; import org.cruxframework.crux.core.server.rest.util.DateUtil; import org.cruxframework.crux.core.server.rest.util.HttpHeaderNames; import org.cruxframework.crux.core.server.rest.util.LocaleHelper; import org.cruxframework.crux.core.server.rest.util.MediaTypeHelper; import org.cruxframework.crux.core.server.rest.util.WeightedLanguage; public class HttpHeaders { private MultivaluedMap<String, String> requestHeaders; private List<MediaType> acceptableMediaTypes; private MediaType mediaType; private Locale language; private Map<String, Cookie> cookies; private List<Locale> acceptableLanguages; public MultivaluedMap<String, String> getRequestHeaders() { return requestHeaders; } public void setRequestHeaders(MultivaluedMap<String, String> requestHeaders) { this.requestHeaders = requestHeaders; } public List<MediaType> getAcceptableMediaTypes() { return acceptableMediaTypes; } public void setAcceptableMediaTypes(List<MediaType> acceptableMediaTypes) { this.acceptableMediaTypes = acceptableMediaTypes; if (acceptableMediaTypes != null) MediaTypeHelper.sortByWeight(acceptableMediaTypes); } public MediaType getMediaType() { return mediaType; } public void setMediaType(MediaType mediaType) { this.mediaType = mediaType; } public Locale getLanguage() { return language; } public void setLanguage(String language) { if (language == null) return; this.language = LocaleHelper.extractLocale(language); } public void setAcceptableLanguages(List<String> acceptableLanguages) { if (acceptableLanguages == null) { this.acceptableLanguages = null; } else { this.acceptableLanguages = new ArrayList<Locale>(acceptableLanguages.size()); List<WeightedLanguage> languages = new ArrayList<WeightedLanguage>(acceptableLanguages.size()); for (String lang : acceptableLanguages) { languages.add(WeightedLanguage.parse(lang)); } Collections.sort(languages); for (WeightedLanguage lang : languages) this.acceptableLanguages.add(lang.getLocale()); } } public Map<String, Cookie> getCookies() { return cookies; } public void setCookies(Map<String, Cookie> cookies) { this.cookies = cookies; } public List<String> getRequestHeader(String name) { return requestHeaders.get(name); } public List<Locale> getAcceptableLanguages() { if (acceptableLanguages == null) acceptableLanguages = new ArrayList<Locale>(); return acceptableLanguages; } public String getHeaderString(String name) { return requestHeaders.getFirst(name); } public Date getDate() { String date = requestHeaders.getFirst(HttpHeaderNames.DATE); if (date == null) return null; return DateUtil.parseDate(date); } public int getLength() { String cl = requestHeaders.getFirst(HttpHeaderNames.CONTENT_LENGTH); if (cl == null) return -1; return Integer.parseInt(cl); } }