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