summaryrefslogtreecommitdiffstats
path: root/src/junit/com/jogamp/common/net/TestUri03Resolving.java
diff options
context:
space:
mode:
authorSven Gothel <[email protected]>2014-09-08 05:09:02 +0200
committerSven Gothel <[email protected]>2014-09-08 05:09:02 +0200
commitdde91a061cb0bc209442fe0e74a532b91d1bb4b8 (patch)
tree9c046c2d5deb74cb45296cbd400c56cf0a2c60fd /src/junit/com/jogamp/common/net/TestUri03Resolving.java
parent6322991799268166e46aeeacb142c11d45950f48 (diff)
Bug 1063: 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() -> toFile() - Move IOUtil Uri related constants to class Uri - Add DEBUG and DEBUG_SHOWFIX - Complete adoption of URI -> 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 ip TestUri01 and TestUri03Resolving - TestUri03Resolving also tests URL -> Uri, and hence mentioned Uri.PARSE_HINT_FIX_PATH
Diffstat (limited to 'src/junit/com/jogamp/common/net/TestUri03Resolving.java')
-rw-r--r--src/junit/com/jogamp/common/net/TestUri03Resolving.java258
1 files changed, 168 insertions, 90 deletions
diff --git a/src/junit/com/jogamp/common/net/TestUri03Resolving.java b/src/junit/com/jogamp/common/net/TestUri03Resolving.java
index 9445100..54e2976 100644
--- a/src/junit/com/jogamp/common/net/TestUri03Resolving.java
+++ b/src/junit/com/jogamp/common/net/TestUri03Resolving.java
@@ -2,6 +2,7 @@ package com.jogamp.common.net;
import java.io.File;
import java.io.IOException;
+import java.net.URI;
import java.net.URISyntaxException;
import java.net.URL;
import java.net.URLConnection;
@@ -13,7 +14,6 @@ import org.junit.Test;
import com.jogamp.common.net.Uri;
import com.jogamp.common.os.Platform;
-import com.jogamp.common.util.IOUtil;
import com.jogamp.junit.util.JunitTracer;
import org.junit.FixMethodOrder;
@@ -24,7 +24,7 @@ public class TestUri03Resolving extends JunitTracer {
// Bug 908, issues w/ windows file path char: $ ^ ~ # [ ]
- public static final String[][] uriHttpSArray = new String[][] {
+ private static final String[][] uriHttpSArray = new String[][] {
new String[] {"http://localhost/gluegen/build-x86_64/gluegen-rt.jar"},
new String[] {"http://localhost/gluegen/"+'\u0394'+"/gluegen-rt.jar"},
@@ -43,10 +43,14 @@ public class TestUri03Resolving extends JunitTracer {
new String[] {"jar:http://localhost/gluegen/R%23/gluegen-rt.jar!/"},
+ new String[] {"jar:http://localhost/gluegen/A%24/B%5E/C~/D%23/E%5B/F%5D/gluegen-rt.jar!/"},
+
+ new String[] {"jar:http://localhost/gluegen/%24/%5E/~/%23/%5B/%5D/gluegen-rt.jar!/"},
+
new String[] {"jar:http://localhost/gluegen/"+'\u0394'+"/gluegen-rt.jar!/"},
};
- public static final String[][] uriFileSArrayUnix = new String[][] {
+ private static final String[][] uriFileSArrayUnix = new String[][] {
new String[] {"file:/gluegen/build-x86_64/gluegen-rt.jar"},
new String[] {"file:/gluegen/"+'\u0394'+"/gluegen-rt.jar"},
@@ -67,10 +71,14 @@ public class TestUri03Resolving extends JunitTracer {
new String[] {"jar:file:/gluegen/R%23/gluegen-rt.jar!/"},
+ new String[] {"jar:file:/gluegen/A%24/B%5E/C~/D%23/E%5B/F%5D/gluegen-rt.jar!/"},
+
+ new String[] {"jar:file:/gluegen/%24/%5E/~/%23/%5B/%5D/gluegen-rt.jar!/"},
+
new String[] {"jar:file:/gluegen/"+'\u0394'+"/gluegen-rt.jar!/"},
};
- public static final String[][] uriFileSArrayWindows = new String[][] {
+ private static final String[][] uriFileSArrayWindows = new String[][] {
new String[] {"file:/C%3A/gluegen/build-x86_64/gluegen-rt.jar"},
new String[] {"file:/C%3A/gluegen/"+'\u0394'+"/gluegen-rt.jar"},
@@ -86,7 +94,6 @@ public class TestUri03Resolving extends JunitTracer {
new String[] {"jar:file:/C%3A/gluegen/build-x86_64/gluegen-rt.jar!/com/jogamp/common/os/Platform.class"},
new String[] {"jar:file:/C%3A/gluegen/build-x86_64%20öä%20lala/gluegen-rt.jar!/com/jogamp/common/os/Platform.class"},
- new String[] {"jar:file:/C%3A/gluegen/build-x86_64%20öä%20lala/gluegen-rt.jar!/com/jogamp/common/os/Platform.class"},
new String[] {"jar:file:///C%3A/gluegen/build-x86_64%20öä%20lala/gluegen-rt.jar!/com/jogamp/common/os/Platform.class"},
@@ -94,9 +101,43 @@ public class TestUri03Resolving extends JunitTracer {
new String[] {"jar:file:/C%3A/gluegen/R%23/gluegen-rt.jar!/"},
+ new String[] {"jar:file:/C%3A/gluegen/A%24/B%5E/C~/D%23/E%5B/F%5D/gluegen-rt.jar!/"},
+
+ new String[] {"jar:file:/C%3A/gluegen/%24/%5E/~/%23/%5B/%5D/gluegen-rt.jar!/"},
+
new String[] {"jar:file:/C%3A/gluegen/"+'\u0394'+"/gluegen-rt.jar!/"},
};
+ private static final String[][] urlFileSArrayWindows = new String[][] {
+ new String[] {"file:/C:/gluegen/build-x86_64/gluegen-rt.jar"},
+
+ new String[] {"file:/C:/gluegen/"+'\u0394'+"/gluegen-rt.jar"},
+
+ new String[] {"file:/C:/gluegen/build-x86_64%20lala/gluegen-rt.jar"},
+
+ new String[] {"file:/C:/gluegen/build-x86_64%20öä%20lala/gluegen-rt.jar"},
+
+ new String[] {"jar:file:/C:/gluegen/build-x86_64/gluegen-rt.jar!/"},
+
+ new String[] {"jar:file:/C:/gluegen/build-x86_64%20öä%20lala/gluegen-rt.jar!/"},
+
+ new String[] {"jar:file:/C:/gluegen/build-x86_64/gluegen-rt.jar!/com/jogamp/common/os/Platform.class"},
+
+ new String[] {"jar:file:/C:/gluegen/build-x86_64%20öä%20lala/gluegen-rt.jar!/com/jogamp/common/os/Platform.class"},
+
+ new String[] {"jar:file:///C:/gluegen/build-x86_64%20öä%20lala/gluegen-rt.jar!/com/jogamp/common/os/Platform.class"},
+
+ new String[] {"jar:file://filehost/gluegen/build-x86_64%20öä%20lala/gluegen-rt.jar!/com/jogamp/common/os/Platform.class"},
+
+ new String[] {"jar:file:/C:/gluegen/R%23/gluegen-rt.jar!/"},
+
+ new String[] {"jar:file:/C:/gluegen/A%24/B%5E/C~/D%23/E%5B/F%5D/gluegen-rt.jar!/"},
+
+ new String[] {"jar:file:/C:/gluegen/%24/%5E/~/%23/%5B/%5D/gluegen-rt.jar!/"},
+
+ new String[] {"jar:file:/C:/gluegen/"+'\u0394'+"/gluegen-rt.jar!/"},
+ };
+
public static final String[][] fileSArrayUnix = new String[][] {
new String[] {"/gluegen/build-x86_64/gluegen-rt.jar",
"file:/gluegen/build-x86_64/gluegen-rt.jar",
@@ -158,122 +199,84 @@ public class TestUri03Resolving extends JunitTracer {
};
@Test
- public void test00BasicCoding() throws IOException, URISyntaxException {
- final String string = "Hallo Welt öä";
- System.err.println("sp1 "+string);
- 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 = Uri.valueOf(file);
- URIDumpUtil.showUri(uri0);
- URIDumpUtil.showReencodedURIOfUri(uri0);
+ public void test01HttpUri2URL() throws IOException, URISyntaxException {
+ testUri2URL(getSimpleTestName("."), uriHttpSArray);
+ }
- boolean ok = true;
- {
- final String s2 = IOUtil.slashify(file.getAbsolutePath(), true /* startWithSlash */, file.isDirectory() /* endWithSlash */);
- System.err.println("uri2.slashify: "+s2);
- final Uri uri1 = Uri.create(IOUtil.FILE_SCHEME, null, s2, null);
- final boolean equalEncoded= uri0.getEncoded().equals(uri1.getEncoded());
- final boolean equalPath = uri0.path.decode().equals(uri1.path.decode());
- final boolean equalASCII= uri0.toASCIIString().equals(uri1.toASCIIString().get());
- System.err.println("uri2.enc : "+uri1.getEncoded()+" - "+(equalEncoded?"OK":"ERROR"));
- System.err.println("uri2.pathD : "+uri1.path.decode()+" - "+(equalPath?"OK":"ERROR"));
- System.err.println("uri2.asciiE: "+uri1.toASCIIString()+" - "+(equalASCII?"OK":"ERROR"));
- ok = equalEncoded && equalPath && equalASCII && ok;
- }
- {
- final String s2 = "/"+string;
- System.err.println("uri3.orig: "+s2);
- final Uri uri1 = Uri.create(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 equalEncoded = rString.equals(uri1.toString());
- final boolean equalPath = rPath.equals(uri1.path.decode());
- final boolean equalASCII= rASCII.equals(uri1.toASCIIString().get());
- System.err.println("uri3.enc : "+uri1.toString()+" - "+(equalEncoded?"OK":"ERROR"));
- System.err.println("uri3.pathD : "+uri1.path.decode()+" - "+(equalPath?"OK":"ERROR"));
- System.err.println("uri3.asciiE: "+uri1.toASCIIString()+" - "+(equalASCII?"OK":"ERROR"));
- ok = equalEncoded && equalPath && equalASCII && ok;
- }
- {
- final String s2 = "//lala.org/"+string;
- System.err.println("uri4.orig: "+s2);
- final Uri uri1 = Uri.create(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.path.decode());
- final boolean equalASCII= rASCII.equals(uri1.toASCIIString().get());
- System.err.println("uri4.enc : "+uri1.toString()+" - "+(equalString?"OK":"ERROR"));
- System.err.println("uri4.pathD : "+uri1.path.decode()+" - "+(equalPath?"OK":"ERROR"));
- System.err.println("uri4.asciiE: "+uri1.toASCIIString()+" - "+(equalASCII?"OK":"ERROR"));
- ok = equalString && equalPath && equalASCII && ok;
- }
- Assert.assertTrue("One or more errors occured see stderr above", ok);
+ @Test
+ public void test02FileUnixUri2URL() throws IOException, URISyntaxException {
+ testUri2URL(getSimpleTestName("."), uriFileSArrayUnix);
}
@Test
- public void test01HttpURI2URL() throws IOException, URISyntaxException {
- testURI2URL(getSimpleTestName("."), uriHttpSArray);
+ public void test03FileWindowsUri2URL() throws IOException, URISyntaxException {
+ testUri2URL(getSimpleTestName("."), uriFileSArrayWindows);
}
@Test
- public void test02FileUnixURI2URL() throws IOException, URISyntaxException {
- testURI2URL(getSimpleTestName("."), uriFileSArrayUnix);
+ public void test11HttpURL2Uri() throws IOException, URISyntaxException {
+ testURL2Uri(getSimpleTestName("."), uriHttpSArray);
}
@Test
- public void test03FileWindowsURI2URL() throws IOException, URISyntaxException {
- testURI2URL(getSimpleTestName("."), uriFileSArrayWindows);
+ public void test12FileUnixURL2Uri() throws IOException, URISyntaxException {
+ testURL2Uri(getSimpleTestName("."), uriFileSArrayUnix);
}
@Test
- public void test04FileUnixURI2URL() throws IOException, URISyntaxException {
+ public void test13FileWindowsURL2Uri() throws IOException, URISyntaxException {
+ testURL2Uri(getSimpleTestName("."), urlFileSArrayWindows);
+ }
+
+ @Test
+ public void test24FileUnixURI2URL() throws IOException, URISyntaxException {
if( Platform.OSType.WINDOWS != PlatformPropsImpl.OS_TYPE ) {
- testFile2URI(getSimpleTestName("."), fileSArrayUnix);
+ testFile2Uri(getSimpleTestName("."), fileSArrayUnix);
}
}
@Test
- public void test05FileWindowsURI2URL() throws IOException, URISyntaxException {
+ public void test25FileWindowsURI2URL() throws IOException, URISyntaxException {
if( Platform.OSType.WINDOWS == PlatformPropsImpl.OS_TYPE ) {
- testFile2URI(getSimpleTestName("."), fileSArrayWindows);
+ testFile2Uri(getSimpleTestName("."), fileSArrayWindows);
}
}
- static void testURI2URL(final String testname, final String[][] uriSArray) throws IOException, URISyntaxException {
+ static void testUri2URL(final String testname, final String[][] uriSArray) throws IOException, URISyntaxException {
boolean ok = true;
for(int i=0; i<uriSArray.length; i++) {
final String[] uriSPair = uriSArray[i];
final String uriSource = uriSPair[0];
System.err.println("SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS "+testname+": "+(i+1)+"/"+uriSArray.length);
- ok = testURI2URL(Uri.Encoded.cast(uriSource)) && ok;
+ ok = testUri2URL(Uri.Encoded.cast(uriSource)) && ok;
System.err.println("EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE "+testname+": "+(i+1)+"/"+uriSArray.length);
}
Assert.assertTrue("One or more errors occured see stderr above", ok);
}
- static boolean testURI2URL(final Uri.Encoded uriEncodedSource) throws IOException, URISyntaxException {
- final Uri uri0 = new Uri(uriEncodedSource);
+ static boolean testUri2URL(final Uri.Encoded uriSource) throws IOException, URISyntaxException {
+ System.err.println("uriSource : "+uriSource);
+ final Uri uri0 = new Uri(uriSource);
URIDumpUtil.showUri(uri0);
- final String expected1 = uriEncodedSource.toString();
- System.err.println("expected__s0: "+uriEncodedSource);
- System.err.println("expected__d1: "+expected1);
+ final URI actualURI = uri0.toURI();
+ URIDumpUtil.showURI(actualURI);
+ final Uri.Encoded actualURIStr = Uri.Encoded.cast(actualURI.toString());
final URL actualURL = uri0.toURL();
- final String actualURLStr = actualURL.toString();
- final boolean equalsURLSrc = uriEncodedSource.equals(actualURLStr);
- final boolean equalsURLDec1 = expected1.equals(actualURLStr);
- final boolean equalsURL = equalsURLSrc || equalsURLDec1;
- System.err.println("actual : "+actualURLStr+" - "+(equalsURL?"OK":"ERROR")+
- " - equalSrc "+equalsURLSrc+", equalDec1 "+equalsURLDec1);
+ URIDumpUtil.showURL(actualURL);
+ final Uri.Encoded actualURLStr = Uri.Encoded.cast(actualURL.toExternalForm());
- final boolean ok = equalsURL;
+ System.err.println("expected_URX: "+uriSource);
+
+ final boolean equalsURI = uriSource.equals(actualURIStr);
+ System.err.println("actual URI: "+actualURIStr+" - "+(equalsURI?"OK":"ERROR"));
+ final boolean equalsURL = uriSource.equals(actualURLStr);
+ System.err.println("actual URL: "+actualURLStr+" - "+(equalsURL?"OK":"ERROR"));
+ URIDumpUtil.showReencodedURIOfUri(uri0);
+ URIDumpUtil.showReencodedUriOfURI(actualURI);
+
+ boolean ok = equalsURL && equalsURI;
// now test open ..
Throwable t = null;
@@ -290,10 +293,85 @@ public class TestUri03Resolving extends JunitTracer {
System.err.println("XXX: No openConnection() failure");
System.err.println("XXX: "+con);
}
+
+ if( uri0.scheme.equals(Uri.JAR_SCHEME) ) {
+ // Extended tests on JAR Uri
+ final Uri uriSub0 = uri0.getContainedUri();
+ Assert.assertNotNull(uriSub0);
+ System.err.println("EXT JAR contained:");
+ URIDumpUtil.showUri(uriSub0);
+ final Uri uriSubDir0 = uriSub0.getDirectory();
+ final Uri uriSubParent0 = uriSub0.getParent();
+ System.err.println("EXT JAR contained Dir:");
+ URIDumpUtil.showUri(uriSubDir0);
+ System.err.println("EXT JAR contained Parent:");
+ URIDumpUtil.showUri(uriSubParent0);
+ ok = uriSubDir0.equals(uriSubParent0) && ok;
+ }
+ return ok;
+ }
+
+ static void testURL2Uri(final String testname, final String[][] urlSArray) throws IOException, URISyntaxException {
+ boolean ok = true;
+ for(int i=0; i<urlSArray.length; i++) {
+ final String[] uriSPair = urlSArray[i];
+ final String uriSource = uriSPair[0];
+ System.err.println("SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS "+testname+": "+(i+1)+"/"+urlSArray.length);
+ ok = testURL2Uri(new URL(uriSource)) && ok;
+ System.err.println("EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE "+testname+": "+(i+1)+"/"+urlSArray.length);
+ }
+ Assert.assertTrue("One or more errors occured see stderr above", ok);
+ }
+
+ static boolean testURL2Uri(final URL urlSource) throws IOException, URISyntaxException {
+ System.err.println("URL Source : "+urlSource);
+ URIDumpUtil.showURL(urlSource);
+
+ final URI uriSource = urlSource.toURI();
+ URIDumpUtil.showURI(uriSource);
+
+ final Uri uri0 = Uri.valueOf(urlSource);
+ URIDumpUtil.showUri(uri0);
+
+ final URL uriToURL = uri0.toURL();
+ URIDumpUtil.showURL(uriToURL);
+
+ // now test open ..
+ Throwable t = null;
+ URLConnection con = null;
+ try {
+ con = uriToURL.openConnection();
+ } catch (final Throwable _t) {
+ t = _t;
+ }
+ if( null != t ) {
+ System.err.println("XXX: "+t.getClass().getName()+": "+t.getMessage());
+ t.printStackTrace();
+ } else {
+ System.err.println("XXX: No openConnection() failure");
+ System.err.println("XXX: "+con);
+ }
+
+ boolean ok = true;
+
+ if( uri0.scheme.equals(Uri.JAR_SCHEME) ) {
+ // Extended tests on JAR Uri
+ final Uri uriSub0 = uri0.getContainedUri();
+ Assert.assertNotNull(uriSub0);
+ System.err.println("EXT JAR contained:");
+ URIDumpUtil.showUri(uriSub0);
+ final Uri uriSubDir0 = uriSub0.getDirectory();
+ final Uri uriSubParent0 = uriSub0.getParent();
+ System.err.println("EXT JAR contained Dir:");
+ URIDumpUtil.showUri(uriSubDir0);
+ System.err.println("EXT JAR contained Parent:");
+ URIDumpUtil.showUri(uriSubParent0);
+ ok = uriSubDir0.equals(uriSubParent0) && ok;
+ }
return ok;
}
- static void testFile2URI(final String testname, final String[][] uriSArray) throws IOException, URISyntaxException {
+ static void testFile2Uri(final String testname, final String[][] uriSArray) throws IOException, URISyntaxException {
boolean ok = true;
for(int i=0; i<uriSArray.length; i++) {
final String[] uriSPair = uriSArray[i];
@@ -301,13 +379,13 @@ public class TestUri03Resolving extends JunitTracer {
final String uriEncExpected= uriSPair[1];
final String fileExpected= uriSPair[2];
System.err.println("SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS "+testname+": "+(i+1)+"/"+uriSArray.length);
- ok = testFile2URI(uriSource, Uri.Encoded.cast(uriEncExpected), fileExpected) && ok;
+ ok = testFile2Uri(uriSource, Uri.Encoded.cast(uriEncExpected), fileExpected) && ok;
System.err.println("EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE "+testname+": "+(i+1)+"/"+uriSArray.length);
}
Assert.assertTrue("One or more errors occured see stderr above", ok);
}
- static boolean testFile2URI(final String fileSource, final Uri.Encoded uriEncExpected, final String fileExpected) throws IOException, URISyntaxException {
+ static boolean testFile2Uri(final String fileSource, final Uri.Encoded uriEncExpected, final String fileExpected) throws IOException, URISyntaxException {
System.err.println("fileSource: "+fileSource);
final File file = new File(fileSource);
System.err.println("file: "+file.getAbsolutePath());
@@ -316,10 +394,10 @@ public class TestUri03Resolving extends JunitTracer {
URIDumpUtil.showReencodedURIOfUri(uri0);
final URL actualUrl = uri0.toURL();
- final String actualFileS = uri0.getNativeFilePath();
- final boolean equalsFilePath = fileExpected.equals(actualFileS);
+ final File actualFile = uri0.toFile();
+ final boolean equalsFilePath = fileExpected.equals(actualFile.getPath());
System.err.println("expected_path: "+fileExpected);
- System.err.println("actual___file-path: "+actualFileS+" - "+(equalsFilePath?"OK":"ERROR"));
+ System.err.println("actual___file-path: "+actualFile+" - "+(equalsFilePath?"OK":"ERROR"));
final boolean equalsEncUri = uriEncExpected.equals(uri0.getEncoded());
System.err.println("expected__encUri: "+uriEncExpected);
System.err.println("actual_______Uri: "+uri0.getEncoded()+" - "+(equalsEncUri?"OK":"ERROR"));