From c9093e491d4b78b12973ec1614bf3146fce26a83 Mon Sep 17 00:00:00 2001 From: Sven Gothel Date: Fri, 18 Oct 2013 22:09:43 +0200 Subject: Fix Bug 857: GlueGen produces erroneous file URI on Windows, which breaks Netbeans's JarURLStreamHandler - 'URL IOUtil.toURL(URI)' - Needs to encode the file-path portion on Windows(*) if exists. The file-path here shall only be encoded as follows: - backslash -> slash - ensure starting with slash (*) We perform above action for all OS, if 'false == File.separator.equals("/")' - Added high verbosity in DEBUG mode to easy debugging for future cases .. - Cleanup URI/URL unit tests, i.e. split URLCompositionTest into: - TestIOUtilURICompose - TestIOUtilURIHandling (Now covers Bug 857 as well) - TestUrisWithAssetHandler - TestURIQueryProps Tested all unit tests manually on GNU/Linux and Windows w/ JRE 7u45 --- .../common/net/TestUrisWithAssetHandler.java | 50 ++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 src/junit/com/jogamp/common/net/TestUrisWithAssetHandler.java (limited to 'src/junit/com/jogamp/common/net/TestUrisWithAssetHandler.java') diff --git a/src/junit/com/jogamp/common/net/TestUrisWithAssetHandler.java b/src/junit/com/jogamp/common/net/TestUrisWithAssetHandler.java new file mode 100644 index 0000000..6e244eb --- /dev/null +++ b/src/junit/com/jogamp/common/net/TestUrisWithAssetHandler.java @@ -0,0 +1,50 @@ +package com.jogamp.common.net; + +import static com.jogamp.common.net.URIDumpUtil.showURX; + +import java.io.IOException; +import java.net.URISyntaxException; + +import org.junit.Assert; +import org.junit.BeforeClass; +import org.junit.FixMethodOrder; +import org.junit.Test; +import org.junit.runners.MethodSorters; + +import com.jogamp.junit.util.JunitTracer; + +@FixMethodOrder(MethodSorters.NAME_ASCENDING) +public class TestUrisWithAssetHandler extends JunitTracer { + + @BeforeClass + public static void assetRegistration() throws Exception { + try { + System.err.println("******* Asset URL Stream Handler Registration: PRE"); + Assert.assertTrue("GenericURLStreamHandlerFactory.register() failed", AssetURLContext.registerHandler(TestUrisWithAssetHandler.class.getClassLoader())); + Assert.assertNotNull(AssetURLContext.getRegisteredHandler()); + System.err.println("******* Asset URL Stream Handler Registration: POST"); + } catch (Exception e) { + setTestSupported(false); + throw e; + } + } + + @Test + public void showURLComponents0() throws IOException, URISyntaxException { + showURX("file:///rootDir/file1.txt"); + showURX("file://host/rootDir/file1.txt"); + showURX("jar:file:/web1/file1.jar!/rootDir/file1.txt"); + showURX("asset:gluegen-test/info.txt"); + showURX("asset:/gluegen-test/info.txt"); + showURX("http://domain.com/web1/index.html?lala=23&lili=24#anchor"); + showURX("http://domain.com:1234/web1/index.html?lala=23&lili=24#anchor"); + showURX("asset:jar:file:/web1/file1.jar!/rootDir/file1.txt"); + showURX("asset:jar:file:/web1/file1.jar!/rootDir/./file1.txt"); + showURX("asset:jar:file:/web1/file1.jar!/rootDir/dummyParent/../file1.txt"); + } + + public static void main(String args[]) throws IOException { + String tstname = TestUrisWithAssetHandler.class.getName(); + org.junit.runner.JUnitCore.main(tstname); + } +} -- cgit v1.2.3