001: /*
002: * (C) Copyright 2000 - 2003 Nabh Information Systems, Inc.
003: *
004: * This program is free software; you can redistribute it and/or
005: * modify it under the terms of the GNU General Public License
006: * as published by the Free Software Foundation; either version 2
007: * of the License, or (at your option) any later version.
008: *
009: * This program is distributed in the hope that it will be useful,
010: * but WITHOUT ANY WARRANTY; without even the implied warranty of
011: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
012: * GNU General Public License for more details.
013: *
014: * You should have received a copy of the GNU General Public License
015: * along with this program; if not, write to the Free Software
016: * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
017: *
018: */
019:
020: package com.nabhinc.portal.container;
021:
022: import java.util.Enumeration;
023: import java.util.HashMap;
024: import java.util.Hashtable;
025: import java.util.Locale;
026: import java.util.ResourceBundle;
027:
028: import javax.portlet.PortletConfig;
029: import javax.portlet.PortletContext;
030:
031: import org.apache.commons.logging.Log;
032: import org.apache.commons.logging.LogFactory;
033:
034: /**
035: *
036: *
037: * @author Padmanabh dabke
038: * (c) 2003 Nabh Information Systems, Inc. All Rights Reserved.
039: */
040: public class PortletConfigImpl implements PortletConfig {
041:
042: private Log pciLogger = LogFactory.getLog(this .getClass());
043:
044: /**
045: * Portlet name
046: */
047: protected String pciPortletName = null;
048:
049: /**
050: * Initialization Parameters
051: */
052: protected Hashtable pciInitParams = new Hashtable();
053:
054: /**
055: * Portlet context
056: */
057: protected PortletContextImpl pciPortletContext = null;
058:
059: /**
060: * Portlet metadata defined in-line.
061: */
062: protected Hashtable pciInlineProps = new Hashtable();
063:
064: /**
065: * Default resource bundle name
066: */
067: protected String pciBundleName = null;
068:
069: /**
070: * locale -> Resource bundle map
071: */
072: protected HashMap pciResourceBundleMap = new HashMap();
073:
074: /**
075: * ClassLoader used to load resources
076: */
077: protected ClassLoader pciClassLoader = null;
078:
079: public PortletConfigImpl(PortletContextImpl pContext,
080: String resourceBundleName, Hashtable propsTable,
081: ClassLoader cl) {
082: pciPortletContext = pContext;
083: pciBundleName = resourceBundleName;
084: pciInlineProps = propsTable;
085: pciClassLoader = cl;
086: }
087:
088: /* (non-Javadoc)
089: * @see javax.portlet.PortletConfig#getPortletName()
090: */
091: public String getPortletName() {
092: return pciPortletName;
093: }
094:
095: public void setPortletName(String name) {
096: pciPortletName = name;
097: }
098:
099: /* (non-Javadoc)
100: * @see javax.portlet.PortletConfig#getPortletContext()
101: */
102: public PortletContext getPortletContext() {
103: return pciPortletContext;
104: }
105:
106: public void setPortletContext(PortletContextImpl pContext) {
107: pciPortletContext = pContext;
108: }
109:
110: /* (non-Javadoc)
111: * @see javax.portlet.PortletConfig#getResourceBundle(java.util.Locale)
112: */
113: @SuppressWarnings("unchecked")
114: public ResourceBundle getResourceBundle(Locale locale) {
115:
116: // Check if we have cached the resource bundle
117: ResourceBundle bundle = (ResourceBundle) pciResourceBundleMap
118: .get(locale);
119:
120: if (bundle == null) {
121:
122: if (pciBundleName == null || "".equals(pciBundleName)) {
123: bundle = new PortletResourceBundle(null, pciInlineProps);
124:
125: } else {
126: ResourceBundle rBundle = null;
127: try {
128: if (pciClassLoader == null) {
129: rBundle = ResourceBundle.getBundle(
130: pciBundleName, locale);
131: } else {
132: rBundle = ResourceBundle.getBundle(
133: pciBundleName, locale, pciClassLoader);
134: }
135: } catch (Exception ex) {
136: pciLogger.error(
137: "Failed to find portlet resource bundle named "
138: + pciBundleName + ".", ex);
139: }
140: bundle = new PortletResourceBundle(rBundle,
141: pciInlineProps);
142:
143: }
144: pciResourceBundleMap.put(locale, bundle);
145: }
146: return bundle;
147:
148: }
149:
150: /* (non-Javadoc)
151: * @see javax.portlet.PortletConfig#getInitParameter(java.lang.String)
152: */
153: public String getInitParameter(String name) {
154: return (String) pciInitParams.get(name);
155: }
156:
157: /* (non-Javadoc)
158: * @see javax.portlet.PortletConfig#getInitParameterNames()
159: */
160: public Enumeration getInitParameterNames() {
161: return pciInitParams.keys();
162: }
163:
164: @SuppressWarnings("unchecked")
165: public void putInitParam(String key, String value) {
166: pciInitParams.put(key, value);
167: }
168:
169: }
|