package org.eclipse.gmf.tooling.runtime.impl.ocl.tracker.activeocl; import java.util.HashMap; import java.util.Map; import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecore.EStructuralFeature; import org.eclipse.gmf.tooling.runtime.impl.ocl.activeocl.ActiveOclDependencyCollector; abstract class ActiveOclDependencyCollectorBase<T extends ContextData> implements ActiveOclDependencyCollector { private final Map<EObject, T> myContext2Data; public ActiveOclDependencyCollectorBase() { myContext2Data = new HashMap<EObject, T>(); } public void registerDependency(EObject context, EStructuralFeature feature) { T contextData = myContext2Data.get(context); if (contextData == null) { contextData = createContextData(context); myContext2Data.put(context, contextData); } contextData.addFeature(feature); } public void clear() { myContext2Data.clear(); } public Map<EObject, T> getContext2Data() { return myContext2Data; } protected abstract T createContextData(EObject context); }