All Downloads are FREE. Search and download functionalities are using the official Maven repository.

javax.ws.rs.core.CacheControl Maven / Gradle / Ivy

There is a newer version: 6.0-6
Show newest version
/*
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you 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 javax.ws.rs.core;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.ws.rs.ext.RuntimeDelegate;
import javax.ws.rs.ext.RuntimeDelegate.HeaderDelegate;

public class CacheControl {

    private int                 maxAge          = -1;
    private int                 sMaxAge         = -1;
    private boolean             isPrivate       = false;
    private boolean             noCache         = false;
    private boolean             noStore         = false;
    private boolean             noTransform     = true;
    private boolean             mustRevalidate  = false;
    private boolean             proxyRevalidate = false;
    private Map cacheExtensions = null;
    private List        noCacheFields   = null;
    private List        privateFields   = null;

    public CacheControl() {
        /* do nothing */
    }

    @Override
    public boolean equals(Object obj) {
        if (obj == this) {
            return true;
        }

        /*
         * TODO: should the check be for instanceof or for getClass()? this
         * class is not final so checking instanceof for now.
         */
        if (!(obj instanceof CacheControl)) {
            return false;
        }

        CacheControl other = (CacheControl)obj;

        if (isPrivate != other.isPrivate()) {
            return false;
        }

        if (noCache != other.isNoCache()) {
            return false;
        }

        if (noStore != other.isNoStore()) {
            return false;
        }

        if (noTransform != other.isNoTransform()) {
            return false;
        }

        if (mustRevalidate != other.isMustRevalidate()) {
            return false;
        }

        if (proxyRevalidate != other.isProxyRevalidate()) {
            return false;
        }

        if (maxAge != other.getMaxAge()) {
            return false;
        }

        if (sMaxAge != other.getSMaxAge()) {
            return false;
        }

        if (!getCacheExtension().equals(other.getCacheExtension())) {
            return false;
        }

        if (!getPrivateFields().equals(other.getPrivateFields())) {
            return false;
        }

        if (!getNoCacheFields().equals(other.getNoCacheFields())) {
            return false;
        }

        return true;
    }

    @Override
    public int hashCode() {
        int result = 17;
        result = 31 * result + maxAge;
        result = 31 * result + sMaxAge;
        result = 31 * result + ((isPrivate) ? 1 : 0);
        result = 31 * result + ((noCache) ? 1 : 0);
        result = 31 * result + ((noStore) ? 1 : 0);
        result = 31 * result + ((noTransform) ? 1 : 0);
        result = 31 * result + ((mustRevalidate) ? 1 : 0);
        result = 31 * result + ((proxyRevalidate) ? 1 : 0);
        result = 31 * result + getCacheExtension().hashCode();
        result = 31 * result + getNoCacheFields().hashCode();
        result = 31 * result + getPrivateFields().hashCode();
        return result;
    }

    public Map getCacheExtension() {
        if (cacheExtensions == null) {
            cacheExtensions = new HashMap();
        }
        return cacheExtensions;
    }

    public int getMaxAge() {
        return maxAge;
    }

    public List getNoCacheFields() {
        if (noCacheFields == null) {
            noCacheFields = new ArrayList();
        }
        return noCacheFields;
    }

    public List getPrivateFields() {
        if (privateFields == null) {
            privateFields = new ArrayList();
        }
        return privateFields;
    }

    public int getSMaxAge() {
        return sMaxAge;
    }

    public boolean isMustRevalidate() {
        return mustRevalidate;
    }

    public boolean isNoCache() {
        return noCache;
    }

    public boolean isNoStore() {
        return noStore;
    }

    public boolean isNoTransform() {
        return noTransform;
    }

    public boolean isPrivate() {
        return isPrivate;
    }

    public boolean isProxyRevalidate() {
        return proxyRevalidate;
    }

    public void setMaxAge(int maxAge) {
        this.maxAge = maxAge;
    }

    public void setMustRevalidate(boolean mustRevalidate) {
        this.mustRevalidate = mustRevalidate;
    }

    public void setNoCache(boolean noCache) {
        this.noCache = noCache;
    }

    public void setNoStore(boolean noStore) {
        this.noStore = noStore;
    }

    public void setNoTransform(boolean noTransform) {
        this.noTransform = noTransform;
    }

    public void setPrivate(boolean isPrivate) {
        this.isPrivate = isPrivate;
    }

    public void setProxyRevalidate(boolean proxyRevalidate) {
        this.proxyRevalidate = proxyRevalidate;
    }

    public void setSMaxAge(int sMaxAge) {
        this.sMaxAge = sMaxAge;
    }

    private final static HeaderDelegate headerDelegate =
                                                                         RuntimeDelegate
                                                                             .getInstance()
                                                                             .createHeaderDelegate(CacheControl.class);

    @Override
    public String toString() {
        return headerDelegate.toString(this);
    }

    public static CacheControl valueOf(String value) {
        return headerDelegate.fromString(value);
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy