From 235f8b1cbff8ed13071d5c19c0be492c0b25cb78 Mon Sep 17 00:00:00 2001
From: Sven Gothel <sgothel@jausoft.com>
Date: Sat, 17 Mar 2012 21:15:49 +0100
Subject: Add 'asset' URLConnection; IOUtil uses URLConnection / incr.
 effeciency; Android ClassLoaderUtil cleanup;

- Add 'asset' URLConnection
  - Please read API doc 'PiggybackURLConnection' and 'AssetURLConnection'

  - Solves generic resource handling where platform locations may differ,
    ie ClassLoader lookup on Android in the 'assets/' subfolder.

  - New Android 'AssetDexClassLoader' uses 'assets/' folder for findResource(..)

  - aapt.signed (our APK ant task)
    - uses 'assets/' folder

    - adds the 'assetsdir' attribute allowing to copy other assets into the APK

- IOUtil uses URLConnection / incr. effeciency
  - using URLConnection on all getResource(..) since URL
    is connected anyways for validation and URLConnection can be used by caller right away

  - String getRelativeOf(URL, String) -> URL getRelativeOf(URL, String)
    - preserves scheme, authority, etc
    - simple parentOf handling, more efficient

  - reusing new 'asset' protocol impl.

- Android ClassLoaderUtil cleanup;
  - Use createClassLoader(..) impl for build-in static jogamp and user APKs,
    which removes code redundancy

Tests: New code path, especially 'assets' are covered by new unit tests, no regressions on Linux.
---
 .../android/launcher/TraceDexClassLoader.java      | 27 ++++++++++++++++++++++
 1 file changed, 27 insertions(+)
 create mode 100644 src/java/jogamp/android/launcher/TraceDexClassLoader.java

(limited to 'src/java/jogamp/android/launcher/TraceDexClassLoader.java')

diff --git a/src/java/jogamp/android/launcher/TraceDexClassLoader.java b/src/java/jogamp/android/launcher/TraceDexClassLoader.java
new file mode 100644
index 0000000..0b00489
--- /dev/null
+++ b/src/java/jogamp/android/launcher/TraceDexClassLoader.java
@@ -0,0 +1,27 @@
+package jogamp.android.launcher;
+
+import java.net.URL;
+
+import android.util.Log;
+
+import dalvik.system.DexClassLoader;
+
+public class TraceDexClassLoader extends DexClassLoader {
+    private static final boolean DEBUG = false;
+    
+    public TraceDexClassLoader(String dexPath, String dexOutputDir, String libPath, ClassLoader parent) {
+        super(dexPath, dexOutputDir, libPath, parent);
+        if(DEBUG) {
+            Log.d(TraceDexClassLoader.class.getSimpleName(), "ctor: dexPath " + dexPath + ", dexOutputDir " + dexOutputDir + ", libPath " + libPath + ", parent " + parent);
+        }
+    }
+    
+    @Override
+    public URL findResource(String name) {
+        final URL url = super.findResource(name);
+        if(DEBUG) {
+            Log.d(TraceDexClassLoader.class.getSimpleName(), "findResource: " + name + " -> " + url);
+        }
+        return url;
+    }
+}
-- 
cgit v1.2.3