From b0373eb2618ceef463f8dd36ffeb9ea8e38f8f6e Mon Sep 17 00:00:00 2001 From: jarek Date: Wed, 13 Jun 2018 08:48:29 +0200 Subject: [PATCH] #5039: add autotranslation service interface and NamespaceClient refactoring --- .../beakerx/AutotranslationService.java | 19 +++ .../beakerx/AutotranslationServiceImpl.java | 19 +++ .../com/twosigma/beakerx/BeakerxClient.java | 36 ++++++ .../com/twosigma/beakerx/NamespaceClient.java | 115 ++++++++---------- .../twosigma/beakerx/chart/ChartDetails.java | 6 +- .../beakerx/evaluator/BaseEvaluator.java | 18 ++- .../twosigma/beakerx/evaluator/Evaluator.java | 3 + .../beakerx/evaluator/EvaluatorManager.java | 5 + .../com/twosigma/beakerx/kernel/Kernel.java | 28 +++-- .../beakerx/kernel/KernelFunctionality.java | 3 + .../beakerx/kernel/KernelManager.java | 8 +- .../kernel/comm/GetCodeCellsHandler.java | 3 +- .../beakerx/table/TableDisplayActions.java | 6 +- .../com/twosigma/beakerx/widget/Button.java | 4 +- .../java/com/twosigma/beakerx/KernelTest.java | 5 + ...espaceClientShowProgressReportingTest.java | 2 +- .../twosigma/beakerx/NamespaceClientTest.java | 49 ++------ .../beakerx/evaluator/EvaluatorTest.java | 45 ++++++- .../clojure/evaluator/ClojureEvaluator.java | 19 ++- .../evaluator/ClojureEvaluatorTest.java | 7 +- .../kernel/ClojureAutocompleteTest.java | 3 +- .../clojure/kernel/ClojureKernelTest.java | 3 +- .../groovy/evaluator/GroovyCodeRunner.java | 4 +- .../groovy/evaluator/GroovyEvaluator.java | 19 ++- .../groovy/evaluator/GroovyWorkerThread.java | 11 -- .../beakerx/groovy/kernel/Groovy.java | 10 +- .../beakerx/groovy/TestGroovyEvaluator.java | 28 ++++- .../GroovyCompleteHandlerTest.java | 3 +- .../GroovyEvaluatorProgressReportingTest.java | 8 +- .../groovy/evaluator/GroovyEvaluatorTest.java | 6 +- .../javash/evaluator/JavaEvaluator.java | 18 ++- .../javash/evaluator/JavaWorkerThread.java | 9 -- ...orAutocompleteClassNameExpressionTest.java | 3 +- .../JavaEvaluatorAutocompleteImportTest.java | 3 +- .../JavaEvaluatorAutocompleteTest.java | 3 +- .../evaluator/JavaBaseEvaluatorTest.java | 7 +- .../javash/evaluator/JavaEvaluatorTest.java | 3 +- .../beakerx/javash/kernel/JavaKernelTest.java | 3 +- .../kotlin/evaluator/KotlinEvaluator.java | 9 +- .../kotlin/evaluator/KotlinWorkerThread.java | 16 --- .../evaluator/KotlinBaseEvaluatorTest.java | 7 +- .../kotlin/evaluator/KotlinEvaluatorTest.java | 3 +- .../kotlin/kernel/KotlinKernelTest.java | 3 +- .../scala/evaluator/ScalaEvaluator.java | 14 +-- .../scala/evaluator/ScalaWorkerThread.java | 15 --- .../beakerx/scala/TestScalaEvaluator.java | 5 +- .../evaluator/ScalaAutocompleteTest.java | 6 +- .../beakerx/scala/kernel/ScalaKernelTest.java | 6 +- .../beakerx/EnableSparkSupportTest.java | 15 +-- .../twosigma/beakerx/sql/BeakerParser.java | 6 +- .../twosigma/beakerx/sql/QueryExecutor.java | 6 +- .../autocomplete/db/DbExplorerFactory.java | 5 +- .../beakerx/sql/evaluator/SQLCodeRunner.java | 7 +- .../beakerx/sql/evaluator/SQLEvaluator.java | 10 +- .../sql/evaluator/SQLWorkerThread.java | 10 +- .../beakerx/sql/SQLAutocompleteTest.java | 5 +- .../beakerx/sql/SQLBaseEvaluatorTest.java | 7 +- .../beakerx/sql/SQLEvaluatorTest.java | 3 +- .../twosigma/beakerx/sql/SQLKernelTest.java | 3 +- 59 files changed, 423 insertions(+), 282 deletions(-) create mode 100644 kernel/base/src/main/java/com/twosigma/beakerx/AutotranslationService.java create mode 100644 kernel/base/src/main/java/com/twosigma/beakerx/AutotranslationServiceImpl.java create mode 100644 kernel/base/src/main/java/com/twosigma/beakerx/BeakerxClient.java diff --git a/kernel/base/src/main/java/com/twosigma/beakerx/AutotranslationService.java b/kernel/base/src/main/java/com/twosigma/beakerx/AutotranslationService.java new file mode 100644 index 0000000000..6602615317 --- /dev/null +++ b/kernel/base/src/main/java/com/twosigma/beakerx/AutotranslationService.java @@ -0,0 +1,19 @@ +/* + * 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; + +public interface AutotranslationService { +} diff --git a/kernel/base/src/main/java/com/twosigma/beakerx/AutotranslationServiceImpl.java b/kernel/base/src/main/java/com/twosigma/beakerx/AutotranslationServiceImpl.java new file mode 100644 index 0000000000..87c0424ef4 --- /dev/null +++ b/kernel/base/src/main/java/com/twosigma/beakerx/AutotranslationServiceImpl.java @@ -0,0 +1,19 @@ +/* + * 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; + +public class AutotranslationServiceImpl implements AutotranslationService { +} diff --git a/kernel/base/src/main/java/com/twosigma/beakerx/BeakerxClient.java b/kernel/base/src/main/java/com/twosigma/beakerx/BeakerxClient.java new file mode 100644 index 0000000000..c9636b2dc5 --- /dev/null +++ b/kernel/base/src/main/java/com/twosigma/beakerx/BeakerxClient.java @@ -0,0 +1,36 @@ +/* + * 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; + +import java.util.List; +import java.util.concurrent.SynchronousQueue; + +public interface BeakerxClient { + + void showProgressUpdate(String message, int progress); + + void delBeaker(); + + Object set(String name, Object value); + + Object get(final String name); + + SynchronousQueue getMessageQueue(String channel); + + List getCodeCells(String tagFilter); + + void runByTag(String tag); +} diff --git a/kernel/base/src/main/java/com/twosigma/beakerx/NamespaceClient.java b/kernel/base/src/main/java/com/twosigma/beakerx/NamespaceClient.java index b1cb3ec399..46b68fd6f4 100644 --- a/kernel/base/src/main/java/com/twosigma/beakerx/NamespaceClient.java +++ b/kernel/base/src/main/java/com/twosigma/beakerx/NamespaceClient.java @@ -32,25 +32,26 @@ import java.util.HashMap; import java.util.Map; import java.util.List; -import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.SynchronousQueue; import static com.fasterxml.jackson.databind.SerializationFeature.WRITE_ENUMS_USING_TO_STRING; import static com.twosigma.beakerx.kernel.msg.JupyterMessages.COMM_MSG; +import static com.twosigma.beakerx.util.Preconditions.checkNotNull; -public class NamespaceClient { +public class NamespaceClient implements BeakerxClient { - private static Map nsClients = new ConcurrentHashMap<>(); - private static String currentSession; private static Map> messagePool = new HashMap<>(); private ObjectMapper objectMapper; private BeakerObjectConverter objectSerializer; - private SimpleEvaluationObject currentCeo = null; private Comm autotranslationComm = null; private Comm codeCellsComm = null; private Comm tagRunComm = null; + private String session; + private AutotranslationService autotranslationService; - public NamespaceClient() { + public NamespaceClient(String session, AutotranslationService autotranslationService) { + this.session = checkNotNull(session); + this.autotranslationService = autotranslationService; SimpleModule module = TableDisplayToJson.tableDisplayModule(); objectMapper = new ObjectMapper(); objectMapper.enable(WRITE_ENUMS_USING_TO_STRING); @@ -58,53 +59,36 @@ public NamespaceClient() { objectSerializer = new BasicObjectSerializer(); } + @Override public synchronized void showProgressUpdate(String message, int progress) { SimpleEvaluationObject seo = InternalVariable.getSimpleEvaluationObject(); seo.structuredUpdate(message, progress); } - public SimpleEvaluationObject getOutputObj() { - return currentCeo; - } - - public synchronized void setOutputObj(SimpleEvaluationObject input) { - currentCeo = input; - } - - public synchronized static NamespaceClient getBeaker() { - if (currentSession != null) { - return nsClients.get(currentSession); - } - return null; - } - - public synchronized static NamespaceClient getBeaker(String session) { - currentSession = session; - if (!nsClients.containsKey(session)) { - nsClients.put(session, new NamespaceClient()); + @Override + public synchronized void delBeaker() { + //clear autotranslation + } + + @Override + public synchronized Object set(String name, Object value) { + try { + Comm c = getAutotranslationComm(); + HashMap data = new HashMap<>(); + HashMap state = new HashMap<>(); + state.put("name", name); + state.put("value", getJson(value)); + state.put("sync", true); + data.put("state", state); + data.put("buffer_paths", new HashMap<>()); + c.send(COMM_MSG, Comm.Buffer.EMPTY, new Comm.Data(data)); + return value; + } catch (Exception e) { + throw new RuntimeException(e); } - return nsClients.get(currentSession); - } - - public synchronized static void delBeaker(String sessionId) { - nsClients.remove(sessionId); - currentSession = null; } - public synchronized Object set(String name, Object value) throws IOException { - Comm c = getAutotranslationComm(); - HashMap data = new HashMap<>(); - HashMap state = new HashMap<>(); - state.put("name", name); - state.put("value", getJson(value)); - state.put("sync", true); - data.put("state", state); - data.put("buffer_paths", new HashMap<>()); - c.send(COMM_MSG, Comm.Buffer.EMPTY, new Comm.Data(data)); - return value; - } - - protected String getJson(Object value) throws IOException { + private String getJson(Object value) throws IOException { StringWriter sw = new StringWriter(); JsonGenerator jgen = objectMapper.getFactory().createGenerator(sw); objectSerializer.writeObject(value, jgen, true); @@ -124,11 +108,13 @@ public Object unset(String name) { } //TODO : Not Implemented + @Override public synchronized Object get(final String name) { throw new RuntimeException("This option is not implemented now"); } - public static SynchronousQueue getMessageQueue(String channel) { + @Override + public SynchronousQueue getMessageQueue(String channel) { SynchronousQueue result = messagePool.get(channel); if (result == null) { result = new SynchronousQueue(); @@ -137,7 +123,7 @@ public static SynchronousQueue getMessageQueue(String channel) { return result; } - protected Comm getAutotranslationComm() { + private Comm getAutotranslationComm() { if (autotranslationComm == null) { autotranslationComm = new Comm(TargetNamesEnum.BEAKER_AUTOTRANSLATION); autotranslationComm.open(); @@ -145,7 +131,7 @@ protected Comm getAutotranslationComm() { return autotranslationComm; } - protected Comm getCodeCellsComm() { + private Comm getCodeCellsComm() { if (codeCellsComm == null) { codeCellsComm = new Comm(TargetNamesEnum.BEAKER_GETCODECELLS); codeCellsComm.open(); @@ -153,7 +139,7 @@ protected Comm getCodeCellsComm() { return codeCellsComm; } - protected Comm getTagRunComm() { + private Comm getTagRunComm() { if (tagRunComm == null) { tagRunComm = new Comm(TargetNamesEnum.BEAKER_TAG_RUN); tagRunComm.open(); @@ -161,22 +147,27 @@ protected Comm getTagRunComm() { return tagRunComm; } - - public List getCodeCells(String tagFilter) throws IOException, InterruptedException { + @Override + public List getCodeCells(String tagFilter) { // first send message to get cells - Comm c = getCodeCellsComm(); - HashMap data = new HashMap<>(); - HashMap state = new HashMap<>(); - state.put("name", "CodeCells"); - state.put("value", getJson(tagFilter)); - data.put("state", state); - data.put("buffer_paths", new HashMap<>()); - c.send(COMM_MSG, Comm.Buffer.EMPTY, new Comm.Data(data)); - // block - Object cells = getMessageQueue("CodeCells").take(); - return (List) cells; + try { + Comm c = getCodeCellsComm(); + HashMap data = new HashMap<>(); + HashMap state = new HashMap<>(); + state.put("name", "CodeCells"); + state.put("value", getJson(tagFilter)); + data.put("state", state); + data.put("buffer_paths", new HashMap<>()); + c.send(COMM_MSG, Comm.Buffer.EMPTY, new Comm.Data(data)); + // block + Object cells = getMessageQueue("CodeCells").take(); + return (List) cells; + } catch (Exception e) { + throw new RuntimeException(e); + } } + @Override public synchronized void runByTag(String tag) { Comm c = getTagRunComm(); HashMap data = new HashMap<>(); diff --git a/kernel/base/src/main/java/com/twosigma/beakerx/chart/ChartDetails.java b/kernel/base/src/main/java/com/twosigma/beakerx/chart/ChartDetails.java index 0362dbed1c..6f4195d7de 100644 --- a/kernel/base/src/main/java/com/twosigma/beakerx/chart/ChartDetails.java +++ b/kernel/base/src/main/java/com/twosigma/beakerx/chart/ChartDetails.java @@ -16,10 +16,10 @@ package com.twosigma.beakerx.chart; +import com.twosigma.beakerx.kernel.KernelManager; import com.twosigma.beakerx.widget.CommActions; import org.apache.commons.lang3.StringUtils; -import com.twosigma.beakerx.NamespaceClient; import com.twosigma.beakerx.chart.actions.CategoryGraphicsActionObject; import com.twosigma.beakerx.chart.actions.CombinedPlotActionObject; import com.twosigma.beakerx.chart.actions.GraphicsActionObject; @@ -90,9 +90,9 @@ protected void onActionDetails(HashMap content, Message message) { info.setGraphics(g); updateDetails(info); if (CommActions.ONCLICK.equals(info.getActionType())) { - NamespaceClient.getBeaker().runByTag(info.getTag()); + KernelManager.get().getBeakerx().runByTag(info.getTag()); } else if (CommActions.ONKEY.equals(info.getActionType())) { - NamespaceClient.getBeaker().runByTag(info.getTag()); + KernelManager.get().getBeakerx().runByTag(info.getTag()); } } diff --git a/kernel/base/src/main/java/com/twosigma/beakerx/evaluator/BaseEvaluator.java b/kernel/base/src/main/java/com/twosigma/beakerx/evaluator/BaseEvaluator.java index ea455b799e..7f5bec94c8 100644 --- a/kernel/base/src/main/java/com/twosigma/beakerx/evaluator/BaseEvaluator.java +++ b/kernel/base/src/main/java/com/twosigma/beakerx/evaluator/BaseEvaluator.java @@ -15,10 +15,10 @@ */ package com.twosigma.beakerx.evaluator; +import com.twosigma.beakerx.BeakerxClient; import com.twosigma.beakerx.DefaultJVMVariables; import com.twosigma.beakerx.inspect.Inspect; import com.twosigma.beakerx.inspect.InspectResult; -import com.twosigma.beakerx.NamespaceClient; import com.twosigma.beakerx.TryResult; import com.twosigma.beakerx.jvm.object.SimpleEvaluationObject; import com.twosigma.beakerx.jvm.threads.CellExecutor; @@ -54,16 +54,23 @@ public abstract class BaseEvaluator implements Evaluator { protected Imports imports; private final CellExecutor executor; private Path tempFolder; + private BeakerxClient beakerxClient; protected EvaluatorParameters evaluatorParameters; private EvaluatorHooks cancelHooks = new EvaluatorHooks(); protected ExecutorService executorService; - public BaseEvaluator(String id, String sId, CellExecutor cellExecutor, TempFolderFactory tempFolderFactory, EvaluatorParameters evaluatorParameters) { + public BaseEvaluator(String id, + String sId, + CellExecutor cellExecutor, + TempFolderFactory tempFolderFactory, + EvaluatorParameters evaluatorParameters, + BeakerxClient beakerxClient) { shellId = id; sessionId = sId; executor = cellExecutor; tempFolder = tempFolderFactory.createTempFolder(); + this.beakerxClient = beakerxClient; outDir = getOrCreateFile(tempFolder.toString() + File.separator + "outDir").getPath(); classPath = new Classpath(); classPath.add(new PathToJar(outDir)); @@ -100,6 +107,11 @@ public ClassLoader getClassLoaderForImport() { return getClassLoader(); } + @Override + public BeakerxClient getBeakerx() { + return beakerxClient; + } + @Override public List addJarsToClasspath(List paths) { LinkedList addedPaths = new LinkedList<>(); @@ -227,7 +239,7 @@ public Path getTempFolder() { @Override public void exit() { - NamespaceClient.delBeaker(getSessionId()); + beakerxClient.delBeaker(); removeTempFolder(); } diff --git a/kernel/base/src/main/java/com/twosigma/beakerx/evaluator/Evaluator.java b/kernel/base/src/main/java/com/twosigma/beakerx/evaluator/Evaluator.java index 452ce6809c..d034451d80 100644 --- a/kernel/base/src/main/java/com/twosigma/beakerx/evaluator/Evaluator.java +++ b/kernel/base/src/main/java/com/twosigma/beakerx/evaluator/Evaluator.java @@ -15,6 +15,7 @@ */ package com.twosigma.beakerx.evaluator; +import com.twosigma.beakerx.BeakerxClient; import com.twosigma.beakerx.inspect.InspectResult; import com.twosigma.beakerx.TryResult; import com.twosigma.beakerx.kernel.AddImportStatus; @@ -74,4 +75,6 @@ public interface Evaluator { String getOutDir(); void registerCancelHook(Hook hook); + + BeakerxClient getBeakerx(); } diff --git a/kernel/base/src/main/java/com/twosigma/beakerx/evaluator/EvaluatorManager.java b/kernel/base/src/main/java/com/twosigma/beakerx/evaluator/EvaluatorManager.java index 15553d2ba6..0769ca59e3 100644 --- a/kernel/base/src/main/java/com/twosigma/beakerx/evaluator/EvaluatorManager.java +++ b/kernel/base/src/main/java/com/twosigma/beakerx/evaluator/EvaluatorManager.java @@ -15,6 +15,7 @@ */ package com.twosigma.beakerx.evaluator; +import com.twosigma.beakerx.BeakerxClient; import com.twosigma.beakerx.TryResult; import com.twosigma.beakerx.autocomplete.AutocompleteResult; import com.twosigma.beakerx.inspect.InspectResult; @@ -118,4 +119,8 @@ public String getOutDir() { public void registerCancelHook(Hook hook) { evaluator.registerCancelHook(hook); } + + public BeakerxClient getBeakerx() { + return evaluator.getBeakerx(); + } } diff --git a/kernel/base/src/main/java/com/twosigma/beakerx/kernel/Kernel.java b/kernel/base/src/main/java/com/twosigma/beakerx/kernel/Kernel.java index 0620189078..8fb468bd40 100644 --- a/kernel/base/src/main/java/com/twosigma/beakerx/kernel/Kernel.java +++ b/kernel/base/src/main/java/com/twosigma/beakerx/kernel/Kernel.java @@ -15,6 +15,7 @@ */ package com.twosigma.beakerx.kernel; +import com.twosigma.beakerx.BeakerxClient; import com.twosigma.beakerx.BeakerxDefaultDisplayers; import com.twosigma.beakerx.DisplayerDataMapper; import com.twosigma.beakerx.TryResult; @@ -78,8 +79,12 @@ public Kernel(final String sessionId, final Evaluator evaluator, new EnvCacheFolderFactory(), customMagicCommands); } - protected Kernel(final String sessionId, final Evaluator evaluator, final KernelSocketsFactory kernelSocketsFactory, - CloseKernelAction closeKernelAction, CacheFolderFactory cacheFolderFactory, CustomMagicCommandsFactory customMagicCommands) { + protected Kernel(final String sessionId, + final Evaluator evaluator, + final KernelSocketsFactory kernelSocketsFactory, + CloseKernelAction closeKernelAction, + CacheFolderFactory cacheFolderFactory, + CustomMagicCommandsFactory customMagicCommands) { this.sessionId = sessionId; this.cacheFolderFactory = cacheFolderFactory; this.kernelSocketsFactory = kernelSocketsFactory; @@ -97,6 +102,11 @@ protected Kernel(final String sessionId, final Evaluator evaluator, final Kernel initJvmRepr(); } + @Override + public BeakerxClient getBeakerx() { + return this.evaluatorManager.getBeakerx(); + } + public abstract CommOpenHandler getCommOpenHandler(Kernel kernel); public abstract KernelHandler getKernelInfoHandler(Kernel kernel); @@ -302,12 +312,12 @@ public void registerCancelHook(Hook hook) { @Override public PythonEntryPoint getPythonEntryPoint(String kernelName) throws NoSuchKernelException { - MagicKernelManager manager = magicKernels.get(kernelName); - if (manager == null) { - manager = new MagicKernelManager(kernelName); - magicKernels.put(kernelName, manager); - } - return manager.getPythonEntryPoint(); + MagicKernelManager manager = magicKernels.get(kernelName); + if (manager == null) { + manager = new MagicKernelManager(kernelName); + magicKernels.put(kernelName, manager); + } + return manager.getPythonEntryPoint(); } @Override @@ -317,7 +327,7 @@ public MagicKernelManager getManagerByCommId(String commId) { } @Override - public void addCommIdManagerMapping(String commId, String kernel){ + public void addCommIdManagerMapping(String commId, String kernel) { commKernelMapping.put(commId, kernel); } } diff --git a/kernel/base/src/main/java/com/twosigma/beakerx/kernel/KernelFunctionality.java b/kernel/base/src/main/java/com/twosigma/beakerx/kernel/KernelFunctionality.java index 51eb28daeb..174e58dab0 100644 --- a/kernel/base/src/main/java/com/twosigma/beakerx/kernel/KernelFunctionality.java +++ b/kernel/base/src/main/java/com/twosigma/beakerx/kernel/KernelFunctionality.java @@ -15,6 +15,7 @@ */ package com.twosigma.beakerx.kernel; +import com.twosigma.beakerx.BeakerxClient; import com.twosigma.beakerx.TryResult; import com.twosigma.beakerx.autocomplete.AutocompleteResult; import com.twosigma.beakerx.evaluator.Hook; @@ -98,4 +99,6 @@ public interface KernelFunctionality { MagicKernelManager getManagerByCommId(String commId); void addCommIdManagerMapping(String commId, String kernel); + + BeakerxClient getBeakerx(); } diff --git a/kernel/base/src/main/java/com/twosigma/beakerx/kernel/KernelManager.java b/kernel/base/src/main/java/com/twosigma/beakerx/kernel/KernelManager.java index c289381d51..bc06214516 100644 --- a/kernel/base/src/main/java/com/twosigma/beakerx/kernel/KernelManager.java +++ b/kernel/base/src/main/java/com/twosigma/beakerx/kernel/KernelManager.java @@ -18,14 +18,14 @@ public class KernelManager { - private static KernelFunctionality groovyKernelInst; + private static KernelFunctionality kernelInst; - public static void register(KernelFunctionality groovyKernel) { - groovyKernelInst = groovyKernel; + public static void register(KernelFunctionality kernelFunctionality) { + kernelInst = kernelFunctionality; } public static KernelFunctionality get() { - return groovyKernelInst; + return kernelInst; } } diff --git a/kernel/base/src/main/java/com/twosigma/beakerx/kernel/comm/GetCodeCellsHandler.java b/kernel/base/src/main/java/com/twosigma/beakerx/kernel/comm/GetCodeCellsHandler.java index b7face9d11..b4ec37d0db 100644 --- a/kernel/base/src/main/java/com/twosigma/beakerx/kernel/comm/GetCodeCellsHandler.java +++ b/kernel/base/src/main/java/com/twosigma/beakerx/kernel/comm/GetCodeCellsHandler.java @@ -18,7 +18,6 @@ import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.databind.ObjectMapper; import com.twosigma.beakerx.CodeCell; -import com.twosigma.beakerx.NamespaceClient; import com.twosigma.beakerx.jvm.serialization.BasicObjectSerializer; import com.twosigma.beakerx.jvm.serialization.BeakerObjectConverter; import com.twosigma.beakerx.kernel.KernelFunctionality; @@ -54,7 +53,7 @@ public void handle(Message message) { private void handleMsg(Message message) { try { List cells = getBeakerCodeCells(getValueFromData(message, getHandlerCommand())); - NamespaceClient.getMessageQueue("CodeCells").put(cells); + kernel.getBeakerx().getMessageQueue("CodeCells").put(cells); } catch (InterruptedException e) { e.printStackTrace(); } diff --git a/kernel/base/src/main/java/com/twosigma/beakerx/table/TableDisplayActions.java b/kernel/base/src/main/java/com/twosigma/beakerx/table/TableDisplayActions.java index f271263a03..cb6b1ab959 100644 --- a/kernel/base/src/main/java/com/twosigma/beakerx/table/TableDisplayActions.java +++ b/kernel/base/src/main/java/com/twosigma/beakerx/table/TableDisplayActions.java @@ -15,7 +15,7 @@ */ package com.twosigma.beakerx.table; -import com.twosigma.beakerx.NamespaceClient; +import com.twosigma.beakerx.kernel.KernelManager; import com.twosigma.beakerx.message.Message; import com.twosigma.beakerx.table.action.TableActionDetails; import com.twosigma.beakerx.widget.CommActions; @@ -87,11 +87,11 @@ private void onActionDetails(HashMap content, Message message) { tableDisplay.setDetails(details); if (CommActions.CONTEXT_MENU_CLICK.equals(details.getActionType())) { if (tableDisplay.getContextMenuTags() != null && !tableDisplay.getContextMenuTags().isEmpty() && details.getContextMenuItem() != null && !details.getContextMenuItem().isEmpty()) { - NamespaceClient.getBeaker().runByTag(tableDisplay.getContextMenuTags().get(details.getContextMenuItem())); + KernelManager.get().getBeakerx().runByTag(tableDisplay.getContextMenuTags().get(details.getContextMenuItem())); } } else if (CommActions.DOUBLE_CLICK.equals(details.getActionType())) { if (tableDisplay.getDoubleClickTag() != null && !tableDisplay.getDoubleClickTag().isEmpty()) { - NamespaceClient.getBeaker().runByTag(tableDisplay.getDoubleClickTag()); + KernelManager.get().getBeakerx().runByTag(tableDisplay.getDoubleClickTag()); } } } diff --git a/kernel/base/src/main/java/com/twosigma/beakerx/widget/Button.java b/kernel/base/src/main/java/com/twosigma/beakerx/widget/Button.java index 6e2f0018b7..b866e6771c 100644 --- a/kernel/base/src/main/java/com/twosigma/beakerx/widget/Button.java +++ b/kernel/base/src/main/java/com/twosigma/beakerx/widget/Button.java @@ -15,8 +15,8 @@ */ package com.twosigma.beakerx.widget; -import com.twosigma.beakerx.NamespaceClient; import com.twosigma.beakerx.handler.Handler; +import com.twosigma.beakerx.kernel.KernelManager; import com.twosigma.beakerx.message.Message; import java.io.Serializable; @@ -93,7 +93,7 @@ public void onClick(HashMap content, Message message){ actionPerformed.executeAction(content, message); } if(getTag() != null && !getTag().isEmpty()){ - NamespaceClient.getBeaker().runByTag(getTag()); + KernelManager.get().getBeakerx().runByTag(getTag()); } } diff --git a/kernel/base/src/test/java/com/twosigma/beakerx/KernelTest.java b/kernel/base/src/test/java/com/twosigma/beakerx/KernelTest.java index ad9d44cbf2..0986b11634 100644 --- a/kernel/base/src/test/java/com/twosigma/beakerx/KernelTest.java +++ b/kernel/base/src/test/java/com/twosigma/beakerx/KernelTest.java @@ -431,4 +431,9 @@ public MagicKernelManager getManagerByCommId(String commId) { @Override public void addCommIdManagerMapping(String commId, String kernel) {} + + @Override + public BeakerxClient getBeakerx() { + return null; + } } diff --git a/kernel/base/src/test/java/com/twosigma/beakerx/NamespaceClientShowProgressReportingTest.java b/kernel/base/src/test/java/com/twosigma/beakerx/NamespaceClientShowProgressReportingTest.java index 14d8d93d8a..b1a765b096 100644 --- a/kernel/base/src/test/java/com/twosigma/beakerx/NamespaceClientShowProgressReportingTest.java +++ b/kernel/base/src/test/java/com/twosigma/beakerx/NamespaceClientShowProgressReportingTest.java @@ -34,7 +34,7 @@ public class NamespaceClientShowProgressReportingTest { @Before public void setUp() { - namespaceClient = NamespaceClient.getBeaker(SESSION_ID); + namespaceClient = new NamespaceClient(SESSION_ID, new NamespaceClientTest.AutotranslationServiceTestImpl()); kernel = new KernelTest(); KernelManager.register(kernel); } diff --git a/kernel/base/src/test/java/com/twosigma/beakerx/NamespaceClientTest.java b/kernel/base/src/test/java/com/twosigma/beakerx/NamespaceClientTest.java index 661247b554..707034f86c 100644 --- a/kernel/base/src/test/java/com/twosigma/beakerx/NamespaceClientTest.java +++ b/kernel/base/src/test/java/com/twosigma/beakerx/NamespaceClientTest.java @@ -39,7 +39,7 @@ public class NamespaceClientTest { @Before public void setUp() { - namespaceClient = NamespaceClient.getBeaker(SESSION_ID); + namespaceClient = new NamespaceClient(SESSION_ID, new AutotranslationServiceTestImpl()); kernel = new KernelTest(); KernelManager.register(kernel); } @@ -50,39 +50,11 @@ public void tearDown() throws Exception { KernelManager.register(null); } - @Test - public void getNamespaceClientBySessionId_returnNamespaceClient() { - //when - NamespaceClient curNamespaceClient = NamespaceClient.getBeaker(SESSION_ID); - //then - assertThat(namespaceClient).isNotNull(); - assertThat(curNamespaceClient).isEqualTo(namespaceClient); - } - - @Test - public void getNamespaceClientByCurrentSessionId_returnNamespaceClient() { - //when - NamespaceClient curNamespaceClient = NamespaceClient.getBeaker(); - //then - assertThat(curNamespaceClient).isNotNull(); - assertThat(curNamespaceClient).isEqualTo(namespaceClient); - } - - @Test - public void deleteNamespaceClientBySessionId_deleteNamespaceClient() { - //when - NamespaceClient.delBeaker(SESSION_ID); - NamespaceClient curNamespaceClient = NamespaceClient.getBeaker(); - //then - assertThat(curNamespaceClient).isNull(); - } - @Test public void setData_returnValue() throws Exception { //given - NamespaceClient curNamespaceClient = NamespaceClient.getBeaker("returnValue"); //when - Object value = curNamespaceClient.set("x", new Integer(10)); + Object value = namespaceClient.set("x", new Integer(10)); //then assertThat(value).isNotNull(); assertThat(value).isEqualTo(new Integer(10)); @@ -91,9 +63,8 @@ public void setData_returnValue() throws Exception { @Test public void setData_setAutotranslationData() throws Exception { //given - NamespaceClient curNamespaceClient = NamespaceClient.getBeaker("setAutotranslationData"); //when - curNamespaceClient.set("x", new Integer(10)); + namespaceClient.set("x", new Integer(10)); //then assertThat(kernel.getPublishedMessages()).isNotEmpty(); Map data = (Map) kernel.getPublishedMessages().get(1).getContent().get("data"); @@ -127,9 +98,8 @@ public void setBigInt() throws Exception { }} ); - NamespaceClient curNamespaceClient = NamespaceClient.getBeaker("setBigInt"); //when - curNamespaceClient.set("table_with_longs", table); + namespaceClient.set("table_with_longs", table); //then assertThat(kernel.getPublishedMessages()).isNotEmpty(); Map data = (Map) kernel.getPublishedMessages().get(2).getContent().get("data"); @@ -141,20 +111,23 @@ public void setBigInt() throws Exception { @Test public void setData_sendCommMessage() throws Exception { //given - NamespaceClient curNamespaceClient = NamespaceClient.getBeaker("sendCommMessage"); //when - curNamespaceClient.set("x", new Integer(10)); + namespaceClient.set("x", new Integer(10)); //then assertThat(kernel.getPublishedMessages()).isNotEmpty(); } - public static boolean isJSONValid(Object jsonInString ) { + public static boolean isJSONValid(Object jsonInString) { try { final ObjectMapper mapper = new ObjectMapper(); - mapper.readTree((String)jsonInString); + mapper.readTree((String) jsonInString); return true; } catch (IOException e) { return false; } } + + public static class AutotranslationServiceTestImpl implements AutotranslationService { + + } } diff --git a/kernel/base/src/test/java/com/twosigma/beakerx/evaluator/EvaluatorTest.java b/kernel/base/src/test/java/com/twosigma/beakerx/evaluator/EvaluatorTest.java index ef4c3b5a54..c7c199fe73 100644 --- a/kernel/base/src/test/java/com/twosigma/beakerx/evaluator/EvaluatorTest.java +++ b/kernel/base/src/test/java/com/twosigma/beakerx/evaluator/EvaluatorTest.java @@ -16,6 +16,8 @@ package com.twosigma.beakerx.evaluator; +import com.twosigma.beakerx.BeakerxClient; +import com.twosigma.beakerx.CodeCell; import com.twosigma.beakerx.TryResult; import com.twosigma.beakerx.autocomplete.AutocompleteResult; import com.twosigma.beakerx.inspect.InspectResult; @@ -35,6 +37,8 @@ import java.nio.file.Files; import java.nio.file.Path; import java.util.ArrayList; +import java.util.List; +import java.util.concurrent.SynchronousQueue; public class EvaluatorTest extends BaseEvaluator { @@ -55,7 +59,7 @@ public EvaluatorTest() { } public EvaluatorTest(String id, String sId, CellExecutor cellExecutor, EvaluatorParameters kernelParameters) { - super(id, sId, cellExecutor, getTestTempFolderFactory(), kernelParameters); + super(id, sId, cellExecutor, getTestTempFolderFactory(), kernelParameters, new BeakexClientTestImpl()); } @Override @@ -190,4 +194,43 @@ public int getResetEnvironmentCounter() { return resetEnvironmentCounter; } + + public static class BeakexClientTestImpl implements BeakerxClient { + + @Override + public void showProgressUpdate(String message, int progress) { + + } + + @Override + public void delBeaker() { + + } + + @Override + public Object set(String name, Object value) { + return null; + } + + @Override + public Object get(String name) { + return null; + } + + @Override + public SynchronousQueue getMessageQueue(String channel) { + return null; + } + + @Override + public List getCodeCells(String tagFilter) { + return null; + } + + @Override + public void runByTag(String tag) { + + } + } + } diff --git a/kernel/clojure/src/main/java/com/twosigma/beakerx/clojure/evaluator/ClojureEvaluator.java b/kernel/clojure/src/main/java/com/twosigma/beakerx/clojure/evaluator/ClojureEvaluator.java index 306b04d2df..790615065a 100644 --- a/kernel/clojure/src/main/java/com/twosigma/beakerx/clojure/evaluator/ClojureEvaluator.java +++ b/kernel/clojure/src/main/java/com/twosigma/beakerx/clojure/evaluator/ClojureEvaluator.java @@ -21,6 +21,9 @@ import clojure.lang.RT; import clojure.lang.Symbol; import clojure.lang.Var; +import com.twosigma.beakerx.AutotranslationServiceImpl; +import com.twosigma.beakerx.BeakerxClient; +import com.twosigma.beakerx.NamespaceClient; import com.twosigma.beakerx.TryResult; import com.twosigma.beakerx.autocomplete.AutocompleteResult; import com.twosigma.beakerx.clojure.autocomplete.ClojureAutocomplete; @@ -54,14 +57,24 @@ public class ClojureEvaluator extends BaseEvaluator { private DynamicClassLoader loader; private Var clojureLoadString = null; - public ClojureEvaluator(String id, String sId, CellExecutor cellExecutor, TempFolderFactory tempFolderFactory, EvaluatorParameters evaluatorParameters) { - super(id, sId, cellExecutor, tempFolderFactory, evaluatorParameters); + public ClojureEvaluator(String id, + String sId, + CellExecutor cellExecutor, + TempFolderFactory tempFolderFactory, + EvaluatorParameters evaluatorParameters, + BeakerxClient beakerxClient) { + super(id, sId, cellExecutor, tempFolderFactory, evaluatorParameters, beakerxClient); requirements = new ArrayList<>(); init(); } public ClojureEvaluator(String id, String sId, EvaluatorParameters evaluatorParameters) { - this(id, sId, new BeakerCellExecutor("clojure"), new TempFolderFactoryImpl(), evaluatorParameters); + this(id, + sId, + new BeakerCellExecutor("clojure"), + new TempFolderFactoryImpl(), + evaluatorParameters, + new NamespaceClient(sId, new AutotranslationServiceImpl())); } @Override diff --git a/kernel/clojure/src/test/java/com/twosigma/beakerx/clojure/evaluator/ClojureEvaluatorTest.java b/kernel/clojure/src/test/java/com/twosigma/beakerx/clojure/evaluator/ClojureEvaluatorTest.java index a517459c54..810ecb4853 100644 --- a/kernel/clojure/src/test/java/com/twosigma/beakerx/clojure/evaluator/ClojureEvaluatorTest.java +++ b/kernel/clojure/src/test/java/com/twosigma/beakerx/clojure/evaluator/ClojureEvaluatorTest.java @@ -2,6 +2,7 @@ import com.twosigma.beakerx.evaluator.BaseEvaluator; import com.twosigma.beakerx.evaluator.EvaluatorBaseTest; +import com.twosigma.beakerx.evaluator.EvaluatorTest; import com.twosigma.beakerx.evaluator.TempFolderFactory; import org.junit.AfterClass; import org.junit.BeforeClass; @@ -16,7 +17,7 @@ public class ClojureEvaluatorTest extends EvaluatorBaseTest { @BeforeClass public static void setUpClass() throws Exception { - evaluator = new ClojureEvaluator("id", "sid", cellExecutor(), getTestTempFolderFactory(), KERNEL_PARAMETERS); + evaluator = new ClojureEvaluator("id", "sid", cellExecutor(), getTestTempFolderFactory(), KERNEL_PARAMETERS, new EvaluatorTest.BeakexClientTestImpl()); } @AfterClass @@ -26,12 +27,12 @@ public static void tearDown() throws Exception { @Override protected BaseEvaluator createNewEvaluator() { - return new ClojureEvaluator("id", "sid", cellExecutor(), getTestTempFolderFactory(), KERNEL_PARAMETERS); + return new ClojureEvaluator("id", "sid", cellExecutor(), getTestTempFolderFactory(), KERNEL_PARAMETERS, new EvaluatorTest.BeakexClientTestImpl()); } @Override protected BaseEvaluator createNewEvaluator(TempFolderFactory tempFolderFactory) { - return new ClojureEvaluator("id", "sid", cellExecutor(), tempFolderFactory, KERNEL_PARAMETERS); + return new ClojureEvaluator("id", "sid", cellExecutor(), tempFolderFactory, KERNEL_PARAMETERS, new EvaluatorTest.BeakexClientTestImpl()); } @Override diff --git a/kernel/clojure/src/test/java/com/twosigma/beakerx/clojure/kernel/ClojureAutocompleteTest.java b/kernel/clojure/src/test/java/com/twosigma/beakerx/clojure/kernel/ClojureAutocompleteTest.java index 680b78d968..9150f2a4f3 100644 --- a/kernel/clojure/src/test/java/com/twosigma/beakerx/clojure/kernel/ClojureAutocompleteTest.java +++ b/kernel/clojure/src/test/java/com/twosigma/beakerx/clojure/kernel/ClojureAutocompleteTest.java @@ -39,7 +39,8 @@ public static void setUpClass() throws Exception { "sid", cellExecutor(), EvaluatorTest.getTestTempFolderFactory(), - KERNEL_PARAMETERS + KERNEL_PARAMETERS, + new EvaluatorTest.BeakexClientTestImpl() ); } diff --git a/kernel/clojure/src/test/java/com/twosigma/beakerx/clojure/kernel/ClojureKernelTest.java b/kernel/clojure/src/test/java/com/twosigma/beakerx/clojure/kernel/ClojureKernelTest.java index 3cb34d7fe4..21c8a68037 100644 --- a/kernel/clojure/src/test/java/com/twosigma/beakerx/clojure/kernel/ClojureKernelTest.java +++ b/kernel/clojure/src/test/java/com/twosigma/beakerx/clojure/kernel/ClojureKernelTest.java @@ -18,6 +18,7 @@ import com.twosigma.beakerx.KernelExecutionTest; import com.twosigma.beakerx.KernelSocketsServiceTest; import com.twosigma.beakerx.clojure.evaluator.ClojureEvaluator; +import com.twosigma.beakerx.evaluator.EvaluatorTest; import com.twosigma.beakerx.kernel.CloseKernelAction; import com.twosigma.beakerx.kernel.Kernel; import com.twosigma.beakerx.kernel.KernelSocketsFactory; @@ -48,7 +49,7 @@ public class ClojureKernelTest extends KernelExecutionTest { @Override protected Kernel createKernel(String sessionId, KernelSocketsFactory kernelSocketsFactory, CloseKernelAction closeKernelAction) { - ClojureEvaluator evaluator = new ClojureEvaluator(sessionId, sessionId, cellExecutor(), getTestTempFolderFactory(), KERNEL_PARAMETERS); + ClojureEvaluator evaluator = new ClojureEvaluator(sessionId, sessionId, cellExecutor(), getTestTempFolderFactory(), KERNEL_PARAMETERS, new EvaluatorTest.BeakexClientTestImpl()); return new Clojure(sessionId, evaluator, kernelSocketsFactory, closeKernelAction, getCacheFolderFactory()); } diff --git a/kernel/groovy/src/main/java/com/twosigma/beakerx/groovy/evaluator/GroovyCodeRunner.java b/kernel/groovy/src/main/java/com/twosigma/beakerx/groovy/evaluator/GroovyCodeRunner.java index 89c93b4044..8cb166eb86 100644 --- a/kernel/groovy/src/main/java/com/twosigma/beakerx/groovy/evaluator/GroovyCodeRunner.java +++ b/kernel/groovy/src/main/java/com/twosigma/beakerx/groovy/evaluator/GroovyCodeRunner.java @@ -15,10 +15,8 @@ */ package com.twosigma.beakerx.groovy.evaluator; -import com.twosigma.beakerx.NamespaceClient; import com.twosigma.beakerx.TryResult; import com.twosigma.beakerx.evaluator.Evaluator; -import com.twosigma.beakerx.evaluator.InternalVariable; import com.twosigma.beakerx.jvm.object.SimpleEvaluationObject; import groovy.lang.Script; import org.codehaus.groovy.runtime.StackTraceUtils; @@ -91,7 +89,7 @@ private TryResult handleError(String scriptName, Throwable e) { } private Object runScript(Script script) { - groovyEvaluator.getScriptBinding().setVariable(Evaluator.BEAKER_VARIABLE_NAME, NamespaceClient.getBeaker(groovyEvaluator.getSessionId())); + groovyEvaluator.getScriptBinding().setVariable(Evaluator.BEAKER_VARIABLE_NAME, groovyEvaluator.getBeakerx()); script.setBinding(groovyEvaluator.getScriptBinding()); return script.run(); } diff --git a/kernel/groovy/src/main/java/com/twosigma/beakerx/groovy/evaluator/GroovyEvaluator.java b/kernel/groovy/src/main/java/com/twosigma/beakerx/groovy/evaluator/GroovyEvaluator.java index e691778401..58776f7f72 100644 --- a/kernel/groovy/src/main/java/com/twosigma/beakerx/groovy/evaluator/GroovyEvaluator.java +++ b/kernel/groovy/src/main/java/com/twosigma/beakerx/groovy/evaluator/GroovyEvaluator.java @@ -15,6 +15,9 @@ */ package com.twosigma.beakerx.groovy.evaluator; +import com.twosigma.beakerx.AutotranslationServiceImpl; +import com.twosigma.beakerx.BeakerxClient; +import com.twosigma.beakerx.NamespaceClient; import com.twosigma.beakerx.TryResult; import com.twosigma.beakerx.autocomplete.AutocompleteResult; import com.twosigma.beakerx.evaluator.BaseEvaluator; @@ -54,11 +57,21 @@ public class GroovyEvaluator extends BaseEvaluator { private BeakerXUrlClassLoader beakerxUrlClassLoader; public GroovyEvaluator(String id, String sId, EvaluatorParameters evaluatorParameters) { - this(id, sId, new BeakerCellExecutor("groovy"), new TempFolderFactoryImpl(), evaluatorParameters); + this(id, + sId, + new BeakerCellExecutor("groovy"), + new TempFolderFactoryImpl(), + evaluatorParameters, + new NamespaceClient(sId, new AutotranslationServiceImpl())); } - public GroovyEvaluator(String id, String sId, CellExecutor cellExecutor, TempFolderFactory tempFolderFactory, EvaluatorParameters evaluatorParameters) { - super(id, sId, cellExecutor, tempFolderFactory, evaluatorParameters); + public GroovyEvaluator(String id, + String sId, + CellExecutor cellExecutor, + TempFolderFactory tempFolderFactory, + EvaluatorParameters evaluatorParameters, + BeakerxClient beakerxClient) { + super(id, sId, cellExecutor, tempFolderFactory, evaluatorParameters, beakerxClient); cps = new GroovyClasspathScanner(); gac = createGroovyAutocomplete(cps); outDir = envVariablesFilter(outDir, System.getenv()); diff --git a/kernel/groovy/src/main/java/com/twosigma/beakerx/groovy/evaluator/GroovyWorkerThread.java b/kernel/groovy/src/main/java/com/twosigma/beakerx/groovy/evaluator/GroovyWorkerThread.java index 0aa9b82938..acca4d5e9b 100644 --- a/kernel/groovy/src/main/java/com/twosigma/beakerx/groovy/evaluator/GroovyWorkerThread.java +++ b/kernel/groovy/src/main/java/com/twosigma/beakerx/groovy/evaluator/GroovyWorkerThread.java @@ -39,15 +39,9 @@ public TryResult call() { NamespaceClient nc = null; TryResult r; try { - nc = NamespaceClient.getBeaker(groovyEvaluator.getSessionId()); - nc.setOutputObj(j.outputObject); j.outputObject.started(); String code = j.codeToBeExecuted; r = groovyEvaluator.executeTask(new GroovyCodeRunner(groovyEvaluator, code, j.outputObject)); - if (nc != null) { - nc.setOutputObj(null); - nc = null; - } } catch (Throwable e) { if (e instanceof GroovyNotFoundException) { logger.warn(e.getLocalizedMessage()); @@ -56,11 +50,6 @@ public TryResult call() { e.printStackTrace(); r = TryResult.createError(e.getLocalizedMessage()); } - } finally { - if (nc != null) { - nc.setOutputObj(null); - nc = null; - } } return r; } diff --git a/kernel/groovy/src/main/java/com/twosigma/beakerx/groovy/kernel/Groovy.java b/kernel/groovy/src/main/java/com/twosigma/beakerx/groovy/kernel/Groovy.java index d55e1bb789..3077979ddb 100644 --- a/kernel/groovy/src/main/java/com/twosigma/beakerx/groovy/kernel/Groovy.java +++ b/kernel/groovy/src/main/java/com/twosigma/beakerx/groovy/kernel/Groovy.java @@ -40,11 +40,17 @@ public class Groovy extends Kernel { - private Groovy(final String id, final Evaluator evaluator, KernelSocketsFactory kernelSocketsFactory) { + private Groovy(final String id, + final Evaluator evaluator, + KernelSocketsFactory kernelSocketsFactory) { super(id, evaluator, kernelSocketsFactory, new CustomMagicCommandsEmptyImpl()); } - public Groovy(final String id, final Evaluator evaluator, KernelSocketsFactory kernelSocketsFactory, CloseKernelAction closeKernelAction, CacheFolderFactory cacheFolderFactory) { + public Groovy(final String id, + final Evaluator evaluator, + KernelSocketsFactory kernelSocketsFactory, + CloseKernelAction closeKernelAction, + CacheFolderFactory cacheFolderFactory) { super(id, evaluator, kernelSocketsFactory, closeKernelAction, cacheFolderFactory, new CustomMagicCommandsEmptyImpl()); } diff --git a/kernel/groovy/src/test/java/com/twosigma/beakerx/groovy/TestGroovyEvaluator.java b/kernel/groovy/src/test/java/com/twosigma/beakerx/groovy/TestGroovyEvaluator.java index f542507bb5..2a596f0252 100644 --- a/kernel/groovy/src/test/java/com/twosigma/beakerx/groovy/TestGroovyEvaluator.java +++ b/kernel/groovy/src/test/java/com/twosigma/beakerx/groovy/TestGroovyEvaluator.java @@ -15,7 +15,9 @@ */ package com.twosigma.beakerx.groovy; +import com.twosigma.beakerx.BeakerxClient; import com.twosigma.beakerx.evaluator.BaseEvaluator; +import com.twosigma.beakerx.evaluator.EvaluatorTest; import com.twosigma.beakerx.evaluator.TempFolderFactory; import com.twosigma.beakerx.groovy.evaluator.GroovyEvaluator; import com.twosigma.beakerx.groovy.kernel.GroovyDefaultVariables; @@ -29,23 +31,37 @@ public class TestGroovyEvaluator { + public static BaseEvaluator groovyEvaluator(BeakerxClient client) { + GroovyEvaluator evaluator = new GroovyEvaluator( + "id", + "sid", + cellExecutor(), + getTestTempFolderFactory(), + getKernelParameters(), + client); + return evaluator; + } + + public static BaseEvaluator groovyEvaluator() { GroovyEvaluator evaluator = new GroovyEvaluator( "id", "sid", cellExecutor(), getTestTempFolderFactory(), - getKernelParameters()); + getKernelParameters(), + new EvaluatorTest.BeakexClientTestImpl()); return evaluator; } public static BaseEvaluator groovyEvaluator(TempFolderFactory tempFolderFactory) { GroovyEvaluator evaluator = new GroovyEvaluator( - "id", - "sid", - cellExecutor(), - tempFolderFactory, - getKernelParameters()); + "id", + "sid", + cellExecutor(), + tempFolderFactory, + getKernelParameters(), + new EvaluatorTest.BeakexClientTestImpl()); return evaluator; } diff --git a/kernel/groovy/src/test/java/com/twosigma/beakerx/groovy/autocomplete/GroovyCompleteHandlerTest.java b/kernel/groovy/src/test/java/com/twosigma/beakerx/groovy/autocomplete/GroovyCompleteHandlerTest.java index 471e937e36..0eb5b6ff34 100644 --- a/kernel/groovy/src/test/java/com/twosigma/beakerx/groovy/autocomplete/GroovyCompleteHandlerTest.java +++ b/kernel/groovy/src/test/java/com/twosigma/beakerx/groovy/autocomplete/GroovyCompleteHandlerTest.java @@ -49,7 +49,8 @@ public static void setUpClass() { "sid", cellExecutor(), EvaluatorTest.getTestTempFolderFactory(), - new EvaluatorParameters(new HashedMap()) + new EvaluatorParameters(new HashedMap()), + new EvaluatorTest.BeakexClientTestImpl() ); groovyKernel = new GroovyKernelMock("sid", groovyEvaluator); diff --git a/kernel/groovy/src/test/java/com/twosigma/beakerx/groovy/evaluator/GroovyEvaluatorProgressReportingTest.java b/kernel/groovy/src/test/java/com/twosigma/beakerx/groovy/evaluator/GroovyEvaluatorProgressReportingTest.java index 15caaef140..a148320e57 100644 --- a/kernel/groovy/src/test/java/com/twosigma/beakerx/groovy/evaluator/GroovyEvaluatorProgressReportingTest.java +++ b/kernel/groovy/src/test/java/com/twosigma/beakerx/groovy/evaluator/GroovyEvaluatorProgressReportingTest.java @@ -15,9 +15,10 @@ */ package com.twosigma.beakerx.groovy.evaluator; +import com.twosigma.beakerx.AutotranslationServiceImpl; +import com.twosigma.beakerx.NamespaceClient; import com.twosigma.beakerx.TryResult; import com.twosigma.beakerx.evaluator.BaseEvaluator; -import com.twosigma.beakerx.evaluator.InternalVariable; import com.twosigma.beakerx.groovy.TestGroovyEvaluator; import com.twosigma.beakerx.kernel.KernelManager; import com.twosigma.beakerx.jvm.object.SimpleEvaluationObject; @@ -42,13 +43,14 @@ public class GroovyEvaluatorProgressReportingTest { + public static final String GROOVY_EVALUATOR_PROGRESS_REPORTING_TEST = "groovyEvaluatorProgressReportingTest"; private BaseEvaluator groovyEvaluator; private KernelTest groovyKernel; @Before public void setUp() throws Exception { - groovyEvaluator = TestGroovyEvaluator.groovyEvaluator(); - groovyKernel = new KernelTest("groovyEvaluatorProgressReportingTest", groovyEvaluator); + groovyEvaluator = TestGroovyEvaluator.groovyEvaluator(new NamespaceClient(GROOVY_EVALUATOR_PROGRESS_REPORTING_TEST, new AutotranslationServiceImpl())); + groovyKernel = new KernelTest(GROOVY_EVALUATOR_PROGRESS_REPORTING_TEST, groovyEvaluator); KernelManager.register(groovyKernel); } diff --git a/kernel/groovy/src/test/java/com/twosigma/beakerx/groovy/evaluator/GroovyEvaluatorTest.java b/kernel/groovy/src/test/java/com/twosigma/beakerx/groovy/evaluator/GroovyEvaluatorTest.java index f63edfdfd7..9543b27954 100644 --- a/kernel/groovy/src/test/java/com/twosigma/beakerx/groovy/evaluator/GroovyEvaluatorTest.java +++ b/kernel/groovy/src/test/java/com/twosigma/beakerx/groovy/evaluator/GroovyEvaluatorTest.java @@ -16,7 +16,7 @@ package com.twosigma.beakerx.groovy.evaluator; -import com.twosigma.beakerx.NamespaceClient; +import com.twosigma.beakerx.evaluator.EvaluatorTest; import com.twosigma.beakerx.groovy.kernel.GroovyDefaultVariables; import com.twosigma.beakerx.groovy.kernel.GroovyKernelMock; import com.twosigma.beakerx.kernel.KernelManager; @@ -54,11 +54,11 @@ public static void initClassStubData() throws IOException { params.put(CLASSPATH, var.getClassPath()); EvaluatorParameters kernelParameters = new EvaluatorParameters(params); - GroovyEvaluator groovyEvaluator = new GroovyEvaluator("123", "345", cellExecutor(), getTestTempFolderFactory(), kernelParameters); + GroovyEvaluator groovyEvaluator = new GroovyEvaluator("123", "345", cellExecutor(), getTestTempFolderFactory(), kernelParameters, new EvaluatorTest.BeakexClientTestImpl()); groovyEvaluator.setShellOptions(kernelParameters); groovyClassLoader = newEvaluator(groovyEvaluator.getImports(), groovyEvaluator.getClasspath(), groovyEvaluator.getOutDir(), icz, newParentClassLoader(groovyEvaluator.getClasspath())); scriptBinding = new Binding(); - scriptBinding.setVariable("beaker", NamespaceClient.getBeaker("345")); + scriptBinding.setVariable("beaker", groovyEvaluator.getBeakerx()); groovyKernel = new GroovyKernelMock("groovyEvaluatorTest", groovyEvaluator); KernelManager.register(groovyKernel); } diff --git a/kernel/java/src/main/java/com/twosigma/beakerx/javash/evaluator/JavaEvaluator.java b/kernel/java/src/main/java/com/twosigma/beakerx/javash/evaluator/JavaEvaluator.java index a998c81f8a..c66dbcf382 100644 --- a/kernel/java/src/main/java/com/twosigma/beakerx/javash/evaluator/JavaEvaluator.java +++ b/kernel/java/src/main/java/com/twosigma/beakerx/javash/evaluator/JavaEvaluator.java @@ -15,6 +15,9 @@ */ package com.twosigma.beakerx.javash.evaluator; +import com.twosigma.beakerx.AutotranslationServiceImpl; +import com.twosigma.beakerx.BeakerxClient; +import com.twosigma.beakerx.NamespaceClient; import com.twosigma.beakerx.TryResult; import com.twosigma.beakerx.autocomplete.AutocompleteResult; import com.twosigma.beakerx.evaluator.BaseEvaluator; @@ -45,11 +48,16 @@ public class JavaEvaluator extends BaseEvaluator { private JavaBeakerXUrlClassLoader loader = null; public JavaEvaluator(String id, String sId, EvaluatorParameters evaluatorParameters) { - this(id, sId, new BeakerCellExecutor("javash"), new TempFolderFactoryImpl(), evaluatorParameters); + this(id, sId, new BeakerCellExecutor("javash"), new TempFolderFactoryImpl(), evaluatorParameters, new NamespaceClient(sId, new AutotranslationServiceImpl())); } - public JavaEvaluator(String id, String sId, CellExecutor cellExecutor, TempFolderFactory tempFolderFactory, EvaluatorParameters evaluatorParameters) { - super(id, sId, cellExecutor, tempFolderFactory, evaluatorParameters); + public JavaEvaluator(String id, + String sId, + CellExecutor cellExecutor, + TempFolderFactory tempFolderFactory, + EvaluatorParameters evaluatorParameters, + BeakerxClient beakerxClient) { + super(id, sId, cellExecutor, tempFolderFactory, evaluatorParameters, beakerxClient); packageId = "com.twosigma.beaker.javash.bkr" + shellId.split("-")[0]; cps = new JavaClasspathScanner(); jac = createJavaAutocomplete(cps); @@ -58,7 +66,7 @@ public JavaEvaluator(String id, String sId, CellExecutor cellExecutor, TempFolde @Override public ClassLoader getClassLoaderForImport() { - return getJavaClassLoader().getJavaURLClassLoader(); + return getJavaClassLoader().getJavaURLClassLoader(); } @Override @@ -131,7 +139,7 @@ public String getPackageId() { } private JavaBeakerXUrlClassLoader newClassLoader() { - JavaBeakerXUrlClassLoader loader = new JavaBeakerXUrlClassLoader(ClassLoader.getSystemClassLoader(),new PathToJar(outDir)); + JavaBeakerXUrlClassLoader loader = new JavaBeakerXUrlClassLoader(ClassLoader.getSystemClassLoader(), new PathToJar(outDir)); loader.addInitPathToJars(getClasspath().getPaths()); return loader; } diff --git a/kernel/java/src/main/java/com/twosigma/beakerx/javash/evaluator/JavaWorkerThread.java b/kernel/java/src/main/java/com/twosigma/beakerx/javash/evaluator/JavaWorkerThread.java index 41d15a0192..2ae6921d86 100644 --- a/kernel/java/src/main/java/com/twosigma/beakerx/javash/evaluator/JavaWorkerThread.java +++ b/kernel/java/src/main/java/com/twosigma/beakerx/javash/evaluator/JavaWorkerThread.java @@ -15,7 +15,6 @@ */ package com.twosigma.beakerx.javash.evaluator; -import com.twosigma.beakerx.NamespaceClient; import com.twosigma.beakerx.TryResult; import com.twosigma.beakerx.evaluator.JobDescriptor; @@ -33,20 +32,12 @@ public JavaWorkerThread(JavaEvaluator javaEvaluator, JobDescriptor j) { @Override public TryResult call() throws Exception { - NamespaceClient nc = null; TryResult r; try { - nc = NamespaceClient.getBeaker(javaEvaluator.getSessionId()); - nc.setOutputObj(j.outputObject); r = javaEvaluator.executeTask(new JavaCodeRunner(javaEvaluator, j.outputObject, j)); } catch (Throwable e) { e.printStackTrace(); r = TryResult.createError(e.getLocalizedMessage()); - } finally { - if (nc != null) { - nc.setOutputObj(null); - nc = null; - } } return r; } diff --git a/kernel/java/src/test/java/com/twosigma/beakerx/javash/autocomplete/JavaEvaluatorAutocompleteClassNameExpressionTest.java b/kernel/java/src/test/java/com/twosigma/beakerx/javash/autocomplete/JavaEvaluatorAutocompleteClassNameExpressionTest.java index 9ce4dd1031..5bba818ce9 100644 --- a/kernel/java/src/test/java/com/twosigma/beakerx/javash/autocomplete/JavaEvaluatorAutocompleteClassNameExpressionTest.java +++ b/kernel/java/src/test/java/com/twosigma/beakerx/javash/autocomplete/JavaEvaluatorAutocompleteClassNameExpressionTest.java @@ -17,6 +17,7 @@ import com.twosigma.beakerx.autocomplete.AutocompleteResult; import com.twosigma.beakerx.evaluator.BaseEvaluator; +import com.twosigma.beakerx.evaluator.EvaluatorTest; import com.twosigma.beakerx.javash.evaluator.JavaEvaluator; import org.junit.AfterClass; import org.junit.BeforeClass; @@ -33,7 +34,7 @@ public class JavaEvaluatorAutocompleteClassNameExpressionTest { @BeforeClass public static void setUpClass() throws Exception { - evaluator = new JavaEvaluator("id", "sid", cellExecutor(), getTestTempFolderFactory(), KERNEL_PARAMETERS); + evaluator = new JavaEvaluator("id", "sid", cellExecutor(), getTestTempFolderFactory(), KERNEL_PARAMETERS, new EvaluatorTest.BeakexClientTestImpl()); } @AfterClass diff --git a/kernel/java/src/test/java/com/twosigma/beakerx/javash/autocomplete/JavaEvaluatorAutocompleteImportTest.java b/kernel/java/src/test/java/com/twosigma/beakerx/javash/autocomplete/JavaEvaluatorAutocompleteImportTest.java index 6889476d9a..6c03119601 100644 --- a/kernel/java/src/test/java/com/twosigma/beakerx/javash/autocomplete/JavaEvaluatorAutocompleteImportTest.java +++ b/kernel/java/src/test/java/com/twosigma/beakerx/javash/autocomplete/JavaEvaluatorAutocompleteImportTest.java @@ -17,6 +17,7 @@ import com.twosigma.beakerx.autocomplete.JVMEvaluatorAutocompleteImportTest; import com.twosigma.beakerx.evaluator.BaseEvaluator; +import com.twosigma.beakerx.evaluator.EvaluatorTest; import com.twosigma.beakerx.javash.evaluator.JavaEvaluator; import com.twosigma.beakerx.javash.kernel.JavaDefaultVariables; import com.twosigma.beakerx.kernel.EvaluatorParameters; @@ -38,7 +39,7 @@ public static void setUpClass() throws Exception { HashMap map = new HashMap<>(); map.put(IMPORTS, new JavaDefaultVariables().getImports()); EvaluatorParameters kernelParameters = new EvaluatorParameters(map); - groovyEvaluator = new JavaEvaluator("id", "sid", cellExecutor(), getTestTempFolderFactory(), kernelParameters); + groovyEvaluator = new JavaEvaluator("id", "sid", cellExecutor(), getTestTempFolderFactory(), kernelParameters, new EvaluatorTest.BeakexClientTestImpl()); } @AfterClass diff --git a/kernel/java/src/test/java/com/twosigma/beakerx/javash/autocomplete/JavaEvaluatorAutocompleteTest.java b/kernel/java/src/test/java/com/twosigma/beakerx/javash/autocomplete/JavaEvaluatorAutocompleteTest.java index 59fb008177..0964b6d6d6 100644 --- a/kernel/java/src/test/java/com/twosigma/beakerx/javash/autocomplete/JavaEvaluatorAutocompleteTest.java +++ b/kernel/java/src/test/java/com/twosigma/beakerx/javash/autocomplete/JavaEvaluatorAutocompleteTest.java @@ -17,6 +17,7 @@ import com.twosigma.beakerx.autocomplete.AutocompleteResult; import com.twosigma.beakerx.evaluator.BaseEvaluator; +import com.twosigma.beakerx.evaluator.EvaluatorTest; import com.twosigma.beakerx.javash.evaluator.JavaEvaluator; import org.junit.AfterClass; import org.junit.BeforeClass; @@ -36,7 +37,7 @@ public class JavaEvaluatorAutocompleteTest { @BeforeClass public static void setUpClass() throws Exception { - evaluator = new JavaEvaluator("id", "sid", cellExecutor(), getTestTempFolderFactory(), KERNEL_PARAMETERS); + evaluator = new JavaEvaluator("id", "sid", cellExecutor(), getTestTempFolderFactory(), KERNEL_PARAMETERS,new EvaluatorTest.BeakexClientTestImpl()); } @AfterClass diff --git a/kernel/java/src/test/java/com/twosigma/beakerx/javash/evaluator/JavaBaseEvaluatorTest.java b/kernel/java/src/test/java/com/twosigma/beakerx/javash/evaluator/JavaBaseEvaluatorTest.java index 7a161e0a28..dbbfd8d318 100644 --- a/kernel/java/src/test/java/com/twosigma/beakerx/javash/evaluator/JavaBaseEvaluatorTest.java +++ b/kernel/java/src/test/java/com/twosigma/beakerx/javash/evaluator/JavaBaseEvaluatorTest.java @@ -17,6 +17,7 @@ import com.twosigma.beakerx.evaluator.BaseEvaluator; import com.twosigma.beakerx.evaluator.EvaluatorBaseTest; +import com.twosigma.beakerx.evaluator.EvaluatorTest; import com.twosigma.beakerx.evaluator.TempFolderFactory; import org.junit.AfterClass; import org.junit.BeforeClass; @@ -31,7 +32,7 @@ public class JavaBaseEvaluatorTest extends EvaluatorBaseTest { @BeforeClass public static void setUpClass() throws Exception { - evaluator = new JavaEvaluator("id", "sid", cellExecutor(), getTestTempFolderFactory(), KERNEL_PARAMETERS); + evaluator = new JavaEvaluator("id", "sid", cellExecutor(), getTestTempFolderFactory(), KERNEL_PARAMETERS, new EvaluatorTest.BeakexClientTestImpl()); } @AfterClass @@ -41,12 +42,12 @@ public static void tearDown() throws Exception { @Override protected BaseEvaluator createNewEvaluator() { - return new JavaEvaluator("id", "sid", cellExecutor(), getTestTempFolderFactory(), KERNEL_PARAMETERS); + return new JavaEvaluator("id", "sid", cellExecutor(), getTestTempFolderFactory(), KERNEL_PARAMETERS, new EvaluatorTest.BeakexClientTestImpl()); } @Override protected BaseEvaluator createNewEvaluator(TempFolderFactory tempFolderFactory) { - return new JavaEvaluator("id", "sid", cellExecutor(), tempFolderFactory, KERNEL_PARAMETERS); + return new JavaEvaluator("id", "sid", cellExecutor(), tempFolderFactory, KERNEL_PARAMETERS, new EvaluatorTest.BeakexClientTestImpl()); } @Override diff --git a/kernel/java/src/test/java/com/twosigma/beakerx/javash/evaluator/JavaEvaluatorTest.java b/kernel/java/src/test/java/com/twosigma/beakerx/javash/evaluator/JavaEvaluatorTest.java index a6a758c517..f7706d7417 100644 --- a/kernel/java/src/test/java/com/twosigma/beakerx/javash/evaluator/JavaEvaluatorTest.java +++ b/kernel/java/src/test/java/com/twosigma/beakerx/javash/evaluator/JavaEvaluatorTest.java @@ -18,6 +18,7 @@ import com.twosigma.beakerx.TryResult; import com.twosigma.beakerx.chart.xychart.Plot; +import com.twosigma.beakerx.evaluator.EvaluatorTest; import com.twosigma.beakerx.javash.kernel.JavaKernelMock; import com.twosigma.beakerx.kernel.KernelManager; import com.twosigma.beakerx.jvm.object.SimpleEvaluationObject; @@ -37,7 +38,7 @@ public class JavaEvaluatorTest { @BeforeClass public static void setUp() throws Exception { - javaEvaluator = new JavaEvaluator("id", "sid", cellExecutor(), getTestTempFolderFactory(), KERNEL_PARAMETERS); + javaEvaluator = new JavaEvaluator("id", "sid", cellExecutor(), getTestTempFolderFactory(), KERNEL_PARAMETERS, new EvaluatorTest.BeakexClientTestImpl()); JavaKernelMock kernel = new JavaKernelMock("id", javaEvaluator); KernelManager.register(kernel); } diff --git a/kernel/java/src/test/java/com/twosigma/beakerx/javash/kernel/JavaKernelTest.java b/kernel/java/src/test/java/com/twosigma/beakerx/javash/kernel/JavaKernelTest.java index d2dd31f918..c25b85a979 100644 --- a/kernel/java/src/test/java/com/twosigma/beakerx/javash/kernel/JavaKernelTest.java +++ b/kernel/java/src/test/java/com/twosigma/beakerx/javash/kernel/JavaKernelTest.java @@ -16,6 +16,7 @@ package com.twosigma.beakerx.javash.kernel; import com.twosigma.beakerx.KernelExecutionTest; +import com.twosigma.beakerx.evaluator.EvaluatorTest; import com.twosigma.beakerx.javash.evaluator.JavaEvaluator; import com.twosigma.beakerx.kernel.CloseKernelAction; import com.twosigma.beakerx.kernel.Kernel; @@ -30,7 +31,7 @@ public class JavaKernelTest extends KernelExecutionTest { @Override protected Kernel createKernel(String sessionId, KernelSocketsFactory kernelSocketsFactory, CloseKernelAction closeKernelAction) { - JavaEvaluator evaluator = new JavaEvaluator(sessionId, sessionId, cellExecutor(), getTestTempFolderFactory(), KERNEL_PARAMETERS); + JavaEvaluator evaluator = new JavaEvaluator(sessionId, sessionId, cellExecutor(), getTestTempFolderFactory(), KERNEL_PARAMETERS, new EvaluatorTest.BeakexClientTestImpl()); return new Java(sessionId, evaluator, kernelSocketsFactory, closeKernelAction, getCacheFolderFactory()); } diff --git a/kernel/kotlin/src/main/java/com/twosigma/beakerx/kotlin/evaluator/KotlinEvaluator.java b/kernel/kotlin/src/main/java/com/twosigma/beakerx/kotlin/evaluator/KotlinEvaluator.java index f4ce856dda..d3aec463b7 100644 --- a/kernel/kotlin/src/main/java/com/twosigma/beakerx/kotlin/evaluator/KotlinEvaluator.java +++ b/kernel/kotlin/src/main/java/com/twosigma/beakerx/kotlin/evaluator/KotlinEvaluator.java @@ -15,6 +15,9 @@ */ package com.twosigma.beakerx.kotlin.evaluator; +import com.twosigma.beakerx.AutotranslationServiceImpl; +import com.twosigma.beakerx.BeakerxClient; +import com.twosigma.beakerx.NamespaceClient; import com.twosigma.beakerx.TryResult; import com.twosigma.beakerx.autocomplete.AutocompleteResult; import com.twosigma.beakerx.autocomplete.ClasspathScanner; @@ -52,11 +55,11 @@ public class KotlinEvaluator extends BaseEvaluator { private BeakerXUrlClassLoader kotlinClassLoader; public KotlinEvaluator(String id, String sId, EvaluatorParameters evaluatorParameters) { - this(id, sId, new BeakerCellExecutor("kotlin"), new TempFolderFactoryImpl(), evaluatorParameters); + this(id, sId, new BeakerCellExecutor("kotlin"), new TempFolderFactoryImpl(), evaluatorParameters, new NamespaceClient(sId, new AutotranslationServiceImpl())); } - public KotlinEvaluator(String id, String sId, CellExecutor cellExecutor, TempFolderFactory tempFolderFactory, EvaluatorParameters evaluatorParameters) { - super(id, sId, cellExecutor, tempFolderFactory, evaluatorParameters); + public KotlinEvaluator(String id, String sId, CellExecutor cellExecutor, TempFolderFactory tempFolderFactory, EvaluatorParameters evaluatorParameters, BeakerxClient beakerxClient) { + super(id, sId, cellExecutor, tempFolderFactory, evaluatorParameters, beakerxClient); cps = new ClasspathScanner(); createRepl(); } diff --git a/kernel/kotlin/src/main/java/com/twosigma/beakerx/kotlin/evaluator/KotlinWorkerThread.java b/kernel/kotlin/src/main/java/com/twosigma/beakerx/kotlin/evaluator/KotlinWorkerThread.java index b13dfea64d..f1251b7a28 100644 --- a/kernel/kotlin/src/main/java/com/twosigma/beakerx/kotlin/evaluator/KotlinWorkerThread.java +++ b/kernel/kotlin/src/main/java/com/twosigma/beakerx/kotlin/evaluator/KotlinWorkerThread.java @@ -15,7 +15,6 @@ */ package com.twosigma.beakerx.kotlin.evaluator; -import com.twosigma.beakerx.NamespaceClient; import com.twosigma.beakerx.TryResult; import com.twosigma.beakerx.evaluator.JobDescriptor; @@ -37,34 +36,19 @@ public KotlinWorkerThread(KotlinEvaluator kotlinEvaluator, JobDescriptor j) { @Override public TryResult call() throws Exception { - NamespaceClient nc = null; TryResult either; try { - - nc = NamespaceClient.getBeaker(kotlinEvaluator.getSessionId()); - nc.setOutputObj(j.outputObject); - j.outputObject.started(); try { KotlinCodeRunner kotlinCodeRunner = new KotlinCodeRunner(j.outputObject, kotlinEvaluator.getClassLoader(), kotlinEvaluator.getRepl(), j.codeToBeExecuted); either = kotlinEvaluator.executeTask(kotlinCodeRunner); - if (nc != null) { - nc.setOutputObj(null); - nc = null; - } - } catch (Exception e) { either = TryResult.createError(e.getMessage()); } } catch (Throwable e) { e.printStackTrace(); either = TryResult.createError(e.getMessage()); - } finally { - if (nc != null) { - nc.setOutputObj(null); - nc = null; - } } return either; } diff --git a/kernel/kotlin/src/test/java/com/twosigma/beakerx/kotlin/evaluator/KotlinBaseEvaluatorTest.java b/kernel/kotlin/src/test/java/com/twosigma/beakerx/kotlin/evaluator/KotlinBaseEvaluatorTest.java index 1f46047bc1..5e6fb5bb0f 100644 --- a/kernel/kotlin/src/test/java/com/twosigma/beakerx/kotlin/evaluator/KotlinBaseEvaluatorTest.java +++ b/kernel/kotlin/src/test/java/com/twosigma/beakerx/kotlin/evaluator/KotlinBaseEvaluatorTest.java @@ -17,6 +17,7 @@ import com.twosigma.beakerx.evaluator.BaseEvaluator; import com.twosigma.beakerx.evaluator.EvaluatorBaseTest; +import com.twosigma.beakerx.evaluator.EvaluatorTest; import com.twosigma.beakerx.evaluator.TempFolderFactory; import org.junit.AfterClass; import org.junit.BeforeClass; @@ -31,7 +32,7 @@ public class KotlinBaseEvaluatorTest extends EvaluatorBaseTest { @BeforeClass public static void setUpClass() throws Exception { - evaluator = new KotlinEvaluator("id", "sid", cellExecutor(), getTestTempFolderFactory(), KERNEL_PARAMETERS); + evaluator = new KotlinEvaluator("id", "sid", cellExecutor(), getTestTempFolderFactory(), KERNEL_PARAMETERS, new EvaluatorTest.BeakexClientTestImpl()); } @AfterClass @@ -41,12 +42,12 @@ public static void tearDown() throws Exception { @Override protected BaseEvaluator createNewEvaluator() { - return new KotlinEvaluator("id", "sid", cellExecutor(), getTestTempFolderFactory(), KERNEL_PARAMETERS); + return new KotlinEvaluator("id", "sid", cellExecutor(), getTestTempFolderFactory(), KERNEL_PARAMETERS, new EvaluatorTest.BeakexClientTestImpl()); } @Override protected BaseEvaluator createNewEvaluator(TempFolderFactory tempFolderFactory) { - return new KotlinEvaluator("id", "sid", cellExecutor(), tempFolderFactory, KERNEL_PARAMETERS); + return new KotlinEvaluator("id", "sid", cellExecutor(), tempFolderFactory, KERNEL_PARAMETERS, new EvaluatorTest.BeakexClientTestImpl()); } @Override diff --git a/kernel/kotlin/src/test/java/com/twosigma/beakerx/kotlin/evaluator/KotlinEvaluatorTest.java b/kernel/kotlin/src/test/java/com/twosigma/beakerx/kotlin/evaluator/KotlinEvaluatorTest.java index d7a22fdc31..7954ef9cfd 100644 --- a/kernel/kotlin/src/test/java/com/twosigma/beakerx/kotlin/evaluator/KotlinEvaluatorTest.java +++ b/kernel/kotlin/src/test/java/com/twosigma/beakerx/kotlin/evaluator/KotlinEvaluatorTest.java @@ -16,6 +16,7 @@ package com.twosigma.beakerx.kotlin.evaluator; import com.twosigma.beakerx.TryResult; +import com.twosigma.beakerx.evaluator.EvaluatorTest; import com.twosigma.beakerx.jvm.object.SimpleEvaluationObject; import com.twosigma.beakerx.kernel.EvaluatorParameters; import com.twosigma.beakerx.kernel.KernelManager; @@ -42,7 +43,7 @@ public class KotlinEvaluatorTest { @BeforeClass public static void setUp() throws Exception { - evaluator = new KotlinEvaluator("id", "sid", cellExecutor(), getTestTempFolderFactory(), KERNEL_PARAMETERS); + evaluator = new KotlinEvaluator("id", "sid", cellExecutor(), getTestTempFolderFactory(), KERNEL_PARAMETERS, new EvaluatorTest.BeakexClientTestImpl()); KotlinKernelMock kernel = new KotlinKernelMock("id", evaluator); KernelManager.register(kernel); } diff --git a/kernel/kotlin/src/test/java/com/twosigma/beakerx/kotlin/kernel/KotlinKernelTest.java b/kernel/kotlin/src/test/java/com/twosigma/beakerx/kotlin/kernel/KotlinKernelTest.java index 4367fd76a1..5a31a1c906 100644 --- a/kernel/kotlin/src/test/java/com/twosigma/beakerx/kotlin/kernel/KotlinKernelTest.java +++ b/kernel/kotlin/src/test/java/com/twosigma/beakerx/kotlin/kernel/KotlinKernelTest.java @@ -16,6 +16,7 @@ package com.twosigma.beakerx.kotlin.kernel; import com.twosigma.beakerx.KernelExecutionTest; +import com.twosigma.beakerx.evaluator.EvaluatorTest; import com.twosigma.beakerx.kernel.CloseKernelAction; import com.twosigma.beakerx.kernel.Kernel; import com.twosigma.beakerx.kernel.KernelSocketsFactory; @@ -30,7 +31,7 @@ public class KotlinKernelTest extends KernelExecutionTest { @Override protected Kernel createKernel(String sessionId, KernelSocketsFactory kernelSocketsFactory, CloseKernelAction closeKernelAction) { - KotlinEvaluator evaluator = new KotlinEvaluator(sessionId, sessionId, cellExecutor(), getTestTempFolderFactory(), KERNEL_PARAMETERS); + KotlinEvaluator evaluator = new KotlinEvaluator(sessionId, sessionId, cellExecutor(), getTestTempFolderFactory(), KERNEL_PARAMETERS, new EvaluatorTest.BeakexClientTestImpl()); return new Kotlin(sessionId, evaluator, kernelSocketsFactory, closeKernelAction, getCacheFolderFactory()); } diff --git a/kernel/scala/src/main/java/com/twosigma/beakerx/scala/evaluator/ScalaEvaluator.java b/kernel/scala/src/main/java/com/twosigma/beakerx/scala/evaluator/ScalaEvaluator.java index 881f12998d..3d77d70b5e 100644 --- a/kernel/scala/src/main/java/com/twosigma/beakerx/scala/evaluator/ScalaEvaluator.java +++ b/kernel/scala/src/main/java/com/twosigma/beakerx/scala/evaluator/ScalaEvaluator.java @@ -17,6 +17,8 @@ package com.twosigma.beakerx.scala.evaluator; import com.google.inject.Provider; +import com.twosigma.beakerx.AutotranslationServiceImpl; +import com.twosigma.beakerx.BeakerxClient; import com.twosigma.beakerx.NamespaceClient; import com.twosigma.beakerx.TryResult; import com.twosigma.beakerx.autocomplete.AutocompleteResult; @@ -57,11 +59,11 @@ public class ScalaEvaluator extends BaseEvaluator { private ScalaEvaluatorGlue shell; public ScalaEvaluator(String id, String sId, Provider osp, EvaluatorParameters evaluatorParameters) { - this(id, sId, osp, new BeakerCellExecutor("scala"), new BeakerxObjectFactoryImpl(), new TempFolderFactoryImpl(), evaluatorParameters); + this(id, sId, osp, new BeakerCellExecutor("scala"), new BeakerxObjectFactoryImpl(), new TempFolderFactoryImpl(), evaluatorParameters, new NamespaceClient(sId, new AutotranslationServiceImpl())); } - public ScalaEvaluator(String id, String sId, Provider osp, CellExecutor cellExecutor, BeakerxObjectFactory beakerxObjectFactory, TempFolderFactory tempFolderFactory, EvaluatorParameters evaluatorParameters) { - super(id, sId, cellExecutor, tempFolderFactory, evaluatorParameters); + public ScalaEvaluator(String id, String sId, Provider osp, CellExecutor cellExecutor, BeakerxObjectFactory beakerxObjectFactory, TempFolderFactory tempFolderFactory, EvaluatorParameters evaluatorParameters, BeakerxClient beakerxClient) { + super(id, sId, cellExecutor, tempFolderFactory, evaluatorParameters, beakerxClient); this.objectSerializerProvider = osp; this.beakerxObjectFactory = beakerxObjectFactory; this.classLoader = newClassLoader(); @@ -135,11 +137,11 @@ private String adjustImport(String imp) { private ScalaEvaluatorGlue createNewEvaluator(ScalaEvaluatorGlue shell) { ScalaEvaluatorGlue newEvaluator = createNewEvaluator(); - setLineId(newEvaluator,shell.interpreter().lastRequest().lineRep().lineId()); + setLineId(newEvaluator, shell.interpreter().lastRequest().lineRep().lineId()); return newEvaluator; } - private void setLineId(ScalaEvaluatorGlue newEvaluator,int lines) { + private void setLineId(ScalaEvaluatorGlue newEvaluator, int lines) { for (int i = newEvaluator.interpreter().lastRequest().lineRep().lineId(); i < lines; i++) { newEvaluator.evaluate2("\"\""); } @@ -153,8 +155,6 @@ private ScalaEvaluatorGlue createNewEvaluator() { addImportsToShell(shell, getImports().getImportPaths()); } logger.debug("creating beaker object"); - // ensure object is created - NamespaceClient.getBeaker(getSessionId()); String r = shell.evaluate2(this.beakerxObjectFactory.create(getSessionId())); if (r != null && !r.isEmpty()) { logger.warn("ERROR creating beaker object: {}", r); diff --git a/kernel/scala/src/main/java/com/twosigma/beakerx/scala/evaluator/ScalaWorkerThread.java b/kernel/scala/src/main/java/com/twosigma/beakerx/scala/evaluator/ScalaWorkerThread.java index b25934c166..ea7bf9832b 100644 --- a/kernel/scala/src/main/java/com/twosigma/beakerx/scala/evaluator/ScalaWorkerThread.java +++ b/kernel/scala/src/main/java/com/twosigma/beakerx/scala/evaluator/ScalaWorkerThread.java @@ -15,7 +15,6 @@ */ package com.twosigma.beakerx.scala.evaluator; -import com.twosigma.beakerx.NamespaceClient; import com.twosigma.beakerx.TryResult; import com.twosigma.beakerx.evaluator.JobDescriptor; import org.slf4j.Logger; @@ -37,27 +36,13 @@ public ScalaWorkerThread(ScalaEvaluator scalaEvaluator, JobDescriptor j) { @Override public TryResult call() throws Exception { - NamespaceClient nc = null; TryResult either; - try { j.outputObject.started(); - - nc = NamespaceClient.getBeaker(scalaEvaluator.getSessionId()); - nc.setOutputObj(j.outputObject); either = scalaEvaluator.executeTask(new ScalaCodeRunner(scalaEvaluator, j.codeToBeExecuted, j.outputObject)); - if (nc != null) { - nc.setOutputObj(null); - nc = null; - } } catch (Throwable e) { e.printStackTrace(); either = TryResult.createError(e.getMessage()); - } finally { - if (nc != null) { - nc.setOutputObj(null); - nc = null; - } } return either; } diff --git a/kernel/scala/src/test/java/com/twosigma/beakerx/scala/TestScalaEvaluator.java b/kernel/scala/src/test/java/com/twosigma/beakerx/scala/TestScalaEvaluator.java index 374b60c372..4d9be7aacb 100644 --- a/kernel/scala/src/test/java/com/twosigma/beakerx/scala/TestScalaEvaluator.java +++ b/kernel/scala/src/test/java/com/twosigma/beakerx/scala/TestScalaEvaluator.java @@ -15,6 +15,7 @@ */ package com.twosigma.beakerx.scala; +import com.twosigma.beakerx.evaluator.EvaluatorTest; import com.twosigma.beakerx.evaluator.TempFolderFactory; import com.twosigma.beakerx.kernel.EvaluatorParameters; import com.twosigma.beakerx.scala.evaluator.NoBeakerxObjectTestFactory; @@ -30,12 +31,12 @@ public class TestScalaEvaluator { public static ScalaEvaluator evaluator() { - ScalaEvaluator evaluator = new ScalaEvaluator("id", "sid", null, cellExecutor(), new NoBeakerxObjectTestFactory(), getTestTempFolderFactory(),getKernelParameters()); + ScalaEvaluator evaluator = new ScalaEvaluator("id", "sid", null, cellExecutor(), new NoBeakerxObjectTestFactory(), getTestTempFolderFactory(), getKernelParameters(), new EvaluatorTest.BeakexClientTestImpl()); return evaluator; } public static ScalaEvaluator evaluator(TempFolderFactory tempFolderFactory) { - ScalaEvaluator evaluator = new ScalaEvaluator("id", "sid", null, cellExecutor(), new NoBeakerxObjectTestFactory(), tempFolderFactory, getKernelParameters()); + ScalaEvaluator evaluator = new ScalaEvaluator("id", "sid", null, cellExecutor(), new NoBeakerxObjectTestFactory(), tempFolderFactory, getKernelParameters(), new EvaluatorTest.BeakexClientTestImpl()); return evaluator; } diff --git a/kernel/scala/src/test/java/com/twosigma/beakerx/scala/evaluator/ScalaAutocompleteTest.java b/kernel/scala/src/test/java/com/twosigma/beakerx/scala/evaluator/ScalaAutocompleteTest.java index 7a39d31ea4..de6b10e5c7 100644 --- a/kernel/scala/src/test/java/com/twosigma/beakerx/scala/evaluator/ScalaAutocompleteTest.java +++ b/kernel/scala/src/test/java/com/twosigma/beakerx/scala/evaluator/ScalaAutocompleteTest.java @@ -38,7 +38,7 @@ public class ScalaAutocompleteTest { @BeforeClass public static void setUpClass() throws Exception { - scalaEvaluator = new ScalaEvaluator("id", "sid", null, cellExecutor(), new NoBeakerxObjectTestFactory(), getTestTempFolderFactory(), EvaluatorTest.KERNEL_PARAMETERS); + scalaEvaluator = new ScalaEvaluator("id", "sid", null, cellExecutor(), new NoBeakerxObjectTestFactory(), getTestTempFolderFactory(), EvaluatorTest.KERNEL_PARAMETERS, new EvaluatorTest.BeakexClientTestImpl()); } @Before @@ -98,8 +98,8 @@ public void autocomplete_internalDeclarationsAreVisible() { public void autocomplete_interpretedResultsVisible() { // This test needs a fresh ScalaEvaluator to modify without disturbing other tests final ScalaEvaluator localEvaluator = - new ScalaEvaluator("id", "sid", null, cellExecutor(), new NoBeakerxObjectTestFactory(), - getTestTempFolderFactory(), EvaluatorTest.KERNEL_PARAMETERS); + new ScalaEvaluator("id", "sid", null, cellExecutor(), new NoBeakerxObjectTestFactory(), + getTestTempFolderFactory(), EvaluatorTest.KERNEL_PARAMETERS, new EvaluatorTest.BeakexClientTestImpl()); try { //when diff --git a/kernel/scala/src/test/java/com/twosigma/beakerx/scala/kernel/ScalaKernelTest.java b/kernel/scala/src/test/java/com/twosigma/beakerx/scala/kernel/ScalaKernelTest.java index 41e25aaf2f..11d9395d8d 100644 --- a/kernel/scala/src/test/java/com/twosigma/beakerx/scala/kernel/ScalaKernelTest.java +++ b/kernel/scala/src/test/java/com/twosigma/beakerx/scala/kernel/ScalaKernelTest.java @@ -43,8 +43,8 @@ public class ScalaKernelTest extends KernelExecutionTest { @Override protected Kernel createKernel(String sessionId, KernelSocketsFactory kernelSocketsFactory, CloseKernelAction closeKernelAction) { - ScalaEvaluator evaluator = new ScalaEvaluator(sessionId, sessionId, null, cellExecutor(), new NoBeakerxObjectTestFactory(), getTestTempFolderFactory(), EvaluatorTest.KERNEL_PARAMETERS); - return new Scala(sessionId, evaluator, kernelSocketsFactory, closeKernelAction, getCacheFolderFactory(),new CustomMagicCommandsEmptyImpl()); + ScalaEvaluator evaluator = new ScalaEvaluator(sessionId, sessionId, null, cellExecutor(), new NoBeakerxObjectTestFactory(), getTestTempFolderFactory(), EvaluatorTest.KERNEL_PARAMETERS, new EvaluatorTest.BeakexClientTestImpl()); + return new Scala(sessionId, evaluator, kernelSocketsFactory, closeKernelAction, getCacheFolderFactory(), new CustomMagicCommandsEmptyImpl()); } @Override @@ -91,7 +91,7 @@ public void noKeepVariablesWhenAddJar() throws Exception { //then Optional result = waitForErrorMessage(getKernelSocketsService().getKernelSockets()); assertThat(result).isPresent(); - assertThat((String)result.get().getContent().get("text")).contains("not found"); + assertThat((String) result.get().getContent().get("text")).contains("not found"); } private void runStatement(String code) throws InterruptedException { diff --git a/kernel/sparkex/src/test/java/com/twosigma/beakerx/EnableSparkSupportTest.java b/kernel/sparkex/src/test/java/com/twosigma/beakerx/EnableSparkSupportTest.java index c142579ff9..09a18f9a1b 100644 --- a/kernel/sparkex/src/test/java/com/twosigma/beakerx/EnableSparkSupportTest.java +++ b/kernel/sparkex/src/test/java/com/twosigma/beakerx/EnableSparkSupportTest.java @@ -57,7 +57,8 @@ protected Kernel createKernel(String sessionId, KernelSocketsFactory kernelSocke TestBeakerCellExecutor.cellExecutor(), new NoBeakerxObjectTestFactory(), EvaluatorTest.getTestTempFolderFactory(), - getKernelParameters()); + getKernelParameters() + , new EvaluatorTest.BeakexClientTestImpl()); return new Scala(sessionId, evaluator, kernelSocketsFactory, @@ -95,12 +96,12 @@ private void runSparkDataset(String returnStatement) throws InterruptedException String peoplePath = EnableSparkSupportTest.class.getClassLoader().getResource("people.json").getPath(); String code = "val spark = SparkSession\n" + - " .builder\n" + - " .appName(\"jupyter\")\n" + - " .master(\"local[*]\")\n" + - " .getOrCreate()\n" + - "val ds = spark.read.json(\"file://" + peoplePath + "\")\n" - + returnStatement; + " .builder\n" + + " .appName(\"jupyter\")\n" + + " .master(\"local[*]\")\n" + + " .getOrCreate()\n" + + "val ds = spark.read.json(\"file://" + peoplePath + "\")\n" + + returnStatement; Message messageWithCode = MessageFactoryTest.getExecuteRequestMessage(code); getKernelSocketsService().handleMsg(messageWithCode); diff --git a/kernel/sql/src/main/java/com/twosigma/beakerx/sql/BeakerParser.java b/kernel/sql/src/main/java/com/twosigma/beakerx/sql/BeakerParser.java index 8af8f82244..7f5025cc8c 100644 --- a/kernel/sql/src/main/java/com/twosigma/beakerx/sql/BeakerParser.java +++ b/kernel/sql/src/main/java/com/twosigma/beakerx/sql/BeakerParser.java @@ -15,7 +15,7 @@ */ package com.twosigma.beakerx.sql; -import com.twosigma.beakerx.NamespaceClient; +import com.twosigma.beakerx.BeakerxClient; import java.io.IOException; import java.sql.SQLException; @@ -41,7 +41,7 @@ public class BeakerParser { protected final JDBCClient jdbcClient; - private NamespaceClient client; + private BeakerxClient client; private ConnectionStringHolder dbURI; private Map inputs = new HashMap<>(); private Set outputs = new HashSet<>(); @@ -50,7 +50,7 @@ public class BeakerParser { private List results = new ArrayList<>(); - public BeakerParser(String script, NamespaceClient client, ConnectionStringHolder defaultConnectionString, Map namedConnectionString, JDBCClient jdbcClient) throws IOException, DBConnectionException { + public BeakerParser(String script, BeakerxClient client, ConnectionStringHolder defaultConnectionString, Map namedConnectionString, JDBCClient jdbcClient) throws IOException, DBConnectionException { this.client = client; this.jdbcClient = jdbcClient; this.defaultConnectionString = defaultConnectionString; diff --git a/kernel/sql/src/main/java/com/twosigma/beakerx/sql/QueryExecutor.java b/kernel/sql/src/main/java/com/twosigma/beakerx/sql/QueryExecutor.java index d9bd582f65..d31b192457 100644 --- a/kernel/sql/src/main/java/com/twosigma/beakerx/sql/QueryExecutor.java +++ b/kernel/sql/src/main/java/com/twosigma/beakerx/sql/QueryExecutor.java @@ -15,7 +15,7 @@ */ package com.twosigma.beakerx.sql; -import com.twosigma.beakerx.NamespaceClient; +import com.twosigma.beakerx.BeakerxClient; import com.twosigma.beakerx.jvm.object.OutputCell; import com.twosigma.beakerx.jvm.object.OutputContainer; import com.twosigma.beakerx.table.TableDisplay; @@ -47,7 +47,7 @@ public QueryExecutor(JDBCClient jdbcClient) { this.jdbcClient = jdbcClient; } - public synchronized Object executeQuery(String script, NamespaceClient namespaceClient, ConnectionStringHolder defaultConnectionString, Map namedConnectionString) + public synchronized Object executeQuery(String script, BeakerxClient namespaceClient, ConnectionStringHolder defaultConnectionString, Map namedConnectionString) throws SQLException, IOException, ReadVariableException { BeakerParser beakerParser = new BeakerParser(script, namespaceClient, defaultConnectionString, namedConnectionString, jdbcClient); @@ -183,7 +183,7 @@ private void adoptResult(BeakerParseResult queryLine, QueryResult queryResult, L } } - private QueryResult executeQuery(int currentIterationIndex, BeakerParseResult queryLine, Connection conn, NamespaceClient namespaceClient) throws SQLException, ReadVariableException { + private QueryResult executeQuery(int currentIterationIndex, BeakerParseResult queryLine, Connection conn, BeakerxClient namespaceClient) throws SQLException, ReadVariableException { QueryResult queryResult = new QueryResult(); diff --git a/kernel/sql/src/main/java/com/twosigma/beakerx/sql/autocomplete/db/DbExplorerFactory.java b/kernel/sql/src/main/java/com/twosigma/beakerx/sql/autocomplete/db/DbExplorerFactory.java index 80dcbf050c..b6e2c18764 100644 --- a/kernel/sql/src/main/java/com/twosigma/beakerx/sql/autocomplete/db/DbExplorerFactory.java +++ b/kernel/sql/src/main/java/com/twosigma/beakerx/sql/autocomplete/db/DbExplorerFactory.java @@ -16,7 +16,8 @@ package com.twosigma.beakerx.sql.autocomplete.db; -import com.twosigma.beakerx.NamespaceClient; +import com.twosigma.beakerx.BeakerxClient; +import com.twosigma.beakerx.kernel.KernelManager; import com.twosigma.beakerx.sql.BeakerParser; import com.twosigma.beakerx.sql.ConnectionStringHolder; import com.twosigma.beakerx.sql.DBConnectionException; @@ -39,7 +40,7 @@ public class DbExplorerFactory { public static DbInfo getDbInfo(String txt, JDBCClient jdbcClient, String sessionId, ConnectionStringHolder defaultConnectionString, Map namedConnectionString) { - final NamespaceClient namespaceClient = NamespaceClient.getBeaker(sessionId); + final BeakerxClient namespaceClient = KernelManager.get().getBeakerx(); final BeakerParser beakerParser; try { beakerParser = new BeakerParser(txt, namespaceClient, diff --git a/kernel/sql/src/main/java/com/twosigma/beakerx/sql/evaluator/SQLCodeRunner.java b/kernel/sql/src/main/java/com/twosigma/beakerx/sql/evaluator/SQLCodeRunner.java index f0ceb20d50..a6d3924659 100644 --- a/kernel/sql/src/main/java/com/twosigma/beakerx/sql/evaluator/SQLCodeRunner.java +++ b/kernel/sql/src/main/java/com/twosigma/beakerx/sql/evaluator/SQLCodeRunner.java @@ -15,9 +15,8 @@ */ package com.twosigma.beakerx.sql.evaluator; -import com.twosigma.beakerx.NamespaceClient; +import com.twosigma.beakerx.BeakerxClient; import com.twosigma.beakerx.TryResult; -import com.twosigma.beakerx.evaluator.InternalVariable; import com.twosigma.beakerx.jvm.object.SimpleEvaluationObject; import com.twosigma.beakerx.sql.ReadVariableException; import org.slf4j.Logger; @@ -34,9 +33,9 @@ class SQLCodeRunner implements Callable { private SQLEvaluator sqlEvaluator; private final SimpleEvaluationObject simpleEvaluationObject; - private final NamespaceClient namespaceClient; + private final BeakerxClient namespaceClient; - SQLCodeRunner(SQLEvaluator sqlEvaluator, SimpleEvaluationObject seo, NamespaceClient namespaceClient) { + SQLCodeRunner(SQLEvaluator sqlEvaluator, SimpleEvaluationObject seo, BeakerxClient namespaceClient) { this.sqlEvaluator = sqlEvaluator; this.simpleEvaluationObject = seo; this.namespaceClient = namespaceClient; diff --git a/kernel/sql/src/main/java/com/twosigma/beakerx/sql/evaluator/SQLEvaluator.java b/kernel/sql/src/main/java/com/twosigma/beakerx/sql/evaluator/SQLEvaluator.java index 3846f273a0..ec8ec129b7 100644 --- a/kernel/sql/src/main/java/com/twosigma/beakerx/sql/evaluator/SQLEvaluator.java +++ b/kernel/sql/src/main/java/com/twosigma/beakerx/sql/evaluator/SQLEvaluator.java @@ -16,6 +16,8 @@ package com.twosigma.beakerx.sql.evaluator; +import com.twosigma.beakerx.AutotranslationServiceImpl; +import com.twosigma.beakerx.BeakerxClient; import com.twosigma.beakerx.NamespaceClient; import com.twosigma.beakerx.TryResult; import com.twosigma.beakerx.autocomplete.AutocompleteResult; @@ -69,11 +71,11 @@ public class SQLEvaluator extends BaseEvaluator { private DynamicClassLoaderSimple loader; public SQLEvaluator(String id, String sId, EvaluatorParameters evaluatorParameters) { - this(id, sId, new BeakerCellExecutor("sql"), new TempFolderFactoryImpl(), evaluatorParameters); + this(id, sId, new BeakerCellExecutor("sql"), new TempFolderFactoryImpl(), evaluatorParameters, new NamespaceClient(sId, new AutotranslationServiceImpl())); } - public SQLEvaluator(String id, String sId, CellExecutor cellExecutor, TempFolderFactory tempFolderFactory, EvaluatorParameters evaluatorParameters) { - super(id, sId, cellExecutor, tempFolderFactory, evaluatorParameters); + public SQLEvaluator(String id, String sId, CellExecutor cellExecutor, TempFolderFactory tempFolderFactory, EvaluatorParameters evaluatorParameters, BeakerxClient beakerxClient) { + super(id, sId, cellExecutor, tempFolderFactory, evaluatorParameters, beakerxClient); packageId = "com.twosigma.beaker.sql.bkr" + shellId.split("-")[0]; cps = new ClasspathScanner(); sac = createSqlAutocomplete(cps); @@ -241,7 +243,7 @@ public List getListOfConnectiononWhoNeedDialog() { return ret; } - public Object executeQuery(String expression, NamespaceClient namespaceClient, ConnectionStringHolder defaultConnectionString, Map namedConnectionString) throws SQLException, IOException, ReadVariableException { + public Object executeQuery(String expression, BeakerxClient namespaceClient, ConnectionStringHolder defaultConnectionString, Map namedConnectionString) throws SQLException, IOException, ReadVariableException { return queryExecutor.executeQuery(expression, namespaceClient, defaultConnectionString, namedConnectionString); } diff --git a/kernel/sql/src/main/java/com/twosigma/beakerx/sql/evaluator/SQLWorkerThread.java b/kernel/sql/src/main/java/com/twosigma/beakerx/sql/evaluator/SQLWorkerThread.java index 47571fe97f..c88e282496 100644 --- a/kernel/sql/src/main/java/com/twosigma/beakerx/sql/evaluator/SQLWorkerThread.java +++ b/kernel/sql/src/main/java/com/twosigma/beakerx/sql/evaluator/SQLWorkerThread.java @@ -15,7 +15,7 @@ */ package com.twosigma.beakerx.sql.evaluator; -import com.twosigma.beakerx.NamespaceClient; +import com.twosigma.beakerx.BeakerxClient; import com.twosigma.beakerx.TryResult; import com.twosigma.beakerx.evaluator.JobDescriptor; import org.slf4j.Logger; @@ -36,20 +36,16 @@ class SQLWorkerThread implements Callable { @Override public TryResult call() throws Exception { - NamespaceClient namespaceClient = null; + BeakerxClient namespaceClient = null; TryResult r; job.getSimpleEvaluationObject().started(); try { job.getSimpleEvaluationObject().setOutputHandler(); - namespaceClient = NamespaceClient.getBeaker(sqlEvaluator.getSessionId()); - namespaceClient.setOutputObj(job.getSimpleEvaluationObject()); + namespaceClient = sqlEvaluator.getBeakerx(); r = sqlEvaluator.executeTask(new SQLCodeRunner(sqlEvaluator, job.getSimpleEvaluationObject(), namespaceClient)); } finally { job.getSimpleEvaluationObject().clrOutputHandler(); - if (namespaceClient != null) { - namespaceClient.setOutputObj(null); - } } return r; } diff --git a/kernel/sql/src/test/java/com/twosigma/beakerx/sql/SQLAutocompleteTest.java b/kernel/sql/src/test/java/com/twosigma/beakerx/sql/SQLAutocompleteTest.java index 5c43feedea..a2966ca915 100644 --- a/kernel/sql/src/test/java/com/twosigma/beakerx/sql/SQLAutocompleteTest.java +++ b/kernel/sql/src/test/java/com/twosigma/beakerx/sql/SQLAutocompleteTest.java @@ -17,6 +17,7 @@ import com.twosigma.beakerx.KernelTest; import com.twosigma.beakerx.autocomplete.AutocompleteResult; +import com.twosigma.beakerx.evaluator.EvaluatorTest; import com.twosigma.beakerx.kernel.KernelManager; import com.twosigma.beakerx.jvm.object.SimpleEvaluationObject; import com.twosigma.beakerx.kernel.EvaluatorParameters; @@ -41,7 +42,7 @@ public class SQLAutocompleteTest { @Before public void setUp() throws Exception { - sqlEvaluator = new SQLEvaluator("shellId1", "sessionId1", cellExecutor(), getTestTempFolderFactory(), kernelParameters()); + sqlEvaluator = new SQLEvaluator("shellId1", "sessionId1", cellExecutor(), getTestTempFolderFactory(), kernelParameters(), new EvaluatorTest.BeakexClientTestImpl()); sqlEvaluator.setShellOptions(kernelParameters()); kernelTest = new KernelTest("id1", sqlEvaluator); } @@ -98,7 +99,7 @@ public void shouldAutocompleteAfterSpace() throws Exception { assertThat(autocomplete.getStartIndex()).isEqualTo(code.length()); } - private void givenColorTable() { + private void givenColorTable() { SimpleEvaluationObject seo = new SimpleEvaluationObject(SQLForColorTable.CREATE_AND_SELECT_ALL); sqlEvaluator.evaluate(seo, SQLForColorTable.CREATE_AND_SELECT_ALL); } diff --git a/kernel/sql/src/test/java/com/twosigma/beakerx/sql/SQLBaseEvaluatorTest.java b/kernel/sql/src/test/java/com/twosigma/beakerx/sql/SQLBaseEvaluatorTest.java index c4f3895fdc..2217d19994 100644 --- a/kernel/sql/src/test/java/com/twosigma/beakerx/sql/SQLBaseEvaluatorTest.java +++ b/kernel/sql/src/test/java/com/twosigma/beakerx/sql/SQLBaseEvaluatorTest.java @@ -24,7 +24,6 @@ import org.junit.AfterClass; import org.junit.BeforeClass; -import java.io.IOException; import java.util.HashMap; import java.util.Map; @@ -39,7 +38,7 @@ public class SQLBaseEvaluatorTest extends EvaluatorBaseTest { @BeforeClass public static void setUpClass() throws Exception { - evaluator = new SQLEvaluator("shellId1", "sessionId1", cellExecutor(), getTestTempFolderFactory(), kernelParameters()); + evaluator = new SQLEvaluator("shellId1", "sessionId1", cellExecutor(), getTestTempFolderFactory(), kernelParameters(), new EvaluatorTest.BeakexClientTestImpl()); evaluator.setShellOptions(kernelParameters()); } @@ -50,13 +49,13 @@ public static void tearDown() throws Exception { @Override protected BaseEvaluator createNewEvaluator() { - SQLEvaluator evaluator = new SQLEvaluator("shellId1", "sessionId1", cellExecutor(), getTestTempFolderFactory(),kernelParameters()); + SQLEvaluator evaluator = new SQLEvaluator("shellId1", "sessionId1", cellExecutor(), getTestTempFolderFactory(), kernelParameters(), new EvaluatorTest.BeakexClientTestImpl()); return evaluator; } @Override protected BaseEvaluator createNewEvaluator(TempFolderFactory tempFolderFactory) { - SQLEvaluator evaluator = new SQLEvaluator("shellId1", "sessionId1", cellExecutor(), tempFolderFactory, kernelParameters()); + SQLEvaluator evaluator = new SQLEvaluator("shellId1", "sessionId1", cellExecutor(), tempFolderFactory, kernelParameters(), new EvaluatorTest.BeakexClientTestImpl()); return evaluator; } diff --git a/kernel/sql/src/test/java/com/twosigma/beakerx/sql/SQLEvaluatorTest.java b/kernel/sql/src/test/java/com/twosigma/beakerx/sql/SQLEvaluatorTest.java index f84b32d9e8..d026b91e25 100644 --- a/kernel/sql/src/test/java/com/twosigma/beakerx/sql/SQLEvaluatorTest.java +++ b/kernel/sql/src/test/java/com/twosigma/beakerx/sql/SQLEvaluatorTest.java @@ -17,6 +17,7 @@ import com.twosigma.beakerx.KernelTest; import com.twosigma.beakerx.TryResult; +import com.twosigma.beakerx.evaluator.EvaluatorTest; import com.twosigma.beakerx.kernel.KernelManager; import com.twosigma.beakerx.jvm.object.OutputCell; import com.twosigma.beakerx.jvm.object.SimpleEvaluationObject; @@ -44,7 +45,7 @@ public class SQLEvaluatorTest { @Before public void setUp() throws Exception { - sqlEvaluator = new SQLEvaluator("shellId1", "sessionId1", cellExecutor(), getTestTempFolderFactory(), kernelParameters()); + sqlEvaluator = new SQLEvaluator("shellId1", "sessionId1", cellExecutor(), getTestTempFolderFactory(), kernelParameters(), new EvaluatorTest.BeakexClientTestImpl()); sqlEvaluator.setShellOptions(kernelParameters()); kernelTest = new KernelTest("1", sqlEvaluator); KernelManager.register(kernelTest); diff --git a/kernel/sql/src/test/java/com/twosigma/beakerx/sql/SQLKernelTest.java b/kernel/sql/src/test/java/com/twosigma/beakerx/sql/SQLKernelTest.java index 66d9c5068a..ddb1a9b75c 100644 --- a/kernel/sql/src/test/java/com/twosigma/beakerx/sql/SQLKernelTest.java +++ b/kernel/sql/src/test/java/com/twosigma/beakerx/sql/SQLKernelTest.java @@ -18,6 +18,7 @@ import com.twosigma.beakerx.KernelSetUpFixtureTest; import com.twosigma.beakerx.KernelSocketsServiceTest; import com.twosigma.beakerx.KernelSocketsTest; +import com.twosigma.beakerx.evaluator.EvaluatorTest; import com.twosigma.beakerx.kernel.CloseKernelAction; import com.twosigma.beakerx.kernel.Kernel; import com.twosigma.beakerx.kernel.EvaluatorParameters; @@ -48,7 +49,7 @@ public class SQLKernelTest extends KernelSetUpFixtureTest { @Override protected Kernel createKernel(String sessionId, KernelSocketsFactory kernelSocketsFactory, CloseKernelAction closeKernelAction) { - SQLEvaluator sqlEvaluator = new SQLEvaluator(sessionId, sessionId, cellExecutor(), getTestTempFolderFactory(), kernelParameters()); + SQLEvaluator sqlEvaluator = new SQLEvaluator(sessionId, sessionId, cellExecutor(), getTestTempFolderFactory(), kernelParameters(), new EvaluatorTest.BeakexClientTestImpl()); sqlEvaluator.setShellOptions(kernelParameters()); Kernel sqlKernel = new SQL(sessionId, sqlEvaluator, kernelSocketsFactory, closeKernelAction, getCacheFolderFactory()); return sqlKernel;