001: /*
002: * Licensed to the Apache Software Foundation (ASF) under one or more
003: * contributor license agreements. See the NOTICE file distributed with
004: * this work for additional information regarding copyright ownership.
005: * The ASF licenses this file to You under the Apache License, Version 2.0
006: * (the "License"); you may not use this file except in compliance with
007: * the License. You may obtain a copy of the License at
008: *
009: * http://www.apache.org/licenses/LICENSE-2.0
010: *
011: * Unless required by applicable law or agreed to in writing, software
012: * distributed under the License is distributed on an "AS IS" BASIS,
013: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014: * See the License for the specific language governing permissions and
015: * limitations under the License.
016: */
017: package org.apache.pluto.driver.services.container;
018:
019: import java.util.Enumeration;
020: import java.util.HashMap;
021: import java.util.Vector;
022:
023: import javax.portlet.PortalContext;
024: import javax.portlet.PortletMode;
025: import javax.portlet.WindowState;
026:
027: import org.apache.pluto.driver.config.DriverConfiguration;
028:
029: /**
030: * <code>PortalContext</code> implementation for the Pluto Portal Driver.
031: */
032: public class PortalContextImpl implements PortalContext {
033:
034: /**
035: * The <code>DriverConfigurationImpl</code> from which this
036: * <code>PortalContext</code> recieves it's configuration information.
037: */
038: private DriverConfiguration config;
039:
040: /**
041: * Portal information.
042: */
043: private String info = null;
044:
045: /**
046: * Portal Properties
047: */
048: private HashMap properties = new HashMap();
049:
050: /**
051: * Supported PortletModes.
052: */
053: private Vector portletModes;
054:
055: /**
056: * Supported WindowStates.
057: */
058: private Vector windowStates;
059:
060: /**
061: * Default Constructor.
062: * @param config
063: */
064: public PortalContextImpl(DriverConfiguration config) {
065: this .config = config;
066: reset();
067: }
068:
069: /**
070: * Get a dynamic portal property.
071: * @param name
072: * @return the property value associated with the given key.
073: * @throws IllegalArgumentException if the specified name is null.
074: */
075: public String getProperty(String name) {
076: if (name == null) {
077: throw new IllegalArgumentException("Property name == null");
078: }
079:
080: return (String) properties.get(name);
081: }
082:
083: /**
084: * Get an enumeration containing all names of the portal properties.
085: * @return an enumeration of all keys to which properties are bound.
086: */
087: public Enumeration getPropertyNames() {
088: Vector names = new Vector(properties.keySet());
089: return names.elements();
090: }
091:
092: /**
093: * Get an enumeration of all <code>PortletMode</code>s supported by this
094: * portal.
095: * @return enumeration of all supported portlet modes.
096: */
097: public Enumeration getSupportedPortletModes() {
098: if (portletModes == null) {
099: portletModes = new Vector();
100: Enumeration enumeration = new Vector(config
101: .getSupportedPortletModes()).elements();
102: while (enumeration.hasMoreElements()) {
103: portletModes.add(new PortletMode(enumeration
104: .nextElement().toString()));
105: }
106: }
107: return portletModes.elements();
108: }
109:
110: /**
111: * Get an enumeration of all <code>WindowState</code>s supported by this
112: * portal.
113: * @return an enumeration of all supported window states.
114: */
115: public Enumeration getSupportedWindowStates() {
116: if (windowStates == null) {
117: windowStates = new Vector();
118: Enumeration enumeration = new Vector(config
119: .getSupportedWindowStates()).elements();
120: while (enumeration.hasMoreElements()) {
121: windowStates.add(new WindowState(enumeration
122: .nextElement().toString()));
123: }
124: }
125: return windowStates.elements();
126: }
127:
128: /**
129: * Get the portal info for this portal.
130: * @return the portal information for this context.
131: */
132: public String getPortalInfo() {
133: if (info == null) {
134: info = config.getPortalName() + "/"
135: + config.getPortalVersion();
136: }
137: return info;
138: }
139:
140: // additional methods.
141: // methods used container internally to set
142:
143: public void setProperty(String name, String value) {
144: if (name == null) {
145: throw new IllegalArgumentException("Property name == null");
146: }
147:
148: properties.put(name, value);
149: }
150:
151: /**
152: * reset all values to default portlet modes and window states; delete all
153: * properties and set the given portlet information as portlet info string.
154: */
155: public void reset() {
156: info = null;
157: properties.clear();
158: }
159:
160: public DriverConfiguration getDriverConfiguration() {
161: return config;
162: }
163:
164: }
|