001: /*
002: * CoadunationLib: The coaduntion implementation library.
003: * Copyright (C) 2006 Rift IT Contracting
004: *
005: * This library is free software; you can redistribute it and/or
006: * modify it under the terms of the GNU Lesser General Public
007: * License as published by the Free Software Foundation; either
008: * version 2.1 of the License, or (at your option) any later version.
009: *
010: * This library is distributed in the hope that it will be useful,
011: * but WITHOUT ANY WARRANTY; without even the implied warranty of
012: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
013: * Lesser General Public License for more details.
014: *
015: * You should have received a copy of the GNU Lesser General Public
016: * License along with this library; if not, write to the Free Software
017: * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
018: *
019: * CosNamingContextManager.java
020: *
021: * This class is responsible for managing the naming naming context.
022: */
023:
024: // package path
025: package com.rift.coad.lib.naming.cos;
026:
027: // java imports
028: import java.util.Hashtable;
029:
030: // coadunation imports
031: import com.rift.coad.lib.naming.NamingContextManager;
032: import com.rift.coad.lib.naming.NamingException;
033: import com.rift.coad.lib.naming.OrbManager;
034: import com.rift.coad.lib.thread.CoadunationThreadGroup;
035:
036: /**
037: * This class is responsible for managing the naming naming context.
038: *
039: * @author Brett Chaldecott
040: */
041: public class CosNamingContextManager implements NamingContextManager {
042:
043: // the class singleton, this is not a traditionally clean way of doing this
044: // but since this object is started from another singleton it will not
045: // cause any problems
046: private static CosNamingContextManager singleton = null;
047:
048: // classes private member variables
049: private MasterContext masterContext = null;
050:
051: /**
052: * Creates a new instance of CosNamingContextManager
053: *
054: * @param threadGroup The coadunation thread group.
055: * @param orbManager The reference to the orb manager.
056: * @param instanceId The reference to the instance id of this Coadunation
057: * Server.
058: * @exception CosNamingException
059: */
060: public CosNamingContextManager(CoadunationThreadGroup threadGroup,
061: OrbManager orbManager, String instanceId)
062: throws CosNamingException {
063: try {
064: singleton = this ;
065: masterContext = new MasterContext(new Hashtable(),
066: threadGroup, orbManager, instanceId);
067: } catch (Exception ex) {
068: throw new CosNamingException(
069: "Failed to instanicate the cos naming "
070: + "context manager : " + ex.getMessage());
071: }
072: }
073:
074: /**
075: * The singleton method to retrieve a reference to the cos naming context
076: * manager.
077: *
078: * @return A reference to
079: */
080: public static CosNamingContextManager getInstance()
081: throws CosNamingException {
082: if (singleton == null) {
083: throw new CosNamingException(
084: "The COS naming context manager has "
085: + "not been initialized.");
086: }
087: return singleton;
088: }
089:
090: /**
091: * This method returns the string identifying the context factory.
092: *
093: * @return The string containing the class name of the initial context
094: * factory.
095: */
096: public String getInitialContextFactory() {
097: return "com.rift.coad.lib.naming.cos.URLInitialContextFactory";
098: }
099:
100: /**
101: * The url packages.
102: *
103: * @return Returns the string name for the class responsible for the URL
104: * packages.
105: */
106: public String getURLContextFactory() {
107: return "com.rift.coad.lib.naming.cos.javaURLContextFactory";
108: }
109:
110: /**
111: * This method is called to init the context for a class loader.
112: *
113: * @exception NamingException
114: */
115: public void initContext() throws NamingException {
116: masterContext.initContext();
117: }
118:
119: /**
120: * This method is called to release the context for class loader.
121: */
122: public void releaseContext() {
123: masterContext.releaseContext();
124: }
125:
126: /**
127: * The method to shut down the naming context.
128: */
129: public void shutdown() {
130: masterContext.terminate();
131: }
132:
133: /**
134: * This method returns the current master context
135: */
136: public MasterContext getMasterContext() {
137: return masterContext;
138: }
139: }
|