001/* 002 * (C) Copyright 2006-2007 Nuxeo SAS <http://nuxeo.com> and others 003 * 004 * All rights reserved. This program and the accompanying materials 005 * are made available under the terms of the Eclipse Public License v1.0 006 * which accompanies this distribution, and is available at 007 * http://www.eclipse.org/legal/epl-v10.html 008 * 009 * Contributors: 010 * Jean-Marc Orliaguet, Chalmers 011 * 012 * $Id$ 013 */ 014 015package org.nuxeo.theme.html.servlets; 016 017import java.io.IOException; 018 019import javax.servlet.http.Cookie; 020import javax.servlet.http.HttpServlet; 021import javax.servlet.http.HttpServletRequest; 022import javax.servlet.http.HttpServletResponse; 023 024public final class NegotiationSelector extends HttpServlet { 025 026 private static final long serialVersionUID = 1L; 027 028 @Override 029 protected void doGet(final HttpServletRequest request, final HttpServletResponse response) throws IOException { 030 doPost(request, response); 031 } 032 033 @Override 034 protected void doPost(final HttpServletRequest request, final HttpServletResponse response) throws IOException { 035 036 final String referrer = request.getHeader("referer"); 037 if (referrer == null) { 038 response.getWriter().write("no referrer found"); 039 return; 040 } 041 042 final String engine = request.getParameter("engine"); 043 if (engine != null) { 044 response.addCookie(createCookie("nxthemes.engine", engine)); 045 } 046 047 final String mode = request.getParameter("mode"); 048 if (mode != null) { 049 response.addCookie(createCookie("nxthemes.mode", mode)); 050 } 051 052 final String theme = request.getParameter("theme"); 053 if (theme != null) { 054 response.addCookie(createCookie("nxthemes.theme", theme)); 055 } 056 057 final String perspective = request.getParameter("perspective"); 058 if (perspective != null) { 059 response.addCookie(createCookie("nxthemes.perspective", perspective)); 060 } 061 062 response.sendRedirect(referrer); 063 } 064 065 private Cookie createCookie(final String name, final String value) { 066 final Cookie cookie = new Cookie(name, value); 067 068 // remove the cookie of the value is an empty string 069 if (value.equals("")) { 070 cookie.setMaxAge(0); 071 } 072 cookie.setPath("/"); 073 return cookie; 074 } 075}