001    /**
002     * Copyright (C) 2009-2011 the original author or authors.
003     * See the notice.md file distributed with this work for additional
004     * information regarding copyright ownership.
005     *
006     * Licensed under the Apache License, Version 2.0 (the "License");
007     * you may not use this file except in compliance with the License.
008     * You may obtain a copy of the License at
009     *
010     *     http://www.apache.org/licenses/LICENSE-2.0
011     *
012     * Unless required by applicable law or agreed to in writing, software
013     * distributed under the License is distributed on an "AS IS" BASIS,
014     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
015     * See the License for the specific language governing permissions and
016     * limitations under the License.
017     */
018    
019    package org.fusesource.restygwt.client.cache;
020    
021    public interface CacheStorage<T> {
022        public T getResultOrReturnNull(final CacheKey key);
023    
024        public T getResultOrReturnNull(final CacheKey key, final String scope);
025    
026        /**
027         * default put method
028         */
029        public void putResult(final CacheKey key, final T response);
030    
031        /**
032         * put by ident/scope. e.g. to invalidate later on by domain class
033         *
034         * @param key
035         * @param scope
036         * @param response
037         */
038        public void putResult(final CacheKey key, final T response, final String... scope);
039    
040        /**
041         * default delete method
042         */
043        public void remove(final CacheKey key);
044    
045        /**
046         * delete by ident/scope. e.g. to invalidate later on by domain class
047         *
048         * @param key
049         * @param scope
050         * @param response
051         */
052        public void remove(final CacheKey key, final String... scopes);
053    
054        /**
055         * purge the complete cache
056         */
057        public void purge();
058    
059        /**
060         * purge a particular ident, e.g. domain scope
061         */
062        public void purge(final String scope);
063    
064    }