// // ======================================================================== // Copyright (c) 1995-2017 Mort Bay Consulting Pty. Ltd. // ------------------------------------------------------------------------ // All rights reserved. This program and the accompanying materials // are made available under the terms of the Eclipse Public License v1.0 // and Apache License v2.0 which accompanies this distribution. // // The Eclipse Public License is available at // http://www.eclipse.org/legal/epl-v10.html // // The Apache License v2.0 is available at // http://www.opensource.org/licenses/apache2.0.php // // You may elect to redistribute this code under either of these licenses. // ======================================================================== // package org.eclipse.jetty.rewrite.handler; import java.io.IOException; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.eclipse.jetty.util.annotation.Name; /** * Sets the cookie in the response whenever the rule finds a match. * * @see Cookie */ public class CookiePatternRule extends PatternRule { private String _name; private String _value; /* ------------------------------------------------------------ */ public CookiePatternRule() { this(null,null,null); } /* ------------------------------------------------------------ */ public CookiePatternRule(@Name("pattern") String pattern, @Name("name") String name, @Name("value") String value) { super(pattern); _handling = false; _terminating = false; setName(name); setValue(value); } /* ------------------------------------------------------------ */ /** * Assigns the cookie name. * * @param name a <code>String</code> specifying the name of the cookie. */ public void setName(String name) { _name = name; } /* ------------------------------------------------------------ */ /** * Assigns the cookie value. * * @param value a <code>String</code> specifying the value of the cookie * @see Cookie#setValue(String) */ public void setValue(String value) { _value = value; } /* ------------------------------------------------------------ */ /* * (non-Javadoc) * @see org.eclipse.jetty.server.server.handler.rules.RuleBase#apply(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse) */ @Override public String apply(String target, HttpServletRequest request, HttpServletResponse response) throws IOException { // Check that cookie is not already set Cookie[] cookies = request.getCookies(); if (cookies!=null) { for (Cookie cookie:cookies) { if (_name.equals(cookie.getName()) && _value.equals(cookie.getValue())) return target; } } // set it response.addCookie(new Cookie(_name, _value)); return target; } /* ------------------------------------------------------------ */ /** * Returns the cookie contents. */ @Override public String toString() { return super.toString()+"["+_name+","+_value + "]"; } }