1 package org.apache.ojb.broker.cache; 2 3 /* Copyright 2002-2005 The Apache Software Foundation 4 * 5 * Licensed under the Apache License, Version 2.0 (the "License"); 6 * you may not use this file except in compliance with the License. 7 * You may obtain a copy of the License at 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * See the License for the specific language governing permissions and 15 * limitations under the License. 16 */ 17 18 import org.apache.ojb.broker.PersistenceBroker; 19 import org.apache.ojb.broker.util.logging.Logger; 20 import org.apache.ojb.broker.util.logging.LoggerFactory; 21 22 /** 23 * Factory for {@link ObjectCache} implementation classes. 24 * Each given {@link org.apache.ojb.broker.PersistenceBroker} 25 * was associated with its own <code>ObjectCache</code> instance 26 * and vice versa. 27 * 28 * @author <a href="mailto:thma@apache.org">Thomas Mahler<a> 29 * @version $Id: ObjectCacheFactory.java,v 1.1 2007-08-24 22:17:29 ewestfal Exp $ 30 */ 31 32 public class ObjectCacheFactory 33 { 34 private Logger log = LoggerFactory.getLogger(ObjectCacheFactory.class); 35 36 private static ObjectCacheFactory singleton = new ObjectCacheFactory(); 37 38 /** 39 * Get the ObjectCacheFactory instance. 40 */ 41 public static ObjectCacheFactory getInstance() 42 { 43 return singleton; 44 } 45 46 private ObjectCacheFactory() 47 { 48 } 49 50 /** 51 * Creates a new {@link ObjectCacheInternal} instance. Each <tt>ObjectCache</tt> 52 * implementation was wrapped by a {@link CacheDistributor} and the distributor 53 * was wrapped by {@link MaterializationCache}. 54 * 55 * @param broker The PB instance to associate with the cache instance 56 */ 57 public MaterializationCache createObjectCache(PersistenceBroker broker) 58 { 59 CacheDistributor cache = null; 60 try 61 { 62 log.info("Start creating new ObjectCache instance"); 63 /* 64 1. 65 if default cache was not found, 66 create an new instance of the default cache specified in the 67 configuration. 68 2. 69 Then instantiate AllocatorObjectCache to handle 70 per connection/ per class caching instances. 71 3. 72 To support intern operations we wrap ObjectCache with an 73 InternalObjectCache implementation 74 */ 75 cache = new CacheDistributor(broker); 76 log.info("Instantiate new " + cache.getClass().getName() + " for PB instance " + broker); 77 } 78 catch(Exception e) 79 { 80 log.error("Error while initiation, please check your configuration" + 81 " files and the used implementation class", e); 82 } 83 log.info("New ObjectCache instance was created"); 84 return new MaterializationCache(cache); 85 } 86 }