com.jogamp.common.net
Class AssetURLConnection

java.lang.Object
  extended by java.net.URLConnection
      extended by com.jogamp.common.net.PiggybackURLConnection<AssetURLContext>
          extended by com.jogamp.common.net.AssetURLConnection

public class AssetURLConnection
extends PiggybackURLConnection<AssetURLContext>

See base class PiggybackURLConnection for motivation.

asset resource location protocol connection.

See AssetURLContext.resolve(String) how resources are being resolved.

Example:

Assuming the plain asset entry test/lala.txt is being resolved by a class test.LaLaTest, ie. using the asset aware ClassLoader, one would use the following asset aware filesystem layout:
  test/LaLaTest.class
  assets/test/lala.txt
 
The above maybe on a plain filesystem, or within a JAR or an APK file, e.g. jogamp.test.apk. The above would result in the following possible URLs reflecting the plain and resolved state of the asset URL:
  0 Entry          test/lala.txt
  1 Plain    asset:test/lala.txt
  2 Resolved asset:jar:file:/data/app/jogamp.test.apk!/assets/test/lala.txt
 

The sub protocol URL of the resolved asset

  3 Sub-URL        jar:file:/data/app/jogamp.test.apk!/assets/test/lala.txt
 
can be retrieved using PiggybackURLConnection.getSubProtocol().

In all above cases, the asset entry is test/lala.txt, which can be retrieved via getEntryName().

General Implementation Notes:

An asset URL is resolved using AssetURLContext.getClassLoader().getResource(String), hence the only requirement for an implementation is to have an asset aware ClassLoader as described in AssetURLContext.getClassLoader().

Warning:

Since the asset protocol is currently not being implemented on all platform with an appropriate ClassLoader, a user shall not create the asset URL manually.

Android Implementation Notes:

The Android ClassLoader jogamp.android.launcher.AssetDexClassLoader resolves the resource as an asset URL in it's ClassLoader.findResource(String) implementation.

Currently we attach our asset URLStreamHandlerFactory to allow URL to handle asset URLs via our asset URLStreamHandler implementation.


Field Summary
 
Fields inherited from class com.jogamp.common.net.PiggybackURLConnection
context, subConn, subUrl
 
Fields inherited from class java.net.URLConnection
allowUserInteraction, connected, doInput, doOutput, ifModifiedSince, url, useCaches
 
Constructor Summary
AssetURLConnection(URL url, AssetURLContext implHelper)
           
 
Method Summary
 String getEntryName()
          Returns the entry name of the asset.
 
Methods inherited from class com.jogamp.common.net.PiggybackURLConnection
connect, getInputStream, getSubProtocol
 
Methods inherited from class java.net.URLConnection
addRequestProperty, getAllowUserInteraction, getConnectTimeout, getContent, getContent, getContentEncoding, getContentLength, getContentType, getDate, getDefaultAllowUserInteraction, getDefaultRequestProperty, getDefaultUseCaches, getDoInput, getDoOutput, getExpiration, getFileNameMap, getHeaderField, getHeaderField, getHeaderFieldDate, getHeaderFieldInt, getHeaderFieldKey, getHeaderFields, getIfModifiedSince, getLastModified, getOutputStream, getPermission, getReadTimeout, getRequestProperties, getRequestProperty, getURL, getUseCaches, guessContentTypeFromName, guessContentTypeFromStream, setAllowUserInteraction, setConnectTimeout, setContentHandlerFactory, setDefaultAllowUserInteraction, setDefaultRequestProperty, setDefaultUseCaches, setDoInput, setDoOutput, setFileNameMap, setIfModifiedSince, setReadTimeout, setRequestProperty, setUseCaches, toString
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

AssetURLConnection

public AssetURLConnection(URL url,
                          AssetURLContext implHelper)
Method Detail

getEntryName

public String getEntryName()
                    throws IOException
Description copied from class: PiggybackURLConnection
Returns the entry name of the asset.
 Plain     asset:test/lala.txt
 Resolved  asset:jar:file:/data/app/jogamp.test.apk!/assets/test/lala.txt
 Result          test/lala.txt
 

Specified by:
getEntryName in class PiggybackURLConnection<AssetURLContext>
Throws:
IOException - is not connected