01: // THIS SOFTWARE IS PROVIDED BY SOFTARIS PTY.LTD. AND OTHER METABOSS
02: // CONTRIBUTORS ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING,
03: // BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
04: // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SOFTARIS PTY.LTD.
05: // OR OTHER METABOSS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
06: // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
07: // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
08: // OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
09: // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
10: // NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
11: // EVEN IF SOFTARIS PTY.LTD. OR OTHER METABOSS CONTRIBUTORS ARE ADVISED OF THE
12: // POSSIBILITY OF SUCH DAMAGE.
13: //
14: // Copyright 2000-2005 © Softaris Pty.Ltd. All Rights Reserved.
15: package com.metaboss.sdlctools.services.codegenerationstylesheet.cachedfacadeimpl;
16:
17: import java.util.Map;
18: import java.util.TreeMap;
19:
20: import com.metaboss.sdlctools.services.codegenerationstylesheet.BSCodeGenerationStylesheet;
21:
22: /** This factory initialises everything once and keeps returning the same instance of the facade */
23: public class BSCodeGenerationStylesheetFactory implements
24: javax.naming.spi.ObjectFactory {
25: private static Object sClassInitialisationSemaphore = new Object();
26: private static boolean sClassInitialised = false;
27: private static BSCodeGenerationStylesheet sCacheFacadeStylesheet = null;
28: private Map sCache = null;
29:
30: /* Returns the instance of the service */
31: public Object getObjectInstance(Object obj, javax.naming.Name name,
32: javax.naming.Context nameCtx,
33: java.util.Hashtable environment) throws Exception {
34: if (!sClassInitialised) {
35: synchronized (sClassInitialisationSemaphore) {
36: if (!sClassInitialised) {
37: javax.naming.Context lContext = new javax.naming.InitialContext();
38: sCache = new TreeMap();
39: sCacheFacadeStylesheet = new BSCodeGenerationStylesheetImpl(
40: sCache);
41: sClassInitialised = true;
42: }
43: }
44: }
45: return sCacheFacadeStylesheet;
46: }
47: }
|