001 // Copyright 2005 The Apache Software Foundation
002 //
003 // Licensed under the Apache License, Version 2.0 (the "License");
004 // you may not use this file except in compliance with the License.
005 // You may obtain a copy of the License at
006 //
007 // http://www.apache.org/licenses/LICENSE-2.0
008 //
009 // Unless required by applicable law or agreed to in writing, software
010 // distributed under the License is distributed on an "AS IS" BASIS,
011 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
012 // See the License for the specific language governing permissions and
013 // limitations under the License.
014
015 package org.apache.tapestry.portlet;
016
017 import java.io.InputStream;
018 import java.net.MalformedURLException;
019 import java.net.URL;
020 import java.util.List;
021 import java.util.Set;
022
023 import javax.portlet.PortletContext;
024
025 import org.apache.commons.logging.Log;
026 import org.apache.commons.logging.LogFactory;
027 import org.apache.hivemind.util.Defense;
028 import org.apache.tapestry.describe.DescriptionReceiver;
029 import org.apache.tapestry.web.WebContext;
030 import org.apache.tapestry.web.WebUtils;
031
032 /**
033 * Adapts {@link javax.portlet.PortletContext}as
034 * {@link org.apache.tapestry.web.WebContext}.
035 *
036 * @author Howard M. Lewis Ship
037 * @since 4.0
038 */
039 public class PortletWebContext implements WebContext
040 {
041
042 private static final Log LOG = LogFactory.getLog(PortletWebContext.class);
043
044 private final PortletContext _portletContext;
045
046 public PortletWebContext(PortletContext portletContext)
047 {
048 Defense.notNull(portletContext, "portletContext");
049
050 _portletContext = portletContext;
051 }
052
053 public URL getResource(String path)
054 {
055 try
056 {
057 return _portletContext.getResource(path);
058 }
059 catch (MalformedURLException ex)
060 {
061 LOG.error(PortletMessages.errorGettingResource(path, ex), ex);
062
063 return null;
064 }
065 }
066
067 public List getAttributeNames()
068 {
069 return WebUtils.toSortedList(_portletContext.getAttributeNames());
070 }
071
072 public Object getAttribute(String name)
073 {
074 return _portletContext.getAttribute(name);
075 }
076
077 public void setAttribute(String name, Object attribute)
078 {
079 if (attribute == null)
080 _portletContext.removeAttribute(name);
081 else _portletContext.setAttribute(name, attribute);
082 }
083
084 public List getInitParameterNames()
085 {
086 return WebUtils.toSortedList(_portletContext.getInitParameterNames());
087 }
088
089 public String getInitParameterValue(String name)
090 {
091 return _portletContext.getInitParameter(name);
092 }
093
094 public String getMimeType(String resourcePath)
095 {
096 return _portletContext.getMimeType(resourcePath);
097 }
098
099 public void describeTo(DescriptionReceiver receiver)
100 {
101 receiver.describeAlternate(_portletContext);
102 }
103
104 public String getRealPath(String path)
105 {
106 return _portletContext.getRealPath(path);
107 }
108
109 public InputStream getResourceAsStream(String path)
110 {
111 return _portletContext.getResourceAsStream(path);
112 }
113
114 public Set getResourcePaths(String path)
115 {
116 return _portletContext.getResourcePaths(path);
117 }
118 }