View Javadoc

    1   package org.mortbay.jetty;
    2
    3   import java.io.UnsupportedEncodingException;
    4
    5   import org.mortbay.util.MultiMap;
    6   import org.mortbay.util.StringUtil;
    7   import org.mortbay.util.TypeUtil;
    8   import org.mortbay.util.URIUtil;
    9   import org.mortbay.util.UrlEncoded;
    10  import org.mortbay.util.Utf8StringBuffer;
    11
    12  public class EncodedHttpURI extends HttpURI
    13  {
    14      private String _encoding;
    15
    16      public EncodedHttpURI(String encoding)
    17      {
    18          super();
    19          _encoding = encoding;
    20      }
    21
    22
    23      public String getScheme()
    24      {
    25          if (_scheme==_authority)
    26              return null;
    27          int l=_authority-_scheme;
    28          if (l==5 &&
    29              _raw[_scheme]=='h' &&
    30              _raw[_scheme+1]=='t' &&
    31              _raw[_scheme+2]=='t' &&
    32              _raw[_scheme+3]=='p' )
    33              return HttpSchemes.HTTP;
    34          if (l==6 &&
    35              _raw[_scheme]=='h' &&
    36              _raw[_scheme+1]=='t' &&
    37              _raw[_scheme+2]=='t' &&
    38              _raw[_scheme+3]=='p' &&
    39              _raw[_scheme+4]=='s' )
    40              return HttpSchemes.HTTPS;
    41
    42          return StringUtil.toString(_raw,_scheme,_authority-_scheme-1,_encoding);
    43      }
    44
    45      public String getAuthority()
    46      {
    47          if (_authority==_path)
    48              return null;
    49          return StringUtil.toString(_raw,_authority,_path-_authority,_encoding);
    50      }
    51
    52      public String getHost()
    53      {
    54          if (_host==_port)
    55              return null;
    56          return StringUtil.toString(_raw,_host,_port-_host,_encoding);
    57      }
    58
    59      public int getPort()
    60      {
    61          if (_port==_path)
    62              return -1;
    63          return TypeUtil.parseInt(_raw, _port+1, _path-_port-1,10);
    64      }
    65
    66      public String getPath()
    67      {
    68          if (_path==_param)
    69              return null;
    70          return StringUtil.toString(_raw,_path,_param-_path,_encoding);
    71      }
    72
    73      public String getDecodedPath()
    74      {
    75          if (_path==_param)
    76              return null;
    77          return URIUtil.decodePath(_raw,_path,_param-_path);
    78      }
    79
    80      public String getPathAndParam()
    81      {
    82          if (_path==_query)
    83              return null;
    84          return StringUtil.toString(_raw,_path,_query-_path,_encoding);
    85      }
    86
    87      public String getCompletePath()
    88      {
    89          if (_path==_end)
    90              return null;
    91          return StringUtil.toString(_raw,_path,_end-_path,_encoding);
    92      }
    93
    94      public String getParam()
    95      {
    96          if (_param==_query)
    97              return null;
    98          return StringUtil.toString(_raw,_param+1,_query-_param-1,_encoding);
    99      }
    100
    101     public String getQuery()
    102     {
    103         if (_query==_fragment)
    104             return null;
    105         return StringUtil.toString(_raw,_query+1,_fragment-_query-1,_encoding);
    106     }
    107
    108     public boolean hasQuery()
    109     {
    110         return (_fragment>_query);
    111     }
    112
    113     public String getFragment()
    114     {
    115         if (_fragment==_end)
    116             return null;
    117         return StringUtil.toString(_raw,_fragment+1,_end-_fragment-1,_encoding);
    118     }
    119
    120     public void decodeQueryTo(MultiMap parameters)
    121     {
    122         if (_query==_fragment)
    123             return;
    124         UrlEncoded.decodeTo(StringUtil.toString(_raw,_query+1,_fragment-_query-1,_encoding),parameters,_encoding);
    125     }
    126
    127     public void decodeQueryTo(MultiMap parameters, String encoding)
    128         throws UnsupportedEncodingException
    129     {
    130         if (_query==_fragment)
    131             return;
    132
    133         if (encoding==null)
    134             encoding=_encoding;
    135         UrlEncoded.decodeTo(StringUtil.toString(_raw,_query+1,_fragment-_query-1,encoding),parameters,encoding);
    136     }
    137
    138     public String toString()
    139     {
    140         if (_rawString==null)
    141             _rawString= StringUtil.toString(_raw,_scheme,_end-_scheme,_encoding);
    142         return _rawString;
    143     }
    144
    145     public void writeTo(Utf8StringBuffer buf)
    146     {
    147         buf.getStringBuffer().append(toString());
    148     }
    149
    150 }