diff --git a/zeppelin-server/src/main/java/org/apache/zeppelin/rest/InterpreterRestApi.java b/zeppelin-server/src/main/java/org/apache/zeppelin/rest/InterpreterRestApi.java index 37db218198c..fdbfd39277e 100644 --- a/zeppelin-server/src/main/java/org/apache/zeppelin/rest/InterpreterRestApi.java +++ b/zeppelin-server/src/main/java/org/apache/zeppelin/rest/InterpreterRestApi.java @@ -33,10 +33,7 @@ import javax.ws.rs.core.Response.Status; import org.apache.commons.lang.exception.ExceptionUtils; -import org.apache.zeppelin.interpreter.Interpreter; -import org.apache.zeppelin.interpreter.InterpreterException; -import org.apache.zeppelin.interpreter.InterpreterFactory; -import org.apache.zeppelin.interpreter.InterpreterSetting; +import org.apache.zeppelin.interpreter.*; import org.apache.zeppelin.interpreter.Interpreter.RegisteredInterpreter; import org.apache.zeppelin.rest.message.NewInterpreterSettingRequest; import org.apache.zeppelin.rest.message.UpdateInterpreterSettingRequest; @@ -102,8 +99,12 @@ public Response newSettings(String message) throws InterpreterException, IOExcep NewInterpreterSettingRequest.class); Properties p = new Properties(); p.putAll(request.getProperties()); - interpreterFactory.add(request.getName(), request.getGroup(), request.getOption(), p); - return new JsonResponse(Status.CREATED, "").build(); + // Option is deprecated from API, always use remote = true + InterpreterGroup interpreterGroup = interpreterFactory.add(request.getName(), + request.getGroup(), new InterpreterOption(true), p); + InterpreterSetting setting = interpreterFactory.get(interpreterGroup.getId()); + logger.info("new setting created with " + setting.id()); + return new JsonResponse(Status.CREATED, "", setting ).build(); } @PUT @@ -114,7 +115,9 @@ public Response updateSetting(String message, @PathParam("settingId") String set try { UpdateInterpreterSettingRequest p = gson.fromJson(message, UpdateInterpreterSettingRequest.class); - interpreterFactory.setPropertyAndRestart(settingId, p.getOption(), p.getProperties()); + // Option is deprecated from API, always use remote = true + interpreterFactory.setPropertyAndRestart(settingId, + new InterpreterOption(true), p.getProperties()); } catch (InterpreterException e) { return new JsonResponse( Status.NOT_FOUND, e.getMessage(), ExceptionUtils.getStackTrace(e)).build(); diff --git a/zeppelin-server/src/main/java/org/apache/zeppelin/rest/message/NewInterpreterSettingRequest.java b/zeppelin-server/src/main/java/org/apache/zeppelin/rest/message/NewInterpreterSettingRequest.java index 6489a71d4d9..36f80f68b19 100644 --- a/zeppelin-server/src/main/java/org/apache/zeppelin/rest/message/NewInterpreterSettingRequest.java +++ b/zeppelin-server/src/main/java/org/apache/zeppelin/rest/message/NewInterpreterSettingRequest.java @@ -28,7 +28,7 @@ public class NewInterpreterSettingRequest { String name; String group; - InterpreterOption option; + // option was deprecated Map properties; public NewInterpreterSettingRequest() { @@ -47,7 +47,4 @@ public Map getProperties() { return properties; } - public InterpreterOption getOption() { - return option; - } } diff --git a/zeppelin-server/src/main/java/org/apache/zeppelin/rest/message/UpdateInterpreterSettingRequest.java b/zeppelin-server/src/main/java/org/apache/zeppelin/rest/message/UpdateInterpreterSettingRequest.java index 98f4ab712a3..f1f496ae8d6 100644 --- a/zeppelin-server/src/main/java/org/apache/zeppelin/rest/message/UpdateInterpreterSettingRequest.java +++ b/zeppelin-server/src/main/java/org/apache/zeppelin/rest/message/UpdateInterpreterSettingRequest.java @@ -25,18 +25,16 @@ * */ public class UpdateInterpreterSettingRequest { - InterpreterOption option; + + // option was deprecated Properties properties; public UpdateInterpreterSettingRequest(InterpreterOption option, Properties properties) { super(); - this.option = option; this.properties = properties; } - public InterpreterOption getOption() { - return option; - } + public Properties getProperties() { return properties; } diff --git a/zeppelin-server/src/main/java/org/apache/zeppelin/server/JsonExclusionStrategy.java b/zeppelin-server/src/main/java/org/apache/zeppelin/server/JsonExclusionStrategy.java new file mode 100644 index 00000000000..95ffd37760b --- /dev/null +++ b/zeppelin-server/src/main/java/org/apache/zeppelin/server/JsonExclusionStrategy.java @@ -0,0 +1,39 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You 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 org.apache.zeppelin.server; + +import com.google.gson.ExclusionStrategy; +import com.google.gson.FieldAttributes; +import org.apache.zeppelin.interpreter.InterpreterOption; + +/** + * Created by eranw on 8/30/15. + * Omit InterpreterOption from serialization + */ +public class JsonExclusionStrategy implements ExclusionStrategy { + + public boolean shouldSkipClass(Class arg0) { + //exclude only InterpreterOption + return InterpreterOption.class.equals(arg0); + } + + public boolean shouldSkipField(FieldAttributes f) { + + return false; + } +} diff --git a/zeppelin-server/src/main/java/org/apache/zeppelin/server/JsonResponse.java b/zeppelin-server/src/main/java/org/apache/zeppelin/server/JsonResponse.java index 28a3bb88fdd..f8f1bdd95a9 100644 --- a/zeppelin-server/src/main/java/org/apache/zeppelin/server/JsonResponse.java +++ b/zeppelin-server/src/main/java/org/apache/zeppelin/server/JsonResponse.java @@ -105,6 +105,7 @@ public String toString() { if (pretty) { gsonBuilder.setPrettyPrinting(); } + gsonBuilder.setExclusionStrategies(new JsonExclusionStrategy()); Gson gson = gsonBuilder.create(); return gson.toJson(this); } diff --git a/zeppelin-server/src/test/java/org/apache/zeppelin/rest/ZeppelinRestApiTest.java b/zeppelin-server/src/test/java/org/apache/zeppelin/rest/ZeppelinRestApiTest.java index 4d526253ed1..6987362b981 100644 --- a/zeppelin-server/src/test/java/org/apache/zeppelin/rest/ZeppelinRestApiTest.java +++ b/zeppelin-server/src/test/java/org/apache/zeppelin/rest/ZeppelinRestApiTest.java @@ -149,3 +149,4 @@ public void testInterpreterRestart() throws IOException, InterruptedException { assertEquals("

markdown restarted

\n", p.getResult().message()); } } + diff --git a/zeppelin-web/src/app/interpreter/interpreter.controller.js b/zeppelin-web/src/app/interpreter/interpreter.controller.js index a671ec9c113..e531181cf5c 100644 --- a/zeppelin-web/src/app/interpreter/interpreter.controller.js +++ b/zeppelin-web/src/app/interpreter/interpreter.controller.js @@ -64,7 +64,6 @@ angular.module('zeppelinWebApp').controller('InterpreterCtrl', function($scope, var index = _.findIndex($scope.interpreterSettings, { 'id': settingId }); var request = { - option : angular.copy($scope.interpreterSettings[index].option), properties : angular.copy($scope.interpreterSettings[index].properties), }; @@ -169,7 +168,6 @@ angular.module('zeppelinWebApp').controller('InterpreterCtrl', function($scope, $scope.newInterpreterSetting = { name : undefined, group : undefined, - option : { remote : true }, properties : {} }; emptyNewProperty($scope.newInterpreterSetting);