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 {@link org.apache.tapestry.web.WebContext}.
034     * 
035     * @author Howard M. Lewis Ship
036     * @since 4.0
037     */
038    public class PortletWebContext implements WebContext
039    {
040        private static final Log LOG = LogFactory.getLog(PortletWebContext.class);
041    
042        private final PortletContext _portletContext;
043    
044        public PortletWebContext(PortletContext portletContext)
045        {
046            Defense.notNull(portletContext, "portletContext");
047    
048            _portletContext = portletContext;
049        }
050    
051        public URL getResource(String path)
052        {
053            try
054            {
055                return _portletContext.getResource(path);
056            }
057            catch (MalformedURLException ex)
058            {
059                LOG.error(PortletMessages.errorGettingResource(path, ex), ex);
060    
061                return null;
062            }
063        }
064    
065        public List getAttributeNames()
066        {
067            return WebUtils.toSortedList(_portletContext.getAttributeNames());
068        }
069    
070        public Object getAttribute(String name)
071        {
072            return _portletContext.getAttribute(name);
073        }
074    
075        public void setAttribute(String name, Object attribute)
076        {
077            if (attribute == null)
078                _portletContext.removeAttribute(name);
079            else
080                _portletContext.setAttribute(name, attribute);
081        }
082    
083        public List getInitParameterNames()
084        {
085            return WebUtils.toSortedList(_portletContext.getInitParameterNames());
086        }
087    
088        public String getInitParameterValue(String name)
089        {
090            return _portletContext.getInitParameter(name);
091        }
092    
093        public String getMimeType(String resourcePath)
094        {
095            return _portletContext.getMimeType(resourcePath);
096        }
097    
098        public void describeTo(DescriptionReceiver receiver)
099        {
100            receiver.describeAlternate(_portletContext);
101        }
102    
103            public String getRealPath(String path) {
104                    return _portletContext.getRealPath(path);
105            }
106    
107            public InputStream getResourceAsStream(String path) {
108                    return _portletContext.getResourceAsStream(path);
109            }
110    
111            public Set getResourcePaths(String path) {
112                    return _portletContext.getResourcePaths(path);
113            }
114    }