Coverage Report - org.apache.turbine.services.servlet.TurbineServletService
 
Classes in this File Line Coverage Branch Coverage Complexity
TurbineServletService
26%
10/38
0%
0/14
2,091
 
 1  
 package org.apache.turbine.services.servlet;
 2  
 
 3  
 
 4  
 /*
 5  
  * Licensed to the Apache Software Foundation (ASF) under one
 6  
  * or more contributor license agreements.  See the NOTICE file
 7  
  * distributed with this work for additional information
 8  
  * regarding copyright ownership.  The ASF licenses this file
 9  
  * to you under the Apache License, Version 2.0 (the
 10  
  * "License"); you may not use this file except in compliance
 11  
  * with the License.  You may obtain a copy of the License at
 12  
  *
 13  
  *   http://www.apache.org/licenses/LICENSE-2.0
 14  
  *
 15  
  * Unless required by applicable law or agreed to in writing,
 16  
  * software distributed under the License is distributed on an
 17  
  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 18  
  * KIND, either express or implied.  See the License for the
 19  
  * specific language governing permissions and limitations
 20  
  * under the License.
 21  
  */
 22  
 
 23  
 
 24  
 import java.io.InputStream;
 25  
 import java.net.MalformedURLException;
 26  
 import java.net.URL;
 27  
 
 28  
 import javax.servlet.ServletConfig;
 29  
 import javax.servlet.ServletContext;
 30  
 
 31  
 import org.apache.logging.log4j.LogManager;
 32  
 import org.apache.logging.log4j.Logger;
 33  
 import org.apache.turbine.Turbine;
 34  
 import org.apache.turbine.services.TurbineBaseService;
 35  
 import org.apache.turbine.util.ServletUtils;
 36  
 
 37  
 /**
 38  
  * <p>This class provides a context service when the application
 39  
  * is run in a ServletContainer. It is mainly a wrapper around
 40  
  * the ServletContext API.</p>
 41  
  * <p>This class requires Servlet API 2.1 or better.</p>
 42  
  *
 43  
  * @author <a href="mailto:burton@apache.org">Kevin A. Burton</a>
 44  
  * @author <a href="mailto:raphael@apache.org">RaphaĆ«l Luta</a>
 45  
  * @author <a href="mailto:ekkerbj@netscape.net">Jeff Brekke</a>
 46  
  * @author <a href="mailto:sgala@hisitech.com">Santiago Gala</a>
 47  
  * @author <a href="mailto:jvanzyl@periapt.com.com">Jason van Zyl</a>
 48  
  * @author <a href="mailto:jon@latchkey.com">Jon S. Stevens</a>
 49  
  * @version $Id: TurbineServletService.java 1854688 2019-03-03 10:36:42Z tv $
 50  
  */
 51  102
 public class TurbineServletService
 52  
         extends TurbineBaseService implements ServletService
 53  
 {
 54  
     /** Logging */
 55  102
     private static final Logger log = LogManager.getLogger(TurbineServletService.class);
 56  
 
 57  
     /** The servlet context for this servlet */
 58  102
     private ServletContext servletContext = null;
 59  
 
 60  
     /** The servlet configuration for this servlet */
 61  102
     private ServletConfig servletConfig = null;
 62  
 
 63  
     /**
 64  
      * Load all configured components and initialize them. This is
 65  
      * a zero parameter variant which queries the Turbine Servlet
 66  
      * for its config.
 67  
      */
 68  
     @Override
 69  
     public void init()
 70  
     {
 71  132
         this.servletConfig = Turbine.getTurbineServletConfig();
 72  
         try
 73  
         {
 74  132
             this.servletContext = servletConfig.getServletContext();
 75  
 
 76  132
             log.debug("Initializing with ServletConfig");
 77  
         }
 78  0
         catch (Exception e)
 79  
         {
 80  0
             log.error("Cannot initialize TurbineServletService.", e);
 81  132
         }
 82  132
         setInit(true);
 83  132
     }
 84  
 
 85  
     /**
 86  
      * Returns an URL object for a given URI string.
 87  
      * This URI is considered relative to the context.
 88  
      *
 89  
      * @see javax.servlet.ServletContext#getResource
 90  
      * @param uri the URI to resolve as an URL
 91  
      * @return an URL object or null is the uri is malformed or
 92  
      * can't be resolved
 93  
      */
 94  
     @Override
 95  
     public URL getResource(String uri)
 96  
     {
 97  0
         if (servletContext == null)
 98  
         {
 99  0
             return null;
 100  
         }
 101  
 
 102  0
         URL url = null;
 103  
 
 104  
         try
 105  
         {
 106  0
             url = getServletContext().getResource(uri);
 107  
             // work-around for Websphere 3.52
 108  0
             if (url != null && url.toString().startsWith("classloader:"))
 109  
             {
 110  0
                 url = new URL("file:" + url.toString().substring(12));
 111  
             }
 112  0
             else if (url == null)
 113  
             {
 114  0
                 url = new URL("file:" + getServletContext().getRealPath(uri));
 115  
             }
 116  
         }
 117  0
         catch (MalformedURLException e)
 118  
         {
 119  
             //if the URL is wrong, return null
 120  0
         }
 121  
 
 122  0
         return url;
 123  
     }
 124  
 
 125  
     /**
 126  
      * Same as getResource except that it returns an InputStream
 127  
      *
 128  
      * @see javax.servlet.ServletContext#getResourceAsStream
 129  
      * @param uri the URI to resolve
 130  
      * @return an InputStream on the URI content or null
 131  
      */
 132  
     @Override
 133  
     public InputStream getResourceAsStream(String uri)
 134  
     {
 135  0
         if (servletContext == null)
 136  
         {
 137  0
             return null;
 138  
         }
 139  
 
 140  0
         InputStream is = null;
 141  0
         is = servletContext.getResourceAsStream(uri);
 142  0
         return is;
 143  
     }
 144  
 
 145  
     /**
 146  
      * Returns the complete filesystem path for a
 147  
      * given URI
 148  
      *
 149  
      * @see javax.servlet.ServletContext#getRealPath
 150  
      * @param uri the URI to resolve
 151  
      * @return the full system path of this URI
 152  
      */
 153  
     @Override
 154  
     public String getRealPath(String uri)
 155  
     {
 156  0
         if (getServletContext() == null || uri == null)
 157  
         {
 158  0
             return null;
 159  
         }
 160  
         else
 161  
         {
 162  0
             return getServletContext().getRealPath(uri);
 163  
         }
 164  
     }
 165  
 
 166  
     /**
 167  
      * Returns the servlet config used by this
 168  
      * Turbine web application.
 169  
      *
 170  
      * @return turbine servlet config
 171  
      */
 172  
     @Override
 173  
     public ServletConfig getServletConfig()
 174  
     {
 175  0
         return servletConfig;
 176  
     }
 177  
 
 178  
     /**
 179  
      * Returns the servlet context used by this
 180  
      * Turbine web application.
 181  
      *
 182  
      * @return turbine servlet context
 183  
      */
 184  
     @Override
 185  
     public ServletContext getServletContext()
 186  
     {
 187  0
         return servletContext;
 188  
     }
 189  
 
 190  
     /**
 191  
      * Returns the server scheme for this
 192  
      * Turbine application. This will either
 193  
      * be http or https.
 194  
      *
 195  
      * @return String
 196  
      */
 197  
     @Override
 198  
     public String getServerScheme()
 199  
     {
 200  0
         return Turbine.getServerScheme();
 201  
     }
 202  
 
 203  
     /**
 204  
      * Returns the server name that this
 205  
      * Turbine application is running
 206  
      * on.
 207  
      *
 208  
      * @return String
 209  
      */
 210  
     @Override
 211  
     public String getServerName()
 212  
     {
 213  0
         return Turbine.getServerName();
 214  
     }
 215  
 
 216  
     /**
 217  
      * Returns the port that this Turbine
 218  
      * application is running through
 219  
      * on the server.
 220  
      *
 221  
      * @return String
 222  
      */
 223  
     @Override
 224  
     public String getServerPort()
 225  
     {
 226  0
         return Turbine.getServerPort();
 227  
     }
 228  
 
 229  
     /**
 230  
      * Returns the context path for this
 231  
      * Turbine application.
 232  
      *
 233  
      * @return String
 234  
      */
 235  
     @Override
 236  
     public String getContextPath()
 237  
     {
 238  0
         return Turbine.getContextPath();
 239  
     }
 240  
 
 241  
     /**
 242  
      * Expands a string that points to a relative path or path list,
 243  
      * leaving it as an absolute path based on the servlet context.
 244  
      * It will return null if the text is empty or the config object
 245  
      * is null.
 246  
      *
 247  
      * @param path The String containing a path or path list.
 248  
      * @return A String with the expanded path or path list.
 249  
      */
 250  
     public String expandRelative(String path)
 251  
     {
 252  0
         return ServletUtils.expandRelative(getServletConfig(), path);
 253  
     }
 254  
 }