diff --git a/src/main/java/de/prob2/jupyter/ProBKernel.java b/src/main/java/de/prob2/jupyter/ProBKernel.java index 580a7cbb7d397932cce4e7c48bf1a9949790b1d0..31ad1a0ce55cd18c84a9cad34db5323961403b79 100644 --- a/src/main/java/de/prob2/jupyter/ProBKernel.java +++ b/src/main/java/de/prob2/jupyter/ProBKernel.java @@ -45,6 +45,7 @@ import io.github.spencerpark.jupyter.kernel.display.DisplayData; import io.github.spencerpark.jupyter.kernel.display.mime.MIMEType; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -168,7 +169,7 @@ public final class ProBKernel extends BaseKernel { return Collections.singletonList(new LanguageInfo.Help("ProB User Manual", "https://www3.hhu.de/stups/prob/index.php/User_Manual")); } - private @NotNull DisplayData executeCommand(final @NotNull String name, final @NotNull String argString) { + private @Nullable DisplayData executeCommand(final @NotNull String name, final @NotNull String argString) { final Command command = this.getCommands().get(name); if (command == null) { throw new NoSuchCommandException(name); @@ -180,7 +181,7 @@ public final class ProBKernel extends BaseKernel { throw new CommandExecutionException(name, e); } - if (result.hasDataForType(MARKDOWN_MIME_TYPE)) { + if (result != null && result.hasDataForType(MARKDOWN_MIME_TYPE)) { // Add definitions for any used bsymb LaTeX commands to Markdown output. final String markdown = (String)result.getData(MARKDOWN_MIME_TYPE); final StringBuilder defs = new StringBuilder(); @@ -197,7 +198,7 @@ public final class ProBKernel extends BaseKernel { } @Override - public @NotNull DisplayData eval(final String expr) { + public @Nullable DisplayData eval(final String expr) { assert expr != null; final Matcher commandMatcher = COMMAND_PATTERN.matcher(expr); diff --git a/src/main/java/de/prob2/jupyter/commands/Command.java b/src/main/java/de/prob2/jupyter/commands/Command.java index 662e0a921e912b630749af3a9fc594e0d28228ec..c55ed79bf7ff9168b067d70a2cdbf2bb57c2ce87 100644 --- a/src/main/java/de/prob2/jupyter/commands/Command.java +++ b/src/main/java/de/prob2/jupyter/commands/Command.java @@ -5,11 +5,12 @@ import de.prob2.jupyter.ProBKernel; import io.github.spencerpark.jupyter.kernel.display.DisplayData; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; public interface Command { public abstract @NotNull String getSyntax(); public abstract @NotNull String getShortHelp(); - public abstract @NotNull DisplayData run(final @NotNull ProBKernel kernel, final @NotNull String argString); + public abstract @Nullable DisplayData run(final @NotNull ProBKernel kernel, final @NotNull String argString); } diff --git a/src/main/java/de/prob2/jupyter/commands/TimeCommand.java b/src/main/java/de/prob2/jupyter/commands/TimeCommand.java index 29e38ee4adf9bad24b03231804a34b0c521a3593..e9afce88c2450128c10a4ba629e7766f7fbddbc6 100644 --- a/src/main/java/de/prob2/jupyter/commands/TimeCommand.java +++ b/src/main/java/de/prob2/jupyter/commands/TimeCommand.java @@ -7,6 +7,7 @@ import de.prob2.jupyter.ProBKernel; import io.github.spencerpark.jupyter.kernel.display.DisplayData; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; public final class TimeCommand implements Command { private static final long NANOSECONDS_PER_SECOND = 1000000000L; @@ -27,7 +28,7 @@ public final class TimeCommand implements Command { } @Override - public @NotNull DisplayData run(final @NotNull ProBKernel kernel, final @NotNull String argString) { + public @Nullable DisplayData run(final @NotNull ProBKernel kernel, final @NotNull String argString) { final long startTime = System.nanoTime(); final DisplayData result = kernel.eval(argString); final long stopTime = System.nanoTime();