1 /** 2 * Sequoia: Database clustering technology. 3 * Copyright (C) 2002-2004 French National Institute For Research In Computer 4 * Science And Control (INRIA). 5 * Copyright (C) 2005 AmicoSoft, Inc. dba Emic Networks 6 * Contact: sequoia@continuent.org 7 * 8 * Licensed under the Apache License, Version 2.0 (the "License"); 9 * you may not use this file except in compliance with the License. 10 * You may obtain a copy of the License at 11 * 12 * http://www.apache.org/licenses/LICENSE-2.0 13 * 14 * Unless required by applicable law or agreed to in writing, software 15 * distributed under the License is distributed on an "AS IS" BASIS, 16 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 17 * See the License for the specific language governing permissions and 18 * limitations under the License. 19 * 20 * Initial developer(s): Nicolas Modrzyk 21 * Contributor(s): 22 */ 23 24 package org.continuent.sequoia.controller.cache.result.rules; 25 26 import org.continuent.sequoia.common.xml.DatabasesXmlTags; 27 import org.continuent.sequoia.controller.backend.result.ControllerResultSet; 28 import org.continuent.sequoia.controller.cache.result.AbstractResultCache; 29 import org.continuent.sequoia.controller.cache.result.CacheBehavior; 30 import org.continuent.sequoia.controller.cache.result.entries.AbstractResultCacheEntry; 31 import org.continuent.sequoia.controller.cache.result.entries.ResultCacheEntryEager; 32 import org.continuent.sequoia.controller.requests.SelectRequest; 33 34 /** 35 * EagerCaching means that all entries in the cache are always coherent and any 36 * update query (insert,delete,update,...) will automatically invalidate the 37 * corresponding entry in the cache. This was the previous cache behavior for 38 * all queries 39 * 40 * @author <a HREF="mailto:Nicolas.Modrzyk@inrialpes.fr">Nicolas Modrzyk </a> 41 * @version 1.0 42 */ 43 public class EagerCaching extends CacheBehavior 44 { 45 private long timeout; 46 47 /** 48 * Define this CacheBehavior as EagerCaching 49 * 50 * @param timeout Timeout for this cache entry 51 */ 52 public EagerCaching(long timeout) 53 { 54 this.timeout = timeout; 55 } 56 57 /** 58 * @see org.continuent.sequoia.controller.cache.result.CacheBehavior#getCacheEntry(SelectRequest, 59 * ControllerResultSet, AbstractResultCache) 60 */ 61 public AbstractResultCacheEntry getCacheEntry(SelectRequest sqlQuery, 62 ControllerResultSet result, AbstractResultCache cache) 63 { 64 return new ResultCacheEntryEager(cache, sqlQuery, result, timeout); 65 } 66 67 /** 68 * @see org.continuent.sequoia.common.xml.XmlComponent#getXml() 69 */ 70 public String getXml() 71 { 72 return "<" + DatabasesXmlTags.ELT_EagerCaching + "/>"; 73 } 74 75 }