sascha@40: package de.intevation.artifactdatabase.rest; sascha@40: sascha@48: import de.intevation.artifacts.CallMeta; sascha@48: import de.intevation.artifacts.PreferredLocale; sascha@48: sascha@40: import org.apache.log4j.Logger; sascha@40: sascha@40: import org.restlet.resource.ServerResource; sascha@40: import org.restlet.resource.ResourceException; sascha@40: sascha@40: import org.restlet.representation.Representation; sascha@40: sascha@48: import org.restlet.data.Language; sascha@48: import org.restlet.data.ClientInfo; sascha@48: import org.restlet.data.Preference; sascha@48: sascha@48: import java.util.List; sascha@48: import java.util.Iterator; sascha@48: sascha@48: import de.intevation.artifactdatabase.DefaultCallMeta; sascha@48: import de.intevation.artifactdatabase.DefaultPreferredLocale; sascha@48: sascha@40: /** sascha@40: * @author Sascha L. Teichmann (sascha.teichmann@intevation) sascha@40: */ sascha@40: public class BaseResource sascha@40: extends ServerResource sascha@40: { sascha@40: private static Logger logger = Logger.getLogger(BaseResource.class); sascha@40: sascha@40: public BaseResource() { sascha@40: } sascha@40: sascha@40: protected Representation post(Representation requestRepr) sascha@40: throws ResourceException sascha@40: { sascha@40: try { sascha@40: return innerPost(requestRepr); sascha@40: } sascha@40: catch (ResourceException re) { sascha@40: throw re; sascha@40: } sascha@40: catch (RuntimeException re) { sascha@40: logger.error(re.getLocalizedMessage(), re); sascha@40: throw re; sascha@40: } sascha@40: } sascha@40: sascha@40: protected Representation innerPost(Representation requestRepr) sascha@40: throws ResourceException sascha@40: { sascha@40: return super.post(requestRepr); sascha@40: } sascha@40: sascha@47: protected Representation get() sascha@40: throws ResourceException sascha@40: { sascha@40: try { sascha@40: return innerGet(); sascha@40: } sascha@40: catch (ResourceException re) { sascha@40: throw re; sascha@40: } sascha@40: catch (RuntimeException re) { sascha@40: logger.error(re.getLocalizedMessage(), re); sascha@40: throw re; sascha@40: } sascha@40: } sascha@40: sascha@40: protected Representation innerGet() sascha@40: throws ResourceException sascha@40: { sascha@40: return super.get(); sascha@40: } sascha@48: sascha@48: protected CallMeta getCallMeta() { sascha@48: ClientInfo clientInfo = getClientInfo(); sascha@48: sascha@48: List> pl = clientInfo.getAcceptedLanguages(); sascha@48: sascha@48: PreferredLocale [] languages = new PreferredLocale[pl.size()]; sascha@48: sascha@48: int index = 0; sascha@48: sascha@48: for (Iterator> iter = pl.iterator(); iter.hasNext();) { sascha@48: Preference p = iter.next(); sascha@48: String lang = p.getMetadata().getName(); sascha@48: float quality = p.getQuality(); sascha@48: languages[index++] = new DefaultPreferredLocale(lang, quality); sascha@48: } sascha@48: sascha@48: return new DefaultCallMeta(languages); sascha@48: } sascha@40: } sascha@40: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8: