/*
* @(#)MediaLocator.java 1.3 02/08/21
*
* Copyright (c) 1996-2002 Sun Microsystems, Inc. All rights reserved.
*/
package javax.media;
import java.net.*;
/**
* <code>MediaLocator</code> describes the location of
* media content. <code>MediaLocator</code> is closely
* related to <code>URL</code>. <code>URLs</code>
* can be obtained from <code>MediaLocators</code>, and
* <code>MediaLocators</code> can be constructed from
* <code>URL</code>.
* Unlike a <code>URL</code>, a <code>MediaLocator</code>
* can be instanced without a <code>URLStreamHandler</code>
* installed on the System.
*
* @see java.net.URL
* @see java.net.URLStreamHandler
**/
public class MediaLocator implements java.io.Serializable {
private URL url;
private String locatorString;
/**
* @param url The <CODE>URL</CODE> to construct this media locator from.
*/
public MediaLocator(URL url) {
this.url = url;
// $jdr: Should we check for more stuff that
// might be wrong in this string?
locatorString = url.toString().trim();
}
/**
*
*/
public MediaLocator(String locatorString) {
this.locatorString = locatorString.trim();
}
/**
* Get the <CODE>URL</CODE> associated with this <CODE>MediaLocator</CODE>.
*/
public URL getURL() throws MalformedURLException {
if( url == null) {
url = new URL(locatorString);
}
return url;
}
/**
* Get the beginning of the locator string
* up to but not including the first colon.
* @return The protocol for this <CODE>MediaLocator</CODE>.
*/
public String getProtocol() {
String protocol = "";
int colonIndex = locatorString.indexOf(':');
// $jdr: Should this throw an exception or
// return an empty string?
if( colonIndex != -1) {
protocol = locatorString.substring(0,colonIndex);
}
return protocol;
}
/**
* Get the <CODE>MediaLocator</CODE> string with the protocol removed.
*
* @return The argument string.
*/
public String getRemainder() {
String remainder = "";
int colonIndex = locatorString.indexOf(":");
if( colonIndex != -1) {
remainder = locatorString.substring(colonIndex + 1);
}
return remainder;
}
/**
* Used for printing <CODE>MediaLocators</CODE>.
* @return A string for printing <CODE>MediaLocators</CODE>.
*/
public String toString() {
return locatorString;
}
/**
* Create a string from the <CODE>URL</CODE> argument that can
* be used to construct the <CODE>MediaLocator</CODE>.
*
* @return A string for the <CODE>MediaLocator</CODE>.
*/
public String toExternalForm() {
return locatorString;
}
}
|