From 17ec2dbce3a7441efc965b6ba06d2eb1b4f5ef6f Mon Sep 17 00:00:00 2001 From: tinkoff-dwh Date: Sat, 14 Oct 2017 21:10:22 +0500 Subject: [PATCH 1/4] [FIX] fix converter forms to json --- .../zeppelin/interpreter/remote/RemoteInterpreter.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/zeppelin-zengine/src/main/java/org/apache/zeppelin/interpreter/remote/RemoteInterpreter.java b/zeppelin-zengine/src/main/java/org/apache/zeppelin/interpreter/remote/RemoteInterpreter.java index b479799e246..02751258c6b 100644 --- a/zeppelin-zengine/src/main/java/org/apache/zeppelin/interpreter/remote/RemoteInterpreter.java +++ b/zeppelin-zengine/src/main/java/org/apache/zeppelin/interpreter/remote/RemoteInterpreter.java @@ -18,6 +18,7 @@ package org.apache.zeppelin.interpreter.remote; import com.google.gson.Gson; +import com.google.gson.GsonBuilder; import com.google.gson.reflect.TypeToken; import org.apache.thrift.TException; import org.apache.zeppelin.conf.ZeppelinConfiguration; @@ -54,7 +55,9 @@ */ public class RemoteInterpreter extends Interpreter { private static final Logger LOGGER = LoggerFactory.getLogger(RemoteInterpreter.class); - private static final Gson gson = new Gson(); + private static final Gson gson = new GsonBuilder() + .registerTypeAdapterFactory(Input.TypeAdapterFactory) + .create(); private String className; From b841550713014fed23a5e1e6c273304957b01b75 Mon Sep 17 00:00:00 2001 From: tinkoff-dwh Date: Sun, 15 Oct 2017 13:12:59 +0500 Subject: [PATCH 2/4] [FIX] refactoring of context converter. add test to check converter of contexts. --- .../org/apache/zeppelin/display/Input.java | 12 ++++++-- .../interpreter/remote/RemoteInterpreter.java | 7 ++--- .../remote/RemoteInterpreterTest.java | 29 +++++++++++++++++-- 3 files changed, 38 insertions(+), 10 deletions(-) diff --git a/zeppelin-interpreter/src/main/java/org/apache/zeppelin/display/Input.java b/zeppelin-interpreter/src/main/java/org/apache/zeppelin/display/Input.java index f713f4a9a12..1b540712d84 100644 --- a/zeppelin-interpreter/src/main/java/org/apache/zeppelin/display/Input.java +++ b/zeppelin-interpreter/src/main/java/org/apache/zeppelin/display/Input.java @@ -107,9 +107,15 @@ public boolean equals(Object o) { if (displayName != null ? !displayName.equals(input.displayName) : input.displayName != null) { return false; } - if (defaultValue != null ? - !defaultValue.equals(input.defaultValue) : input.defaultValue != null) { - return false; + if (defaultValue instanceof Object[]) { + if (defaultValue != null ? + !Arrays.equals((Object[])defaultValue, (Object[])input.defaultValue) + : input.defaultValue != null) { + return false; + } + } else if (defaultValue != null ? !defaultValue.equals(input.defaultValue) + : input.defaultValue != null) { + return false; } return argument != null ? argument.equals(input.argument) : input.argument == null; diff --git a/zeppelin-zengine/src/main/java/org/apache/zeppelin/interpreter/remote/RemoteInterpreter.java b/zeppelin-zengine/src/main/java/org/apache/zeppelin/interpreter/remote/RemoteInterpreter.java index 02751258c6b..338210daddf 100644 --- a/zeppelin-zengine/src/main/java/org/apache/zeppelin/interpreter/remote/RemoteInterpreter.java +++ b/zeppelin-zengine/src/main/java/org/apache/zeppelin/interpreter/remote/RemoteInterpreter.java @@ -18,7 +18,6 @@ package org.apache.zeppelin.interpreter.remote; import com.google.gson.Gson; -import com.google.gson.GsonBuilder; import com.google.gson.reflect.TypeToken; import org.apache.thrift.TException; import org.apache.zeppelin.conf.ZeppelinConfiguration; @@ -55,9 +54,7 @@ */ public class RemoteInterpreter extends Interpreter { private static final Logger LOGGER = LoggerFactory.getLogger(RemoteInterpreter.class); - private static final Gson gson = new GsonBuilder() - .registerTypeAdapterFactory(Input.TypeAdapterFactory) - .create(); + private static final Gson gson = new Gson(); private String className; @@ -394,7 +391,7 @@ public Scheduler getScheduler() { private RemoteInterpreterContext convert(InterpreterContext ic) { return new RemoteInterpreterContext(ic.getNoteId(), ic.getParagraphId(), ic.getReplName(), ic.getParagraphTitle(), ic.getParagraphText(), gson.toJson(ic.getAuthenticationInfo()), - gson.toJson(ic.getConfig()), gson.toJson(ic.getGui()), gson.toJson(ic.getRunners())); + gson.toJson(ic.getConfig()), ic.getGui().toJson(), gson.toJson(ic.getRunners())); } private InterpreterResult convert(RemoteInterpreterResult result) { diff --git a/zeppelin-zengine/src/test/java/org/apache/zeppelin/interpreter/remote/RemoteInterpreterTest.java b/zeppelin-zengine/src/test/java/org/apache/zeppelin/interpreter/remote/RemoteInterpreterTest.java index 74bde89dfa1..c268c817616 100644 --- a/zeppelin-zengine/src/test/java/org/apache/zeppelin/interpreter/remote/RemoteInterpreterTest.java +++ b/zeppelin-zengine/src/test/java/org/apache/zeppelin/interpreter/remote/RemoteInterpreterTest.java @@ -20,6 +20,8 @@ import org.apache.thrift.transport.TTransportException; import org.apache.zeppelin.display.AngularObjectRegistry; import org.apache.zeppelin.display.GUI; +import org.apache.zeppelin.display.Input; +import org.apache.zeppelin.display.ui.OptionInput; import org.apache.zeppelin.interpreter.*; import org.apache.zeppelin.interpreter.InterpreterResult.Code; import org.apache.zeppelin.interpreter.remote.mock.GetAngularObjectSizeInterpreter; @@ -32,11 +34,11 @@ import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; +import java.util.LinkedHashMap; import java.util.List; -import java.util.Properties; +import java.util.Map; import static org.junit.Assert.*; -import static org.mockito.Mockito.mock; public class RemoteInterpreterTest { @@ -413,4 +415,27 @@ public void testEnvironmentAndProperty() throws InterpreterException { assertEquals("null", interpreter1.interpret("getProperty property_2", context1).message().get(0).getData()); } + @Test + public void testConvertDynamicForms() throws InterpreterException { + GUI gui = new GUI(); + OptionInput.ParamOption[] paramOptions = { + new OptionInput.ParamOption("value1", "param1"), + new OptionInput.ParamOption("value2", "param2") + }; + List defaultValues = new ArrayList(); + defaultValues.add("default1"); + defaultValues.add("default2"); + gui.checkbox("checkbox_id", defaultValues, paramOptions); + gui.select("select_id", "default", paramOptions); + gui.textbox("textbox_id"); + Map expected = new LinkedHashMap<>(gui.getForms()); + Interpreter interpreter = interpreterSetting.getDefaultInterpreter("user1", "note1"); + InterpreterContext context = new InterpreterContext("noteId", "paragraphId", "repl", null, + null, AuthenticationInfo.ANONYMOUS, new HashMap(), gui, + null, null, new ArrayList(), null); + + interpreter.interpret("text", context); + assertArrayEquals(expected.values().toArray(), gui.getForms().values().toArray()); + } + } From 08cf92138931721aacec7e6ebabc9765a2872613 Mon Sep 17 00:00:00 2001 From: tinkoff-dwh Date: Sun, 15 Oct 2017 13:40:50 +0500 Subject: [PATCH 3/4] [FIX] checkstyle --- .../main/java/org/apache/zeppelin/display/Input.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/zeppelin-interpreter/src/main/java/org/apache/zeppelin/display/Input.java b/zeppelin-interpreter/src/main/java/org/apache/zeppelin/display/Input.java index 1b540712d84..47411410e66 100644 --- a/zeppelin-interpreter/src/main/java/org/apache/zeppelin/display/Input.java +++ b/zeppelin-interpreter/src/main/java/org/apache/zeppelin/display/Input.java @@ -109,13 +109,13 @@ public boolean equals(Object o) { } if (defaultValue instanceof Object[]) { if (defaultValue != null ? - !Arrays.equals((Object[])defaultValue, (Object[])input.defaultValue) - : input.defaultValue != null) { + !Arrays.equals((Object[])defaultValue, (Object[])input.defaultValue) + : input.defaultValue != null) { return false; } - } else if (defaultValue != null ? !defaultValue.equals(input.defaultValue) - : input.defaultValue != null) { - return false; + } else if (defaultValue != null ? + !defaultValue.equals(input.defaultValue) : input.defaultValue != null) { + return false; } return argument != null ? argument.equals(input.argument) : input.argument == null; From fdb6cfe8b670fcfd9e18b8597db0fc6c677d3fa4 Mon Sep 17 00:00:00 2001 From: tinkoff-dwh Date: Sun, 15 Oct 2017 14:13:28 +0500 Subject: [PATCH 4/4] [FIX] checkstyle --- .../src/main/java/org/apache/zeppelin/display/Input.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/zeppelin-interpreter/src/main/java/org/apache/zeppelin/display/Input.java b/zeppelin-interpreter/src/main/java/org/apache/zeppelin/display/Input.java index 47411410e66..8a2cd932dd8 100644 --- a/zeppelin-interpreter/src/main/java/org/apache/zeppelin/display/Input.java +++ b/zeppelin-interpreter/src/main/java/org/apache/zeppelin/display/Input.java @@ -109,7 +109,7 @@ public boolean equals(Object o) { } if (defaultValue instanceof Object[]) { if (defaultValue != null ? - !Arrays.equals((Object[])defaultValue, (Object[])input.defaultValue) + !Arrays.equals((Object[]) defaultValue, (Object[]) input.defaultValue) : input.defaultValue != null) { return false; }