Coverage Report - org.apache.turbine.util.ServerData
 
Classes in this File Line Coverage Branch Coverage Complexity
ServerData
97%
74/76
61%
11/18
1,562
 
 1  
 package org.apache.turbine.util;
 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 javax.servlet.http.HttpServletRequest;
 25  
 
 26  
 import org.apache.commons.lang.StringUtils;
 27  
 
 28  
 import org.apache.commons.logging.Log;
 29  
 import org.apache.commons.logging.LogFactory;
 30  
 
 31  
 import org.apache.turbine.util.uri.URIConstants;
 32  
 
 33  
 /**
 34  
  * Holds basic server information under which Turbine is running.
 35  
  * This class is accessable via the RunData object within the Turbine
 36  
  * system.  You can also use it as a placeholder for this information
 37  
  * if you are only emulating a servlet system.
 38  
  *
 39  
  * @author <a href="mailto:burton@apache.org">Kevin A. Burton</a>
 40  
  * @author <a href="mailto:jon@latchkey.com">Jon S. Stevens</a>
 41  
  * @author <a href="mailto:hps@intermeta.de">Henning P. Schmiedehausen</a>
 42  
  * @version $Id: ServerData.java 1709648 2015-10-20 17:08:10Z tv $
 43  
  */
 44  
 public class ServerData
 45  
 {
 46  
     /** Cached serverName, */
 47  81
     private String serverName = null;
 48  
 
 49  
     /** Cached serverPort. */
 50  81
     private int serverPort = 0;
 51  
 
 52  
     /** Cached serverScheme. */
 53  81
     private String serverScheme = null;
 54  
 
 55  
     /** Cached script name. */
 56  81
     private String  scriptName = null;
 57  
 
 58  
     /** Cached context path. */
 59  81
     private String  contextPath = null;
 60  
 
 61  
     /** Logging */
 62  13
     private static Log log = LogFactory.getLog(ServerData.class);
 63  
 
 64  
     /**
 65  
      * Constructor.
 66  
      *
 67  
      * @param serverName The server name.
 68  
      * @param serverPort The server port.
 69  
      * @param serverScheme The server scheme.
 70  
      * @param scriptName The script name.
 71  
      * @param contextPath The context Path
 72  
      */
 73  
     public ServerData(String serverName,
 74  
         int serverPort,
 75  
         String serverScheme,
 76  
         String scriptName,
 77  
         String contextPath)
 78  29
     {
 79  29
         if (log.isDebugEnabled())
 80  
         {
 81  29
             StringBuilder sb = new StringBuilder();
 82  29
             sb.append("Constructor(");
 83  29
             sb.append(serverName);
 84  29
             sb.append(", ");
 85  29
             sb.append(serverPort);
 86  29
             sb.append(", ");
 87  29
             sb.append(serverScheme);
 88  29
             sb.append(", ");
 89  29
             sb.append(scriptName);
 90  29
             sb.append(", ");
 91  29
             sb.append(contextPath);
 92  29
             sb.append(")");
 93  29
             log.debug(sb.toString());
 94  
         }
 95  
 
 96  29
         setServerName(serverName);
 97  29
         setServerPort(serverPort);
 98  29
         setServerScheme(serverScheme);
 99  29
         setScriptName(scriptName);
 100  29
         setContextPath(contextPath);
 101  29
     }
 102  
 
 103  
     /**
 104  
      * Copy-Constructor
 105  
      *
 106  
      * @param serverData A ServerData Object
 107  
      */
 108  
     public ServerData(ServerData serverData)
 109  24
     {
 110  24
         log.debug("Copy Constructor(" + serverData + ")");
 111  
 
 112  24
         setServerName(serverData.getServerName());
 113  24
         setServerPort(serverData.getServerPort());
 114  24
         setServerScheme(serverData.getServerScheme());
 115  24
         setScriptName(serverData.getScriptName());
 116  24
         setContextPath(serverData.getContextPath());
 117  24
     }
 118  
 
 119  
     /**
 120  
      * A C'tor that takes a HTTP Request object and
 121  
      * builds the server data from its contents
 122  
      *
 123  
      * @param req The HTTP Request
 124  
      */
 125  
     public ServerData(HttpServletRequest req)
 126  28
     {
 127  28
         setServerName(req.getServerName());
 128  28
         setServerPort(req.getServerPort());
 129  28
         setServerScheme(req.getScheme());
 130  28
         setScriptName(req.getServletPath());
 131  28
         setContextPath(req.getContextPath());
 132  28
     }
 133  
 
 134  
     /**
 135  
      * generates a new Object with the same values as this one.
 136  
      *
 137  
      * @return A cloned object.
 138  
      */
 139  
     public Object clone()
 140  
     {
 141  24
         log.debug("clone()");
 142  24
         return new ServerData(this);
 143  
     }
 144  
 
 145  
     /**
 146  
      * Get the name of the server.
 147  
      *
 148  
      * @return A String.
 149  
      */
 150  
     public String getServerName()
 151  
     {
 152  73
         return StringUtils.isEmpty(serverName) ? "" : serverName;
 153  
     }
 154  
 
 155  
     /**
 156  
      * Sets the cached serverName.
 157  
      *
 158  
      * @param serverName the server name.
 159  
      */
 160  
     public void setServerName(String serverName)
 161  
     {
 162  81
         log.debug("setServerName(" + serverName + ")");
 163  81
         this.serverName = serverName;
 164  81
     }
 165  
 
 166  
     /**
 167  
      * Get the server port.
 168  
      *
 169  
      * @return the server port.
 170  
      */
 171  
     public int getServerPort()
 172  
     {
 173  36
         return this.serverPort;
 174  
     }
 175  
 
 176  
     /**
 177  
      * Sets the cached serverPort.
 178  
      *
 179  
      * @param serverPort the server port.
 180  
      */
 181  
     public void setServerPort(int serverPort)
 182  
     {
 183  81
         log.debug("setServerPort(" + serverPort + ")");
 184  81
         this.serverPort = serverPort;
 185  81
     }
 186  
 
 187  
     /**
 188  
      * Get the server scheme.
 189  
      *
 190  
      * @return the server scheme.
 191  
      */
 192  
     public String getServerScheme()
 193  
     {
 194  168
         return StringUtils.isEmpty(serverScheme) ? "" : serverScheme;
 195  
     }
 196  
 
 197  
     /**
 198  
      * Sets the cached serverScheme.
 199  
      *
 200  
      * @param serverScheme the server scheme.
 201  
      */
 202  
     public void setServerScheme(String serverScheme)
 203  
     {
 204  81
         log.debug("setServerScheme(" + serverScheme + ")");
 205  81
         this.serverScheme = serverScheme;
 206  81
     }
 207  
 
 208  
     /**
 209  
      * Get the script name
 210  
      *
 211  
      * @return the script name.
 212  
      */
 213  
     public String getScriptName()
 214  
     {
 215  87
         return StringUtils.isEmpty(scriptName) ? "" : scriptName;
 216  
     }
 217  
 
 218  
     /**
 219  
      * Set the script name.
 220  
      *
 221  
      * @param scriptName the script name.
 222  
      */
 223  
     public void setScriptName(String scriptName)
 224  
     {
 225  81
         log.debug("setScriptName(" + scriptName + ")");
 226  81
         this.scriptName = scriptName;
 227  81
     }
 228  
 
 229  
     /**
 230  
      * Get the context path.
 231  
      *
 232  
      * @return the context path.
 233  
      */
 234  
     public String getContextPath()
 235  
     {
 236  86
         return StringUtils.isEmpty(contextPath) ? "" : contextPath;
 237  
     }
 238  
 
 239  
     /**
 240  
      * Set the context path.
 241  
      *
 242  
      * @param contextPath A String.
 243  
      */
 244  
     public void setContextPath(String contextPath)
 245  
     {
 246  81
         log.debug("setContextPath(" + contextPath + ")");
 247  81
         this.contextPath = contextPath;
 248  81
     }
 249  
 
 250  
     /**
 251  
      * Appends the Host URL to the supplied StringBuilder.
 252  
      *
 253  
      * @param url A StringBuilder object
 254  
      */
 255  
     public void getHostUrl(StringBuilder url)
 256  
     {
 257  48
         url.append(getServerScheme());
 258  48
         url.append("://");
 259  48
         url.append(getServerName());
 260  48
         if ((getServerScheme().equals(URIConstants.HTTP)
 261  
                 && getServerPort() != URIConstants.HTTP_PORT)
 262  
             ||
 263  
             (getServerScheme().equals(URIConstants.HTTPS)
 264  
                 && getServerPort() != URIConstants.HTTPS_PORT)
 265  
             )
 266  
         {
 267  0
             url.append(":");
 268  0
             url.append(getServerPort());
 269  
         }
 270  48
     }
 271  
 
 272  
     /**
 273  
      * Returns this object as an URL.
 274  
      *
 275  
      * @return The contents of this object as a String
 276  
      */
 277  
     public String toString()
 278  
     {
 279  48
         StringBuilder url = new StringBuilder();
 280  
 
 281  48
         getHostUrl(url);
 282  
 
 283  48
         url.append(getContextPath());
 284  48
         url.append(getScriptName());
 285  48
         return url.toString();
 286  
     }
 287  
 }