org.eclipse.emf.ecore.util
Class EcoreUtil

java.lang.Object
  extended byorg.eclipse.emf.ecore.util.EcoreUtil

public class EcoreUtil
extends Object

This class contains convenient static methods for working with EMF objects.


Nested Class Summary
static class EcoreUtil.ContentTreeIterator
          An iterator over the tree contents of a collection of EObjects, Resources, and ResourceSets; use getAllContents to create a new instance.
static class EcoreUtil.Copier
          A mapping building traverser of a collection of content trees; the map is from EObject to EObject, i.e., from original to copy; use EcoreUtil.copy or EcoreUtil.copyAll to do routine copies.
static class EcoreUtil.CrossReferencer
          A mapping building traverser of a collection of content trees; the map is from target object to a collection of EStructuralFeature.Setting.
static class EcoreUtil.ExternalCrossReferencer
          A cross referencer that finds all references that are not contained within the content trees.
static class EcoreUtil.ProxyCrossReferencer
          A cross referencer that finds proxies; the cross referencer will not cause proxies to be resolved.
static class EcoreUtil.UnresolvedProxyCrossReferencer
          A cross referencer that finds proxies that cannot be resolved.
static class EcoreUtil.UsageCrossReferencer
          A cross referencer that finds each usage of an EObject or collection of EObjects.
 
Field Summary
protected static String GEN_MODEL_PACKAGE_NS_URI
           
 
Constructor Summary
EcoreUtil()
           
 
Method Summary
static String convertToString(EDataType eDataType, Object value)
          Converts an instance of the datatype to a string literal representation.
static EObject copy(EObject eObject)
          Returns a self-contained copy of the eObject.
static Collection copyAll(Collection eObjects)
          Returns a collection of the self-contained copies of each EObject in eObjects.
static EObject create(EClass eClass)
          Creates an instance of the class.
static Object createFromString(EDataType eDataType, String literal)
          Creates an instance of the datatype.
static void freeze(EPackage ePackage)
          Marks the package to indicate that it and everything it contains or that its contents depend on can no longer be changed.
static String generateUUID()
          Generates a universally unique identifier, i.e., a UUID.
static Adapter getAdapter(List adapters, Object type)
          Returns the adapter of the specified type.
static AdapterFactory getAdapterFactory(List adapterFactories, Object type)
          Returns the adapter factory for the specified adapter type.
static TreeIterator getAllContents(Collection emfObjects)
          Returns a tree iterator over the content trees recursively defined by ResourceSet.getResources(), Resource.getContents(), and EObject.eContents().
static String getAnnotation(EModelElement eModelElement, String sourceURI, String key)
           
static List getConstraints(EModelElement eModelElement)
           
static String getDocumentation(EModelElement eModelElement)
           
static Adapter getExistingAdapter(Notifier notifier, Object type)
          Returns the specified notifier's exisiting adapter of the specified type.
static String getID(EObject eObject)
          Returns the value of the object's ID attribute as a String.
static String getIdentification(EObject eObject)
          Returns a unique string identification of the eObject; it is structured as follows: <java-class-name>[/<dynamic-eclass-name>]@<java-hex-hash-code>{<uri-of-eobject>}
static Object getObjectByType(Collection objects, EClassifier type)
          Returns the first collection member that is an instance of the type.
static Collection getObjectsByType(Collection objects, EClassifier type)
          Returns a collection containing each collection member that is an instance of the type.
static Adapter getRegisteredAdapter(EObject eObject, Object type)
          Returns the specified eObject's adapter of the specified type.
static Adapter getRegisteredAdapter(Resource resource, Object type)
          Returns the specified resource's adapter of the specified type.
static EObject getRootContainer(EObject eObject)
          Returns the root container; it may be this object itself and it will have a null container.
static URI getURI(EObject eObject)
          Returns a URI for the eObject, i.e., either the eProxyURI, the URI of the eResource with the fragment produced by the eResource, or the URI consisting of just the fragment that would be produced by a default Resource with the eObject as its only contents.
static int indexOf(List list, Object o, int fromIndex)
          Searches for the first occurence of the given argument in list starting from a specified index.
static boolean isAncestor(Collection ancestorEMFObjects, EObject eObject)
          Returns whether any EObject, Resource, or ResourceSet in the collection is an ancestor of the EObject.
static boolean isAncestor(EObject ancestorEObject, EObject eObject)
          Returns whether the second object is directly or indirectly contained by the first object, i.e., whether the second object is in the content tree of the first.
static boolean isAncestor(Resource ancestorResource, EObject eObject)
          Returns whether the given resource is that of the object, i.e., whether the object is in the content tree of the resource.
static boolean isAncestor(ResourceSet ancestorResourceSet, EObject eObject)
          Returns whether the given resource set is that of the object, i.e., whether the object is in the content tree of the resource set.
static void remove(EObject eObject)
          Removes the object from its containing resource or its containing object.
static void remove(EObject eObject, EStructuralFeature eStructuralFeature, Object value)
          Removes the value from the feature of the object.
static void remove(EStructuralFeature.Setting setting, Object value)
          Removes the value from the setting.
static void replace(EObject eObject, EObject replacementEObject)
          Replace the object in its containing resource or its containing object, with the replacement object.
static void replace(EObject eObject, EStructuralFeature eStructuralFeature, Object oldValue, Object newValue)
          Replaces the old value in the object's feature with the new value.
static void replace(EStructuralFeature.Setting setting, Object oldValue, Object newValue)
          Replaces the old value in the setting with the new value.
static EObject resolve(EObject proxy, EObject objectContext)
          Returns the resolved object represented by proxy.
static EObject resolve(EObject proxy, Resource resourceContext)
          Returns the resolved object represented by proxy.
static EObject resolve(EObject proxy, ResourceSet resourceSet)
          Returns the resolved object represented by proxy.
static void setAnnotation(EModelElement eModelElement, String sourceURI, String key, String value)
           
static void setConstraints(EModelElement eModelElement, List constraints)
           
static void setDocumentation(EModelElement eModelElement, String documentation)
           
static void setEList(EList eList, Collection prototypeCollection)
          Deprecated. replaced by setEList(EList, List).
static void setEList(EList eList, List prototypeList)
          Sets the eList's contents and order to be exactly that of the prototype list.
static void setID(EObject eObject, String id)
          Sets the value of the object's ID attribute according to the value represented by the String.
static Class wrapperClassFor(Class javaClass)
          Returns the wrapper class for the primitive class, or the original class, if it's not a primitive class.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

GEN_MODEL_PACKAGE_NS_URI

protected static final String GEN_MODEL_PACKAGE_NS_URI
See Also:
Constant Field Values
Constructor Detail

EcoreUtil

public EcoreUtil()
Method Detail

getExistingAdapter

public static Adapter getExistingAdapter(Notifier notifier,
                                         Object type)
Returns the specified notifier's exisiting adapter of the specified type.

Parameters:
notifier - the adapted object.
type - the type of adapter.
Returns:
an adapter associated with the specified notifier or null.

getRegisteredAdapter

public static Adapter getRegisteredAdapter(EObject eObject,
                                           Object type)
Returns the specified eObject's adapter of the specified type. If none exists, create and add a new adapter using a registered adapter factory if one exists for the specified type.

Parameters:
eObject - the adapted object.
type - the type of adapter.
Returns:
an adapter associated with the specified eObject or null.

getRegisteredAdapter

public static Adapter getRegisteredAdapter(Resource resource,
                                           Object type)
Returns the specified resource's adapter of the specified type. If none exists, create and add a new adapter using a registered adapter factory if one exists for the specified type.

Parameters:
resource - the adapted resource.
type - the type of adapter.
Returns:
an adapter associated with the specified eObject or null.

getAdapter

public static Adapter getAdapter(List adapters,
                                 Object type)
Returns the adapter of the specified type.

Parameters:
adapters - list of adapters to search.
type - the type of adapter.
Returns:
an adapter from the list or null.

getAdapterFactory

public static AdapterFactory getAdapterFactory(List adapterFactories,
                                               Object type)
Returns the adapter factory for the specified adapter type.

Parameters:
adapterFactories - list of adapter factories to search.
type - the type of adapter.
Returns:
an adapter factory from the list or null.

resolve

public static EObject resolve(EObject proxy,
                              ResourceSet resourceSet)
Returns the resolved object represented by proxy. Proxy chains are followed. If resourceSet is null, the global package registry is consulted to obtain a package registered against the proxy URI, less its fragment, in the same manner as the default resource set implementation's fallback behaviour.

Parameters:
proxy - the proxy to be resolved.
resourceSet - the resource set in which to resolve.
Returns:
the resolved object, or the proxy if unable to resolve.

resolve

public static EObject resolve(EObject proxy,
                              Resource resourceContext)
Returns the resolved object represented by proxy. Proxy chains are followed. If resourceContext is null or not in a resource set, the global package registry is consulted to obtain a package registered against the proxy URI, less its fragment, in the same manner as the default resource set implementation's fallback behaviour.

Parameters:
proxy - the proxy to be resolved.
resourceContext - a context resource whose resource set is used for the resolve.
Returns:
the resolved object, or the proxy if unable to resolve.

resolve

public static EObject resolve(EObject proxy,
                              EObject objectContext)
Returns the resolved object represented by proxy. Proxy chains are followed. If objectContext is null or not in a resource that is in a resource set, the global package registry is consulted to obtain a package registered against the proxy URI, less its fragment, in the same manner as the default resource set implementation's fallback behaviour.

Parameters:
proxy - the proxy to be resolved.
objectContext - a context object whose resource set is used for the resolve.
Returns:
the resolved object, or the proxy if unable to resolve.

getObjectByType

public static Object getObjectByType(Collection objects,
                                     EClassifier type)
Returns the first collection member that is an instance of the type.

Parameters:
objects - a collection of objects to check.
type - the type of object to find.
Returns:
the first object of the specified type.

getObjectsByType

public static Collection getObjectsByType(Collection objects,
                                          EClassifier type)
Returns a collection containing each collection member that is an instance of the type.

Parameters:
objects - a collection of objects to check.
type - the type of object to find.
Returns:
a collection of objects of the specified type.

copy

public static EObject copy(EObject eObject)
Returns a self-contained copy of the eObject.

Parameters:
eObject - the object to copy.
Returns:
the copy.
See Also:
EcoreUtil.Copier

copyAll

public static Collection copyAll(Collection eObjects)
Returns a collection of the self-contained copies of each EObject in eObjects.

Parameters:
eObjects - the collection of objects to copy.
Returns:
the collection of copies.
See Also:
EcoreUtil.Copier

getRootContainer

public static EObject getRootContainer(EObject eObject)
Returns the root container; it may be this object itself and it will have a null container.

The root container must be directly contained in a resource for its tree to be serializable.

Parameters:
eObject - the object to get the root container for.
Returns:
the root container.
See Also:
EObject.eResource(), EObject.eContainer()

isAncestor

public static boolean isAncestor(EObject ancestorEObject,
                                 EObject eObject)
Returns whether the second object is directly or indirectly contained by the first object, i.e., whether the second object is in the content tree of the first.

Parameters:
ancestorEObject - the ancestor object in question.
eObject - the object to test.
Returns:
whether the first object is an ancestor of the second object.
See Also:
EObject.eContainer()

isAncestor

public static boolean isAncestor(Resource ancestorResource,
                                 EObject eObject)
Returns whether the given resource is that of the object, i.e., whether the object is in the content tree of the resource.

Parameters:
ancestorResource - the ancestor resource in question.
eObject - the object to test.
Returns:
whether the resource is an ancestor of the object.
See Also:
EObject.eContainer(), EObject.eResource()

isAncestor

public static boolean isAncestor(ResourceSet ancestorResourceSet,
                                 EObject eObject)
Returns whether the given resource set is that of the object, i.e., whether the object is in the content tree of the resource set.

Parameters:
ancestorResourceSet - the ancestor resource set in question.
eObject - the object to test.
Returns:
whether the resource set is an ancestor of the object.
See Also:
EObject.eContainer(), EObject.eResource(), Resource.getResourceSet()

isAncestor

public static boolean isAncestor(Collection ancestorEMFObjects,
                                 EObject eObject)
Returns whether any EObject, Resource, or ResourceSet in the collection is an ancestor of the EObject.

Parameters:
ancestorEMFObjects - the collection of ancestor objects in question.
eObject - the object to test.
Returns:
whether any object in the collection is an ancestor of the object.

getAllContents

public static TreeIterator getAllContents(Collection emfObjects)
Returns a tree iterator over the content trees recursively defined by ResourceSet.getResources(), Resource.getContents(), and EObject.eContents(). It uses a special iterator for ResourceSet.getResources that is tolerant of growth in the underlying collection which result from demand loaded resources; the iterator will walk these additional resources.

Parameters:
emfObjects - the collection of objects to iterate over.
Returns:
a tree iterator over the objects and their contents.
See Also:
EcoreUtil.ContentTreeIterator

getIdentification

public static String getIdentification(EObject eObject)
Returns a unique string identification of the eObject; it is structured as follows:
  <java-class-name>[/<dynamic-eclass-name>]@<java-hex-hash-code>{<uri-of-eobject>}

Parameters:
eObject - the object for which to get an identification.
Returns:
the identification string for the object.

getURI

public static URI getURI(EObject eObject)
Returns a URI for the eObject, i.e., either the eProxyURI, the URI of the eResource with the fragment produced by the eResource, or the URI consisting of just the fragment that would be produced by a default Resource with the eObject as its only contents.

Parameters:
eObject - the object for which to get the URI.
Returns:
the URI for the object.

indexOf

public static int indexOf(List list,
                          Object o,
                          int fromIndex)
Searches for the first occurence of the given argument in list starting from a specified index. The equality is tested using the operator == and the equals method.

Parameters:
list -
o - an object (can be null)
fromIndex -
Returns:
the index of the first occurrence of the argument in this list (where index>=fromIndex); returns -1 if the object is not found.

setEList

public static void setEList(EList eList,
                            Collection prototypeCollection)
Deprecated. replaced by setEList(EList, List).

Sets the eList's contents and order to be exactly that of the prototype collection. This implementation mimimizes the number of notifications the operation will produce. Objects already in the list will be moved, missing objects will be added, and extra objects will be removed. If eList's contents and order are already exactly that of the prototype collection, no change will be made.

Parameters:
eList - the list to set.
prototypeCollection - the collection representing the desired content and order.

setEList

public static void setEList(EList eList,
                            List prototypeList)
Sets the eList's contents and order to be exactly that of the prototype list. This implementation mimimizes the number of notifications the operation will produce. Objects already in the list will be moved, missing objects will be added, and extra objects will be removed. If eList's contents and order are already exactly that of the prototype list, no change will be made.

Parameters:
eList - the list to set.
prototypeList - the list representing the desired content and order.

remove

public static void remove(EStructuralFeature.Setting setting,
                          Object value)
Removes the value from the setting.

Parameters:
setting - the setting holding the value.
value - the value to remove.

replace

public static void replace(EStructuralFeature.Setting setting,
                           Object oldValue,
                           Object newValue)
Replaces the old value in the setting with the new value.

Parameters:
setting - the setting holding the values.
oldValue - the value to replace.
newValue - the replacement value.

remove

public static void remove(EObject eObject,
                          EStructuralFeature eStructuralFeature,
                          Object value)
Removes the value from the feature of the object.

Parameters:
eObject - the object holding the value.
eStructuralFeature - the feature of the object holding the value.
value - the value to remove.

replace

public static void replace(EObject eObject,
                           EStructuralFeature eStructuralFeature,
                           Object oldValue,
                           Object newValue)
Replaces the old value in the object's feature with the new value.

Parameters:
eObject - the object holding the values.
eStructuralFeature - the feature of the object holding the values.
oldValue - the value to replace.
newValue - the replacement value.

remove

public static void remove(EObject eObject)
Removes the object from its containing resource or its containing object.

Parameters:
eObject - the object to remove.

replace

public static void replace(EObject eObject,
                           EObject replacementEObject)
Replace the object in its containing resource or its containing object, with the replacement object.

Parameters:
eObject - the object to replace.
replacementEObject - the replacement object.

create

public static EObject create(EClass eClass)
Creates an instance of the class.

Parameters:
eClass - the class to instantiate.
Returns:
an instance of the class.

createFromString

public static Object createFromString(EDataType eDataType,
                                      String literal)
Creates an instance of the datatype.

Parameters:
eDataType - the datatype to instantiate.
literal - the string value of the datatype.
Returns:
an instance of the datatype.
See Also:
convertToString(EDataType, Object)

convertToString

public static String convertToString(EDataType eDataType,
                                     Object value)
Converts an instance of the datatype to a string literal representation.

Parameters:
eDataType - the datatype to instantiate.
value - a value of the datatype.
Returns:
the string literal representation of the value.
See Also:
createFromString(EDataType, String)

getID

public static String getID(EObject eObject)
Returns the value of the object's ID attribute as a String. If the object has no ID attribute or the ID attribute is not set, it returns null.

Parameters:
eObject - the object in question.
Returns:
the value of the object's ID attribute as a String.
See Also:
EAttribute.isID(), EClass.getEIDAttribute(), setID(EObject, String)

setID

public static void setID(EObject eObject,
                         String id)
Sets the value of the object's ID attribute according to the value represented by the String. A null ID will unset the attribute rather than setting it to null.

Parameters:
eObject - the object in question.
id - the String value of the new ID.
Returns:
the value of the object's ID attribute as a String.
Throws:
IllegalArgumentException - if the object has no ID attribute.
See Also:
getID(EObject), EAttribute.isID(), EClass.getEIDAttribute()

wrapperClassFor

public static Class wrapperClassFor(Class javaClass)
Returns the wrapper class for the primitive class, or the original class, if it's not a primitive class.

Parameters:
javaClass -

getDocumentation

public static String getDocumentation(EModelElement eModelElement)

setDocumentation

public static void setDocumentation(EModelElement eModelElement,
                                    String documentation)

getConstraints

public static List getConstraints(EModelElement eModelElement)

setConstraints

public static void setConstraints(EModelElement eModelElement,
                                  List constraints)

getAnnotation

public static String getAnnotation(EModelElement eModelElement,
                                   String sourceURI,
                                   String key)

setAnnotation

public static void setAnnotation(EModelElement eModelElement,
                                 String sourceURI,
                                 String key,
                                 String value)

generateUUID

public static String generateUUID()
Generates a universally unique identifier, i.e., a UUID. It encodes the 128 bit UUID in base 64, but rather than padding the encoding with two "=" characters, it prefixes the encoding with a single "_" character, to ensure that the result is a valid ID, i.e., an NCName

Returns:
a universally unique identifier.

freeze

public static void freeze(EPackage ePackage)
Marks the package to indicate that it and everything it contains or that its contents depend on can no longer be changed. This helps to improve the performance of the model but has no other effect.


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