Package com.jogamp.common.net
Class AssetURLContext
- java.lang.Object
-
- com.jogamp.common.net.AssetURLContext
-
- All Implemented Interfaces:
PiggybackURLContext
public abstract class AssetURLContext extends Object implements PiggybackURLContext
SeePiggybackURLConnection
for description and examples.
-
-
Field Summary
Fields Modifier and Type Field Description static String
asset_protocol
The asset URL protocol nameasset
static String
asset_protocol_prefix
The asset URL protocol prefixasset:
static String
assets_folder
The optional asset folder name with ending slashassets/
.
-
Constructor Summary
Constructors Constructor Description AssetURLContext()
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description static AssetURLContext
create(ClassLoader cl)
static AssetURLStreamHandler
createHandler(ClassLoader cl)
static URL
createURL(String path)
Create an asset URL, suitable only with the registered asset URLStreamHandler.static URL
createURL(String path, ClassLoader cl)
Create an asset URL, suitable even w/o the registered asset URLStreamHandler.abstract ClassLoader
getClassLoader()
Returns an asset aware ClassLoader.String
getImplementedProtocol()
Returns the specific protocol, constant for this implementation.static URLStreamHandler
getRegisteredHandler()
Returns the asset handler previously set viaregisterHandler(ClassLoader)
, or null if none was set.static boolean
registerHandler(ClassLoader cl)
Registers the generic URLStreamHandlerFactory viaGenericURLStreamHandlerFactory.register()
and if successful sets the assethandler
for the given ClassLoadercl
.URLConnection
resolve(String path)
Resolving path to a URL sub protocol and return it's open URLConnectionstatic URLConnection
resolve(String path, ClassLoader cl)
-
-
-
Field Detail
-
asset_protocol
public static final String asset_protocol
The asset URL protocol nameasset
- See Also:
- Constant Field Values
-
asset_protocol_prefix
public static final String asset_protocol_prefix
The asset URL protocol prefixasset:
- See Also:
- Constant Field Values
-
assets_folder
public static final String assets_folder
The optional asset folder name with ending slashassets/
.Note that the asset folder is not used on all platforms using the asset protocol and you should not rely on it, use
AssetURLConnection.getEntryName()
.- See Also:
- Constant Field Values
-
-
Method Detail
-
create
public static AssetURLContext create(ClassLoader cl)
-
createHandler
public static AssetURLStreamHandler createHandler(ClassLoader cl)
-
createURL
public static URL createURL(String path, ClassLoader cl) throws MalformedURLException
Create an asset URL, suitable even w/o the registered asset URLStreamHandler.This is equivalent with:
return new URL(null, path.startsWith("asset:") ? path : "asset:" + path, new AssetURLStreamHandler(cl));
- Parameters:
path
- resource path, with or w/oasset:
prefixcl
- the ClassLoader used to resolve the location, seegetClassLoader()
.- Returns:
- Throws:
MalformedURLException
-
createURL
public static URL createURL(String path) throws MalformedURLException
Create an asset URL, suitable only with the registered asset URLStreamHandler.This is equivalent with:
return new URL(path.startsWith("asset:") ? path : "asset:" + path);
- Parameters:
path
- resource path, with or w/oasset:
prefix- Returns:
- Throws:
MalformedURLException
-
getRegisteredHandler
public static URLStreamHandler getRegisteredHandler()
Returns the asset handler previously set viaregisterHandler(ClassLoader)
, or null if none was set.
-
registerHandler
public static boolean registerHandler(ClassLoader cl)
Registers the generic URLStreamHandlerFactory viaGenericURLStreamHandlerFactory.register()
and if successful sets the assethandler
for the given ClassLoadercl
.- Returns:
- true if successful, otherwise false
-
getClassLoader
public abstract ClassLoader getClassLoader()
Returns an asset aware ClassLoader.The ClassLoader is required to find the asset resource via it's
URL findResource(String)
implementation.It's
URL findResource(String)
implementation shall return either an asset URLasset:sub-protocol
or just the sub-protocol URL.For example, on Android, we redirect all
path
request to assets/path
.
-
getImplementedProtocol
public String getImplementedProtocol()
Description copied from interface:PiggybackURLContext
Returns the specific protocol, constant for this implementation.- Specified by:
getImplementedProtocol
in interfacePiggybackURLContext
-
resolve
public URLConnection resolve(String path) throws IOException
Resolving path to a URL sub protocol and return it's open URLConnectionThis implementation attempts to resolve
path
in the following order:- as a valid URL:
new URL(path)
, use sub-protocol if asset URL - via ClassLoader:
getClassLoader()
.getResource(path)
, use sub-protocol if asset URL - as a File:
new File(path).toURI().toURL()
In case of using the ClassLoader (2) and if running on Android, the
assets_folder
is being prepended topath
if missing.- Specified by:
resolve
in interfacePiggybackURLContext
- Throws:
IOException
- as a valid URL:
-
resolve
public static URLConnection resolve(String path, ClassLoader cl) throws IOException
- Throws:
IOException
-
-