package org.eclipse.gmf.tooling.runtime.impl.ocl.tracker.activeocl;
import java.util.Map;
import java.util.Set;
import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EClassifier;
import org.eclipse.emf.ecore.EEnumLiteral;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.EOperation;
import org.eclipse.emf.ecore.EPackage;
import org.eclipse.emf.ecore.EParameter;
import org.eclipse.emf.ecore.EStructuralFeature;
import org.eclipse.ocl.Environment;
import org.eclipse.ocl.EvaluationEnvironment;
import org.eclipse.ocl.ecore.CallOperationAction;
import org.eclipse.ocl.ecore.Constraint;
import org.eclipse.ocl.ecore.EvaluationVisitorImpl;
import org.eclipse.ocl.ecore.SendSignalAction;
import org.eclipse.ocl.ecore.impl.PropertyCallExpImpl;
import org.eclipse.ocl.expressions.OCLExpression;
import org.eclipse.ocl.expressions.PropertyCallExp;
public class EvaluationVisitorImplEx extends EvaluationVisitorImpl {
private final org.eclipse.gmf.tooling.runtime.impl.ocl.activeocl.ActiveOclDependencyCollector myDependencyCollector;
public EvaluationVisitorImplEx(
Environment<EPackage, EClassifier, EOperation, EStructuralFeature, EEnumLiteral, EParameter, EObject, CallOperationAction, SendSignalAction, Constraint, EClass, EObject> env, //
EvaluationEnvironment<EClassifier, EOperation, EStructuralFeature, EClass, EObject> evalEnv, Map<? extends EClass, ? extends Set<? extends EObject>> extentMap, //
org.eclipse.gmf.tooling.runtime.impl.ocl.activeocl.ActiveOclDependencyCollector dependencyCollector) {
super(env, evalEnv, extentMap);
myDependencyCollector = dependencyCollector;
}
@Override
public Object visitPropertyCallExp(PropertyCallExp<EClassifier, EStructuralFeature> pc) {
PropertyCallExpImpl pcImpl = (PropertyCallExpImpl) pc;
final EStructuralFeature feature = pcImpl.getReferredProperty();
OCLExpression<EClassifier> source = pc.getSource();
EObject context = (EObject) source.accept(getVisitor());
myDependencyCollector.registerDependency(context, feature);
return super.visitPropertyCallExp(pc);
}
}