|
|||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||||
java.lang.Objectorg.eclipse.emf.ecore.resource.impl.URIConverterImpl
A highly functional and extensible URI converter implementation.
This implementation provides seamless transparent Eclipse integration
by supporting the platform:/resource mechanism both inside of Eclipse and outside of Eclipse.
Furthermore, although the implementation imports
both org.eclipse.core.runtime and org.eclipse.core.resources,
and hence requires the Eclipse libraries at development time,
the implementation does not require them at runtime.
Clients of this implementation must be cautious if they wish to maintain this platform neutral behaviour.
| Nested Class Summary | |
protected class |
URIConverterImpl.Archive
A specialized class for reading from an archive. |
static class |
URIConverterImpl.PlatformResourceOutputStream
An output stream that transfers its contents to an IFile upon closing. |
static interface |
URIConverterImpl.URIMap
A map that remaps URIs. |
static class |
URIConverterImpl.WorkbenchHelper
Isolated Eclipse workbench utilities. |
| Nested classes inherited from class org.eclipse.emf.ecore.resource.URIConverter |
URIConverter.Cipher, URIConverter.Readable, URIConverter.ReadableInputStream, URIConverter.Writeable, URIConverter.WriteableOutputStream |
| Field Summary | |
protected URIConverterImpl.URIMap |
uriMap
The URI map. |
protected static IWorkspaceRoot |
workspaceRoot
The cached Eclipse workspace. |
| Fields inherited from interface org.eclipse.emf.ecore.resource.URIConverter |
URI_MAP |
| Constructor Summary | |
URIConverterImpl()
Creates an instance. |
|
| Method Summary | |
protected URIConverterImpl.Archive |
createArchive(URI uri)
|
protected InputStream |
createArchiveInputStream(URI archiveURI)
Creates an input stream for the archive paths and returns it. |
protected OutputStream |
createArchiveOutputStream(URI archiveURI)
Creates an output stream for the archive access. |
protected InputStream |
createFileInputStream(String filePath)
Creates an input stream for the file path and returns it. |
protected OutputStream |
createFileOutputStream(String filePath)
Creates an output stream for the file path and returns it. |
InputStream |
createInputStream(URI uri)
Creates an input stream for the URI and returns it. |
OutputStream |
createOutputStream(URI uri)
Creates an output stream for the URI and returns it. |
protected InputStream |
createPlatformResourceInputStream(String platformResourcePath)
Creates an input stream for the platform resource path and returns it. |
protected OutputStream |
createPlatformResourceOutputStream(String platformResourcePath)
Creates an output stream for the platform resource path and returns it. |
protected InputStream |
createURLInputStream(URI uri)
Creates an input stream for the URI, assuming it's a URL, and returns it. |
protected OutputStream |
createURLOutputStream(URI uri)
Creates an output stream for the URI, assuming it's a URL, and returns it. |
protected URIConverterImpl.URIMap |
getInternalURIMap()
Returns the internal version of the URI map. |
Map |
getURIMap()
Returns the map used for remapping a logical URI to a physical URI when normalizing.
|
protected boolean |
isArchiveScheme(String scheme)
Returns whether the scheme is one that this implementation should treat as an archive. |
URI |
normalize(URI uri)
Returns the normalized form of the URI. |
| Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Field Detail |
protected static IWorkspaceRoot workspaceRoot
protected URIConverterImpl.URIMap uriMap
| Constructor Detail |
public URIConverterImpl()
| Method Detail |
protected boolean isArchiveScheme(String scheme)
true which the schem is "archive".
scheme - the scheme to consider.
public OutputStream createOutputStream(URI uri)
throws IOException
This implementation normalizes the URI and uses that as the basis for further processing.
It factors out the URI schemes file and platform (with leading resource segment)
for special processing by
createFileOutputStream and
createPlatformResourceOutputStream, respectively.
The file-based URI is converted to a file path, e.g.,
file:///C:/directory/file
->
C:/directory/file
and the platform-based URI is converted to a platform path by trimming the leading platform:/resource, e.g.,
platform:/resource/project/directory/file
->
/project/directory/file
All other cases are handled as standard URLs by createURLOutputStream.
createOutputStream in interface URIConverterIOException - if there is a problem obtaining an open output stream.
protected OutputStream createFileOutputStream(String filePath)
throws IOException
This implementation allocates a FileOutputStream and creates subdirectories as necessary.
IOException - if there is a problem obtaining an open output stream.
protected OutputStream createArchiveOutputStream(URI archiveURI)
throws IOException
IOException - if there is a problem obtaining an open output stream.
protected OutputStream createPlatformResourceOutputStream(String platformResourcePath)
throws IOException
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.
IOException - if there is a problem obtaining an open output stream or a valid interpretation of the path.EcorePlugin.resolvePlatformResourcePath(String)
protected OutputStream createURLOutputStream(URI uri)
throws IOException
IOException - if there is a problem obtaining an open output stream.
public InputStream createInputStream(URI uri)
throws IOException
This implementation normalizes the URI and uses that as the basis for further processing.
It factors out the URI schemes file and platform (with leading resource segment)
for special processing by
createFileInputStream and
createPlatformResourceInputStream, respectively.
The file-based URI is converted to a file path, e.g.,
file:///C:/directory/file
->
C:/directory/file
and the platform-based URI is converted to a platform path by trimming the leading platform:/resource, e.g.,
platform:/resource/project/directory/file
->
/project/directory/file
All other cases are handled as standard URLs by createURLInputStream.
createInputStream in interface URIConverterIOException - if there is a problem obtaining an open input stream.
protected InputStream createFileInputStream(String filePath)
throws IOException
This implementation allocates a FileInputStream.
IOException - if there is a problem obtaining an open input stream.protected URIConverterImpl.Archive createArchive(URI uri)
protected InputStream createArchiveInputStream(URI archiveURI)
throws IOException
ArchiveReader to implement read access.
IOException - if there is a problem obtaining an open input stream.
protected InputStream createPlatformResourceInputStream(String platformResourcePath)
throws IOException
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.
IOException - if there is a problem obtaining an open input stream or a valid interpretation of the path.EcorePlugin.resolvePlatformResourcePath(String)
protected InputStream createURLInputStream(URI uri)
throws IOException
IOException - if there is a problem obtaining an open input stream.public URI normalize(URI uri)
This implementation does precisely and only the typical thing.
It calls itself recursively so that mapped chains are followed.
normalize in interface URIConverteruri - the URI to normalize.
EcorePlugin.getPlatformResourceMap()public Map getURIMap()
URIConverternormalizing.
An implementation will typically also delegate to the global map,
so registrations made in this map are local to this URI converter,
i.e., they augment or override those of the global map.
The map generally specifies instance to instance mapping,
except for the case that both the key URI and the value URI end with "/",
which specifies a folder to folder mapping.
A folder mapping will remap any URI that has the key as its prefix,
e.g., if the map contains:
http://www.example.com/ -> platform:/resource/example/then the URI
http://www.example.com/a/b/c.dwill map to
platform:/resource/example/a/b/c.dA matching instance mapping is considered first. If there isn't one, the folder mappings are considered starting with the
longest prefix.
getURIMap in interface URIConverterURIConverter.normalize(URI),
URIConverter.URI_MAPprotected URIConverterImpl.URIMap getInternalURIMap()
|
Copyright 2001-2006 IBM Corporation and others. All Rights Reserved. |
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||||