|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.eclipse.emf.common.notify.impl.BasicNotifierImpl org.eclipse.emf.common.notify.impl.NotifierImpl org.eclipse.emf.ecore.resource.impl.ResourceSetImpl
public class ResourceSetImpl
An extensible resource set implementation.
The following configuration and control mechanisms are provided:
Nested Class Summary | |
---|---|
protected class |
ResourceSetImpl.ResourcesEList<E extends java.lang.Object & Resource>
A notifying list implementation for supporting ResourceSet.getResources() . |
Nested classes/interfaces inherited from class org.eclipse.emf.common.notify.impl.BasicNotifierImpl |
---|
BasicNotifierImpl.EAdapterList<E extends java.lang.Object & Adapter> |
Field Summary | |
---|---|
protected EList<AdapterFactory> |
adapterFactories
The registered adapter factories. |
protected java.util.Map<java.lang.Object,java.lang.Object> |
loadOptions
The load options. |
protected EPackage.Registry |
packageRegistry
The local package registry. |
protected Resource.Factory.Registry |
resourceFactoryRegistry
The local resource factory registry. |
protected EList<Resource> |
resources
The contained resources. |
protected URIConverter |
uriConverter
The URI converter. |
protected java.util.Map<URI,Resource> |
uriResourceMap
A map to cache the resource associated with a specific URI. |
Fields inherited from class org.eclipse.emf.common.notify.impl.NotifierImpl |
---|
eAdapters, EDELIVER, eFlags, ELAST_NOTIFIER_FLAG |
Fields inherited from interface org.eclipse.emf.ecore.resource.ResourceSet |
---|
RESOURCE_SET__RESOURCES |
Constructor Summary | |
---|---|
ResourceSetImpl()
Creates an empty instance. |
Method Summary | |
---|---|
Resource |
createResource(URI uri)
Creates a new resource, of the appropriate type, and returns it. |
Resource |
createResource(URI uri,
java.lang.String contentType)
Creates a new resource, of the appropriate type, and returns it. |
protected Resource |
delegatedGetResource(URI uri,
boolean loadOnDemand)
Returns a resolved resource available outside of the resource set. |
protected Resource |
demandCreateResource(URI uri)
Creates a new resource appropriate for the URI. |
protected void |
demandLoad(Resource resource)
Loads the given resource. |
protected void |
demandLoadHelper(Resource resource)
Demand loads the given resource using demandLoad(Resource)
and wraps any IOException as a runtime exception. |
EList<AdapterFactory> |
getAdapterFactories()
Returns the list of registered AdapterFactory instances. |
TreeIterator<Notifier> |
getAllContents()
Returns a tree iterator that iterates over all the direct resources
and over the content tree of each. |
EObject |
getEObject(URI uri,
boolean loadOnDemand)
Returns the object resolved by the URI. |
java.util.Map<java.lang.Object,java.lang.Object> |
getLoadOptions()
Returns the options used during demand load. |
EPackage.Registry |
getPackageRegistry()
Returns the registry used for looking up a package based namespace. |
Resource |
getResource(URI uri,
boolean loadOnDemand)
Returns the resource resolved by the URI. |
Resource.Factory.Registry |
getResourceFactoryRegistry()
Returns the registry used for creating a resource of the appropriate type. |
EList<Resource> |
getResources()
Returns the direct Resource s being managed. |
URIConverter |
getURIConverter()
Returns the converter used to normalize URIs and to open streams. |
java.util.Map<URI,Resource> |
getURIResourceMap()
Returns the map used to cache the resource associated with a specific URI. |
protected void |
handleDemandLoadException(Resource resource,
java.io.IOException exception)
Handles the exception thrown during demand load by recording it as an error diagnostic and throwing a wrapping runtime exception. |
void |
setPackageRegistry(EPackage.Registry packageRegistry)
Set the registry used for looking up a package based namespace. |
void |
setResourceFactoryRegistry(Resource.Factory.Registry resourceFactoryRegistry)
Sets the registry used for creating resource of the appropriate type. |
void |
setURIConverter(URIConverter uriConverter)
Sets the converter used to normalize URIs and to open streams. |
void |
setURIResourceMap(java.util.Map<URI,Resource> uriResourceMap)
Sets the map used to cache the resource associated with a specific URI. |
java.lang.String |
toString()
Returns a standard label with the list of resources. |
Methods inherited from class org.eclipse.emf.common.notify.impl.NotifierImpl |
---|
eAdapters, eBasicAdapters, eDeliver, eSetDeliver |
Methods inherited from class org.eclipse.emf.common.notify.impl.BasicNotifierImpl |
---|
eNotificationRequired, eNotify |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Methods inherited from interface org.eclipse.emf.common.notify.Notifier |
---|
eAdapters, eDeliver, eNotify, eSetDeliver |
Field Detail |
---|
protected EList<Resource> resources
getResources()
protected EList<AdapterFactory> adapterFactories
getAdapterFactories()
protected java.util.Map<java.lang.Object,java.lang.Object> loadOptions
getLoadOptions()
protected Resource.Factory.Registry resourceFactoryRegistry
getResourceFactoryRegistry()
protected URIConverter uriConverter
getURIConverter()
protected EPackage.Registry packageRegistry
getPackageRegistry()
protected java.util.Map<URI,Resource> uriResourceMap
setURIResourceMap(Map)
Constructor Detail |
---|
public ResourceSetImpl()
Method Detail |
---|
public java.util.Map<URI,Resource> getURIResourceMap()
associated
with a specific URI.
setURIResourceMap(java.util.Map)
public void setURIResourceMap(java.util.Map<URI,Resource> uriResourceMap)
null
.
The map will be lazily loaded by the getResource
method.
It is up to the client to clear the cache when it becomes invalid,
e.g., when the URI of a previously mapped resource is changed.
uriResourceMap
- the new map or null
.getURIResourceMap()
public EList<Resource> getResources()
ResourceSet
Resource
s being managed.
A resource added to this list
will be contained
by this resource set.
If it was previously contained by a resource set, it will have been removed.
getResources
in interface ResourceSet
Resource.getResourceSet()
public TreeIterator<Notifier> getAllContents()
ResourceSet
direct resources
and over the content tree
of each.
getAllContents
in interface ResourceSet
EObject.eAllContents()
,
Resource.getAllContents()
,
EcoreUtil.getAllContents(ResourceSet, boolean)
public EList<AdapterFactory> getAdapterFactories()
ResourceSet
AdapterFactory
instances.
One style of adapter lookup
supported by EMF
is via registered adapter factories.
Since these factories are accessible to any fully contained object via
eObject.eResource().getResourceSet().getAdapterFactories()they can be used to create adapters on demand, without going to the factory first.
getAdapterFactories
in interface ResourceSet
EcoreUtil.getRegisteredAdapter(EObject, Object)
,
EcoreUtil.getRegisteredAdapter(Resource, Object)
,
AdapterFactory.adapt(Notifier, Object)
public java.util.Map<java.lang.Object,java.lang.Object> getLoadOptions()
ResourceSet
Options are handled generically as feature-to-setting entries.
They are passed to the resource when it is deserialized
.
A resource will ignore options it doesn't recognize.
The options could even include things like an Eclipse progress monitor...
getLoadOptions
in interface ResourceSet
Resource.load(Map)
public EObject getEObject(URI uri, boolean loadOnDemand)
ResourceSet
Every object contained
by a resource (or that is a proxy
)
has a corresponding URI
that resolves to the object.
So for any object contained by a resource, the following is true
.
eObject == eObject.eResource().getResourceSet().getEObject(EcoreUtil.getURI(eObject), false)
The URI without
the fragment,
is used to resolve
a resource.
If the resource resolves,
the fragment
is used to resolve
the object.
getEObject
in interface ResourceSet
uri
- the URI to resolve.loadOnDemand
- whether to create and load the resource, if it doesn't already exists.
null
if there isn't one.Resource.getEObject(String)
,
ResourceSet.getResource(URI, boolean)
,
EcoreUtil.getURI(EObject)
protected Resource demandCreateResource(URI uri)
getResource(URI, boolean)
when a URI that doesn't exist as a resource is demand loaded.
This implementation simply calls createResource(URI)
.
Clients may extend this as appropriate.
uri
- the URI of the resource to create.
getResource(URI, boolean)
protected void demandLoad(Resource resource) throws java.io.IOException
demandLoadHelper(Resource)
to perform a demand load.
This implementation simply calls resource.
load
(getLoadOptions
()).
Clients may extend this as appropriate.
resource
- a resource that isn't loaded.
java.io.IOException
- if there are serious problems loading the resource.getResource(URI, boolean)
,
demandLoadHelper(Resource)
protected void demandLoadHelper(Resource resource)
demandLoad(Resource)
and wraps
any IOException
as a runtime exception.
It is called by getResource(URI, boolean)
to perform a demand load.
resource
- a resource that isn't loaded.demandLoad(Resource)
protected void handleDemandLoadException(Resource resource, java.io.IOException exception) throws java.lang.RuntimeException
resource
- the resource that threw an exception while loading.exception
- the exception thrown from the resource while loading.
java.lang.RuntimeException
demandLoadHelper(Resource)
protected Resource delegatedGetResource(URI uri, boolean loadOnDemand)
getResource(URI, boolean)
after it has determined that the URI cannot be resolved
based on the existing contents of the resource set.
This implementation looks up the URI in the {#getPackageRegistry() local} package registry.
Clients may extend this as appropriate.
uri
- the URIloadOnDemand
- whether demand loading is required.public Resource getResource(URI uri, boolean loadOnDemand)
ResourceSet
A resource set is expected to implement the following strategy
in order to resolve the given URI to a resource.
First it uses it's URI converter
to normalize
the URI
and then to compare it with the normalized URI of each resource;
if it finds a match,
that resource becomes the result.
Failing that,
it delegates
to allow the URI to be resolved elsewhere.
For example,
the package registry
is used to resolve
the namespace URI
of a package
to the static instance of that package.
So the important point is that an arbitrary implementation may resolve the URI to any resource,
not necessarily to one contained by this particular resource set.
If the delegation step fails to provide a result,
and if loadOnDemand
is true
,
a resource is created
and that resource becomes the result.
If loadOnDemand
is true
and the result resource is not loaded
,
it will be loaded
before it is returned.
getResource
in interface ResourceSet
uri
- the URI to resolve.loadOnDemand
- whether to create and load the resource, if it doesn't already exists.
null
if there isn't one and it's not being demand loaded.public Resource createResource(URI uri)
ResourceSet
It delegates to the resource factory registry
to determine the correct
factory,
and then it uses that factory to create
the resource
and adds it to the contents
.
If there is no registered factory, null
will be returned;
when running within Eclipse,
a default XMI factory will be registered,
and this will never return null
.
createResource
in interface ResourceSet
uri
- the URI of the resource to create.
null
if no factory is registered.public Resource createResource(URI uri, java.lang.String contentType)
ResourceSet
It delegates to the resource factory registry
to determine the correct
factory,
and then it uses that factory to create
the resource
and adds it to the contents
.
If there is no registered factory, null
will be returned;
when running within Eclipse,
a default XMI factory will be registered,
and this will never return null
.
createResource
in interface ResourceSet
uri
- the URI of the resource to create.contentType
- the content type identifier
of the URI,
or null
if no content type should be used during lookup.
null
if no factory is registered.public Resource.Factory.Registry getResourceFactoryRegistry()
ResourceSet
An implementation will typically provide a registry that delegates to
the global
resource factory registry.
As a result, registrations made in this registry are local to this resource set,
i.e., they augment or override those of the global registry.
getResourceFactoryRegistry
in interface ResourceSet
public void setResourceFactoryRegistry(Resource.Factory.Registry resourceFactoryRegistry)
ResourceSet
setResourceFactoryRegistry
in interface ResourceSet
resourceFactoryRegistry
- the new registry.public URIConverter getURIConverter()
ResourceSet
getURIConverter
in interface ResourceSet
URIConverter
,
URI
public void setURIConverter(URIConverter uriConverter)
ResourceSet
setURIConverter
in interface ResourceSet
uriConverter
- the new converter.URIConverter
,
URI
public EPackage.Registry getPackageRegistry()
ResourceSet
An implementation will typically provide a registry that delegates to
the global
package registry.
As a result, registrations made in this registry are local to this resource set,
i.e., they augment or override those of the global registry.
getPackageRegistry
in interface ResourceSet
public void setPackageRegistry(EPackage.Registry packageRegistry)
ResourceSet
setPackageRegistry
in interface ResourceSet
packageRegistry
- the new registry.public java.lang.String toString()
toString
in class java.lang.Object
|
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 |