<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://jogamp.org/bugzilla/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.2"
          urlbase="https://jogamp.org/bugzilla/"
          
          maintainer="sgothel@jausoft.com"
>

    <bug>
          <bug_id>1063</bug_id>
          
          <creation_ts>2014-09-07 08:03:44 +0200</creation_ts>
          <short_desc>Utilize own Uri and Uri.Encoded class w/ proper encoding and differentiating encoded/decoded variants by type</short_desc>
          <delta_ts>2019-03-29 17:54:45 +0100</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>3</classification_id>
          <classification>JogAmp</classification>
          <product>Gluegen</product>
          <component>core</component>
          <version>2.3.0</version>
          <rep_platform>All</rep_platform>
          <op_sys>all</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>---</priority>
          <bug_severity>enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>908</dependson>
          <blocked>1103</blocked>
    
    <blocked>1109</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Sven Gothel">sgothel</reporter>
          <assigned_to name="Sven Gothel">sgothel</assigned_to>
          <cc>askinner</cc>
    
    <cc>brice.figureau</cc>
    
    <cc>harvey.harrison</cc>
    
    <cc>org.jogamp</cc>
          
          <cf_type>---</cf_type>
          <cf_scm_refs>5205e47e8a2e84e793b26305391b1c4f8648597c
2d615932505d4870f3fd0dd37f21fb3d308ab536
6322991799268166e46aeeacb142c11d45950f48
dde91a061cb0bc209442fe0e74a532b91d1bb4b8
6a466e3f1e92a1e831ea61d1bb72c32f56b2a28d
jogl 1bdc495c19d3c8798a56d8476247084f0c870b48
c97e35377aea70cb293cabdd205bcc5da64b95c6</cf_scm_refs>
          <cf_workaround>---</cf_workaround>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>4196</commentid>
    <comment_count>0</comment_count>
    <who name="Sven Gothel">sgothel</who>
    <bug_when>2014-09-07 08:03:44 +0200</bug_when>
    <thetext>Resolution of Bug 908 shows that utilizing URI is almost fatal:
  - the fact, that the encoded and unencoded variant uses the same String type,

  - the URI/URL decoding differs, is not complete 
    (e.g. %20 .. SPACE remains in decoded part),

  - and does not comply w/ RFC 2396 and RFC 3986 (encoding), 
    e.g. not all RESERVED chars are encoded.

This shall be solved by our own immutable Uri and Uri.Encoded class,
where all &apos;encoded String&apos; arguments shall be replaced w/ Uri.Encoded.

Further more, move all Uri relevant operations from IOUtil to Uri.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>4198</commentid>
    <comment_count>1</comment_count>
    <who name="Sven Gothel">sgothel</who>
    <bug_when>2014-09-07 10:23:14 +0200</bug_when>
    <thetext>commit 5205e47e8a2e84e793b26305391b1c4f8648597c 
branch v2.3.0_branch

Utilize own Uri and Uri.Encoded class w/ proper encoding 
and differentiating encoded/decoded variants by type [Part 1]
    
 - Add immutable com.jogamp.common.net.Uri class impl. 
   RFC 2396 w/ encoding of RFC 3986
    
 - Class Uri.Encoded is used to represent encoded parts
    
 - IOUtil: Remove unused methods (residing in Uri) 
   and mark others deprecated (will move to Uri)
    
 - Adopt usage of Uri: This must be completet in follow-up commits!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>4199</commentid>
    <comment_count>2</comment_count>
    <who name="Sven Gothel">sgothel</who>
    <bug_when>2014-09-08 05:13:45 +0200</bug_when>
    <thetext>2d615932505d4870f3fd0dd37f21fb3d308ab536
  - Uri.PATH_LEGAL: Remove reserved &apos;punct&apos;, 
    encoding all reserved chars but &apos;!&apos;, allows removal of PATH_MIN_LEGAL
  - Add comment for Harmony values for review

6322991799268166e46aeeacb142c11d45950f48    
    - Refine Uri
      - remove System.err.print*
      - scheme is of type Encode
    
    - Refine Uri.Encode
      - substring(..) shall return type Encode
    
    - Fix unit tests (passing on GNU/Linux, OSX and Windows)

dde91a061cb0bc209442fe0e74a532b91d1bb4b8
 Complete Uri impl. and adoption throughout GlueGen
    
 - Uri:
   - Add error correction (fix) of path at ctor
     in case a a contained Uri is requested from an opaque one.
     The latter might come from URI/URL and is not properly encoded!
     See Uri.PARSE_HINT_FIX_PATH
    
   - Simplify conversion methods:
     - valueOf(URI/URL): Re-encode only if not opaque
     - getNativeFilePath() -&gt; toFile()
    
   - Move IOUtil Uri related constants to class Uri
    
   - Add DEBUG and DEBUG_SHOWFIX
    
 - Complete adoption of URI -&gt; Uri changes
   - IOUtil, JarUtil and TempJarCache still holds some
     left over deprecated methods, which will be removed
     after officially starting 2.3.0 (JOGL dependencies)
    
   - Otherwise not URI utilization left
    
 - Tests
   - Cleaned TestUri01 and TestUri03Resolving
    
   - TestUri03Resolving also tests URL -&gt; Uri,
     and hence mentioned Uri.PARSE_HINT_FIX_PATH</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>4222</commentid>
    <comment_count>3</comment_count>
    <who name="Sven Gothel">sgothel</who>
    <bug_when>2014-09-08 13:58:00 +0200</bug_when>
    <thetext>6a466e3f1e92a1e831ea61d1bb72c32f56b2a28d
  Further Uri completion - As a result of JOGL Uri adoption

jogl 1bdc495c19d3c8798a56d8476247084f0c870b48
    Uri adoption
    
    - ShaderCode:
      - Using Uri
      - Also encode the rel. &apos;includeFile&apos; (was missing earlier)
    
    - GLMediaPlayer
      - Exposes Uri in API, removed URI</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>4225</commentid>
    <comment_count>4</comment_count>
    <who name="Sven Gothel">sgothel</who>
    <bug_when>2014-09-10 07:23:15 +0200</bug_when>
    <thetext>c97e35377aea70cb293cabdd205bcc5da64b95c6

 - Refine API doc
   - Add notion of {@code host} and {@code port} validation
    
 - Add create(Encoded ..), allowing creation of variants w/o re-encoding
    
 - Provide common impl. for getNormalized(), getDirectory(), 
                            getParent() and getRelativeOf()
   Above feature methods share common goals, hence use same implementation:
   - If opaque, cut-off query and merge after operation
   - cleanup path, i.e. /dummy/../test/ -&gt; /test/
   - cutoff file, dir - if requested
   - append optional appendix and cleanup again
    
   Return behavior various thought, i.e. null, this or allow exception.
    
 Enhanced test of above features.</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>