public abstract class LazyExtentMap<CLS,E>
extends java.lang.Object
implements java.util.Map<CLS,java.util.Set<E>>
Note that this implementation violates the contract of the
Map
API as follows:
Map.entrySet()
method does not return entries
for any keys that have not already been queried via the
Map.get(java.lang.Object)
methodMap.keySet()
and Map.values()
methods also are not completeIn practice, this does not matter because this map is only used for providing class extents to the OCL engine, and it only does look-up by key. Moreover, this isn't strictly a violation of any contract because there is no way to distinguish this behaviour from concurrent updates.
See the Environment
class for a description of the
generic type parameters of this class.
Constructor and Description |
---|
LazyExtentMap(org.eclipse.emf.ecore.EObject context)
Initializes me with the context element of an OCL
expression evaluation.
|
Modifier and Type | Method and Description |
---|---|
void |
clear() |
boolean |
containsKey(java.lang.Object key) |
boolean |
containsValue(java.lang.Object value) |
java.util.Set<java.util.Map.Entry<CLS,java.util.Set<E>>> |
entrySet() |
boolean |
equals(java.lang.Object obj) |
java.util.Set<E> |
get(java.lang.Object key)
Lazily computes the extent of the specified class
key . |
int |
hashCode() |
boolean |
isEmpty() |
protected abstract boolean |
isInstance(CLS cls,
E element)
Implemented by subclasses to determine whether the specified element
is an instance of the specified class, according to the metamodel
semantics implemented by the environment that created this extent map.
|
java.util.Set<CLS> |
keySet() |
java.util.Set<E> |
put(CLS key,
java.util.Set<E> value) |
void |
putAll(java.util.Map<? extends CLS,? extends java.util.Set<E>> t) |
java.util.Set<E> |
remove(java.lang.Object key) |
int |
size() |
java.lang.String |
toString() |
java.util.Collection<java.util.Set<E>> |
values() |
public LazyExtentMap(org.eclipse.emf.ecore.EObject context)
context
- my context elementpublic java.util.Set<E> get(java.lang.Object key)
key
.protected abstract boolean isInstance(CLS cls, E element)
cls
- a class in the modelelement
- a potential run-time (M0) instance of that classtrue
if this element is an instance of the given
class; false
otherwisepublic boolean containsKey(java.lang.Object key)
public boolean containsValue(java.lang.Object value)
public boolean equals(java.lang.Object obj)
public int hashCode()
public boolean isEmpty()
public java.util.Set<CLS> keySet()
public java.util.Set<E> remove(java.lang.Object key)
public java.lang.String toString()
toString
in class java.lang.Object