net.sf.mmm.util.resource.base
Class UrlResource

java.lang.Object
  extended by net.sf.mmm.util.resource.base.AbstractDataResource
      extended by net.sf.mmm.util.resource.base.UrlResource
All Implemented Interfaces:
DataResource

public class UrlResource
extends AbstractDataResource

This is the implementation of the DataResource interface for a resource that comes from an URL.

Since:
1.0.2
Author:
Joerg Hohwiller (hohwille at users.sourceforge.net)

Field Summary
private  FileUtil fileUtil
          The FileUtil instance.
static String SCHEME_PREFIX_FTP
          The scheme-prefix for FTP.
static String SCHEME_PREFIX_HTTP
          The scheme-prefix for HTTP.
static String SCHEME_PREFIX_HTTPS
          The scheme-prefix for HTTPS.
private  URL url
           
 
Constructor Summary
UrlResource(String url)
          The constructor.
UrlResource(String absolutePath, FileUtil fileUtil)
          The constructor.
UrlResource(URL url)
          The constructor.
UrlResource(URL url, FileUtil fileUtil)
          The constructor.
 
Method Summary
 Date getLastModificationDate()
          This method gets the last modification date of the DataResource if available and supported.
 String getName()
          This method gets the name of the resource.
 String getPath()
          This method gets the path of this resource.
 String getSchemePrefix()
          This method gets the scheme-prefix of absolute URIs for this type of DataResource.
 URL getUrl()
          This method gets this resource as URL.
 boolean isAvailable()
          This method determines if this resource is available.
 boolean isData()
          This method determines if this resource has potentially data available.
 DataResource navigate(String relativePath)
          This method creates a new DataResource pointing to the given resourcePath based on this resource.
 
Methods inherited from class net.sf.mmm.util.resource.base.AbstractDataResource
getSize, getUri, isModifiedSince, openOutputStream, openStream, toString
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

SCHEME_PREFIX_HTTP

public static final String SCHEME_PREFIX_HTTP
The scheme-prefix for HTTP.

See Also:
Constant Field Values

SCHEME_PREFIX_HTTPS

public static final String SCHEME_PREFIX_HTTPS
The scheme-prefix for HTTPS.

See Also:
Constant Field Values

SCHEME_PREFIX_FTP

public static final String SCHEME_PREFIX_FTP
The scheme-prefix for FTP.

See Also:
Constant Field Values

url

private final URL url
See Also:
getUrl()

fileUtil

private final FileUtil fileUtil
The FileUtil instance.

Constructor Detail

UrlResource

public UrlResource(String url)
The constructor.

Parameters:
url - is the URL to the resource. E.g. "http://foo.bar/index.html".

UrlResource

public UrlResource(String absolutePath,
                   FileUtil fileUtil)
The constructor.

Parameters:
absolutePath - is the absolute path to the resource. E.g. "http://foo.bar/index.html".
fileUtil - is the FileUtil to use.

UrlResource

public UrlResource(URL url)
The constructor.

Parameters:
url - is the URL.

UrlResource

public UrlResource(URL url,
                   FileUtil fileUtil)
The constructor.

Parameters:
url - is the URL.
fileUtil - is the FileUtil to use.
Method Detail

getLastModificationDate

public Date getLastModificationDate()
This method gets the last modification date of the DataResource if available and supported.

Returns:
the last modification Date or null if not available or supported.

getSchemePrefix

public String getSchemePrefix()
This method gets the scheme-prefix of absolute URIs for this type of DataResource. The scheme-prefix has the following form: <scheme>:<suffix> where <suffix> is the empty string or something like //.

Specified by:
getSchemePrefix in class AbstractDataResource
Returns:
the scheme-prefix of this resource.

isAvailable

public boolean isAvailable()
This method determines if this resource is available. Available simply means that it exists and data can be read.
ATTENTION:
Depending on the underlying implementation this can be a relatively expensive operation. E.g. if this resource points to a remote URL this method has to open a network connection in order to verify if the resource is available. Use DataResource.isData() to prevent such expensive operaitons.

Specified by:
isAvailable in interface DataResource
Overrides:
isAvailable in class AbstractDataResource
Returns:
true if this resource is available, false otherwise.

isData

public boolean isData()
This method determines if this resource has potentially data available. Unlike DataResource.isAvailable() this method will not invoke expensive operations like connecting to remote URLs. If this method will return false, then DataResource.isAvailable() would also have returned false. However in case of true only DataResource.isAvailable() can guarantee if a resource really exists and contains data. E.g. if the resource points to a File then this method can check if it is a data-file. So in case it points to a directory or does not exist at all in the filesystem, this method will return false. Please also note that this may invoke expensive operations if the according directory path points to something like a network share. You should also be aware that the state of DataResource.isData() and DataResource.isAvailable() can change at any time so you never have a full guarantee if some data exists or NOT. However in most cases it is very improbable that this status changes when you read the resource immediately after the check.

Returns:
true if this resource points to potential data, false otherwise.

getPath

public String getPath()
This method gets the path of this resource. Please note that the path is including the name of the resource.
ATTENTION:
The result of this method may differ to the path used in the URL when this resource has been created.

Specified by:
getPath in interface DataResource
Overrides:
getPath in class AbstractDataResource
Returns:
the path that was used to identify this resource when creating.

getUrl

public URL getUrl()
           throws ResourceNotAvailableException
This method gets this resource as URL.

Returns:
the URL that represents this resource.
Throws:
ResourceNotAvailableException - if an URL can NOT be created because the represented resource does not exist.

getName

public String getName()
This method gets the name of the resource. It is analog to a filename.

Specified by:
getName in interface DataResource
Overrides:
getName in class AbstractDataResource
Returns:
the name of the resource.

navigate

public DataResource navigate(String relativePath)
This method creates a new DataResource pointing to the given resourcePath based on this resource.
E.g. if this resource points to the file "/etc/init.d/rc" and relativePath would be "../apt/sources.list" the resulting resource would point to "/etc/apt/sources.list".

Parameters:
relativePath - is the absolute or relative path pointing to a new resource. If it is a relative path, it is interpreted relative to the parent URI (directory) of this resource.
Returns:
is the resource pointing to the given path (relative to this resource).


Copyright © 2001-2010 mmm-Team. All Rights Reserved.