org.jfrog.build.util
Class URI

java.lang.Object
  extended by org.jfrog.build.util.URI

public class URI
extends java.lang.Object

The interface for the URI(Uniform Resource Identifiers) version of RFC 2396. This class has the purpose of supportting of parsing a URI reference to extend any specific protocols, the character encoding of the protocol to be transported and the charset of the document.

A URI is always in an "escaped" form, since escaping or unescaping a completed URI might change its semantics.

Implementers should be careful not to escape or unescape the same string more than once, since unescaping an already unescaped string might lead to misinterpreting a percent data character as another escaped character, or vice versa in the case of escaping an already escaped string.

In order to avoid these problems, data types used as follows:

   URI character sequence: char
   octet sequence: byte
   original character sequence: String
 

So, a URI is a sequence of characters as an array of a char type, which is not always represented as a sequence of octets as an array of byte.

URI Syntactic Components

 - In general, written as follows:
   Absolute URI = <scheme>:<scheme-specific-part>
   Generic URI = <scheme>://<authority><path>?<query>
 

- Syntax absoluteURI = scheme ":" ( hier_part | opaque_part ) hier_part = ( net_path | abs_path ) [ "?" query ] net_path = "//" authority [ abs_path ] abs_path = "/" path_segments

The following examples illustrate URI that are in common use.

 ftp://ftp.is.co.za/rfc/rfc1808.txt
    -- ftp scheme for File Transfer Protocol services
 gopher://spinaltap.micro.umn.edu/00/Weather/California/Los%20Angeles
    -- gopher scheme for Gopher and Gopher+ Protocol services
 http://www.math.uio.no/faq/compression-faq/part1.html
    -- http scheme for Hypertext Transfer Protocol services
 mailto:mduerst@ifi.unizh.ch
    -- mailto scheme for electronic mail addresses
 news:comp.infosystems.www.servers.unix
    -- news scheme for USENET news groups and articles
 telnet://melvyl.ucop.edu/
    -- telnet scheme for interactive services via the TELNET Protocol
 
Please, notice that there are many modifications from URL(RFC 1738) and relative URL(RFC 1808).

The expressions for a URI

 For escaped URI forms
  - URI(char[]) // constructor
  - char[] getRawXxx() // method
  - String getEscapedXxx() // method
  - String toString() // method
 

For unescaped URI forms - URI(String) // constructor - String getXXX() // method


Field Summary
static java.util.BitSet allowed_query
          Those characters that are allowed for the query component.
protected static java.util.BitSet alpha
          BitSet for alpha.
protected static java.util.BitSet alphanum
          BitSet for alphanum (join of alpha & digit).
protected static java.util.BitSet digit
          BitSet for digit.
protected static java.util.BitSet escaped
          BitSet for escaped.
protected static java.util.BitSet hex
          BitSet for hex.
protected static java.util.BitSet mark
          BitSet for mark.
protected static java.util.BitSet percent
          The percent "%" character always has the reserved purpose of being the escape indicator, it must be escaped as "%25" in order to be used as data within a URI.
protected static java.util.BitSet reserved
          BitSet for reserved.
protected static java.util.BitSet unreserved
          Data characters that are allowed in a URI but do not have a reserved purpose are called unreserved.
protected static java.util.BitSet uric
          BitSet for uric.
 
Constructor Summary
URI()
           
 
Method Summary
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

percent

protected static final java.util.BitSet percent
The percent "%" character always has the reserved purpose of being the escape indicator, it must be escaped as "%25" in order to be used as data within a URI.


digit

protected static final java.util.BitSet digit
BitSet for digit.

 digit    = "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" |
            "8" | "9"
 


alpha

protected static final java.util.BitSet alpha
BitSet for alpha.

 alpha         = lowalpha | upalpha
 


alphanum

protected static final java.util.BitSet alphanum
BitSet for alphanum (join of alpha & digit).

  alphanum      = alpha | digit
 


hex

protected static final java.util.BitSet hex
BitSet for hex.

 hex           = digit | "A" | "B" | "C" | "D" | "E" | "F" |
                         "a" | "b" | "c" | "d" | "e" | "f"
 


escaped

protected static final java.util.BitSet escaped
BitSet for escaped.

 escaped       = "%" hex hex
 


mark

protected static final java.util.BitSet mark
BitSet for mark.

 mark          = "-" | "_" | "." | "!" | "~" | "*" | "'" |
                 "(" | ")"
 


unreserved

protected static final java.util.BitSet unreserved
Data characters that are allowed in a URI but do not have a reserved purpose are called unreserved.

 unreserved    = alphanum | mark
 


reserved

protected static final java.util.BitSet reserved
BitSet for reserved.

 reserved      = ";" | "/" | "?" | ":" | "@" | "&" | "=" | "+" |
                 "$" | ","
 


uric

protected static final java.util.BitSet uric
BitSet for uric.

 uric          = reserved | unreserved | escaped
 


allowed_query

public static final java.util.BitSet allowed_query
Those characters that are allowed for the query component.

Constructor Detail

URI

public URI()