This is an automated email from the ASF dual-hosted git repository. zjffdu pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/zeppelin.git
The following commit(s) were added to refs/heads/master by this push: new 5d012ec ZEPPELIN-4467. Reserve the order of interpreter properties defined in interpreter-setting.json 5d012ec is described below commit 5d012ec2eba21e0dcd4ef2dba6979e7419aefa09 Author: Jeff Zhang <zjf...@apache.org> AuthorDate: Wed Dec 4 15:58:36 2019 +0800 ZEPPELIN-4467. Reserve the order of interpreter properties defined in interpreter-setting.json ### What is this PR for? This is only the backend work for revering the order of interpreter properties defined in `interpreter-setting.json`. We also need to do changes in frontend as well. ### What type of PR is it? [ Improvement] ### Todos * [ ] - Task ### What is the Jira issue? * https://issues.apache.org/jira/browse/ZEPPELIN-4467 ### How should this be tested? * Ci pass ### Screenshots (if appropriate) ### Questions: * Does the licenses files need update? No * Is there breaking changes for older versions? No * Does this needs documentation? No Author: Jeff Zhang <zjf...@apache.org> Closes #3535 from zjffdu/ZEPPELIN-4467 and squashes the following commits: 174bc5dac [Jeff Zhang] ZEPPELIN-4467. Reserve the order of interpreter properties defined in interpreter-setting.json --- .../src/main/resources/interpreter-setting.json | 6 ++-- zeppelin-web/src/app/interpreter/interpreter.html | 40 +++++++++++----------- .../zeppelin/interpreter/InterpreterSetting.java | 5 +-- .../interpreter/InterpreterSettingManager.java | 3 +- 4 files changed, 28 insertions(+), 26 deletions(-) diff --git a/spark/interpreter/src/main/resources/interpreter-setting.json b/spark/interpreter/src/main/resources/interpreter-setting.json index d8549b3..33d8e8e 100644 --- a/spark/interpreter/src/main/resources/interpreter-setting.json +++ b/spark/interpreter/src/main/resources/interpreter-setting.json @@ -31,7 +31,7 @@ "propertyName": "spark.driver.cores", "defaultValue": "1", "description": "Number of cores to use for the driver process, only in cluster mode.", - "type": "int" + "type": "number" }, "spark.driver.memory": { "envName": "", @@ -45,7 +45,7 @@ "propertyName": "spark.executor.cores", "defaultValue": "1", "description": "The number of cores to use on each executor", - "type": "int" + "type": "number" }, "spark.executor.memory": { "envName": null, @@ -156,7 +156,7 @@ "zeppelin.spark.concurrentSQL.max": { "envName": null, "propertyName": "zeppelin.spark.concurrentSQL.max", - "defaultValue": 10, + "defaultValue": "10", "description": "Max number of SQL concurrently executed", "type": "number" }, diff --git a/zeppelin-web/src/app/interpreter/interpreter.html b/zeppelin-web/src/app/interpreter/interpreter.html index 1dc1357..30f6f99 100644 --- a/zeppelin-web/src/app/interpreter/interpreter.html +++ b/zeppelin-web/src/app/interpreter/interpreter.html @@ -398,32 +398,32 @@ limitations under the License. <th style="width:20%" ng-if="valueform.$visible">action</th> </tr> </thead> - <tr ng-repeat="key in setting.properties | sortByKey" > - <td style="vertical-align: middle;">{{key}}</td> + <tr ng-repeat="property in setting.properties" > + <td style="vertical-align: middle;">{{property.name}}</td> <td style="vertical-align: middle;"> - <span ng-if="setting.properties[key].type === 'textarea'" - editable-textarea="setting.properties[key].value" e-form="valueform" e-msd-elastic> - {{setting.properties[key].value | breakFilter}} + <span ng-if="property.type === 'textarea'" + editable-textarea="property.value" e-form="valueform" e-msd-elastic> + {{property.value | breakFilter}} </span> - <span ng-if="setting.properties[key].type === 'string'" - editable-text="setting.properties[key].value" e-form="valueform" e-msd-elastic> - {{setting.properties[key].value}} + <span ng-if="property.type === 'string'" + editable-text="property.value" e-form="valueform" e-msd-elastic> + {{property.value}} </span> - <span ng-if="setting.properties[key].type === 'number'" - editable-text="setting.properties[key].value" e-widget-number e-form="valueform" e-msd-elastic> - {{setting.properties[key].value}} + <span ng-if="property.type === 'number'" + editable-text="property.value" e-widget-number e-form="valueform" e-msd-elastic> + {{property.value}} </span> - <span ng-if="setting.properties[key].type === 'url'" - editable-text="setting.properties[key].value" e-form="valueform" e-msd-elastic> - <a ng-href="{{setting.properties[key].value}}">{{setting.properties[key].value}}</a> + <span ng-if="property.type === 'url'" + editable-text="property.value" e-form="valueform" e-msd-elastic> + <a ng-href="{{property.value}}">{{property.value}}</a> </span> - <span ng-if="setting.properties[key].type === 'password'" - editable-password="setting.properties[key].value" e-form="valueform" e-msd-elastic> - {{setting.properties[key].value ? '***' : ''}} + <span ng-if="property.type === 'password'" + editable-password="property.value" e-form="valueform" e-msd-elastic> + {{property.value ? '***' : ''}} </span> - <span ng-if="setting.properties[key].type === 'checkbox'" - editable-checkbox="setting.properties[key].value" e-form="valueform" e-msd-elastic> - {{setting.properties[key].value}} + <span ng-if="property.type === 'checkbox'" + editable-checkbox="property.value" e-form="valueform" e-msd-elastic> + {{property.value}} </span> </td> <td style="vertical-align: middle;" ng-if="valueform.$visible"> diff --git a/zeppelin-zengine/src/main/java/org/apache/zeppelin/interpreter/InterpreterSetting.java b/zeppelin-zengine/src/main/java/org/apache/zeppelin/interpreter/InterpreterSetting.java index 632937d..9d898a3 100644 --- a/zeppelin-zengine/src/main/java/org/apache/zeppelin/interpreter/InterpreterSetting.java +++ b/zeppelin-zengine/src/main/java/org/apache/zeppelin/interpreter/InterpreterSetting.java @@ -60,6 +60,7 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; +import java.util.LinkedHashMap; import java.util.LinkedList; import java.util.List; import java.util.Map; @@ -939,7 +940,7 @@ public class InterpreterSetting { // For backward compatibility of interpreter.json format after ZEPPELIN-2403 static Map<String, InterpreterProperty> convertInterpreterProperties(Object properties) { if (properties != null && properties instanceof StringMap) { - Map<String, InterpreterProperty> newProperties = new HashMap<>(); + Map<String, InterpreterProperty> newProperties = new LinkedHashMap<>(); StringMap p = (StringMap) properties; for (Object o : p.entrySet()) { Map.Entry entry = (Map.Entry) o; @@ -963,7 +964,7 @@ public class InterpreterSetting { } else if (properties instanceof Map) { Map<String, Object> dProperties = (Map<String, Object>) properties; - Map<String, InterpreterProperty> newProperties = new HashMap<>(); + Map<String, InterpreterProperty> newProperties = new LinkedHashMap<>(); for (String key : dProperties.keySet()) { Object value = dProperties.get(key); if (value instanceof InterpreterProperty) { diff --git a/zeppelin-zengine/src/main/java/org/apache/zeppelin/interpreter/InterpreterSettingManager.java b/zeppelin-zengine/src/main/java/org/apache/zeppelin/interpreter/InterpreterSettingManager.java index 1202315..69051cd 100644 --- a/zeppelin-zengine/src/main/java/org/apache/zeppelin/interpreter/InterpreterSettingManager.java +++ b/zeppelin-zengine/src/main/java/org/apache/zeppelin/interpreter/InterpreterSettingManager.java @@ -27,6 +27,7 @@ import com.google.gson.GsonBuilder; import com.google.gson.reflect.TypeToken; import java.util.Properties; +import java.util.LinkedHashMap; import java.util.Set; import javax.inject.Inject; import org.apache.commons.io.FileUtils; @@ -419,7 +420,7 @@ public class InterpreterSettingManager implements NoteEventListener, ClusterEven private void registerInterpreterSetting(List<RegisteredInterpreter> registeredInterpreters, String interpreterDir, boolean override) { - Map<String, DefaultInterpreterProperty> properties = new HashMap<>(); + Map<String, DefaultInterpreterProperty> properties = new LinkedHashMap<>(); List<InterpreterInfo> interpreterInfos = new ArrayList<>(); InterpreterOption option = defaultOption; String group = null;