From 21a5c0566d0f1951b3c6cfbaaf6685e723edf06c Mon Sep 17 00:00:00 2001 From: Florian Hoelzl <hoelzl@fortiss.org> Date: Tue, 24 May 2011 15:55:24 +0000 Subject: [PATCH] Fixed NPE bug. --- .../kernel/internal/CommandStackService.java | 24 ++++++++++++++----- 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/internal/CommandStackService.java b/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/internal/CommandStackService.java index 7609c5d7c..e0b8351b4 100644 --- a/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/internal/CommandStackService.java +++ b/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/internal/CommandStackService.java @@ -17,7 +17,9 @@ $Id$ +--------------------------------------------------------------------------*/ package org.fortiss.tooling.kernel.internal; +import org.eclipse.emf.common.command.CommandStack; import org.eclipse.emf.ecore.EObject; +import org.fortiss.tooling.kernel.interfaces.IStorageProvider; import org.fortiss.tooling.kernel.services.ICommandStackService; import org.fortiss.tooling.kernel.services.IPersistencyService; @@ -34,31 +36,41 @@ public class CommandStackService implements ICommandStackService { /** {@inheritDoc} */ @Override public void runAsCommand(EObject target, Runnable runner) { - IPersistencyService.INSTANCE.getStorageProviderFor(target) - .runAsCommand(target, runner); + IStorageProvider provider = IPersistencyService.INSTANCE + .getStorageProviderFor(target); + if (provider != null) { + provider.runAsCommand(target, runner); + } } /** {@inheritDoc} */ @Override public boolean canUndo(EObject target) { - return IPersistencyService.INSTANCE.getCommandStack(target).canUndo(); + CommandStack stack = getCommandStack(target); + return stack != null && stack.canUndo(); } /** {@inheritDoc} */ @Override public boolean canRedo(EObject target) { - return IPersistencyService.INSTANCE.getCommandStack(target).canRedo(); + CommandStack stack = getCommandStack(target); + return stack != null && stack.canRedo(); } /** {@inheritDoc} */ @Override public void undo(EObject target) { - IPersistencyService.INSTANCE.getCommandStack(target).undo(); + getCommandStack(target).undo(); } /** {@inheritDoc} */ @Override public void redo(EObject target) { - IPersistencyService.INSTANCE.getCommandStack(target).redo(); + getCommandStack(target).redo(); + } + + /** Fetches command stack from persistency service. */ + private CommandStack getCommandStack(EObject target) { + return IPersistencyService.INSTANCE.getCommandStack(target); } } -- GitLab