Coverage Report - org.seasar.teeda.core.context.servlet.ServletExternalContextImpl
 
Classes in this File Line Coverage Branch Coverage Complexity
ServletExternalContextImpl
37%
53/143
32%
9/28
1.462
 
 1  
 /*
 2  
  * Copyright 2004-2011 the Seasar Foundation and the Others.
 3  
  *
 4  
  * Licensed under the Apache License, Version 2.0 (the "License");
 5  
  * you may not use this file except in compliance with the License.
 6  
  * You may obtain a copy of the License at
 7  
  *
 8  
  *     http://www.apache.org/licenses/LICENSE-2.0
 9  
  *
 10  
  * Unless required by applicable law or agreed to in writing, software
 11  
  * distributed under the License is distributed on an "AS IS" BASIS,
 12  
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
 13  
  * either express or implied. See the License for the specific language
 14  
  * governing permissions and limitations under the License.
 15  
  */
 16  
 package org.seasar.teeda.core.context.servlet;
 17  
 
 18  
 import java.io.IOException;
 19  
 import java.io.InputStream;
 20  
 import java.net.MalformedURLException;
 21  
 import java.net.URL;
 22  
 import java.security.Principal;
 23  
 import java.util.Enumeration;
 24  
 import java.util.Iterator;
 25  
 import java.util.Locale;
 26  
 import java.util.Map;
 27  
 import java.util.Set;
 28  
 
 29  
 import javax.faces.context.ExternalContext;
 30  
 import javax.faces.internal.EncodeUrlCustomizer;
 31  
 import javax.servlet.ServletContext;
 32  
 import javax.servlet.ServletRequest;
 33  
 import javax.servlet.ServletResponse;
 34  
 import javax.servlet.http.HttpServletRequest;
 35  
 import javax.servlet.http.HttpServletResponse;
 36  
 
 37  
 import org.seasar.framework.container.external.servlet.CookieMap;
 38  
 import org.seasar.framework.container.external.servlet.HttpSessionMap;
 39  
 import org.seasar.framework.container.external.servlet.ServletApplicationMap;
 40  
 import org.seasar.framework.container.external.servlet.ServletInitParameterMap;
 41  
 import org.seasar.framework.container.external.servlet.ServletRequestHeaderMap;
 42  
 import org.seasar.framework.container.external.servlet.ServletRequestHeaderValuesMap;
 43  
 import org.seasar.framework.container.external.servlet.ServletRequestMap;
 44  
 import org.seasar.framework.container.external.servlet.ServletRequestParameterMap;
 45  
 import org.seasar.framework.container.external.servlet.ServletRequestParameterValuesMap;
 46  
 import org.seasar.framework.log.Logger;
 47  
 import org.seasar.framework.util.AssertionUtil;
 48  
 import org.seasar.teeda.core.context.Releaseable;
 49  
 import org.seasar.teeda.core.scope.impl.DispatchScopeFactory;
 50  
 import org.seasar.teeda.core.util.ServletExternalContextUtil;
 51  
 
 52  
 /**
 53  
  * @author shot
 54  
  */
 55  
 public class ServletExternalContextImpl extends ExternalContext implements
 56  
         Releaseable {
 57  
 
 58  1
     private static Logger logger = Logger
 59  1
             .getLogger(ServletExternalContextImpl.class);
 60  
 
 61  
     private ServletContext context;
 62  
 
 63  
     private ServletRequest request;
 64  
 
 65  
     private ServletResponse response;
 66  
 
 67  14
     private String servletPath = null;
 68  
 
 69  14
     private String pathInfo = null;
 70  
 
 71  14
     private boolean isHttpServletRequest = false;
 72  
 
 73  14
     private boolean isHttpServletResponse = false;
 74  
 
 75  14
     private Map applicationMap = null;
 76  
 
 77  14
     private Map initParameterMap = null;
 78  
 
 79  14
     private Map sessionMap = null;
 80  
 
 81  14
     private Map requestCookieMap = null;
 82  
 
 83  14
     private Map requestParameterMap = null;
 84  
 
 85  14
     private Map requestParameterValuesMap = null;
 86  
 
 87  14
     private Map requestMap = null;
 88  
 
 89  14
     private Map requestHeaderMap = null;
 90  
 
 91  14
     private Map requestHeaderValuesMap = null;
 92  
 
 93  14
     private EncodeUrlCustomizer customizer = null;
 94  
 
 95  
     public ServletExternalContextImpl(final ServletContext context,
 96  14
             final ServletRequest request, final ServletResponse response) {
 97  14
         this.context = context;
 98  14
         this.request = request;
 99  14
         this.response = response;
 100  14
         this.isHttpServletRequest = ServletExternalContextUtil
 101  
                 .isHttpServletRequest(this.request);
 102  14
         this.isHttpServletResponse = ServletExternalContextUtil
 103  
                 .isHttpServletResponse(this.response);
 104  14
         ServletExternalContextUtil.setCharacterEncoding(this.request);
 105  14
         if (isHttpServletRequest) {
 106  12
             HttpServletRequest httpServletRequest = (HttpServletRequest) request;
 107  12
             this.servletPath = httpServletRequest.getServletPath();
 108  12
             this.pathInfo = httpServletRequest.getPathInfo();
 109  
         }
 110  14
     }
 111  
 
 112  
     public void dispatch(String path) throws IOException {
 113  
         try {
 114  0
             ServletExternalContextUtil.dispatch(path, request, response);
 115  
         } finally {
 116  0
             DispatchScopeFactory.destroy();
 117  0
         }
 118  0
     }
 119  
 
 120  
     public String encodeActionURL(String url) {
 121  7
         assertHttpServletResponse();
 122  7
         final String encodedUrl = customizer.encodeActionUrl(this, url);
 123  7
         HttpServletResponse httpResponse = (HttpServletResponse) response;
 124  7
         if (((HttpServletRequest) request).isRequestedSessionIdFromCookie()) {
 125  0
             return encodedUrl;
 126  
         }
 127  7
         return httpResponse.encodeURL(encodedUrl);
 128  
     }
 129  
 
 130  
     public String encodeNamespace(final String name) {
 131  0
         AssertionUtil.assertNotNull("name is null.", name);
 132  0
         return name;
 133  
     }
 134  
 
 135  
     public String encodeResourceURL(final String url) {
 136  6
         assertHttpServletResponse();
 137  6
         final String encodedUrl = customizer.encodeResourceUrl(this, url);
 138  6
         HttpServletResponse httpResponse = (HttpServletResponse) response;
 139  6
         if (((HttpServletRequest) request).isRequestedSessionIdFromCookie()) {
 140  0
             return encodedUrl;
 141  
         }
 142  6
         return httpResponse.encodeURL(encodedUrl);
 143  
     }
 144  
 
 145  
     public Map getApplicationMap() {
 146  0
         if (applicationMap == null) {
 147  0
             applicationMap = new ServletApplicationMap(context);
 148  
         }
 149  0
         return applicationMap;
 150  
     }
 151  
 
 152  
     public String getAuthType() {
 153  0
         assertHttpServletRequest();
 154  0
         HttpServletRequest httpServletRequest = (HttpServletRequest) request;
 155  0
         return httpServletRequest.getAuthType();
 156  
     }
 157  
 
 158  
     public Object getContext() {
 159  0
         return context;
 160  
     }
 161  
 
 162  
     public String getInitParameter(String name) {
 163  0
         return context.getInitParameter(name);
 164  
     }
 165  
 
 166  
     public Map getInitParameterMap() {
 167  0
         if (initParameterMap == null) {
 168  0
             initParameterMap = new ServletInitParameterMap(context);
 169  
         }
 170  0
         return initParameterMap;
 171  
     }
 172  
 
 173  
     public String getRemoteUser() {
 174  0
         assertHttpServletRequest();
 175  0
         HttpServletRequest httpRequest = (HttpServletRequest) request;
 176  0
         return httpRequest.getRemoteUser();
 177  
     }
 178  
 
 179  
     public Object getRequest() {
 180  0
         return request;
 181  
     }
 182  
 
 183  
     public String getRequestContextPath() {
 184  0
         assertHttpServletRequest();
 185  0
         HttpServletRequest httpRequest = (HttpServletRequest) request;
 186  0
         return httpRequest.getContextPath();
 187  
     }
 188  
 
 189  
     public Map getRequestCookieMap() {
 190  0
         assertHttpServletRequest();
 191  0
         if (requestCookieMap == null) {
 192  0
             requestCookieMap = new CookieMap((HttpServletRequest) request);
 193  
         }
 194  0
         return requestCookieMap;
 195  
     }
 196  
 
 197  
     public Map getRequestHeaderMap() {
 198  0
         assertHttpServletRequest();
 199  0
         if (requestHeaderMap == null) {
 200  0
             requestHeaderMap = new ServletRequestHeaderMap(
 201  
                     (HttpServletRequest) request);
 202  
         }
 203  0
         return requestHeaderMap;
 204  
     }
 205  
 
 206  
     public Map getRequestHeaderValuesMap() {
 207  0
         if (requestHeaderValuesMap == null) {
 208  0
             requestHeaderValuesMap = new ServletRequestHeaderValuesMap(
 209  
                     (HttpServletRequest) request);
 210  
         }
 211  0
         return requestHeaderValuesMap;
 212  
     }
 213  
 
 214  
     public Locale getRequestLocale() {
 215  0
         return request.getLocale();
 216  
     }
 217  
 
 218  
     public Iterator getRequestLocales() {
 219  0
         final Enumeration locales = request.getLocales();
 220  0
         return ServletExternalContextUtil.getLocales(locales);
 221  
     }
 222  
 
 223  
     public Map getRequestMap() {
 224  17
         if (requestMap == null) {
 225  5
             requestMap = new ServletRequestMap(request);
 226  
         }
 227  17
         return requestMap;
 228  
     }
 229  
 
 230  
     public Map getRequestParameterMap() {
 231  1
         if (requestParameterMap == null) {
 232  1
             requestParameterMap = new ServletRequestParameterMap(request);
 233  
         }
 234  1
         return requestParameterMap;
 235  
     }
 236  
 
 237  
     public Iterator getRequestParameterNames() {
 238  0
         final Enumeration paramNames = request.getParameterNames();
 239  0
         return ServletExternalContextUtil.getRequestParameterNames(paramNames);
 240  
     }
 241  
 
 242  
     public Map getRequestParameterValuesMap() {
 243  1
         if (requestParameterValuesMap == null) {
 244  1
             requestParameterValuesMap = new ServletRequestParameterValuesMap(
 245  
                     request);
 246  
         }
 247  1
         return requestParameterValuesMap;
 248  
     }
 249  
 
 250  
     public String getRequestPathInfo() {
 251  2
         return pathInfo;
 252  
     }
 253  
 
 254  
     public String getRequestServletPath() {
 255  2
         return servletPath;
 256  
     }
 257  
 
 258  
     public URL getResource(String path) throws MalformedURLException {
 259  0
         return context.getResource(path);
 260  
     }
 261  
 
 262  
     public InputStream getResourceAsStream(String path) {
 263  0
         return context.getResourceAsStream(path);
 264  
     }
 265  
 
 266  
     public Set getResourcePaths(String path) {
 267  0
         return context.getResourcePaths(path);
 268  
     }
 269  
 
 270  
     public Object getResponse() {
 271  0
         return response;
 272  
     }
 273  
 
 274  
     public Object getSession(boolean create) {
 275  0
         assertHttpServletRequest();
 276  0
         HttpServletRequest httpRequest = (HttpServletRequest) request;
 277  0
         return httpRequest.getSession(create);
 278  
     }
 279  
 
 280  
     public Map getSessionMap() {
 281  0
         if (sessionMap == null) {
 282  0
             HttpServletRequest httpRequest = (HttpServletRequest) request;
 283  0
             sessionMap = new HttpSessionMap(httpRequest);
 284  
         }
 285  0
         return sessionMap;
 286  
     }
 287  
 
 288  
     public Principal getUserPrincipal() {
 289  0
         assertHttpServletRequest();
 290  0
         HttpServletRequest httpRequest = (HttpServletRequest) request;
 291  0
         return httpRequest.getUserPrincipal();
 292  
     }
 293  
 
 294  
     public boolean isUserInRole(String role) {
 295  0
         assertHttpServletRequest();
 296  0
         HttpServletRequest httpRequest = (HttpServletRequest) request;
 297  0
         return httpRequest.isUserInRole(role);
 298  
     }
 299  
 
 300  
     public void log(String message) {
 301  0
         AssertionUtil.assertNotNull("message is null.", message);
 302  0
         context.log(message);
 303  0
         logger.debug(message);
 304  0
     }
 305  
 
 306  
     public void log(String message, Throwable exception) {
 307  0
         AssertionUtil.assertNotNull("message", message);
 308  0
         AssertionUtil.assertNotNull("exception", exception);
 309  0
         context.log(message, exception);
 310  0
         logger.log(exception);
 311  0
     }
 312  
 
 313  
     public void redirect(String url) throws IOException {
 314  0
         assertHttpServletResponse();
 315  0
         ServletExternalContextUtil.redirect(url, request, response);
 316  0
     }
 317  
 
 318  
     private void assertHttpServletRequest() {
 319  0
         if (!isHttpServletRequest) {
 320  0
             throw new IllegalStateException();
 321  
         }
 322  0
     }
 323  
 
 324  
     private void assertHttpServletResponse() {
 325  13
         if (!isHttpServletResponse) {
 326  0
             throw new IllegalStateException();
 327  
         }
 328  13
     }
 329  
 
 330  
     public void release() {
 331  0
         this.context = null;
 332  0
         this.request = null;
 333  0
         this.response = null;
 334  0
         this.servletPath = null;
 335  0
         this.pathInfo = null;
 336  0
         this.applicationMap = null;
 337  0
         this.initParameterMap = null;
 338  0
         this.sessionMap = null;
 339  0
         this.requestCookieMap = null;
 340  0
         this.requestParameterMap = null;
 341  0
         this.requestParameterValuesMap = null;
 342  0
         this.requestMap = null;
 343  0
         this.requestHeaderMap = null;
 344  0
         this.requestHeaderValuesMap = null;
 345  0
     }
 346  
 
 347  
     public void setEncodeUrlCustomizer(EncodeUrlCustomizer customizer) {
 348  7
         this.customizer = customizer;
 349  7
     }
 350  
 
 351  
 }