All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.jogamp.common.net.PiggybackURLConnection Maven / Gradle / Ivy

package com.jogamp.common.net;

import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.net.URLConnection;

/**
 * Generic resource location protocol connection,
 * using another sub-protocol as the vehicle for a piggyback protocol.
 * 

* The details of the sub-protocol can be queried using {@link #getSubProtocol()}. *

*

* See example in {@link AssetURLConnection}. *

*/ public abstract class PiggybackURLConnection extends URLConnection { protected URL subUrl; protected URLConnection subConn; protected I context; /** * @param url the specific URL for this instance * @param context the piggyback context, defining state independent code and constants */ protected PiggybackURLConnection(final URL url, final I context) { super(url); this.context = context; } /** *

* Resolves the URL via {@link PiggybackURLContext#resolve(String)}, * see {@link AssetURLContext#resolve(String)} for an example. *

* * {@inheritDoc} */ @Override public synchronized void connect() throws IOException { if(!connected) { subConn = context.resolve(url.getPath()); subUrl = subConn.getURL(); connected = true; } } @Override public InputStream getInputStream() throws IOException { if(!connected) { throw new IOException("not connected"); } return subConn.getInputStream(); } /** * 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
     * 
* @throws IOException is not connected **/ public abstract String getEntryName() throws IOException; /** * Returns the resolved sub protocol of the asset or null, ie: *
     * Plain     asset:test/lala.txt
     * Resolved  asset:jar:file:/data/app/jogamp.test.apk!/assets/test/lala.txt
     * Result          jar:file:/data/app/jogamp.test.apk!/assets/test/lala.txt
     * 
* * @throws IOException is not connected */ public URL getSubProtocol() throws IOException { if(!connected) { throw new IOException("not connected"); } return subUrl; } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy