code: public String getURIString( URIContext uriContext )
      {
          InternalStringBuilder buf = new InternalStringBuilder( 128 );
  
          // Append the scheme
          if ( getScheme() != null )
          {
              buf.append( getScheme() ).append( ':' );
  
              if ( isOpaque() )
              {
                  buf.append( getSchemeSpecificPart() );
              }
          }
  
          // Append the user info, host and, port
          if ( getHost() != null)
          {
              buf.append( "//" );
  
              if ( getUserInfo() != null )
              {
                  buf.append( getUserInfo() );
                  buf.append( '@' );
              }
  
              buf.append( getHost() );
  
              if ( getPort() != UNDEFINED_PORT )
              {
                  buf.append( ':' ).append( getPort() );
              }
          }
  
          // Append the path.
          if ( getPath() != null )
          {
              if ( isAbsolute() )
              {
                  // absolute URI so
                  appendEnsureSeparator( buf, getPath() );
              }
              else
              {
                  buf.append( getPath() );
              }
          }
  
          // Append the parameters (the query)
          if (_parameters != null && _parameters.hasParameters())
          {
              buf.append( '?' );
              buf.append( getQuery( uriContext ) );
          }
  
          // Append the fragment
          if ( getFragment() != null && getFragment().length() > 0 )
          {
              buf.append( '#' ).append( getFragment() );
          }
  
          return buf.toString();
      }
docs: Returns a string form of this URI. The {@link URIContext}
  encapsulates the data needed to write out the string form.
  
  <p> E.g. Defines if the &quot;&amp;amp;&quot; entity or the
  '&amp;' character should be used to separate quary parameters. </p>
  
  @param uriContext data required to write out the string form.
  @return the URI as a <code>String</code>