org.eclipse.emf.ecore.resource.impl
Class PlatformResourceURIHandlerImpl

java.lang.Object
  extended by org.eclipse.emf.ecore.resource.impl.URIHandlerImpl
      extended by org.eclipse.emf.ecore.resource.impl.PlatformResourceURIHandlerImpl
All Implemented Interfaces:
URIHandler

public class PlatformResourceURIHandlerImpl
extends URIHandlerImpl


Nested Class Summary
static class PlatformResourceURIHandlerImpl.PlatformResourceOutputStream
          An output stream that transfers its contents to an IFile upon closing.
static class PlatformResourceURIHandlerImpl.WorkbenchHelper
          Isolated Eclipse workbench utilities.
 
Field Summary
protected static IWorkspaceRoot workspaceRoot
          The cached Eclipse workspace.
 
Fields inherited from interface org.eclipse.emf.ecore.resource.URIHandler
DEFAULT_HANDLERS
 
Constructor Summary
PlatformResourceURIHandlerImpl()
          Creates an instance.
 
Method Summary
 boolean canHandle(URI uri)
          This implementation always returns true; clients are generally expected to override this.
 java.io.InputStream createInputStream(URI uri, java.util.Map<?,?> options)
          Creates an input stream for the platform resource path and returns it.
 java.io.OutputStream createOutputStream(URI uri, java.util.Map<?,?> options)
          Creates an output stream for the platform resource path and returns it.
 void delete(URI uri, java.util.Map<?,?> options)
          Only HTTP connections support delete.
 boolean exists(URI uri, java.util.Map<?,?> options)
          If a stream can be created the file exists.
 java.util.Map<java.lang.String,?> getAttributes(URI uri, java.util.Map<?,?> options)
          Returns a map from String attributes to their corresponding values representing information about various aspects of the URI's state.
 void setAttributes(URI uri, java.util.Map<java.lang.String,?> attributes, java.util.Map<?,?> options)
          Updates the map from String attributes to their corresponding values representing information about various aspects of the URI's state.
 
Methods inherited from class org.eclipse.emf.ecore.resource.impl.URIHandlerImpl
contentDescription, getRequestedAttributes, getResponse, getURIConverter
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

workspaceRoot

protected static IWorkspaceRoot workspaceRoot
The cached Eclipse workspace.

Constructor Detail

PlatformResourceURIHandlerImpl

public PlatformResourceURIHandlerImpl()
Creates an instance.

Method Detail

canHandle

public boolean canHandle(URI uri)
Description copied from class: URIHandlerImpl
This implementation always returns true; clients are generally expected to override this.

Specified by:
canHandle in interface URIHandler
Overrides:
canHandle in class URIHandlerImpl
Parameters:
uri - the URI to consider.
Returns:
whether this handler is appropriate for the given URI.

createOutputStream

public java.io.OutputStream createOutputStream(URI uri,
                                               java.util.Map<?,?> options)
                                        throws java.io.IOException
Creates an output stream for the platform resource path and returns it.

This implementation does one of two things, depending on the runtime environment. If there is an Eclipse workspace, it delegates to WorkbenchHelper.createPlatformResourceOutputStream, which gives the expected Eclipse behaviour. Otherwise, the resolved URI is delegated to createOutputStream for recursive processing.

Specified by:
createOutputStream in interface URIHandler
Overrides:
createOutputStream in class URIHandlerImpl
Parameters:
uri - the URI for which to create the output stream.
options - a map of options to influence the kind of stream that is returned; unrecognized options are ignored and null is permitted.
Returns:
an open output stream.
Throws:
java.io.IOException - if there is a problem obtaining an open output stream or a valid interpretation of the path.
See Also:
EcorePlugin.resolvePlatformResourcePath(String)

createInputStream

public java.io.InputStream createInputStream(URI uri,
                                             java.util.Map<?,?> options)
                                      throws java.io.IOException
Creates an input stream for the platform resource path and returns it.

This implementation does one of two things, depending on the runtime environment. If there is an Eclipse workspace, it delegates to WorkbenchHelper.createPlatformResourceInputStream, which gives the expected Eclipse behaviour. Otherwise, the resolved URI is delegated to createInputStream for recursive processing.

Specified by:
createInputStream in interface URIHandler
Overrides:
createInputStream in class URIHandlerImpl
Parameters:
uri - the URI for which to create the input stream.
options - a map of options to influence the kind of stream that is returned; unrecognized options are ignored and null is permitted.
Returns:
an open input stream.
Throws:
java.io.IOException - if there is a problem obtaining an open input stream or a valid interpretation of the path.
See Also:
EcorePlugin.resolvePlatformResourcePath(String)

delete

public void delete(URI uri,
                   java.util.Map<?,?> options)
            throws java.io.IOException
Description copied from class: URIHandlerImpl
Only HTTP connections support delete.

Specified by:
delete in interface URIHandler
Overrides:
delete in class URIHandlerImpl
Parameters:
uri - the URI to consider.
options - options to influence how the contents are deleted, or null if there are no options.
Throws:
java.io.IOException - if there is a problem deleting the contents.
See Also:
URIConverter.delete(URI, Map)

exists

public boolean exists(URI uri,
                      java.util.Map<?,?> options)
Description copied from class: URIHandlerImpl
If a stream can be created the file exists. Specialized support is provided for HTTP connections to avoid fetching the whole stream in that case.

Specified by:
exists in interface URIHandler
Overrides:
exists in class URIHandlerImpl
Parameters:
uri - the URI to consider.
options - options to influence how the existence determined, or null if there are no options.
Returns:
whether the given URI has contents.
See Also:
URIConverter.exists(URI, Map)

getAttributes

public java.util.Map<java.lang.String,?> getAttributes(URI uri,
                                                       java.util.Map<?,?> options)
Description copied from interface: URIHandler
Returns a map from String attributes to their corresponding values representing information about various aspects of the URI's state. The requested attributes option can be used to specify which properties to fetch; without that option, all supported attributes will be fetched. If the URI doesn't not support any particular attribute, an entry for that attribute will not be appear in the result.

Specified by:
getAttributes in interface URIHandler
Overrides:
getAttributes in class URIHandlerImpl
Parameters:
uri - the URI to consider.
options - options to influence how the attributes are determined, or null if there are no options.
Returns:
a map from String attributes to their corresponding values representing information about various aspects of the URI's state.

setAttributes

public void setAttributes(URI uri,
                          java.util.Map<java.lang.String,?> attributes,
                          java.util.Map<?,?> options)
                   throws java.io.IOException
Description copied from interface: URIHandler
Updates the map from String attributes to their corresponding values representing information about various aspects of the URI's state. Unsupported or unchangeable attributes are ignored.

Specified by:
setAttributes in interface URIHandler
Overrides:
setAttributes in class URIHandlerImpl
Parameters:
uri - the URI to consider.
attributes - the new values for the attributes.
options - options to influence how the attributes are updated, or null if there are no options.
Throws:
java.io.IOException - if there is a problem updating the attributes.

Copyright 2001-2006 IBM Corporation and others.
All Rights Reserved.