Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFlorian Barbin2016-01-21 16:43:22 +0000
committerPierre-Charles David2016-03-30 13:23:45 +0000
commit46b775ab2d76602fa893a69c48fda8b552949789 (patch)
tree3dd65ac272ce3e376c37d3a9593e3d2586efd79e
parentb38268bcbf4c1ddb41a168255d7593f1c88455ca (diff)
downloadorg.eclipse.sirius-46b775ab2d76602fa893a69c48fda8b552949789.tar.gz
org.eclipse.sirius-46b775ab2d76602fa893a69c48fda8b552949789.tar.xz
org.eclipse.sirius-46b775ab2d76602fa893a69c48fda8b552949789.zip
[490565] Fixes NPE if the createLineAction context is not a line
Bug: 490565 Change-Id: Ief52e5445621abd27df14783fc4ea69d4553b627 Cherry-picks: ceae267a9fc56c3b80212f2b04bc411710c93b35 Signed-off-by: Florian Barbin <florian.barbin@obeo.fr> Signed-off-by: Pierre-Charles David <pierre-charles.david@obeo.fr>
-rw-r--r--plugins/org.eclipse.sirius.table.ui/src/org/eclipse/sirius/table/ui/tools/internal/editor/action/CreateLineAction.java23
1 files changed, 14 insertions, 9 deletions
diff --git a/plugins/org.eclipse.sirius.table.ui/src/org/eclipse/sirius/table/ui/tools/internal/editor/action/CreateLineAction.java b/plugins/org.eclipse.sirius.table.ui/src/org/eclipse/sirius/table/ui/tools/internal/editor/action/CreateLineAction.java
index 150edc2882..6c4bcdeb51 100644
--- a/plugins/org.eclipse.sirius.table.ui/src/org/eclipse/sirius/table/ui/tools/internal/editor/action/CreateLineAction.java
+++ b/plugins/org.eclipse.sirius.table.ui/src/org/eclipse/sirius/table/ui/tools/internal/editor/action/CreateLineAction.java
@@ -57,14 +57,12 @@ public class CreateLineAction extends AbstractLineAction {
@Override
public void run() {
super.run();
- EObject target;
+ EObject target = getTarget();
LineContainer lineContainer;
DLine dLine = getLine();
if (dLine != null) {
- target = dLine.getTarget();
lineContainer = (LineContainer) dLine.eContainer();
} else {
- target = table.getTarget();
lineContainer = table;
}
Command cmd = tableCommandFactory.buildCreateLineCommandFromTool(lineContainer, target, getCreateTool());
@@ -82,6 +80,15 @@ public class CreateLineAction extends AbstractLineAction {
return tool;
}
+ private EObject getTarget() {
+ DLine dLine = getLine();
+ if (dLine != null) {
+ return dLine.getTarget();
+ } else {
+ return getTable().getTarget();
+ }
+ }
+
@Override
public boolean canExecute() {
boolean canExecute = true;
@@ -90,20 +97,18 @@ public class CreateLineAction extends AbstractLineAction {
canExecute = false;
} else {
if (getCreateTool().getPrecondition() != null && !StringUtil.isEmpty(getCreateTool().getPrecondition().trim())) {
- IInterpreter interpreter;
+ EObject target = getTarget();
+ IInterpreter interpreter = InterpreterUtil.getInterpreter(target);
+ interpreter.setVariable(IInterpreterSiriusVariables.ELEMENT, target);
if (getLine() != null) {
- interpreter = InterpreterUtil.getInterpreter(getLine().getTarget());
interpreter.setVariable(IInterpreterSiriusVariables.ROOT, TableHelper.getTable(getLine()).getTarget());
- interpreter.setVariable(IInterpreterSiriusVariables.ELEMENT, getLine().getTarget());
interpreter.setVariable(IInterpreterSiriusVariables.CONTAINER, ((LineContainer) getLine().eContainer()).getTarget());
} else {
- interpreter = InterpreterUtil.getInterpreter(getTable().getTarget());
interpreter.setVariable(IInterpreterSiriusVariables.ROOT, getTable().getTarget());
- interpreter.setVariable(IInterpreterSiriusVariables.ELEMENT, getTable().getTarget());
interpreter.setVariable(IInterpreterSiriusVariables.CONTAINER, null);
}
try {
- canExecute = interpreter.evaluateBoolean(getLine().getTarget(), getCreateTool().getPrecondition());
+ canExecute = interpreter.evaluateBoolean(target, getCreateTool().getPrecondition());
} catch (final EvaluationException e) {
RuntimeLoggerManager.INSTANCE.error(getCreateTool(), ToolPackage.eINSTANCE.getAbstractToolDescription_Precondition(), e);
}

Back to the top