blob: 2ea5247d9df60fa5a54f874f0864a54085d77dec [file] [log] [blame]
/*
* #%L
* Apache Geronimo JAX-RS Spec 2.0
* %%
* Copyright (C) 2003 - 2014 The Apache Software Foundation
* %%
* 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.
* #L%
*/
package javax.ws.rs.core;
import javax.ws.rs.ext.RuntimeDelegate;
import javax.ws.rs.ext.RuntimeDelegate.HeaderDelegate;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class CacheControl {
private static final HeaderDelegate<CacheControl> HEADER_DELEGATE = RuntimeDelegate.getInstance().createHeaderDelegate(CacheControl.class);
private boolean privateFlag;
private List<String> privateFields;
private boolean noCache;
private List<String> noCacheFields;
private boolean noStore;
private boolean noTransform;
private boolean mustRevalidate;
private boolean proxyRevalidate;
private int maxAge = -1;
private int sMaxAge = -1;
private Map<String, String> cacheExtension;
public CacheControl() {
privateFlag = false;
noCache = false;
noStore = false;
noTransform = true;
mustRevalidate = false;
proxyRevalidate = false;
}
public static CacheControl valueOf(final String value) {
return HEADER_DELEGATE.fromString(value);
}
public boolean isMustRevalidate() {
return mustRevalidate;
}
public void setMustRevalidate(final boolean mustRevalidate) {
this.mustRevalidate = mustRevalidate;
}
public boolean isProxyRevalidate() {
return proxyRevalidate;
}
public void setProxyRevalidate(final boolean proxyRevalidate) {
this.proxyRevalidate = proxyRevalidate;
}
public int getMaxAge() {
return maxAge;
}
public void setMaxAge(final int maxAge) {
this.maxAge = maxAge;
}
public int getSMaxAge() {
return sMaxAge;
}
public void setSMaxAge(final int sMaxAge) {
this.sMaxAge = sMaxAge;
}
public List<String> getNoCacheFields() {
if (noCacheFields == null) {
noCacheFields = new ArrayList<String>();
}
return noCacheFields;
}
public void setNoCache(final boolean noCache) {
this.noCache = noCache;
}
public boolean isNoCache() {
return noCache;
}
public boolean isPrivate() {
return privateFlag;
}
public List<String> getPrivateFields() {
if (privateFields == null) {
privateFields = new ArrayList<String>();
}
return privateFields;
}
public void setPrivate(final boolean flag) {
this.privateFlag = flag;
}
public boolean isNoTransform() {
return noTransform;
}
public void setNoTransform(final boolean noTransform) {
this.noTransform = noTransform;
}
public boolean isNoStore() {
return noStore;
}
public void setNoStore(final boolean noStore) {
this.noStore = noStore;
}
public Map<String, String> getCacheExtension() {
if (cacheExtension == null) {
cacheExtension = new HashMap<String, String>();
}
return cacheExtension;
}
@Override
public String toString() {
return HEADER_DELEGATE.toString(this);
}
@Override
public int hashCode() {
int hash = 7;
hash = 41 * hash + (this.privateFlag ? 1 : 0);
hash = 41 * hash + (this.privateFields != null ? this.privateFields.hashCode() : 0);
hash = 41 * hash + (this.noCache ? 1 : 0);
hash = 41 * hash + (this.noCacheFields != null ? this.noCacheFields.hashCode() : 0);
hash = 41 * hash + (this.noStore ? 1 : 0);
hash = 41 * hash + (this.noTransform ? 1 : 0);
hash = 41 * hash + (this.mustRevalidate ? 1 : 0);
hash = 41 * hash + (this.proxyRevalidate ? 1 : 0);
hash = 41 * hash + this.maxAge;
hash = 41 * hash + this.sMaxAge;
hash = 41 * hash + (this.cacheExtension != null ? this.cacheExtension.hashCode() : 0);
return hash;
}
@Override
public boolean equals(final Object obj) {
if (obj == null) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
final CacheControl other = (CacheControl) obj;
if (this.privateFlag != other.privateFlag) {
return false;
}
if (this.privateFields != other.privateFields && (this.privateFields == null || !this.privateFields.equals(other.privateFields))) {
return false;
}
if (this.noCache != other.noCache) {
return false;
}
if (this.noCacheFields != other.noCacheFields && (this.noCacheFields == null || !this.noCacheFields.equals(other.noCacheFields))) {
return false;
}
if (this.noStore != other.noStore) {
return false;
}
if (this.noTransform != other.noTransform) {
return false;
}
if (this.mustRevalidate != other.mustRevalidate) {
return false;
}
if (this.proxyRevalidate != other.proxyRevalidate) {
return false;
}
if (this.maxAge != other.maxAge) {
return false;
}
if (this.sMaxAge != other.sMaxAge) {
return false;
}
if (this.cacheExtension != other.cacheExtension && (this.cacheExtension == null || !this.cacheExtension.equals(other.cacheExtension))) {
return false;
}
return true;
}
}