Coverage Report - org.apache.turbine.util.uri.DataURI
 
Classes in this File Line Coverage Branch Coverage Complexity
DataURI
42%
11/26
25%
1/4
1,222
 
 1  
 package org.apache.turbine.util.uri;
 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 org.apache.turbine.util.RunData;
 25  
 import org.apache.turbine.util.ServerData;
 26  
 
 27  
 /**
 28  
  * This class can convert a simple link into a turbine relative
 29  
  * URL. It should be used to convert references for images, style
 30  
  * sheets and similar references.
 31  
  *
 32  
  * The resulting links have no query data or path info. If you need
 33  
  * this, use TurbineURI or TemplateURI.
 34  
  *
 35  
  * @author <a href="mailto:hps@intermeta.de">Henning P. Schmiedehausen</a>
 36  
  * @version $Id: DataURI.java 938645 2010-04-27 20:57:51Z tv $
 37  
  *
 38  
  */
 39  
 
 40  
 public class DataURI
 41  
         extends BaseURI
 42  
         implements URIConstants
 43  
 {
 44  
     /**
 45  
      * Empty C'tor. Uses Turbine.getDefaultServerData().
 46  
      *
 47  
      */
 48  
     public DataURI()
 49  
     {
 50  0
         super();
 51  0
     }
 52  
 
 53  
     /**
 54  
      * Constructor with a RunData object
 55  
      *
 56  
      * @param runData A RunData object
 57  
      */
 58  
     public DataURI(RunData runData)
 59  
     {
 60  16
         super(runData);
 61  16
     }
 62  
 
 63  
     /**
 64  
      * Constructor, set explicit redirection
 65  
      *
 66  
      * @param runData A RunData object
 67  
      * @param redirect True if redirection allowed.
 68  
      */
 69  
     public DataURI(RunData runData, boolean redirect)
 70  
     {
 71  0
         super(runData, redirect);
 72  0
     }
 73  
 
 74  
     /**
 75  
      * Constructor with a ServerData object
 76  
      *
 77  
      * @param serverData A ServerData object
 78  
      */
 79  
     public DataURI(ServerData serverData)
 80  
     {
 81  14
         super(serverData);
 82  14
     }
 83  
 
 84  
     /**
 85  
      * Constructor, set explicit redirection
 86  
      *
 87  
      * @param serverData A ServerData object
 88  
      * @param redirect True if redirection allowed.
 89  
      */
 90  
     public DataURI(ServerData serverData, boolean redirect)
 91  
     {
 92  0
         super(serverData, redirect);
 93  0
     }
 94  
 
 95  
 
 96  
     /**
 97  
      * Content Tool wants to be able to turn the encoding
 98  
      * of the servlet container off. After calling this method,
 99  
      * the encoding will not happen any longer.
 100  
      */
 101  
     public void clearResponse()
 102  
     {
 103  16
         setResponse(null);
 104  16
     }
 105  
 
 106  
     /**
 107  
      * Builds the URL with all of the data URL-encoded as well as
 108  
      * encoded using HttpServletResponse.encodeUrl(). The resulting
 109  
      * URL is absolute; it starts with http/https...
 110  
      *
 111  
      * <p>
 112  
      * <code><pre>
 113  
      * TurbineURI tui = new TurbineURI (data, "UserScreen");
 114  
      * tui.addPathInfo("user","jon");
 115  
      * tui.getAbsoluteLink();
 116  
      * </pre></code>
 117  
      *
 118  
      *  The above call to getAbsoluteLink() would return the String:
 119  
      *
 120  
      * <p>
 121  
      * http://www.server.com/servlets/Turbine/screen/UserScreen/user/jon
 122  
      *
 123  
      * @return A String with the built URL.
 124  
      */
 125  
     public String getAbsoluteLink()
 126  
     {
 127  14
         StringBuffer output = new StringBuffer();
 128  
 
 129  14
         getSchemeAndPort(output);
 130  14
         getContextAndScript(output);
 131  
 
 132  14
         if (hasReference())
 133  
         {
 134  0
             output.append('#');
 135  0
             output.append(getReference());
 136  
         }
 137  
 
 138  
         //
 139  
         // Encode Response does all the fixup for the Servlet Container
 140  
         //
 141  14
         return encodeResponse(output.toString());
 142  
     }
 143  
 
 144  
     /**
 145  
      * Builds the URL with all of the data URL-encoded as well as
 146  
      * encoded using HttpServletResponse.encodeUrl(). The resulting
 147  
      * URL is relative to the webserver root.
 148  
      *
 149  
      * <p>
 150  
      * <code><pre>
 151  
      * TurbineURI tui = new TurbineURI (data, "UserScreen");
 152  
      * tui.addPathInfo("user","jon");
 153  
      * tui.getRelativeLink();
 154  
      * </pre></code>
 155  
      *
 156  
      *  The above call to getRelativeLink() would return the String:
 157  
      *
 158  
      * <p>
 159  
      * /servlets/Turbine/screen/UserScreen/user/jon
 160  
      *
 161  
      * @return A String with the built URL.
 162  
      */
 163  
     public String getRelativeLink()
 164  
     {
 165  0
         StringBuffer output = new StringBuffer();
 166  
 
 167  0
         getContextAndScript(output);
 168  
 
 169  0
         if (hasReference())
 170  
         {
 171  0
             output.append('#');
 172  0
             output.append(getReference());
 173  
         }
 174  
 
 175  
         //
 176  
         // Encode Response does all the fixup for the Servlet Container
 177  
         //
 178  0
         return encodeResponse(output.toString());
 179  
     }
 180  
 
 181  
     /**
 182  
      * toString() simply calls getAbsoluteLink. You should not use this in your
 183  
      * code unless you have to. Use getAbsoluteLink.
 184  
      *
 185  
      * @return This URI as a String
 186  
      *
 187  
      */
 188  
     public String toString()
 189  
     {
 190  0
         return getAbsoluteLink();
 191  
     }
 192  
 }