Wed, 31 Dec 2014 06:09:35 +0100
Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.
1 /*
2 * ====================================================================
3 * Licensed to the Apache Software Foundation (ASF) under one
4 * or more contributor license agreements. See the NOTICE file
5 * distributed with this work for additional information
6 * regarding copyright ownership. The ASF licenses this file
7 * to you under the Apache License, Version 2.0 (the
8 * "License"); you may not use this file except in compliance
9 * with the License. You may obtain a copy of the License at
10 *
11 * http://www.apache.org/licenses/LICENSE-2.0
12 *
13 * Unless required by applicable law or agreed to in writing,
14 * software distributed under the License is distributed on an
15 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16 * KIND, either express or implied. See the License for the
17 * specific language governing permissions and limitations
18 * under the License.
19 * ====================================================================
20 *
21 * This software consists of voluntary contributions made by many
22 * individuals on behalf of the Apache Software Foundation. For more
23 * information on the Apache Software Foundation, please see
24 * <http://www.apache.org/>.
25 *
26 */
28 package ch.boye.httpclientandroidlib.impl.cookie;
30 import ch.boye.httpclientandroidlib.annotation.Immutable;
32 import ch.boye.httpclientandroidlib.cookie.ClientCookie;
33 import ch.boye.httpclientandroidlib.cookie.Cookie;
34 import ch.boye.httpclientandroidlib.cookie.CookieAttributeHandler;
35 import ch.boye.httpclientandroidlib.cookie.CookieOrigin;
36 import ch.boye.httpclientandroidlib.cookie.CookieRestrictionViolationException;
37 import ch.boye.httpclientandroidlib.cookie.MalformedCookieException;
38 import ch.boye.httpclientandroidlib.cookie.SetCookie;
39 import ch.boye.httpclientandroidlib.cookie.SetCookie2;
41 /**
42 * <tt>"Version"</tt> cookie attribute handler for RFC 2965 cookie spec.
43 *
44 * @since 4.0
45 */
46 @Immutable
47 public class RFC2965VersionAttributeHandler implements CookieAttributeHandler {
49 public RFC2965VersionAttributeHandler() {
50 super();
51 }
53 /**
54 * Parse cookie version attribute.
55 */
56 public void parse(final SetCookie cookie, final String value)
57 throws MalformedCookieException {
58 if (cookie == null) {
59 throw new IllegalArgumentException("Cookie may not be null");
60 }
61 if (value == null) {
62 throw new MalformedCookieException(
63 "Missing value for version attribute");
64 }
65 int version = -1;
66 try {
67 version = Integer.parseInt(value);
68 } catch (NumberFormatException e) {
69 version = -1;
70 }
71 if (version < 0) {
72 throw new MalformedCookieException("Invalid cookie version.");
73 }
74 cookie.setVersion(version);
75 }
77 /**
78 * validate cookie version attribute. Version attribute is REQUIRED.
79 */
80 public void validate(final Cookie cookie, final CookieOrigin origin)
81 throws MalformedCookieException {
82 if (cookie == null) {
83 throw new IllegalArgumentException("Cookie may not be null");
84 }
85 if (cookie instanceof SetCookie2) {
86 if (cookie instanceof ClientCookie
87 && !((ClientCookie) cookie).containsAttribute(ClientCookie.VERSION_ATTR)) {
88 throw new CookieRestrictionViolationException(
89 "Violates RFC 2965. Version attribute is required.");
90 }
91 }
92 }
94 public boolean match(final Cookie cookie, final CookieOrigin origin) {
95 return true;
96 }
98 }