aboutsummaryrefslogtreecommitdiffstats
path: root/src/junit
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
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')
-rw-r--r--src/junit/com/jogamp/common/net/TestUri01.java268
-rw-r--r--src/junit/com/jogamp/common/net/TestUri03Resolving.java258
-rw-r--r--src/junit/com/jogamp/common/net/TestUri99LaunchOnReservedCharPathBug908.java26
-rw-r--r--src/junit/com/jogamp/common/net/URIDumpUtil.java6
-rw-r--r--src/junit/com/jogamp/common/util/TestJarUtil.java40
-rw-r--r--src/junit/com/jogamp/common/util/TestTempJarCache.java29
-rw-r--r--src/junit/com/jogamp/junit/sec/Applet01.java93
-rw-r--r--src/junit/com/jogamp/junit/sec/TestSecIOUtil01.java91
-rw-r--r--src/junit/com/jogamp/junit/util/VersionSemanticsUtil.java9
9 files changed, 435 insertions, 385 deletions
diff --git a/src/junit/com/jogamp/common/net/TestUri01.java b/src/junit/com/jogamp/common/net/TestUri01.java
index 652caa6..bcc7d27 100644
--- a/src/junit/com/jogamp/common/net/TestUri01.java
+++ b/src/junit/com/jogamp/common/net/TestUri01.java
@@ -4,16 +4,12 @@ import java.io.File;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
-import java.net.URL;
-import java.net.URLConnection;
-
-import jogamp.common.os.PlatformPropsImpl;
import org.junit.Assert;
import org.junit.Test;
import com.jogamp.common.net.URIDumpUtil;
-import com.jogamp.common.os.Platform;
+import com.jogamp.common.util.IOUtil;
import com.jogamp.junit.util.JunitTracer;
import org.junit.FixMethodOrder;
@@ -23,7 +19,66 @@ import org.junit.runners.MethodSorters;
public class TestUri01 extends JunitTracer {
@Test
- public void test00URIEscapeSpecialChars() throws IOException, URISyntaxException {
+ 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);
+
+ 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(Uri.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(Uri.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(Uri.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 test02URIEscapeSpecialChars() throws IOException, URISyntaxException {
{
final String vanilla = "XXX ! # $ & ' ( ) * + , / : ; = ? @ [ ]";
final Uri.Encoded escaped = Uri.Encoded.cast("XXX%20!%20%23%20%24%20%26%20%27%20%28%20%29%20%2A%20%2B%20%2C%20/%20%3A%20%3B%20%3D%20%3F%20%40%20%5B%20%5D");
@@ -60,7 +115,7 @@ public class TestUri01 extends JunitTracer {
}
}
@Test
- public void test01URIEscapeCommonChars() throws IOException, URISyntaxException {
+ public void test03URIEscapeCommonChars() throws IOException, URISyntaxException {
{
final String vanilla = "/XXX \"%-.<>\\^_`{|}~";
final Uri.Encoded escaped = Uri.Encoded.cast("/XXX%20%22%25-.%3C%3E%5C%5E_%60%7B%7C%7D~");
@@ -95,16 +150,16 @@ public class TestUri01 extends JunitTracer {
URIDumpUtil.showURI(uri3);
System.err.println("URI -> Uri (keep encoding):");
- final Uri uri4 = Uri.valueOf(uri3, false);
+ final Uri uri4 = Uri.valueOf(uri3);
URIDumpUtil.showUri(uri4);
System.err.println("URI -> Uri (re-encode):");
- final Uri uri5 = Uri.valueOf(uri3, true);
+ final Uri uri5 = Uri.valueOf(uri3);
URIDumpUtil.showUri(uri5);
}
@Test
- public void test03EqualsAndHashCode() throws IOException, URISyntaxException {
+ public void test04EqualsAndHashCode() throws IOException, URISyntaxException {
{
final Uri uri0 = Uri.cast("http://localhost/test01.html#tag01");
final Uri uri1 = Uri.create("http", null, "localhost", -1, "/test01.html", null, "tag01");
@@ -155,7 +210,7 @@ public class TestUri01 extends JunitTracer {
}
@Test
- public void test04ContainedUri() throws IOException, URISyntaxException {
+ public void test05Contained() throws IOException, URISyntaxException {
{
final Uri input = Uri.cast("http://localhost/test01.html#tag01");
final Uri contained = input.getContainedUri();
@@ -185,7 +240,7 @@ public class TestUri01 extends JunitTracer {
}
@Test
- public void test05ParentUri() throws IOException, URISyntaxException {
+ public void test06ParentAndDir() throws IOException, URISyntaxException {
{
final Uri input = Uri.cast("http://localhost/");
final Uri parent = input.getParent();
@@ -193,167 +248,58 @@ public class TestUri01 extends JunitTracer {
}
{
final Uri input = Uri.cast("jar:http://localhost/test01.jar!/com/Lala.class");
- final Uri expected1 = Uri.cast("jar:http://localhost/test01.jar!/com/");
- final Uri expected2 = Uri.cast("jar:http://localhost/test01.jar!/");
- final Uri expected3 = Uri.cast("jar:http://localhost/");
+ final Uri expParen1 = Uri.cast("jar:http://localhost/test01.jar!/com/");
+ final Uri expFolde1 = expParen1;
+ final Uri expParen2 = Uri.cast("jar:http://localhost/test01.jar!/");
+ final Uri expFolde2 = expParen1; // is folder already
+ final Uri expParen3 = Uri.cast("jar:http://localhost/");
+ final Uri expFolde3 = expParen2; // is folder already
+ Assert.assertNotEquals(input, expParen1);
+ Assert.assertNotEquals(expParen1, expParen2);
+ Assert.assertNotEquals(expParen1, expParen3);
+
final Uri parent1 = input.getParent();
+ final Uri folder1 = input.getDirectory();
final Uri parent2 = parent1.getParent();
+ final Uri folder2 = parent1.getDirectory();
final Uri parent3 = parent2.getParent();
- Assert.assertEquals(expected1, parent1);
- Assert.assertEquals(expected1.hashCode(), parent1.hashCode());
- Assert.assertEquals(expected2, parent2);
- Assert.assertEquals(expected2.hashCode(), parent2.hashCode());
- Assert.assertEquals(expected3, parent3);
- Assert.assertEquals(expected3.hashCode(), parent3.hashCode());
- }
- {
- final Uri input = Uri.cast("http://localhost/dir/test01.jar?lala=01#frag01");
- final Uri expected1 = Uri.cast("http://localhost/dir/");
- final Uri expected2 = Uri.cast("http://localhost/");
- final Uri parent1 = input.getParent();
- final Uri parent2 = parent1.getParent();
- Assert.assertEquals(expected1, parent1);
- Assert.assertEquals(expected1.hashCode(), parent1.hashCode());
- Assert.assertEquals(expected2, parent2);
- Assert.assertEquals(expected2.hashCode(), parent2.hashCode());
- }
- }
+ final Uri folder3 = parent2.getDirectory();
- @Test
- public void test10HttpUri2URL() throws IOException, URISyntaxException {
- testUri2URL(getSimpleTestName("."), TestUri03Resolving.uriHttpSArray);
- }
+ Assert.assertEquals(expParen1, parent1);
+ Assert.assertEquals(expParen1.hashCode(), parent1.hashCode());
+ Assert.assertEquals(expFolde1, folder1);
- @Test
- public void test20FileUnixUri2URL() throws IOException, URISyntaxException {
- testUri2URL(getSimpleTestName("."), TestUri03Resolving.uriFileSArrayUnix);
- }
+ Assert.assertEquals(expParen2, parent2);
+ Assert.assertEquals(expParen2.hashCode(), parent2.hashCode());
+ Assert.assertEquals(expFolde2, folder2);
- @Test
- public void test21FileWindowsUri2URL() throws IOException, URISyntaxException {
- testUri2URL(getSimpleTestName("."), TestUri03Resolving.uriFileSArrayWindows);
- }
-
- @Test
- public void test30FileUnixUri2URL() throws IOException, URISyntaxException {
- if( Platform.OSType.WINDOWS != PlatformPropsImpl.OS_TYPE ) {
- testFile2Uri(getSimpleTestName("."), TestUri03Resolving.fileSArrayUnix);
- }
- }
-
- @Test
- public void test31FileWindowsUri2URL() throws IOException, URISyntaxException {
- if( Platform.OSType.WINDOWS == PlatformPropsImpl.OS_TYPE ) {
- testFile2Uri(getSimpleTestName("."), TestUri03Resolving.fileSArrayWindows);
- }
- }
+ Assert.assertEquals(expParen3, parent3);
+ Assert.assertEquals(expParen3.hashCode(), parent3.hashCode());
+ Assert.assertEquals(expFolde3, folder3);
- 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;
- 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 uriSource) throws IOException, URISyntaxException {
- System.err.println("uriSource : "+uriSource);
- final Uri uri0 = new Uri(uriSource);
- URIDumpUtil.showUri(uri0);
-
- final URI actualURI = uri0.toURI();
- URIDumpUtil.showURI(actualURI);
- final Uri.Encoded actualURIStr = Uri.Encoded.cast(actualURI.toString());
-
- final URL actualURL = uri0.toURL();
- URIDumpUtil.showURL(actualURL);
- final Uri.Encoded actualURLStr = Uri.Encoded.cast(actualURL.toExternalForm());
-
- 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);
-
- final boolean ok = equalsURL && equalsURI;
+ {
+ final Uri input = Uri.cast("http://localhost/dir/test01.jar?lala=01#frag01");
+ final Uri expParen1 = Uri.cast("http://localhost/dir/");
+ final Uri expFolde1 = expParen1;
+ final Uri expParen2 = Uri.cast("http://localhost/");
+ final Uri expFolde2 = expParen1; // is folder already
+ Assert.assertNotEquals(input, expParen1);
+ Assert.assertNotEquals(expParen1, expParen2);
- // now test open ..
- Throwable t = null;
- URLConnection con = null;
- try {
- con = actualURL.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);
- }
- return ok;
- }
+ final Uri parent1 = input.getParent();
+ final Uri folder1 = input.getDirectory();
+ final Uri parent2 = parent1.getParent();
+ final Uri folder2 = parent1.getDirectory();
- 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];
- final String uriSource = uriSPair[0];
- 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;
- System.err.println("EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE "+testname+": "+(i+1)+"/"+uriSArray.length);
- }
- Assert.assertTrue("One or more errors occured see stderr above", ok);
- }
+ Assert.assertEquals(expParen1, parent1);
+ Assert.assertEquals(expParen1.hashCode(), parent1.hashCode());
+ Assert.assertEquals(expFolde1, folder1);
- 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());
- final Uri uri1 = Uri.valueOf(file);
- System.err.println("uri1.string: "+uri1.toString());
- URIDumpUtil.showUri(uri1);
- URIDumpUtil.showURL(uri1.toURL());
- URIDumpUtil.showReencodedURIOfUri(uri1);
-
- final URL actualUrl = uri1.toURL();
- final String actualFileS = uri1.getNativeFilePath();
- final boolean equalsFilePath = fileExpected.equals(actualFileS);
- System.err.println("expected_path: "+fileExpected);
- System.err.println("actual___file-path: "+actualFileS+" - "+(equalsFilePath?"OK":"ERROR"));
- final boolean equalsEncUri = uriEncExpected.equals(uri1.input);
- System.err.println("expected__encUri: "+uriEncExpected);
- System.err.println("actual_______Uri: "+uri1.input+" - "+(equalsEncUri?"OK":"ERROR"));
- final boolean ok = equalsEncUri && equalsFilePath;
-
- System.err.println("actual_______URL: "+actualUrl.toExternalForm());
-
- // now test open ..
- Throwable t = null;
- URLConnection con = null;
- try {
- con = actualUrl.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);
+ Assert.assertEquals(expParen2, parent2);
+ Assert.assertEquals(expParen2.hashCode(), parent2.hashCode());
+ Assert.assertEquals(expFolde2, folder2);
}
- return ok;
}
public static void main(final String args[]) throws IOException {
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"));
diff --git a/src/junit/com/jogamp/common/net/TestUri99LaunchOnReservedCharPathBug908.java b/src/junit/com/jogamp/common/net/TestUri99LaunchOnReservedCharPathBug908.java
index 011b18c..09748a1 100644
--- a/src/junit/com/jogamp/common/net/TestUri99LaunchOnReservedCharPathBug908.java
+++ b/src/junit/com/jogamp/common/net/TestUri99LaunchOnReservedCharPathBug908.java
@@ -42,7 +42,6 @@ import org.junit.runners.MethodSorters;
import com.jogamp.common.os.AndroidVersion;
import com.jogamp.common.os.Platform;
-import com.jogamp.common.util.IOUtil;
import com.jogamp.common.util.JarUtil;
import com.jogamp.common.util.ReflectionUtil;
import com.jogamp.junit.util.JunitTracer;
@@ -84,16 +83,16 @@ public class TestUri99LaunchOnReservedCharPathBug908 extends JunitTracer {
@Test
public void test00TempJarCacheSimplePath() throws IOException, IllegalArgumentException, URISyntaxException {
- testTempJarCacheOddJarPathImpl("simpletons/", "simpletons/");
+ testTempJarCacheOddJarPathImpl("simpletons/");
}
@Test
public void test01TempJarCacheOddPath() throws IOException, IllegalArgumentException, URISyntaxException {
// Bug 908, issues w/ windows file path char: $ ^ ~ # [ ]
- testTempJarCacheOddJarPathImpl("A$-B^-C~-D#-E]-F[-öä/",
+ testTempJarCacheOddJarPathImpl("A$-B^-C~-D#-E]-F[-öä/");
// "A$-B%5E-C~-D#-E]-F[-%C3%B6%C3%A4/"); <- Firefox URI encoding! '#' -> [1]
// "A$-B%5E-C~-D%23-E]-F[-%C3%B6%C3%A4/"); <- '[' ']' -> [2]
- "A$-B%5E-C~-D%23-E%5D-F%5B-%C3%B6%C3%A4/");
+ // "A$-B%5E-C~-D%23-E%5D-F%5B-%C3%B6%C3%A4/");
/**
* [1] '#'
java.lang.IllegalArgumentException: URI has a fragment component
@@ -111,34 +110,35 @@ public class TestUri99LaunchOnReservedCharPathBug908 extends JunitTracer {
*/
}
- private void testTempJarCacheOddJarPathImpl(final String subPathUTF, final String subPathEncoded) throws IOException, IllegalArgumentException, URISyntaxException {
+ private void testTempJarCacheOddJarPathImpl(final String subPathUTF) throws IOException, IllegalArgumentException, URISyntaxException {
if(AndroidVersion.isAvailable) { System.err.println("n/a on Android"); return; }
+ final Uri.Encoded subPathEncoded = new Uri.Encoded(subPathUTF, Uri.PATH_LEGAL);
final String reservedCharPathUnencoded = "test/build/"+getClass().getSimpleName()+"/"+getTestMethodName()+"/"+subPathUTF;
- final String reservedCharPathEncoded = "test/build/"+getClass().getSimpleName()+"/"+getTestMethodName()+"/"+subPathEncoded;
+ final Uri.Encoded reservedCharPathEncoded = Uri.Encoded.cast("test/build/"+getClass().getSimpleName()+"/"+getTestMethodName()+"/").concat(subPathEncoded);
System.err.println("0 Unencoded: "+reservedCharPathUnencoded);
System.err.println("0 Encoded: "+reservedCharPathEncoded);
// jar:file:/dir1/dir2/gluegen-rt.jar!/
- final URI jarFileURI = JarUtil.getJarFileURI(Platform.class.getName(), getClass().getClassLoader());
+ final Uri jarFileURI = JarUtil.getJarFileUri(Platform.class.getName(), getClass().getClassLoader());
System.err.println("1 jarFileURI: "+jarFileURI.toString());
// gluegen-rt.jar
- final String jarBasename = JarUtil.getJarBasename(jarFileURI);
+ final Uri.Encoded jarBasename = JarUtil.getJarBasename(jarFileURI);
System.err.println("2 jarBasename: "+jarBasename);
// file:/dir1/build/gluegen-rt.jar
- final URI fileURI = JarUtil.getJarSubURI(jarFileURI);
+ final Uri fileURI = jarFileURI.getContainedUri();
System.err.println("3 fileURI: "+fileURI.toString());
// file:/dir1/build/
- final URI fileFolderURI = new URI(IOUtil.getParentOf(fileURI.toString()));
+ final Uri fileFolderURI = fileURI.getParent();
System.err.println("4 fileFolderURI: "+fileFolderURI.toString());
// file:/dir1/build/test/build/A$-B^-C~-D#-E]-F[/
- final URI fileNewFolderURI = new URI(fileFolderURI.toString()+reservedCharPathEncoded);
+ final Uri fileNewFolderURI = fileFolderURI.concat(reservedCharPathEncoded);
System.err.println("5 fileNewFolderURI: "+fileNewFolderURI.toString());
- final File srcFolder = new File(fileFolderURI);
- final File dstFolder = new File(fileNewFolderURI);
+ final File srcFolder = fileFolderURI.toFile();
+ final File dstFolder = fileNewFolderURI.toFile();
System.err.println("6 srcFolder: "+srcFolder.toString());
System.err.println("7 dstFolder: "+dstFolder.toString());
try {
diff --git a/src/junit/com/jogamp/common/net/URIDumpUtil.java b/src/junit/com/jogamp/common/net/URIDumpUtil.java
index a7d050a..c5ba51f 100644
--- a/src/junit/com/jogamp/common/net/URIDumpUtil.java
+++ b/src/junit/com/jogamp/common/net/URIDumpUtil.java
@@ -52,7 +52,7 @@ public class URIDumpUtil {
System.err.println("0.0.0 string: "+uri.toString());
System.err.println("0.0.0 ascii : "+uri.toASCIIString());
- System.err.println("0.0.0 native-file: "+uri.getNativeFilePath());
+ System.err.println("0.0.0 native-file: "+uri.toFile());
System.err.println("0.0.0 contained: "+uri.getContainedUri());
System.err.println("1.0.0 scheme: "+uri.scheme);
@@ -73,7 +73,7 @@ public class URIDumpUtil {
* @throws URISyntaxException
*/
public static void showReencodedURIOfUri(final Uri uri) throws URISyntaxException {
- final URI recomposedURI = uri.toURI(true);
+ final URI recomposedURI = uri.toURIReencoded();
showURI("YYYYYY Recomposed URI "+recomposedURI+", isOpaque "+recomposedURI.isOpaque()+", isAbs "+recomposedURI.isAbsolute(), recomposedURI);
final String recomposedURIStr = recomposedURI.toString();
final boolean equalsRecompURI = uri.input.equals(recomposedURIStr);
@@ -88,7 +88,7 @@ public class URIDumpUtil {
* @throws URISyntaxException
*/
public static void showReencodedUriOfURI(final URI uri) throws URISyntaxException {
- final Uri recomposedUri = Uri.valueOf(uri, true);
+ final Uri recomposedUri = Uri.valueOf(uri);
showUri("ZZZZZZ Recomposed Uri "+recomposedUri+", isOpaque "+recomposedUri.opaque+", isAbs "+recomposedUri.absolute+", hasAuth "+recomposedUri.hasAuthority, recomposedUri);
final String recomposedUriStr = recomposedUri.toString();
final boolean equalsRecompUri = uri.toString().equals(recomposedUriStr);
diff --git a/src/junit/com/jogamp/common/util/TestJarUtil.java b/src/junit/com/jogamp/common/util/TestJarUtil.java
index db5c268..06a2e43 100644
--- a/src/junit/com/jogamp/common/util/TestJarUtil.java
+++ b/src/junit/com/jogamp/common/util/TestJarUtil.java
@@ -30,7 +30,6 @@ package com.jogamp.common.util;
import java.io.IOException;
import java.net.MalformedURLException;
-import java.net.URI;
import java.net.URISyntaxException;
import java.net.URL;
import java.net.URLClassLoader;
@@ -46,6 +45,8 @@ import org.junit.BeforeClass;
import org.junit.Test;
import com.jogamp.common.GlueGenVersion;
+import com.jogamp.common.net.URIDumpUtil;
+import com.jogamp.common.net.Uri;
import com.jogamp.common.os.AndroidVersion;
import com.jogamp.common.util.cache.TempCacheReg;
import com.jogamp.common.util.cache.TempFileCache;
@@ -97,7 +98,7 @@ public class TestJarUtil extends JunitTracer {
}
}
- void validateJarFileURL(final URI jarFileURI) throws IllegalArgumentException, IOException, URISyntaxException {
+ void validateJarFileURL(final Uri jarFileURI) throws IllegalArgumentException, IOException, URISyntaxException {
Assert.assertNotNull(jarFileURI);
final URL jarFileURL = jarFileURI.toURL();
final URLConnection aURLc = jarFileURL.openConnection();
@@ -110,18 +111,27 @@ public class TestJarUtil extends JunitTracer {
}
void validateJarUtil(final String expJarName, final String clazzBinName, final ClassLoader cl) throws IllegalArgumentException, IOException, URISyntaxException {
- final String jarName= JarUtil.getJarBasename(clazzBinName, cl);
+ final Uri.Encoded expJarNameE = Uri.Encoded.cast(expJarName);
+ final Uri.Encoded jarName= JarUtil.getJarBasename(clazzBinName, cl);
Assert.assertNotNull(jarName);
- Assert.assertEquals(expJarName, jarName);
+ Assert.assertEquals(expJarNameE, jarName);
- final URI jarSubURI = JarUtil.getJarSubURI(clazzBinName, cl);
- Assert.assertNotNull(jarSubURI);
- final URL jarSubURL= jarSubURI.toURL();
+ final Uri jarUri = JarUtil.getJarUri(clazzBinName, cl);
+ Assert.assertNotNull(jarUri);
+ System.err.println("1 - jarUri:");
+ URIDumpUtil.showUri(jarUri);
+
+ final Uri jarSubUri = jarUri.getContainedUri();
+ Assert.assertNotNull(jarSubUri);
+ System.err.println("2 - jarSubUri:");
+ URIDumpUtil.showUri(jarSubUri);
+
+ final URL jarSubURL= jarSubUri.toURL();
final URLConnection urlConn = jarSubURL.openConnection();
Assert.assertTrue("jarSubURL has zero content: "+jarSubURL, urlConn.getContentLength()>0);
System.err.println("URLConnection of jarSubURL: "+urlConn);
- final URI jarFileURL = JarUtil.getJarFileURI(clazzBinName, cl);
+ final Uri jarFileURL = JarUtil.getJarFileUri(clazzBinName, cl);
validateJarFileURL(jarFileURL);
final JarFile jarFile = JarUtil.getJarFile(clazzBinName, cl);
@@ -146,10 +156,10 @@ public class TestJarUtil extends JunitTracer {
final ClassLoader rootCL = this.getClass().getClassLoader();
// Get containing JAR file "TestJarsInJar.jar" and add it to the TempJarCache
- TempJarCache.addAll(GlueGenVersion.class, JarUtil.getJarFileURI("ClassInJar0", rootCL));
+ TempJarCache.addAll(GlueGenVersion.class, JarUtil.getJarFileUri("ClassInJar0", rootCL));
// Fetch and load the contained "ClassInJar1.jar"
- final URL ClassInJar1_jarFileURL = JarUtil.getJarFileURI(TempJarCache.getResource("ClassInJar1.jar")).toURL();
+ final URL ClassInJar1_jarFileURL = JarUtil.getJarFileUri(TempJarCache.getResourceUri("ClassInJar1.jar")).toURL();
final ClassLoader cl = new URLClassLoader(new URL[] { ClassInJar1_jarFileURL }, rootCL);
Assert.assertNotNull(cl);
validateJarUtil("ClassInJar1.jar", "ClassInJar1", cl);
@@ -167,10 +177,10 @@ public class TestJarUtil extends JunitTracer {
final ClassLoader rootCL = this.getClass().getClassLoader();
// Get containing JAR file "TestJarsInJar.jar" and add it to the TempJarCache
- TempJarCache.addAll(GlueGenVersion.class, JarUtil.getJarFileURI("ClassInJar0", rootCL));
+ TempJarCache.addAll(GlueGenVersion.class, JarUtil.getJarFileUri("ClassInJar0", rootCL));
// Fetch and load the contained "ClassInJar1.jar"
- final URL ClassInJar2_jarFileURL = JarUtil.getJarFileURI(TempJarCache.getResource("sub/ClassInJar2.jar")).toURL();
+ final URL ClassInJar2_jarFileURL = JarUtil.getJarFileUri(TempJarCache.getResourceUri("sub/ClassInJar2.jar")).toURL();
final ClassLoader cl = new URLClassLoader(new URL[] { ClassInJar2_jarFileURL }, rootCL);
Assert.assertNotNull(cl);
validateJarUtil("ClassInJar2.jar", "ClassInJar2", cl);
@@ -231,7 +241,7 @@ public class TestJarUtil extends JunitTracer {
public URL resolve( final URL url ) {
if( url.getProtocol().equals("bundleresource") ) {
try {
- return new URL( IOUtil.JAR_SCHEME, "", url.getFile() );
+ return new URL( Uri.JAR_SCHEME, "", url.getFile() );
} catch(final MalformedURLException e) {
return url;
}
@@ -244,10 +254,10 @@ public class TestJarUtil extends JunitTracer {
final ClassLoader rootCL = new CustomClassLoader();
// Get containing JAR file "TestJarsInJar.jar" and add it to the TempJarCache
- TempJarCache.addAll(GlueGenVersion.class, JarUtil.getJarFileURI("ClassInJar0", rootCL));
+ TempJarCache.addAll(GlueGenVersion.class, JarUtil.getJarFileUri("ClassInJar0", rootCL));
// Fetch and load the contained "ClassInJar1.jar"
- final URL ClassInJar2_jarFileURL = JarUtil.getJarFileURI(TempJarCache.getResource("sub/ClassInJar2.jar")).toURL();
+ final URL ClassInJar2_jarFileURL = JarUtil.getJarFileUri(TempJarCache.getResourceUri("sub/ClassInJar2.jar")).toURL();
final ClassLoader cl = new URLClassLoader(new URL[] { ClassInJar2_jarFileURL }, rootCL);
Assert.assertNotNull(cl);
validateJarUtil("ClassInJar2.jar", "ClassInJar2", cl);
diff --git a/src/junit/com/jogamp/common/util/TestTempJarCache.java b/src/junit/com/jogamp/common/util/TestTempJarCache.java
index cd825fe..474a17a 100644
--- a/src/junit/com/jogamp/common/util/TestTempJarCache.java
+++ b/src/junit/com/jogamp/common/util/TestTempJarCache.java
@@ -31,7 +31,6 @@ package com.jogamp.common.util;
import java.io.File;
import java.io.IOException;
import java.lang.reflect.Method;
-import java.net.URI;
import java.net.URISyntaxException;
import java.net.URL;
import java.net.URLClassLoader;
@@ -44,6 +43,8 @@ import org.junit.Test;
import org.junit.runners.MethodSorters;
import com.jogamp.common.GlueGenVersion;
+import com.jogamp.common.net.URIDumpUtil;
+import com.jogamp.common.net.Uri;
import com.jogamp.common.os.AndroidVersion;
import com.jogamp.common.os.NativeLibrary;
import com.jogamp.common.os.Platform;
@@ -175,7 +176,7 @@ public class TestTempJarCache extends JunitTracer {
if(AndroidVersion.isAvailable) { System.err.println("n/a on Android"); return; }
final ClassLoader cl = getClass().getClassLoader();
- TempJarCache.addAll(GlueGenVersion.class, JarUtil.getJarFileURI(GlueGenVersion.class.getName(), cl));
+ TempJarCache.addAll(GlueGenVersion.class, JarUtil.getJarFileUri(GlueGenVersion.class.getName(), cl));
File f0 = new File(TempJarCache.getTempFileCache().getTempDir(), "META-INF/MANIFEST.MF");
Assert.assertTrue(f0.exists());
@@ -195,14 +196,28 @@ public class TestTempJarCache extends JunitTracer {
@Test
public void testTempJarCache02AddNativeLibs() throws IOException, IllegalArgumentException, URISyntaxException {
if(AndroidVersion.isAvailable) { System.err.println("n/a on Android"); return; }
- final String nativeJarName = "gluegen-rt-natives-"+Platform.getOSAndArch()+".jar";
+ final Uri.Encoded nativeJarName = Uri.Encoded.cast("gluegen-rt-natives-"+Platform.getOSAndArch()+".jar");
final String libBaseName = "gluegen-rt";
final ClassLoader cl = getClass().getClassLoader();
- URI jarUriRoot = JarUtil.getJarSubURI(TempJarCache.class.getName(), cl);
- jarUriRoot = IOUtil.getURIDirname(jarUriRoot);
+ final Uri jarUri = JarUtil.getJarUri(TempJarCache.class.getName(), cl);
+ Assert.assertNotNull(jarUri);
+ System.err.println("1 - jarUri:");
+ URIDumpUtil.showUri(jarUri);
- final URI nativeJarURI = JarUtil.getJarFileURI(jarUriRoot, nativeJarName);
+ final Uri jarFileUri = jarUri.getContainedUri();
+ Assert.assertNotNull(jarFileUri);
+ System.err.println("2 - jarFileUri:");
+ URIDumpUtil.showUri(jarFileUri);
+
+ final Uri jarFileDir = jarFileUri.getParent();
+ Assert.assertNotNull(jarFileDir);
+ System.err.println("3 - jarFileDir:");
+ URIDumpUtil.showUri(jarFileDir);
+
+ final Uri nativeJarURI = JarUtil.getJarFileUri(jarFileDir, nativeJarName);
+ System.err.println("4 - nativeJarURI:");
+ URIDumpUtil.showUri(nativeJarURI);
TempJarCache.addNativeLibs(TempJarCache.class, nativeJarURI, null /* nativeLibraryPath */);
final String libFullPath = TempJarCache.findLibrary(libBaseName);
@@ -225,7 +240,7 @@ public class TestTempJarCache extends JunitTracer {
@Test
public void testTempJarCache04bDiffClassLoader() throws IOException, IllegalArgumentException, URISyntaxException {
if(AndroidVersion.isAvailable) { System.err.println("n/a on Android"); return; }
- final URL[] urls = new URL[] { JarUtil.getJarFileURI(TempJarCache.class.getName(), getClass().getClassLoader()).toURL() };
+ final URL[] urls = new URL[] { JarUtil.getJarFileUri(TempJarCache.class.getName(), getClass().getClassLoader()).toURL() };
System.err.println("url: "+urls[0]);
final ClassLoader cl2 = new TestClassLoader(urls, null);
final ClassLoader cl3 = new TestClassLoader(urls, null);
diff --git a/src/junit/com/jogamp/junit/sec/Applet01.java b/src/junit/com/jogamp/junit/sec/Applet01.java
index a335efe..f0188a2 100644
--- a/src/junit/com/jogamp/junit/sec/Applet01.java
+++ b/src/junit/com/jogamp/junit/sec/Applet01.java
@@ -34,14 +34,13 @@ import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.net.URISyntaxException;
-import java.net.URL;
import java.security.AccessControlException;
+import com.jogamp.common.net.Uri;
import com.jogamp.common.os.MachineDescription;
import com.jogamp.common.os.NativeLibrary;
import com.jogamp.common.os.Platform;
import com.jogamp.common.util.IOUtil;
-import com.jogamp.common.util.JarUtil;
/**
* Applet: Provoke AccessControlException while writing to file!
@@ -156,64 +155,64 @@ public class Applet01 extends Applet {
}
}
- private void testOpenLibrary(final boolean global) {
+ private void testOpenLibrary(final boolean global) throws URISyntaxException {
final ClassLoader cl = getClass().getClassLoader();
System.err.println("CL "+cl);
String libBaseName = null;
final Class<?> clazz = this.getClass();
- URL libURL = clazz.getResource("/libtest1.so");
- if( null != libURL ) {
+ Uri libUri = null;
+ try {
+ libUri = Uri.valueOf(clazz.getResource("/libtest1.so"));
+ } catch (final URISyntaxException e2) {
+ // not found .. OK
+ }
+ if( null != libUri ) {
libBaseName = "libtest1.so";
} else {
- libURL = clazz.getResource("/test1.dll");
- if( null != libURL ) {
- libBaseName = "test1.dll";
+ try {
+ libUri = Uri.valueOf(clazz.getResource("/test1.dll"));
+ if( null != libUri ) {
+ libBaseName = "test1.dll";
+ }
+ } catch (final URISyntaxException e) {
+ // not found
}
}
- System.err.println("Untrusted Library (URL): "+libURL);
+ System.err.println("Untrusted Library (URL): "+libUri);
- String libDir1 = null;
- if( null != libURL ) {
+ if( null != libUri ) {
+ Uri libDir1 = libUri.getContainedUri();
+ System.err.println("libDir1.1: "+libDir1);
+ libDir1= libDir1.getParent();
+ System.err.println("libDir1.2: "+libDir1);
+ System.err.println("Untrusted Library Dir1 (abs): "+libDir1);
+ final Uri absLib = libDir1.concat(Uri.Encoded.cast("natives/" + libBaseName));
+ Exception sec01 = null;
try {
- libDir1 = JarUtil.getJarSubURI(libURL.toURI()).getPath();
- } catch (final Exception e) {
- e.printStackTrace();
- }
- if( null != libDir1 ) {
- System.err.println("libDir1.1: "+libDir1);
- try {
- libDir1= IOUtil.getParentOf(libDir1);
- } catch (final URISyntaxException e) {
- e.printStackTrace();
+ final NativeLibrary nlib = NativeLibrary.open(absLib.toFile().getPath(), cl);
+ System.err.println("NativeLibrary: "+nlib);
+ } catch (final SecurityException e) {
+ sec01 = e;
+ if( usesSecurityManager ) {
+ System.err.println("Expected exception for loading native library");
+ System.err.println("Message: "+sec01.getMessage());
+ } else {
+ System.err.println("Unexpected exception for loading native library");
+ sec01.printStackTrace();
}
- System.err.println("libDir1.2: "+libDir1);
}
- }
- System.err.println("Untrusted Library Dir1 (abs): "+libDir1);
- final String absLib = libDir1 + "natives/" + libBaseName;
- Exception sec01 = null;
- try {
- final NativeLibrary nlib = NativeLibrary.open(absLib, cl);
- System.err.println("NativeLibrary: "+nlib);
- } catch (final SecurityException e) {
- sec01 = e;
- if( usesSecurityManager ) {
- System.err.println("Expected exception for loading native library");
- System.err.println("Message: "+sec01.getMessage());
+ if( !usesSecurityManager ) {
+ if( null != sec01 ) {
+ throw new Error("SecurityException thrown on loading native library", sec01);
+ }
} else {
- System.err.println("Unexpected exception for loading native library");
- sec01.printStackTrace();
- }
- }
- if( !usesSecurityManager ) {
- if( null != sec01 ) {
- throw new Error("SecurityException thrown on loading native library", sec01);
+ if( null == sec01 ) {
+ throw new Error("SecurityException not thrown on loading native library");
+ }
}
} else {
- if( null == sec01 ) {
- throw new Error("SecurityException not thrown on loading native library");
- }
+ System.err.println("No library found");
}
}
@@ -244,7 +243,11 @@ public class Applet01 extends Applet {
testWriteFile();
System.err.println("writeFile: OK");
- testOpenLibrary(true);
+ try {
+ testOpenLibrary(true);
+ } catch (final URISyntaxException e) {
+ e.printStackTrace();
+ }
System.err.println("lib0: OK");
}
diff --git a/src/junit/com/jogamp/junit/sec/TestSecIOUtil01.java b/src/junit/com/jogamp/junit/sec/TestSecIOUtil01.java
index e4e1b34..b347680 100644
--- a/src/junit/com/jogamp/junit/sec/TestSecIOUtil01.java
+++ b/src/junit/com/jogamp/junit/sec/TestSecIOUtil01.java
@@ -29,7 +29,6 @@
package com.jogamp.junit.sec;
import java.net.URISyntaxException;
-import java.net.URL;
import java.security.AccessControlException;
import java.io.File;
import java.io.IOException;
@@ -38,10 +37,10 @@ import org.junit.Assert;
import org.junit.BeforeClass;
import org.junit.Test;
+import com.jogamp.common.net.Uri;
import com.jogamp.common.os.NativeLibrary;
import com.jogamp.common.os.Platform;
import com.jogamp.common.util.IOUtil;
-import com.jogamp.common.util.JarUtil;
import com.jogamp.junit.util.JunitTracer;
import org.junit.FixMethodOrder;
@@ -137,73 +136,75 @@ public class TestSecIOUtil01 extends JunitTracer {
testTempDirImpl(false);
}
- private NativeLibrary openLibraryImpl(final boolean global) {
+ private NativeLibrary openLibraryImpl(final boolean global) throws URISyntaxException {
final ClassLoader cl = getClass().getClassLoader();
System.err.println("CL "+cl);
String libBaseName = null;
final Class<?> clazz = this.getClass();
- URL libURL = clazz.getResource("/libtest1.so");
- if( null != libURL ) {
+ Uri libUri = null;
+ try {
+ libUri = Uri.valueOf(clazz.getResource("/libtest1.so"));
+ } catch (final URISyntaxException e2) {
+ // not found .. OK
+ }
+ if( null != libUri ) {
libBaseName = "libtest1.so";
} else {
- libURL = clazz.getResource("/test1.dll");
- if( null != libURL ) {
- libBaseName = "test1.dll";
+ try {
+ libUri = Uri.valueOf(clazz.getResource("/test1.dll"));
+ if( null != libUri ) {
+ libBaseName = "test1.dll";
+ }
+ } catch (final URISyntaxException e) {
+ // not found
}
}
- System.err.println("Untrusted Library (URL): "+libURL);
-
- String libDir1 = null;
- if( null != libURL ) {
+ System.err.println("Untrusted Library (URL): "+libUri);
+
+ if( null != libUri ) {
+ Uri libDir1 = libUri.getContainedUri();
+ System.err.println("libDir1.1: "+libDir1);
+ libDir1= libDir1.getParent();
+ System.err.println("libDir1.2: "+libDir1);
+ System.err.println("Untrusted Library Dir1 (abs): "+libDir1);
+ final Uri absLib = libDir1.concat(Uri.Encoded.cast("natives/" + libBaseName));
+ Exception se0 = null;
+ NativeLibrary nlib = null;
try {
- libDir1 = JarUtil.getJarSubURI(libURL.toURI()).getPath();
- } catch (final Exception e) {
- e.printStackTrace();
- }
- if( null != libDir1 ) {
- System.err.println("libDir1.1: "+libDir1);
- try {
- libDir1= IOUtil.getParentOf(libDir1);
- } catch (final URISyntaxException e) {
- e.printStackTrace();
+ nlib = NativeLibrary.open(absLib.toFile().getPath(), cl);
+ System.err.println("NativeLibrary: "+nlib);
+ } catch (final SecurityException e) {
+ se0 = e;
+ if( usesSecurityManager ) {
+ System.err.println("Expected exception for loading native library");
+ System.err.println("Message: "+se0.getMessage());
+ } else {
+ System.err.println("Unexpected exception for loading native library");
+ se0.printStackTrace();
}
- System.err.println("libDir1.2: "+libDir1);
}
- }
- System.err.println("Untrusted Library Dir1 (abs): "+libDir1);
- final String absLib = libDir1 + "natives/" + libBaseName;
- Exception se0 = null;
- NativeLibrary nlib = null;
- try {
- nlib = NativeLibrary.open(absLib, cl);
- System.err.println("NativeLibrary: "+nlib);
- } catch (final SecurityException e) {
- se0 = e;
- if( usesSecurityManager ) {
- System.err.println("Expected exception for loading native library");
- System.err.println("Message: "+se0.getMessage());
+ if( !usesSecurityManager ) {
+ Assert.assertNull("SecurityException thrown on loading native library", se0);
} else {
- System.err.println("Unexpected exception for loading native library");
- se0.printStackTrace();
+ Assert.assertNotNull("SecurityException not thrown on loading native library", se0);
}
- }
- if( !usesSecurityManager ) {
- Assert.assertNull("SecurityException thrown on loading native library", se0);
+ return nlib;
} else {
- Assert.assertNotNull("SecurityException not thrown on loading native library", se0);
+ System.err.println("No library found");
+ return null;
}
- return nlib;
+
}
- public void testOpenLibrary() {
+ public void testOpenLibrary() throws URISyntaxException {
final NativeLibrary nlib = openLibraryImpl(true);
if( null != nlib ) {
nlib.close();
}
}
- public static void main(final String args[]) throws IOException {
+ public static void main(final String args[]) throws IOException, URISyntaxException {
TestSecIOUtil01.setup();
final TestSecIOUtil01 aa = new TestSecIOUtil01();
diff --git a/src/junit/com/jogamp/junit/util/VersionSemanticsUtil.java b/src/junit/com/jogamp/junit/util/VersionSemanticsUtil.java
index 953c795..78f4460 100644
--- a/src/junit/com/jogamp/junit/util/VersionSemanticsUtil.java
+++ b/src/junit/com/jogamp/junit/util/VersionSemanticsUtil.java
@@ -29,7 +29,6 @@ package com.jogamp.junit.util;
import java.io.File;
import java.io.IOException;
-import java.net.URI;
import java.net.URISyntaxException;
import java.util.HashSet;
import java.util.Set;
@@ -40,7 +39,7 @@ import org.semver.Comparer;
import org.semver.Delta;
import org.semver.Dumper;
-import com.jogamp.common.util.IOUtil;
+import com.jogamp.common.net.Uri;
import com.jogamp.common.util.JarUtil;
import com.jogamp.common.util.VersionNumberString;
@@ -54,12 +53,10 @@ public class VersionSemanticsUtil {
throws IllegalArgumentException, IOException, URISyntaxException
{
// Get containing JAR file "TestJarsInJar.jar" and add it to the TempJarCache
- final URI currentJarURI = JarUtil.getJarSubURI(currentJarClazz.getName(), currentJarCL);
- final String currentJarLocS = IOUtil.decodeURIIfFilePath(currentJarURI);
- final File currentJar = new File(currentJarLocS);
+ final Uri currentJarUri = JarUtil.getJarUri(currentJarClazz.getName(), currentJarCL).getContainedUri();
testVersion(diffCriteria, expectedCompatibilityType,
previousJar, preVersionNumber,
- currentJar, curVersionNumber,
+ currentJarUri.toFile(), curVersionNumber,
excludesRegExp);
}