Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
c4b016e
Refactored getInterpreter method not to use RegisteredInterpreter
jongyoul Jul 5, 2016
5159a84
Added feature for Interpreter aliases
jongyoul Jul 7, 2016
fccdd9b
Fixed the style
jongyoul Jul 7, 2016
16b56c3
Fixed broken tests for InterpreterRestApiTest
jongyoul Jul 7, 2016
d5a4c44
Refactored InterpreterSetting
jongyoul Jul 10, 2016
4ff493b
Fixed test case
jongyoul Jul 10, 2016
240c8af
Removed debugging message
jongyoul Jul 10, 2016
c100f76
Removed deprecated method
jongyoul Jul 10, 2016
634cc21
Fixed usage of getGroup
jongyoul Jul 10, 2016
e585791
Fixed some style
jongyoul Jul 10, 2016
9b05ca2
Fixed some style
jongyoul Jul 10, 2016
d59029b
Removed unused code
jongyoul Jul 11, 2016
cb7dde5
Fixed wrong test to save to file after Zeppelin calls createNewSetting
jongyoul Jul 13, 2016
dde2232
Added catching IOE from caller of createNewSetting
jongyoul Jul 13, 2016
ca20889
Changed setting.group to setting.name
jongyoul Jul 13, 2016
334634a
Fixed the description of parameter of add method
jongyoul Jul 13, 2016
5bb15a0
Removed some console.log added for debugging
jongyoul Jul 13, 2016
fac0b86
Reformatted files related to this PR without test classes
jongyoul Jul 13, 2016
5e50864
Reverted refName to group
jongyoul Jul 14, 2016
5eff48f
Reverted style into original to avoid checkstyle
jongyoul Jul 14, 2016
4dd8f6e
Reverted style into original to avoid checkstyle
jongyoul Jul 14, 2016
7f9f72d
Fixed the style
jongyoul Jul 14, 2016
2fab2f2
Reverted default constructor
jongyoul Jul 14, 2016
4d38462
Reverted modifier of CronJob back to public
jongyoul Jul 14, 2016
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@
import java.util.List;
import java.util.Map;
import java.util.Properties;

import javax.ws.rs.DELETE;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
Expand All @@ -32,36 +31,35 @@
import javax.ws.rs.core.Response;
import javax.ws.rs.core.Response.Status;

import com.google.gson.Gson;
import org.apache.commons.lang.exception.ExceptionUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.sonatype.aether.RepositoryException;
import org.sonatype.aether.repository.RemoteRepository;

import org.apache.zeppelin.annotation.ZeppelinApi;
import org.apache.zeppelin.dep.Repository;
import org.apache.zeppelin.interpreter.*;
import org.apache.zeppelin.interpreter.Interpreter.RegisteredInterpreter;
import org.apache.zeppelin.interpreter.InterpreterException;
import org.apache.zeppelin.interpreter.InterpreterFactory;
import org.apache.zeppelin.interpreter.InterpreterSetting;
import org.apache.zeppelin.rest.message.NewInterpreterSettingRequest;
import org.apache.zeppelin.rest.message.UpdateInterpreterSettingRequest;
import org.apache.zeppelin.server.JsonResponse;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.google.gson.Gson;
import org.sonatype.aether.RepositoryException;
import org.sonatype.aether.repository.RemoteRepository;

/**
* Interpreter Rest API
*
*/
@Path("/interpreter")
@Produces("application/json")
public class InterpreterRestApi {
Logger logger = LoggerFactory.getLogger(InterpreterRestApi.class);
private static final Logger logger = LoggerFactory.getLogger(InterpreterRestApi.class);

private InterpreterFactory interpreterFactory;

Gson gson = new Gson();

public InterpreterRestApi() {

}

public InterpreterRestApi(InterpreterFactory interpreterFactory) {
Expand All @@ -70,52 +68,39 @@ public InterpreterRestApi(InterpreterFactory interpreterFactory) {

/**
* List all interpreter settings
* @return
*/
@GET
@Path("setting")
@ZeppelinApi
public Response listSettings() {
List<InterpreterSetting> interpreterSettings = null;
List<InterpreterSetting> interpreterSettings;
interpreterSettings = interpreterFactory.get();
return new JsonResponse(Status.OK, "", interpreterSettings).build();
return new JsonResponse<>(Status.OK, "", interpreterSettings).build();
}

/**
* Add new interpreter setting
* @param message
* @return
* @throws IOException
* @throws InterpreterException
*
* @param message NewInterpreterSettingRequest
*/
@POST
@Path("setting")
@ZeppelinApi
public Response newSettings(String message) {
try {
NewInterpreterSettingRequest request = gson.fromJson(message,
NewInterpreterSettingRequest.class);
NewInterpreterSettingRequest request =
gson.fromJson(message, NewInterpreterSettingRequest.class);
Properties p = new Properties();
p.putAll(request.getProperties());
InterpreterSetting interpreterSetting = interpreterFactory.add(request.getName(),
request.getGroup(),
request.getDependencies(),
request.getOption(),
p);
logger.info("new setting created with {}", interpreterSetting.id());
return new JsonResponse(Status.CREATED, "", interpreterSetting).build();
} catch (InterpreterException e) {
InterpreterSetting interpreterSetting = interpreterFactory
.createNewSetting(request.getName(), request.getGroup(), request.getDependencies(),
request.getOption(), p);
logger.info("new setting created with {}", interpreterSetting.getId());
return new JsonResponse<>(Status.CREATED, "", interpreterSetting).build();
} catch (InterpreterException | IOException e) {
logger.error("Exception in InterpreterRestApi while creating ", e);
return new JsonResponse(
Status.NOT_FOUND,
e.getMessage(),
ExceptionUtils.getStackTrace(e)).build();
} catch (IOException | RepositoryException e) {
logger.error("Exception in InterpreterRestApi while creating ", e);
return new JsonResponse(
Status.INTERNAL_SERVER_ERROR,
e.getMessage(),
ExceptionUtils.getStackTrace(e)).build();
return new JsonResponse<>(Status.NOT_FOUND, e.getMessage(), ExceptionUtils.getStackTrace(e))
.build();
}
}

Expand All @@ -126,26 +111,25 @@ public Response updateSetting(String message, @PathParam("settingId") String set
logger.info("Update interpreterSetting {}", settingId);

try {
UpdateInterpreterSettingRequest request = gson.fromJson(message,
UpdateInterpreterSettingRequest.class);
interpreterFactory.setPropertyAndRestart(settingId,
request.getOption(),
request.getProperties(),
request.getDependencies());
UpdateInterpreterSettingRequest request =
gson.fromJson(message, UpdateInterpreterSettingRequest.class);
interpreterFactory
.setPropertyAndRestart(settingId, request.getOption(), request.getProperties(),
request.getDependencies());
} catch (InterpreterException e) {
logger.error("Exception in InterpreterRestApi while updateSetting ", e);
return new JsonResponse(
Status.NOT_FOUND, e.getMessage(), ExceptionUtils.getStackTrace(e)).build();
return new JsonResponse<>(Status.NOT_FOUND, e.getMessage(), ExceptionUtils.getStackTrace(e))
.build();
} catch (IOException | RepositoryException e) {
logger.error("Exception in InterpreterRestApi while updateSetting ", e);
return new JsonResponse(
Status.INTERNAL_SERVER_ERROR, e.getMessage(), ExceptionUtils.getStackTrace(e)).build();
return new JsonResponse<>(Status.INTERNAL_SERVER_ERROR, e.getMessage(),
ExceptionUtils.getStackTrace(e)).build();
}
InterpreterSetting setting = interpreterFactory.get(settingId);
if (setting == null) {
return new JsonResponse(Status.NOT_FOUND, "", settingId).build();
return new JsonResponse<>(Status.NOT_FOUND, "", settingId).build();
}
return new JsonResponse(Status.OK, "", setting).build();
return new JsonResponse<>(Status.OK, "", setting).build();
}

/**
Expand All @@ -172,14 +156,14 @@ public Response restartSetting(@PathParam("settingId") String settingId) {
interpreterFactory.restart(settingId);
} catch (InterpreterException e) {
logger.error("Exception in InterpreterRestApi while restartSetting ", e);
return new JsonResponse(
Status.NOT_FOUND, e.getMessage(), ExceptionUtils.getStackTrace(e)).build();
return new JsonResponse<>(Status.NOT_FOUND, e.getMessage(), ExceptionUtils.getStackTrace(e))
.build();
}
InterpreterSetting setting = interpreterFactory.get(settingId);
if (setting == null) {
return new JsonResponse(Status.NOT_FOUND, "", settingId).build();
return new JsonResponse<>(Status.NOT_FOUND, "", settingId).build();
}
return new JsonResponse(Status.OK, "", setting).build();
return new JsonResponse<>(Status.OK, "", setting).build();
}

/**
Expand All @@ -188,52 +172,47 @@ public Response restartSetting(@PathParam("settingId") String settingId) {
@GET
@ZeppelinApi
public Response listInterpreter(String message) {
Map<String, RegisteredInterpreter> m = Interpreter.registeredInterpreters;
return new JsonResponse(Status.OK, "", m).build();
Map<String, InterpreterSetting> m = interpreterFactory.getAvailableInterpreterSettings();
return new JsonResponse<>(Status.OK, "", m).build();
}

/**
* List of dependency resolving repositories
* @return
*/
@GET
@Path("repository")
@ZeppelinApi
public Response listRepositories() {
List<RemoteRepository> interpreterRepositories = null;
interpreterRepositories = interpreterFactory.getRepositories();
return new JsonResponse(Status.OK, "", interpreterRepositories).build();
List<RemoteRepository> interpreterRepositories = interpreterFactory.getRepositories();
return new JsonResponse<>(Status.OK, "", interpreterRepositories).build();
}

/**
* Add new repository
* @param message
* @return
*
* @param message Repository
*/
@POST
@Path("repository")
@ZeppelinApi
public Response addRepository(String message) {
try {
Repository request = gson.fromJson(message, Repository.class);
interpreterFactory.addRepository(
request.getId(),
request.getUrl(),
request.isSnapshot(),
interpreterFactory.addRepository(request.getId(), request.getUrl(), request.isSnapshot(),
request.getAuthentication());
logger.info("New repository {} added", request.getId());
} catch (Exception e) {
logger.error("Exception in InterpreterRestApi while adding repository ", e);
return new JsonResponse(
Status.INTERNAL_SERVER_ERROR, e.getMessage(), ExceptionUtils.getStackTrace(e)).build();
return new JsonResponse<>(Status.INTERNAL_SERVER_ERROR, e.getMessage(),
ExceptionUtils.getStackTrace(e)).build();
}
return new JsonResponse(Status.CREATED).build();
}

/**
* Delete repository
* @param repoId
* @return
*
* @param repoId ID of repository
*/
@DELETE
@Path("repository/{repoId}")
Expand All @@ -244,8 +223,8 @@ public Response removeRepository(@PathParam("repoId") String repoId) {
interpreterFactory.removeRepository(repoId);
} catch (Exception e) {
logger.error("Exception in InterpreterRestApi while removing repository ", e);
return new JsonResponse(
Status.INTERNAL_SERVER_ERROR, e.getMessage(), ExceptionUtils.getStackTrace(e)).build();
return new JsonResponse<>(Status.INTERNAL_SERVER_ERROR, e.getMessage(),
ExceptionUtils.getStackTrace(e)).build();
}
return new JsonResponse(Status.OK).build();
}
Expand Down
Loading