summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/java/com/jogamp/common/util/IOUtil.java6
-rw-r--r--src/junit/com/jogamp/common/util/TestIOUtilURIHandling.java110
2 files changed, 113 insertions, 3 deletions
diff --git a/src/java/com/jogamp/common/util/IOUtil.java b/src/java/com/jogamp/common/util/IOUtil.java
index d6ef87a..bbda235 100644
--- a/src/java/com/jogamp/common/util/IOUtil.java
+++ b/src/java/com/jogamp/common/util/IOUtil.java
@@ -313,7 +313,7 @@ public class IOUtil {
* @throws URISyntaxException if the resulting string does not comply w/ an RFC 2396 URI
*/
public static URI toURISimple(File file) throws URISyntaxException {
- return new URI(FILE_SCHEME, null, encodeToURI(slashify(file.getAbsolutePath(), true /* startWithSlash */, file.isDirectory() /* endWithSlash */)), null);
+ return new URI(FILE_SCHEME, null, slashify(file.getAbsolutePath(), true /* startWithSlash */, file.isDirectory() /* endWithSlash */), null);
}
/**
@@ -322,7 +322,7 @@ public class IOUtil {
* @throws URISyntaxException if the resulting string does not comply w/ an RFC 2396 URI
*/
public static URI toURISimple(String protocol, String path, boolean isDirectory) throws URISyntaxException {
- return new URI(protocol, null, encodeToURI(slashify(new File(path).getAbsolutePath(), true /* startWithSlash */, isDirectory /* endWithSlash */)), null);
+ return new URI(protocol, null, slashify(new File(path).getAbsolutePath(), true /* startWithSlash */, isDirectory /* endWithSlash */), null);
}
/**
@@ -804,7 +804,7 @@ public class IOUtil {
* @throws URISyntaxException if path is empty or has no parent directory available while resolving <code>../</code>
*/
public static URI getRelativeOf(URI baseURI, String relativePath) throws URISyntaxException {
- return compose(baseURI.getScheme(), baseURI.getSchemeSpecificPart(), encodeToURI(relativePath), baseURI.getFragment());
+ return compose(baseURI.getScheme(), baseURI.getSchemeSpecificPart(), relativePath, baseURI.getFragment());
}
/**
diff --git a/src/junit/com/jogamp/common/util/TestIOUtilURIHandling.java b/src/junit/com/jogamp/common/util/TestIOUtilURIHandling.java
index 6103d9a..ecf950b 100644
--- a/src/junit/com/jogamp/common/util/TestIOUtilURIHandling.java
+++ b/src/junit/com/jogamp/common/util/TestIOUtilURIHandling.java
@@ -168,6 +168,111 @@ public class TestIOUtilURIHandling extends JunitTracer {
};
@Test
+ public void test00BasicCoding() throws IOException, URISyntaxException {
+ final String string = "Hallo Welt öä";
+ System.err.println("sp1 "+string);
+ {
+ String sp2 = IOUtil.encodeToURI(string);
+ String sp3 = IOUtil.encodeToURI(sp2);
+ System.err.println("sp2 "+sp2);
+ System.err.println("sp3 "+sp3);
+ }
+ final File file = new File(string);
+ System.err.println("file "+file);
+ System.err.println("file.path.dec "+file.getPath());
+ System.err.println("file.path.abs "+file.getAbsolutePath());
+ System.err.println("file.path.can "+file.getCanonicalPath());
+ final URI uri0 = file.toURI();
+ System.err.println("uri0.string: "+uri0.toString());
+ System.err.println("uri0.path : "+uri0.getPath());
+ System.err.println("uri0.ascii : "+uri0.toASCIIString());
+ boolean ok = true;
+ {
+ final URI uri1 = IOUtil.toURISimple(file);
+ final boolean equalString= uri0.toString().equals(uri1.toString());
+ final boolean equalPath = uri0.getPath().equals(uri1.getPath());
+ final boolean equalASCII= uri0.toASCIIString().equals(uri1.toASCIIString());
+ System.err.println("uri1.string: "+uri1.toString()+" - "+(equalString?"OK":"ERROR"));
+ System.err.println("uri1.path : "+uri1.getPath()+" - "+(equalPath?"OK":"ERROR"));
+ System.err.println("uri1.ascii : "+uri1.toASCIIString()+" - "+(equalASCII?"OK":"ERROR"));
+ ok = equalString && equalPath && equalASCII && ok;
+ }
+ {
+ final String s2 = IOUtil.slashify(file.getAbsolutePath(), true /* startWithSlash */, file.isDirectory() /* endWithSlash */);
+ System.err.println("uri2.slashify: "+s2);
+ {
+ // Expected !equals due to double-escaping of space %20 -> %25%20
+ // Double escaping is due to IOUtil.encodeToURI(s2).
+ final String s3 = IOUtil.encodeToURI(s2);
+ System.err.println("uri2.encoded: "+s3);
+ final URI uri1 = new URI(IOUtil.FILE_SCHEME, null, s3, null);
+ final boolean equalString= uri0.toString().equals(uri1.toString());
+ final boolean equalPath = uri0.getPath().equals(uri1.getPath());
+ final boolean equalASCII= uri0.toASCIIString().equals(uri1.toASCIIString());
+ System.err.println("uri2.string: "+uri1.toString()+" - "+(equalString?"EQUAL":"NOT_EQUAL"));
+ System.err.println("uri2.path : "+uri1.getPath()+" - "+(equalPath?"EQUAL":"NOT_EQUAL"));
+ System.err.println("uri2.ascii : "+uri1.toASCIIString()+" - "+(equalASCII?"EQUAL":"NOT_EQUAL"));
+ }
+ final URI uri1 = new URI(IOUtil.FILE_SCHEME, null, s2, null);
+ final boolean equalString= uri0.toString().equals(uri1.toString());
+ final boolean equalPath = uri0.getPath().equals(uri1.getPath());
+ final boolean equalASCII= uri0.toASCIIString().equals(uri1.toASCIIString());
+ System.err.println("uri2.string: "+uri1.toString()+" - "+(equalString?"OK":"ERROR"));
+ System.err.println("uri2.path : "+uri1.getPath()+" - "+(equalPath?"OK":"ERROR"));
+ System.err.println("uri2.ascii : "+uri1.toASCIIString()+" - "+(equalASCII?"OK":"ERROR"));
+ ok = equalString && equalPath && equalASCII && ok;
+ }
+ {
+ final String s2 = "/"+string;
+ System.err.println("uri3.orig: "+s2);
+ final URI uri1 = new URI(IOUtil.FILE_SCHEME, s2, null);
+ final String rString = "file:/Hallo%20Welt%20öä";
+ final String rPath = s2;
+ final String rASCII = "file:/Hallo%20Welt%20%C3%B6%C3%A4";
+ final boolean equalString= rString.equals(uri1.toString());
+ final boolean equalPath = rPath.equals(uri1.getPath());
+ final boolean equalASCII= rASCII.equals(uri1.toASCIIString());
+ System.err.println("uri3.string: "+uri1.toString()+" - "+(equalString?"OK":"ERROR"));
+ System.err.println("uri3.path : "+uri1.getPath()+" - "+(equalPath?"OK":"ERROR"));
+ System.err.println("uri3.ascii : "+uri1.toASCIIString()+" - "+(equalASCII?"OK":"ERROR"));
+ ok = equalString && equalPath && equalASCII && ok;
+ }
+ {
+ final String s2 = "//lala.org/"+string;
+ System.err.println("uri4.orig: "+s2);
+ final URI uri1 = new URI(IOUtil.HTTP_SCHEME, s2, null);
+ final String rString = "http://lala.org/Hallo%20Welt%20öä";
+ final String rPath = "/"+string;
+ final String rASCII = "http://lala.org/Hallo%20Welt%20%C3%B6%C3%A4";
+ final boolean equalString= rString.equals(uri1.toString());
+ final boolean equalPath = rPath.equals(uri1.getPath());
+ final boolean equalASCII= rASCII.equals(uri1.toASCIIString());
+ System.err.println("uri4.string: "+uri1.toString()+" - "+(equalString?"OK":"ERROR"));
+ System.err.println("uri4.path : "+uri1.getPath()+" - "+(equalPath?"OK":"ERROR"));
+ System.err.println("uri4.ascii : "+uri1.toASCIIString()+" - "+(equalASCII?"OK":"ERROR"));
+ ok = equalString && equalPath && equalASCII && ok;
+ }
+ {
+ final String s2 = "http://lala.org/"+string;
+ final String s2enc = IOUtil.encodeToURI(s2);
+ System.err.println("uri5.orig: "+s2);
+ System.err.println("uri5.enc : "+s2enc);
+ final URI uri1 = new URI(s2enc);
+ final String rString = "http://lala.org/Hallo%20Welt%20öä";
+ final String rPath = "/"+string;
+ final String rASCII = "http://lala.org/Hallo%20Welt%20%C3%B6%C3%A4";
+ final boolean equalString= rString.equals(uri1.toString());
+ final boolean equalPath = rPath.equals(uri1.getPath());
+ final boolean equalASCII= rASCII.equals(uri1.toASCIIString());
+ System.err.println("uri5.string: "+uri1.toString()+" - "+(equalString?"OK":"ERROR"));
+ System.err.println("uri5.path : "+uri1.getPath()+" - "+(equalPath?"OK":"ERROR"));
+ System.err.println("uri5.ascii : "+uri1.toASCIIString()+" - "+(equalASCII?"OK":"ERROR"));
+ ok = equalString && equalPath && equalASCII && ok;
+ }
+ Assert.assertTrue("One or more errors occured see stderr above", ok);
+ }
+
+ @Test
public void test01HttpURI2URL() throws IOException, URISyntaxException {
testURI2URL(getSimpleTestName("."), uriHttpSArray);
}
@@ -257,6 +362,11 @@ public class TestIOUtilURIHandling extends JunitTracer {
static boolean testFile2URI(String fileSource, String uriEncExpected, String uriDecExpected, String fileExpected) throws IOException, URISyntaxException {
final File file = new File(fileSource);
+ {
+ final URI uri0 = file.toURI();
+ System.err.println("uri.string: "+uri0.toString());
+ System.err.println("uri.ascii : "+uri0.toASCIIString());
+ }
final URI uri0 = IOUtil.toURISimple(file);
System.err.println("uri.string: "+uri0.toString());
System.err.println("uri.ascii : "+uri0.toASCIIString());