KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > net > sourceforge > groboutils > util > classes > v1 > SingletonStore


1 /*
2  * @(#)SingletonStore.java
3  *
4  * Copyright (C) 2002-2003 Matt Albrecht
5  * groboclown@users.sourceforge.net
6  * http://groboutils.sourceforge.net
7  *
8  * Permission is hereby granted, free of charge, to any person obtaining a
9  * copy of this software and associated documentation files (the "Software"),
10  * to deal in the Software without restriction, including without limitation
11  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
12  * and/or sell copies of the Software, and to permit persons to whom the
13  * Software is furnished to do so, subject to the following conditions:
14  *
15  * The above copyright notice and this permission notice shall be included in
16  * all copies or substantial portions of the Software.
17  *
18  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
21  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
22  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
23  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
24  * DEALINGS IN THE SOFTWARE.
25  */

26
27 package net.sourceforge.groboutils.util.classes.v1;
28
29
30
31 /**
32  * Aids pluggable factories and related classes by being a central repository
33  * for storing a singleton, and creating means to load and change the singleton.
34  *
35  * @author Matt Albrecht <a HREF="mailto:groboclown@users.sourceforge.net">groboclown@users.sourceforge.net</a>
36  * @version $Date: 2003/02/10 22:52:36 $
37  * @since March 30, 2002
38  */

39 public class SingletonStore extends AbstractSingleStore
40 {
41     private Class JavaDoc defaultImplementation;
42     private String JavaDoc sysPropertyKey;
43     
44     
45     /**
46      * Constructor specifying all the parameters for using a singleton in this
47      * framework.
48      *
49      * @param instanceOf singletons must be of this class.
50      * @param defaultImpl the class which will be used if no valid
51      * implementation class can be found.
52      * @param sysPropertyKey the system property key to reference for the name
53      * of the implementation class.
54      */

55     public SingletonStore( Class JavaDoc instanceOf, Class JavaDoc defaultImpl,
56             String JavaDoc sysPropertyKey )
57     {
58         super( instanceOf );
59         this.defaultImplementation = defaultImpl;
60         this.sysPropertyKey = sysPropertyKey;
61     }
62     
63     
64     /**
65      * Sets the inner singleton to the default, which pulls from the system
66      * property key.
67      */

68     public void setDefaultSingleton()
69     {
70         setSingletonFromProperty( this.sysPropertyKey );
71     }
72     
73     
74     /**
75      * Set the singleton to the class specified in the given system
76      * property; if the class is invalid, then the default singleton class will
77      * be used instead.
78      *
79      * @param key the System property to reference for the classname to
80      * instantiate. It is passed to <tt>ClassLoadHelper</tt>
81      * @exception IllegalArgumentException if <tt>key</tt> is <tt>null</tt>.
82      * @see ClassLoadHelper#createObjectFromProperty( String, Class, boolean )
83      */

84     public void setSingletonFromProperty( String JavaDoc key )
85     {
86         setSingleton( createFromProperty( key, this.defaultImplementation ) );
87     }
88 }
89
90
Popular Tags