org.rx.net.http.cookie.cache.IdentifiableCookie Maven / Gradle / Ivy
Show all versions of rxlib Show documentation
/*
* Copyright (C) 2016 Francisco José Montiel Navarro.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.rx.net.http.cookie.cache;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import okhttp3.Cookie;
/**
* This class decorates a Cookie to re-implements equals() and hashcode() methods in order to identify
* the cookie by the following attributes: name, domain, path, secure & hostOnly.
*
* This new behaviour will be useful in determining when an already existing cookie in session must be overwritten.
*/
class IdentifiableCookie {
private Cookie cookie;
static List decorateAll(Collection cookies) {
List identifiableCookies = new ArrayList<>(cookies.size());
for (Cookie cookie : cookies) {
identifiableCookies.add(new IdentifiableCookie(cookie));
}
return identifiableCookies;
}
IdentifiableCookie(Cookie cookie) {
this.cookie = cookie;
}
Cookie getCookie() {
return cookie;
}
@Override
public boolean equals(Object other) {
if (!(other instanceof IdentifiableCookie)) return false;
IdentifiableCookie that = (IdentifiableCookie) other;
return that.cookie.name().equals(this.cookie.name())
&& that.cookie.domain().equals(this.cookie.domain())
&& that.cookie.path().equals(this.cookie.path())
&& that.cookie.secure() == this.cookie.secure()
&& that.cookie.hostOnly() == this.cookie.hostOnly();
}
@Override
public int hashCode() {
int hash = 17;
hash = 31 * hash + cookie.name().hashCode();
hash = 31 * hash + cookie.domain().hashCode();
hash = 31 * hash + cookie.path().hashCode();
hash = 31 * hash + (cookie.secure() ? 0 : 1);
hash = 31 * hash + (cookie.hostOnly() ? 0 : 1);
return hash;
}
}