001: /**
002: * $Id: PortalDomainContextFactory.java,v 1.2 2005/01/27 17:44:33 ru111118 Exp $
003: * Copyright 2004 Sun Microsystems, Inc. All
004: * rights reserved. Use of this product is subject
005: * to license terms. Federal Acquisitions:
006: * Commercial Software -- Government Users
007: * Subject to Standard License Terms and
008: * Conditions.
009: *
010: * Sun, Sun Microsystems, the Sun logo, and Sun ONE
011: * are trademarks or registered trademarks of Sun Microsystems,
012: * Inc. in the United States and other countries.
013: */package com.sun.portal.admin.common.context;
014:
015: import java.util.Collections;
016: import java.util.HashMap;
017: import java.util.Iterator;
018: import java.util.List;
019: import java.util.Map;
020: import java.util.NoSuchElementException;
021: import java.util.Set;
022: import java.util.logging.Logger;
023:
024: /**
025: * This is the factory class to load and obtain a portal domain context.
026: */
027: public class PortalDomainContextFactory {
028: private static Map contexts = Collections
029: .synchronizedMap(new HashMap());
030:
031: /**
032: * Loads the portal domain context with the given domain ID,
033: * initialized using the given Portal Server configuration context,
034: * list of portal resources, and logger.
035: *
036: * @param domainID ID of the portal domain.
037: * @param configContext the Portal Server configuration context.
038: * @param portalResources the list of manageable resources in portal.
039: * @param logger the logger to use for logging in this domain context.
040: * @exception NullPointerException if domainID, configContext,
041: * portalResources, or logger is
042: * <code>null</code>.
043: * @exception PortalDomainContextException if an error occurred
044: * when loading the portal
045: * domain context.
046: */
047: public static void loadPortalDomainContext(String domainID,
048: PSConfigContext configContext, List portalResources,
049: Logger logger) throws PortalDomainContextException {
050:
051: if (domainID == null) {
052: throw new NullPointerException("domainID is null");
053: }
054:
055: if (configContext == null) {
056: throw new NullPointerException("configContext is null");
057: }
058:
059: if (portalResources == null) {
060: throw new NullPointerException("portalResources is null");
061: }
062:
063: if (logger == null) {
064: throw new NullPointerException("logger is null");
065: }
066:
067: String className = configContext.getDomainDataClass();
068:
069: try {
070: PortalDomainContext context = (PortalDomainContext) Class
071: .forName(className).newInstance();
072:
073: context.init(domainID, configContext, portalResources,
074: logger);
075: contexts.put(domainID, context);
076: } catch (Throwable e) {
077: throw new PortalDomainContextException(e);
078: }
079: }
080:
081: /**
082: * Unloads all the portal domain contexts.
083: */
084: public static void unloadAllPortalDomainContexts() {
085: for (Iterator i = contexts.values().iterator(); i.hasNext();) {
086: ((PortalDomainContext) i.next()).destroy();
087: }
088:
089: contexts.clear();
090: }
091:
092: /**
093: * Returns all the portal domain IDs.
094: *
095: * @return a Set of Strings.
096: */
097: public static Set getAllPortalDomainIDs() {
098: return contexts.keySet();
099: }
100:
101: /**
102: * Returns the context of the portal domain with the given ID.
103: *
104: * @param domainID ID of the portal domain.
105: * @return a PortalDomainContext implementation.
106: * @exception NullPointerException if domainID is <code>null</code>.
107: * @exception NoSuchElementException if there is no portal domain
108: * with the given ID.
109: */
110: public static PortalDomainContext getPortalDomainContext(
111: String domainID) {
112: if (domainID == null) {
113: throw new NullPointerException("domainID is null");
114: }
115:
116: PortalDomainContext context = (PortalDomainContext) contexts
117: .get(domainID);
118:
119: if (context == null) {
120: throw new NoSuchElementException("No such domain: "
121: + domainID);
122: }
123:
124: return context;
125: }
126: }
|