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
015package org.apache.tapestry.web;
016
017import java.io.InputStream;
018import java.net.MalformedURLException;
019import java.net.URL;
020import java.util.List;
021import java.util.Set;
022
023import javax.servlet.ServletContext;
024
025import org.apache.commons.logging.Log;
026import org.apache.commons.logging.LogFactory;
027import org.apache.hivemind.util.Defense;
028import org.apache.tapestry.describe.DescriptionReceiver;
029
030/**
031 * Adapts {@link javax.servlet.ServletContext} as {@link org.apache.tapestry.web.WebContext}.
032 * 
033 * @author Howard M. Lewis Ship
034 * @since 4.0
035 */
036public class ServletWebContext implements WebContext
037{
038    private static final Log LOG = LogFactory.getLog(ServletWebContext.class);
039
040    private final ServletContext _servletContext;
041
042    public ServletWebContext(ServletContext context)
043    {
044        Defense.notNull(context, "context");
045
046        _servletContext = context;
047    }
048    
049    public void describeTo(DescriptionReceiver receiver)
050    {
051        receiver.describeAlternate(_servletContext);
052    }
053    
054    public List getAttributeNames()
055    {
056        return WebUtils.toSortedList(_servletContext.getAttributeNames());
057    }
058
059    public Object getAttribute(String name)
060    {
061        return _servletContext.getAttribute(name);
062    }
063
064    public void setAttribute(String name, Object attribute)
065    {
066        if (attribute == null)
067            _servletContext.removeAttribute(name);
068        else
069            _servletContext.setAttribute(name, attribute);
070
071    }
072
073    public URL getResource(String path)
074    {
075        try
076        {
077            return _servletContext.getResource(path);
078        }
079        catch (MalformedURLException ex)
080        {
081            LOG.error(WebMessages.errorGettingResource(path, ex), ex);
082
083            return null;
084        }
085    }
086
087    public String getInitParameterValue(String name)
088    {
089        return _servletContext.getInitParameter(name);
090    }
091
092    public List getInitParameterNames()
093    {
094        return WebUtils.toSortedList(_servletContext.getInitParameterNames());
095    }
096
097    public String getMimeType(String resourcePath)
098    {
099        return _servletContext.getMimeType(resourcePath);
100    }
101
102        public String getRealPath(String path) {
103                return _servletContext.getRealPath(path);
104        }
105
106        public InputStream getResourceAsStream(String path) {
107                return _servletContext.getResourceAsStream(path);
108        }
109
110        public Set getResourcePaths(String path) {
111                return _servletContext.getResourcePaths(path);
112        }
113}