View Javadoc

1   /*   Open Source Java Caching Service
2   *    Copyright (C) 2002 Frank Karlstrøm
3   *    This library is free software; you can redistribute it and/or
4   *    modify it under the terms of the GNU Lesser General Public
5   *    License as published by the Free Software Foundation; either
6   *    version 2.1 of the License, or (at your option) any later version.
7   *
8   *    This library is distributed in the hope that it will be useful,
9   *    but WITHOUT ANY WARRANTY; without even the implied warranty of
10  *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11  *    Lesser General Public License for more details.
12  *
13  *    You should have received a copy of the GNU Lesser General Public
14  *    License along with this library; if not, write to the Free Software
15  *    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
16  *
17  *    The author can be contacted by email: fjankk@users.sourceforge.net
18  */
19  package javax.util.jcache;
20  
21  import org.fjank.jcache.AttributesImpl;
22  
23  
24  /**
25   * A factory for CacheAccess objects and to the Cache Administrative interface.
26   *
27   * @author Frank Karlstrøm
28   */
29  public abstract class CacheAccessFactory {
30      private static CacheAccessFactory _singleton;
31  
32      /**
33       * Creates a new CacheAccessFactory object.
34       */
35      protected CacheAccessFactory() {
36      }
37      /**
38       * returns the default Attributes
39       * 
40       * @return the default Attributes
41       * @deprecated removed with no replacement.
42       */
43      public Attributes getDefaultAttributes() {
44          return new AttributesImpl();
45      }
46      /**
47       * Obtain a new instance of a CacheAccessFactory. This static method
48       * creates a new factory instance. This method uses the following ordered
49       * lookup procedure to determine the CacheAccessFactory implementation
50       * class to load:
51       * 
52       * <ul>
53       * <li>
54       * Use the javax.util.jcache.CacheAccessFactory system property.
55       * </li>
56       * <li>
57       * FKache default CacheAccessFactory instance.
58       * </li>
59       * </ul>
60       * 
61       *
62       * @return an instance of a CacheAccessFactory.
63       *
64       * @throws IllegalStateException if the implementation is not
65       *         available or cannot be instantiated.
66       */
67      public static synchronized CacheAccessFactory getInstance() {
68          if(_singleton!=null) {
69              return _singleton;
70          }
71          String clazz = System.getProperty("javax.util.jcache.CacheAccessFactory");
72          if (clazz == null) {
73              clazz = "org.fjank.jcache.CacheAccessFactoryImpl";
74          }
75          try {
76              _singleton = (CacheAccessFactory) Class.forName(clazz).newInstance();
77              return _singleton;
78          } catch (InstantiationException e) {
79              throw new IllegalStateException("CacheAccessFactory '" + clazz
80                  + "' could not be instantiated.");
81          } catch (IllegalAccessException e) {
82              throw new IllegalStateException("CacheAccessFactory '" + clazz
83                  + "' did not have a public empty args constructor.");
84          } catch (ClassNotFoundException e) {
85              throw new IllegalStateException("CacheAccessFactory '" + clazz
86                  + "' could not be located.");
87          }
88      }
89  
90      /**
91       * Will create a named region within the cache. This defines a namespace
92       * for storing objects. Gets it default attributes from the properties
93       * file.
94       *
95       * @param name the name for the region. Must be globally unique.
96       *
97       * @throws ObjectExistsException if the name already exists in the cache.
98       * @throws NullObjectNameException if the region is attempted initialized
99       *         with <CODE>null</CODE> as name.
100      * @throws CacheNotAvailableException if the cache is not available, either
101      *         it is not initialized, or it is unavailable.
102      * @deprecated removed auto-generate-region replacement.
103      */
104     public abstract void defineRegion(final String name)
105         throws ObjectExistsException, NullObjectNameException, 
106             CacheNotAvailableException;
107 
108     /**
109      * Will create a named region within the cache. This defines a namespace
110      * for storing objects.
111      *
112      * @param name the name for the region. Must be globally unique.
113      * @param attributes sets the default attributes for objects in the new
114      *        region. If the Attributes is <code>null</code>, default
115      *        attributes will be used.
116      *
117      * @throws ObjectExistsException if the name already exists in the cache.
118      * @throws NullObjectNameException if the region is attempted initialized
119      *         with <CODE>null</CODE> as name.
120      * @throws CacheNotAvailableException if the cache is not available, either
121      *         it is not initialized, or it is unavailable.
122      * @deprecated removed auto-generate-region replacement.
123      */
124     public abstract void defineRegion(final String name,
125         final Attributes attributes)
126         throws ObjectExistsException, NullObjectNameException, 
127             CacheNotAvailableException;
128 
129     /**
130      * Gets the Cache which contains several usefull administraion methods.
131      *
132      * @return A Cache object wich is initialized.
133      *
134      * @throws CacheException if exceptions occur.
135      * @deprecated will be removed with no replacement.
136      */
137     public abstract Cache getCache() throws CacheException;
138 
139     /**
140      * Will get the Cache instance.
141      *
142      * @param b a boolean indicating wether to initialize the Cache or not. if
143      *        already initialized, this is ignored.
144      *
145      * @return the Cache instance.
146      *
147      * @throws CacheException if fatal exceptions occur.
148      * @deprecated will be removed with no replacement.
149      */
150     public abstract Cache getCache(final boolean b) throws CacheException;
151 
152     public abstract CacheMap getMapAccess() throws CacheException;
153 
154     public abstract CacheMap getMapAccess(final String region) throws CacheException;
155 }