| /******************************************************************************* |
| * Copyright (c) 2009, 2018 SAP AG and others. |
| * All rights reserved. This program and the accompanying materials |
| * are made available under the terms of the Eclipse Public License v2.0 |
| * which accompanies this distribution, and is available at |
| * http://www.eclipse.org/legal/epl-v20.html |
| * |
| * Contributors: |
| * SAP AG - initial API and implementation |
| ******************************************************************************/ |
| package org.eclipse.ocl.examples.impactanalyzer; |
| |
| import org.eclipse.emf.ecore.EClassifier; |
| import org.eclipse.emf.ecore.EParameter; |
| import org.eclipse.ocl.EvaluationEnvironment; |
| import org.eclipse.ocl.examples.impactanalyzer.deltaPropagation.PartialEcoreEvaluationEnvironment; |
| import org.eclipse.ocl.examples.impactanalyzer.deltaPropagation.PartialEvaluatorImpl; |
| import org.eclipse.ocl.examples.impactanalyzer.deltaPropagation.VariableValueNotFoundInfo; |
| import org.eclipse.ocl.expressions.VariableExp; |
| |
| /** |
| * Thrown when during (partial) OCL evaluation the value of a yet undefined variable is requested |
| * from the {@link EvaluationEnvironment}. Normally, this exception is expected to occur only when |
| * the {@link PartialEvaluatorImpl} together with a {@link PartialEcoreEvaluationEnvironment} is used. |
| * In this case, the {@link VariableExp} is remembered together with the variable name. Only in case |
| * of an ill-defined configuration would it be possible that the {@link VariableExp} is not set and |
| * that only the variable name is set. |
| * |
| * @author Axel Uhl (D043530) |
| * |
| */ |
| public class ValueNotFoundException extends RuntimeException implements VariableValueNotFoundInfo { |
| private static final long serialVersionUID = -7891419750697209233L; |
| private final String variableName; |
| private VariableExp<EClassifier, EParameter> variableExp; |
| |
| public ValueNotFoundException(String variableName, VariableExp<EClassifier, EParameter> variableExp) { |
| super("Trying to access variable " + variableName + " which has not been set before."); |
| this.variableName = variableName; |
| this.variableExp = variableExp; |
| } |
| |
| public ValueNotFoundException(String variableName) { |
| super("Trying to access variable " + variableName + " which has not been set before."); |
| this.variableName = variableName; |
| } |
| |
| public String getVariableName() { |
| return variableName; |
| } |
| |
| /** |
| * If the request for the undefined variable was triggered by evaluating a {@link VariableExp}, this |
| * expression is returned. In some cases the {@link EvaluationEnvironment#getValueOf(String)} method is called |
| * without a particular variable expression at hand, e.g., in order to look up the context object which is the |
| * value of the "self" variable for which not always a variable expression is available. In those cases, |
| * <code>null</code> will be returned. |
| */ |
| public VariableExp<EClassifier, EParameter> getVariableExp() { |
| return variableExp; |
| } |
| } |