Skip to content

Commit

Permalink
#7057: %classpath add results as HTML widget
Browse files Browse the repository at this point in the history
  • Loading branch information
jaroslawmalekcodete committed Apr 20, 2018
1 parent feb8b75 commit 83ffa3c
Show file tree
Hide file tree
Showing 14 changed files with 183 additions and 124 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,10 @@
package com.twosigma.beakerx.kernel;

import com.twosigma.beakerx.kernel.magic.command.outcome.MagicCommandOutcomeItem;
import com.twosigma.beakerx.kernel.msg.MessageCreator;
import com.twosigma.beakerx.message.Message;

import static com.twosigma.beakerx.util.Preconditions.checkNotNull;
import static com.twosigma.beakerx.kernel.handler.MagicCommandExecutor.sendRepliesWithStatus;
import static org.apache.commons.lang3.builder.EqualsBuilder.reflectionEquals;
import static org.apache.commons.lang3.builder.HashCodeBuilder.reflectionHashCode;
import static org.apache.commons.lang3.builder.ToStringBuilder.reflectionToString;
Expand Down Expand Up @@ -81,7 +81,10 @@ public Message getMessage() {

public void execute(KernelFunctionality kernel, int executionCount) {
if (hasErrors()) {
sendRepliesWithStatus(getErrors(), kernel, getMessage(), executionCount);
errors.forEach(item -> {
item.sendMagicCommandOutcome(kernel, message, executionCount);
kernel.send(MessageCreator.buildReplyWithErrorStatus(message, executionCount));
});
} else {
takeCodeFramesWithoutLast().forEach(frame -> frame.executeFrame(this, kernel, message, executionCount));
takeLastCodeFrame().executeLastFrame(this, kernel, message, executionCount);
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -26,10 +26,6 @@

import java.util.Optional;

import static com.twosigma.beakerx.kernel.handler.MagicCommandExecutor.sendMagicCommandOutcome;
import static com.twosigma.beakerx.kernel.handler.MagicCommandExecutor.sendRepliesWithStatus;
import static java.util.Collections.singletonList;

public class MagicCommand extends CodeFrame {

private MagicCommandFunctionality magicCommandFunctionality;
Expand Down Expand Up @@ -62,7 +58,7 @@ public String getCommandCodeBlock() {
@Override
public void executeFrame(Code code, KernelFunctionality kernel, Message message, int executionCount) {
MagicCommandOutcomeItem execute = execute(code, executionCount, false);
sendMagicCommandOutcome(execute, kernel, message, executionCount);
execute.sendMagicCommandOutcome(kernel, message, executionCount);
TryResult result = execute.getResult();
SimpleEvaluationObject seo = execute.getSimpleEvaluationObject();
handleResult(seo, result);
Expand All @@ -71,7 +67,7 @@ public void executeFrame(Code code, KernelFunctionality kernel, Message message,
@Override
public void executeLastFrame(Code code, KernelFunctionality kernel, Message message, int executionCount) {
MagicCommandOutcomeItem execute = execute(code, executionCount, true);
sendRepliesWithStatus(singletonList(execute), kernel, message, executionCount);
execute.sendRepliesWithStatus(kernel, message, executionCount);
TryResult result = execute.getResult();
SimpleEvaluationObject seo = execute.getSimpleEvaluationObject();
handleResult(seo, result);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
import com.twosigma.beakerx.kernel.magic.command.MagicCommandFunctionality;
import com.twosigma.beakerx.kernel.magic.command.outcome.MagicCommandOutcomeItem;
import com.twosigma.beakerx.kernel.magic.command.outcome.MagicCommandOutput;
import com.twosigma.beakerx.kernel.magic.command.outcome.MagicCommandOutputHTML;

import java.io.IOException;
import java.nio.file.Files;
Expand Down Expand Up @@ -56,14 +57,14 @@ public Collection<String> addJars(String path) {
}
}

public MagicCommandOutput handleAddedJars(String path) {
public MagicCommandOutcomeItem handleAddedJars(String path) {
Collection<String> newAddedJars = addJars(path);
if (newAddedJars.isEmpty()) {
return new MagicCommandOutput(MagicCommandOutput.Status.OK);
}
String textMessage = "Added jar" + (newAddedJars.size() > 1 ? "s: " : ": ") + newAddedJars;
MagicCommandOutput.Status status = MagicCommandOutcomeItem.Status.OK;
return new MagicCommandOutput(status, textMessage);
return new MagicCommandOutputHTML(status, textMessage);
}

private Collection<String> handlePath(String path) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@

import com.twosigma.beakerx.TryResult;
import com.twosigma.beakerx.jvm.object.SimpleEvaluationObject;
import com.twosigma.beakerx.kernel.KernelFunctionality;
import com.twosigma.beakerx.message.Message;
import com.twosigma.beakerx.mimetype.MIMEContainer;

import java.util.Optional;
Expand All @@ -27,20 +29,16 @@ public interface MagicCommandOutcomeItem {

Status getStatus();

Outcome getOutcome();

TryResult getResult();

SimpleEvaluationObject getSimpleEvaluationObject();

void sendRepliesWithStatus(KernelFunctionality kernel, Message message, int executionCount);

void sendMagicCommandOutcome(KernelFunctionality kernel, Message message, int executionCount);

enum Status {
OK,
ERROR
}

enum Outcome {
RESULT,
OUTPUT
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,12 @@

import com.twosigma.beakerx.TryResult;
import com.twosigma.beakerx.jvm.object.SimpleEvaluationObject;
import com.twosigma.beakerx.kernel.KernelFunctionality;
import com.twosigma.beakerx.kernel.msg.MessageCreator;
import com.twosigma.beakerx.message.Message;
import com.twosigma.beakerx.mimetype.MIMEContainer;

import java.util.Collections;
import java.util.Optional;

import static com.twosigma.beakerx.util.Preconditions.checkNotNull;
Expand Down Expand Up @@ -70,8 +74,23 @@ public SimpleEvaluationObject getSimpleEvaluationObject() {
}

@Override
public Outcome getOutcome() {
return Outcome.OUTPUT;
public void sendRepliesWithStatus(KernelFunctionality kernel, Message message, int executionCount) {
if (getStatus().equals(MagicCommandOutcomeItem.Status.OK)) {
if (getMIMEContainer().isPresent()) {
kernel.publish(Collections.singletonList(MessageCreator.buildOutputMessage(message, (String) getMIMEContainer().get().getData(), false)));
}
kernel.send(MessageCreator.buildReplyWithOkStatus(message, executionCount));
} else {
kernel.publish(Collections.singletonList(MessageCreator.buildOutputMessage(message, (String) getMIMEContainer().get().getData(), true)));
kernel.send(MessageCreator.buildReplyWithErrorStatus(message, executionCount));
}
}

@Override
public void sendMagicCommandOutcome(KernelFunctionality kernel, Message message, int executionCount) {
if (getMIMEContainer().isPresent()) {
boolean hasError = getStatus().equals(MagicCommandOutcomeItem.Status.ERROR);
kernel.publish(Collections.singletonList(MessageCreator.buildOutputMessage(message, (String) getMIMEContainer().get().getData(), hasError)));
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
/*
* Copyright 2018 TWO SIGMA OPEN SOURCE, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.twosigma.beakerx.kernel.magic.command.outcome;

import com.twosigma.beakerx.TryResult;
import com.twosigma.beakerx.jvm.object.SimpleEvaluationObject;
import com.twosigma.beakerx.kernel.KernelFunctionality;
import com.twosigma.beakerx.kernel.msg.MessageCreator;
import com.twosigma.beakerx.message.Message;
import com.twosigma.beakerx.mimetype.MIMEContainer;
import com.twosigma.beakerx.widget.HTML;

import java.util.Optional;

import static com.twosigma.beakerx.util.Preconditions.checkNotNull;

public class MagicCommandOutputHTML implements MagicCommandOutcomeItem {

private final MIMEContainer mineContainer;
private MagicCommandOutput.Status status;

public MagicCommandOutputHTML(MagicCommandOutput.Status status, String text) {
this.mineContainer = MIMEContainer.HTML(checkNotNull(text));
this.status = checkNotNull(status);
}

@Override
public Optional<MIMEContainer> getMIMEContainer() {
return Optional.of(this.mineContainer);
}

@Override
public Status getStatus() {
return this.status;
}

@Override
public TryResult getResult() {
return null;
}

@Override
public SimpleEvaluationObject getSimpleEvaluationObject() {
return null;
}

@Override
public void sendRepliesWithStatus(KernelFunctionality kernel, Message message, int executionCount) {
if (getStatus().equals(MagicCommandOutcomeItem.Status.OK)) {
sendHTML(message);
kernel.send(MessageCreator.buildReplyWithOkStatus(message, executionCount));
} else {
sendHTML(message);
kernel.send(MessageCreator.buildReplyWithErrorStatus(message, executionCount));
}
}

private void sendHTML(Message message) {
HTML value = new HTML(message);
value.setValue(getMIMEContainer().get().getData());
value.display();
}

@Override
public void sendMagicCommandOutcome(KernelFunctionality kernel, Message message, int executionCount) {
sendHTML(message);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,16 @@

import com.twosigma.beakerx.TryResult;
import com.twosigma.beakerx.jvm.object.SimpleEvaluationObject;
import com.twosigma.beakerx.kernel.KernelFunctionality;
import com.twosigma.beakerx.kernel.msg.MessageCreator;
import com.twosigma.beakerx.message.Message;
import com.twosigma.beakerx.mimetype.MIMEContainer;

import java.util.Collections;
import java.util.Optional;

import static com.twosigma.beakerx.util.Preconditions.checkNotNull;
import static java.util.Collections.singletonList;

public class MagicCommandResult implements MagicCommandOutcomeItem {

Expand All @@ -43,11 +48,6 @@ public Status getStatus() {
return status;
}

@Override
public Outcome getOutcome() {
return Outcome.RESULT;
}

@Override
public TryResult getResult() {
return null;
Expand All @@ -57,4 +57,26 @@ public TryResult getResult() {
public SimpleEvaluationObject getSimpleEvaluationObject() {
return null;
}

@Override
public void sendRepliesWithStatus(KernelFunctionality kernel, Message message, int executionCount) {
if (getStatus().equals(MagicCommandOutcomeItem.Status.OK)) {
publishMessage(kernel, message, executionCount);
kernel.send(MessageCreator.buildReplyWithOkStatus(message, executionCount));
} else {
publishMessage(kernel, message, executionCount);
kernel.send(MessageCreator.buildReplyWithErrorStatus(message, executionCount));
}
}

@Override
public void sendMagicCommandOutcome(KernelFunctionality kernel, Message message, int executionCount) {
publishMessage(kernel, message, executionCount);
}

private void publishMessage(KernelFunctionality kernel, Message message, int executionCount) {
MIMEContainer mimeContainer = getMIMEContainer().get();
kernel.publish(Collections.singletonList(MessageCreator.buildMessage(message, singletonList(mimeContainer), executionCount)));
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -143,14 +143,12 @@ public static Message buildReplyWithoutStatus(Message message, int executionCoun
public static Message buildReplyWithOkStatus(Message message, int executionCount) {
Message messageWithStatus = buildReplyWithoutStatus(message, executionCount);
messageWithStatus.getContent().put("status", "ok");

return messageWithStatus;
}

public static Message buildReplyWithErrorStatus(Message message, int executionCount) {
Message messageWithStatus = buildReplyWithoutStatus(message, executionCount);
messageWithStatus.getContent().put("status", "error");

return messageWithStatus;
}

Expand Down
Loading

0 comments on commit 83ffa3c

Please sign in to comment.