1 /* 2 * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * This code is free software; you can redistribute it and/or modify it 6 * under the terms of the GNU General Public License version 2 only, as 7 * published by the Free Software Foundation. Oracle designates this 8 * particular file as subject to the "Classpath" exception as provided 9 * by Oracle in the LICENSE file that accompanied this code. 10 * 11 * This code is distributed in the hope that it will be useful, but WITHOUT 12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 14 * version 2 for more details (a copy is included in the LICENSE file that 15 * accompanied this code). 16 * 17 * You should have received a copy of the GNU General Public License version 18 * 2 along with this work; if not, write to the Free Software Foundation, 19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 20 * 21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 22 * or visit www.oracle.com if you need additional information or have any 23 * questions. 24 */ 25 26 package java.net; 27 28 import java.util.List; 29 import java.util.Map; 30 31 /** 32 * A CookieStore object represents a storage for cookie. Can store and retrieve 33 * cookies. 34 * 35 * <p>{@link CookieManager} will call {@code CookieStore.add} to save cookies 36 * for every incoming HTTP response, and call {@code CookieStore.get} to 37 * retrieve cookie for every outgoing HTTP request. A CookieStore 38 * is responsible for removing HttpCookie instances which have expired. 39 * 40 * @author Edward Wang 41 * @since 1.6 42 */ 43 public interface CookieStore { 44 /** 45 * Adds one HTTP cookie to the store. This is called for every 46 * incoming HTTP response. 47 * 48 * <p>A cookie to store may or may not be associated with an URI. If it 49 * is not associated with an URI, the cookie's domain and path attribute 50 * will indicate where it comes from. If it is associated with an URI and 51 * its domain and path attribute are not specified, given URI will indicate 52 * where this cookie comes from. 53 * 54 * <p>If a cookie corresponding to the given URI already exists, 55 * then it is replaced with the new one. 56 * 57 * @param uri the uri this cookie associated with. 58 * if {@code null}, this cookie will not be associated 59 * with an URI 60 * @param cookie the cookie to store 61 * 62 * @throws NullPointerException if {@code cookie} is {@code null} 63 * 64 * @see #get 65 * 66 */ add(URI uri, HttpCookie cookie)67 public void add(URI uri, HttpCookie cookie); 68 69 70 /** 71 * Retrieve cookies associated with given URI, or whose domain matches the 72 * given URI. Only cookies that have not expired are returned. 73 * This is called for every outgoing HTTP request. 74 * 75 * @return an immutable list of HttpCookie, 76 * return empty list if no cookies match the given URI 77 * 78 * @param uri the uri associated with the cookies to be returned 79 * 80 * @throws NullPointerException if {@code uri} is {@code null} 81 * 82 * @see #add 83 * 84 */ get(URI uri)85 public List<HttpCookie> get(URI uri); 86 87 88 /** 89 * Get all not-expired cookies in cookie store. 90 * 91 * @return an immutable list of http cookies; 92 * return empty list if there's no http cookie in store 93 */ getCookies()94 public List<HttpCookie> getCookies(); 95 96 97 /** 98 * Get all URIs which identify the cookies in this cookie store. 99 * 100 * @return an immutable list of URIs; 101 * return empty list if no cookie in this cookie store 102 * is associated with an URI 103 */ getURIs()104 public List<URI> getURIs(); 105 106 107 /** 108 * Remove a cookie from store. 109 * 110 * @param uri the uri this cookie associated with. 111 * if {@code null}, the cookie to be removed is not associated 112 * with an URI when added; if not {@code null}, the cookie 113 * to be removed is associated with the given URI when added. 114 * @param cookie the cookie to remove 115 * 116 * @return {@code true} if this store contained the specified cookie 117 * 118 * @throws NullPointerException if {@code cookie} is {@code null} 119 */ remove(URI uri, HttpCookie cookie)120 public boolean remove(URI uri, HttpCookie cookie); 121 122 123 /** 124 * Remove all cookies in this cookie store. 125 * 126 * @return {@code true} if this store changed as a result of the call 127 */ removeAll()128 public boolean removeAll(); 129 } 130