You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@griffin.apache.org by gu...@apache.org on 2018/01/30 01:45:15 UTC
[3/5] incubator-griffin git commit: update exception handling and
restful response
http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/6b1a7000/service/src/main/java/org/apache/griffin/core/error/exception/GriffinException.java
----------------------------------------------------------------------
diff --git a/service/src/main/java/org/apache/griffin/core/error/exception/GriffinException.java b/service/src/main/java/org/apache/griffin/core/error/exception/GriffinException.java
deleted file mode 100644
index 67fa8ae..0000000
--- a/service/src/main/java/org/apache/griffin/core/error/exception/GriffinException.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
-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.griffin.core.error.exception;
-
-import org.springframework.http.HttpStatus;
-import org.springframework.web.bind.annotation.ResponseStatus;
-
-public abstract class GriffinException extends RuntimeException {
- @ResponseStatus(value = HttpStatus.GATEWAY_TIMEOUT, reason = "Fail to Connect Kafka")
- public static class KafkaConnectionException extends GriffinException {
- }
-
- @ResponseStatus(value = HttpStatus.GATEWAY_TIMEOUT, reason = "Fail to Connect Hive")
- public static class HiveConnectionException extends GriffinException {
- }
-
- @ResponseStatus(value = HttpStatus.NOT_FOUND, reason = "Fail to Get HealthInfo")
- public static class GetHealthInfoFailureException extends GriffinException {
- }
-
- @ResponseStatus(value = HttpStatus.NOT_FOUND, reason = "Fail to Get Jobs")
- public static class GetJobsFailureException extends GriffinException {
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/6b1a7000/service/src/main/java/org/apache/griffin/core/error/exception/RuntimeExceptionHandler.java
----------------------------------------------------------------------
diff --git a/service/src/main/java/org/apache/griffin/core/error/exception/RuntimeExceptionHandler.java b/service/src/main/java/org/apache/griffin/core/error/exception/RuntimeExceptionHandler.java
deleted file mode 100644
index d35fc44..0000000
--- a/service/src/main/java/org/apache/griffin/core/error/exception/RuntimeExceptionHandler.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
-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.griffin.core.error.exception;
-
-import org.apache.griffin.core.util.GriffinOperationMessage;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.boot.autoconfigure.web.DefaultErrorAttributes;
-import org.springframework.http.HttpStatus;
-import org.springframework.http.ResponseEntity;
-import org.springframework.web.bind.annotation.ControllerAdvice;
-import org.springframework.web.bind.annotation.ExceptionHandler;
-import org.springframework.web.bind.annotation.ResponseBody;
-import org.springframework.web.context.request.ServletWebRequest;
-
-import javax.servlet.http.HttpServletRequest;
-import java.util.Map;
-
-@ControllerAdvice
-@ResponseBody
-public class RuntimeExceptionHandler {
- private static final Logger LOGGER = LoggerFactory.getLogger(RuntimeExceptionHandler.class);
-
- @ExceptionHandler(RuntimeException.class)
- public ResponseEntity<Map<String, Object>> handleUnexpectedRuntimeException(RuntimeException e, HttpServletRequest request) {
- LOGGER.error("Unexpected RuntimeException. " + e);
- return setExceptionResponse(request, HttpStatus.INTERNAL_SERVER_ERROR, GriffinOperationMessage.UNEXPECTED_RUNTIME_EXCEPTION);
- }
-
- @ExceptionHandler(value = GriffinException.class)
- public void handleCustomException(GriffinException e) throws GriffinException {
- throw e;
- }
-
- private ResponseEntity<Map<String, Object>> setExceptionResponse(HttpServletRequest request, HttpStatus status,
- GriffinOperationMessage message) {
- request.setAttribute("javax.servlet.error.status_code", status.value());
- request.setAttribute("javax.servlet.error.message", message.getDescription());
- request.setAttribute("javax.servlet.error.error", status.toString());
- request.setAttribute("javax.servlet.error.request_uri", request.getRequestURI());
- Map<String, Object> map = (new DefaultErrorAttributes())
- .getErrorAttributes(new ServletWebRequest(request), false);
- return new ResponseEntity(map, status);
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/6b1a7000/service/src/main/java/org/apache/griffin/core/exception/GriffinException.java
----------------------------------------------------------------------
diff --git a/service/src/main/java/org/apache/griffin/core/exception/GriffinException.java b/service/src/main/java/org/apache/griffin/core/exception/GriffinException.java
new file mode 100644
index 0000000..35fc1b5
--- /dev/null
+++ b/service/src/main/java/org/apache/griffin/core/exception/GriffinException.java
@@ -0,0 +1,62 @@
+/*
+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.griffin.core.exception;
+
+import org.springframework.http.HttpStatus;
+import org.springframework.web.bind.annotation.ResponseStatus;
+
+public abstract class GriffinException extends RuntimeException {
+
+ GriffinException(String message) {
+ super(message);
+ }
+
+ GriffinException(String message, Throwable cause) {
+ super(message, cause);
+ }
+
+ @ResponseStatus(value = HttpStatus.NOT_FOUND)
+ public static class NotFoundException extends GriffinException {
+ public NotFoundException(GriffinExceptionMessage message) {
+ super(message.toString());
+ }
+ }
+
+ @ResponseStatus(value = HttpStatus.CONFLICT)
+ public static class ConflictException extends GriffinException {
+ public ConflictException(GriffinExceptionMessage message) {
+ super(message.toString());
+ }
+ }
+
+ @ResponseStatus(value = HttpStatus.BAD_REQUEST)
+ public static class BadRequestException extends GriffinException {
+ public BadRequestException(GriffinExceptionMessage message) {
+ super(message.toString());
+ }
+ }
+
+ public static class ServiceException extends GriffinException {
+ public ServiceException(String message, Throwable cause) {
+ super(message, cause);
+ }
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/6b1a7000/service/src/main/java/org/apache/griffin/core/exception/GriffinExceptionHandler.java
----------------------------------------------------------------------
diff --git a/service/src/main/java/org/apache/griffin/core/exception/GriffinExceptionHandler.java b/service/src/main/java/org/apache/griffin/core/exception/GriffinExceptionHandler.java
new file mode 100644
index 0000000..6b9a63c
--- /dev/null
+++ b/service/src/main/java/org/apache/griffin/core/exception/GriffinExceptionHandler.java
@@ -0,0 +1,52 @@
+/*
+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.griffin.core.exception;
+
+import org.springframework.core.annotation.AnnotationUtils;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.ControllerAdvice;
+import org.springframework.web.bind.annotation.ExceptionHandler;
+import org.springframework.web.bind.annotation.ResponseStatus;
+
+import javax.servlet.http.HttpServletRequest;
+
+@ControllerAdvice
+public class GriffinExceptionHandler {
+
+ @ExceptionHandler(GriffinException.ServiceException.class)
+ public ResponseEntity handleGriffinExceptionOfServer(HttpServletRequest request, GriffinException.ServiceException e) {
+ String message = e.getMessage();
+ Throwable cause = e.getCause();
+ GriffinExceptionResponse body = new GriffinExceptionResponse(HttpStatus.INTERNAL_SERVER_ERROR,
+ message, request.getRequestURI(), cause.getClass().getName());
+ return new ResponseEntity<>(body, HttpStatus.INTERNAL_SERVER_ERROR);
+ }
+
+ @ExceptionHandler(GriffinException.class)
+ public ResponseEntity handleGriffinExceptionOfClient(HttpServletRequest request, GriffinException e) {
+ ResponseStatus responseStatus = AnnotationUtils.findAnnotation(e.getClass(), ResponseStatus.class);
+ HttpStatus status = responseStatus.code();
+ String code = e.getMessage();
+ GriffinExceptionMessage message = GriffinExceptionMessage.valueOf(Integer.valueOf(code));
+ GriffinExceptionResponse body = new GriffinExceptionResponse(status, message, request.getRequestURI());
+ return new ResponseEntity<>(body, status);
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/6b1a7000/service/src/main/java/org/apache/griffin/core/exception/GriffinExceptionMessage.java
----------------------------------------------------------------------
diff --git a/service/src/main/java/org/apache/griffin/core/exception/GriffinExceptionMessage.java b/service/src/main/java/org/apache/griffin/core/exception/GriffinExceptionMessage.java
new file mode 100644
index 0000000..83fbc23
--- /dev/null
+++ b/service/src/main/java/org/apache/griffin/core/exception/GriffinExceptionMessage.java
@@ -0,0 +1,77 @@
+/*
+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.griffin.core.exception;
+
+public enum GriffinExceptionMessage {
+
+ //400, "Bad Request"
+ MEASURE_TYPE_DOES_NOT_MATCH(40001, "Property 'measure.type' does not match the type of measure in request body"),
+ INVALID_CONNECTOR_NAME(40002, "Property 'name' in 'connectors' field is invalid"),
+ MISSING_METRIC_NAME(40003, "Missing property 'metricName'"),
+ INVALID_JOB_NAME(40004, "Property 'job.name' is invalid"),
+ MISSING_BASELINE_CONFIG(40005, "Missing 'as.baseline' config in 'data.segments'"),
+ INVALID_METRIC_RECORDS_OFFSET(40006, "Offset must not be less than zero"),
+ INVALID_METRIC_RECORDS_SIZE(40007, "Size must not be less than zero"),
+ INVALID_METRIC_VALUE_FORMAT(40008, "Metric value format is invalid"),
+ INVALID_MEASURE_ID(40009, "Property 'measure.id' is invalid"),
+
+ //404, "Not Found"
+ MEASURE_ID_DOES_NOT_EXIST(40401, "Measure id does not exist"),
+ JOB_ID_DOES_NOT_EXIST(40402, "Job id does not exist"),
+ JOB_NAME_DOES_NOT_EXIST(40403, "Job name does not exist"),
+
+ //409, "Conflict"
+ MEASURE_NAME_ALREADY_EXIST(40901, "Measure name already exists"),
+ QUARTZ_JOB_ALREADY_EXIST(40902, "Quartz job already exist");
+
+ private final int code;
+ private final String message;
+
+ GriffinExceptionMessage(int code, String message) {
+ this.code = code;
+ this.message = message;
+ }
+
+ public static GriffinExceptionMessage valueOf(int code) {
+ GriffinExceptionMessage[] messages = values();
+ int len = values().length;
+ for (int i = 0; i < len; i++) {
+ GriffinExceptionMessage message = messages[i];
+ if (message.code == code) {
+ return message;
+ }
+ }
+ throw new IllegalArgumentException("No matching constant for [" + code + "]");
+ }
+
+
+ @Override
+ public String toString() {
+ return Integer.toString(code);
+ }
+
+ public int getCode() {
+ return code;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/6b1a7000/service/src/main/java/org/apache/griffin/core/exception/GriffinExceptionResponse.java
----------------------------------------------------------------------
diff --git a/service/src/main/java/org/apache/griffin/core/exception/GriffinExceptionResponse.java b/service/src/main/java/org/apache/griffin/core/exception/GriffinExceptionResponse.java
new file mode 100644
index 0000000..270dfbc
--- /dev/null
+++ b/service/src/main/java/org/apache/griffin/core/exception/GriffinExceptionResponse.java
@@ -0,0 +1,82 @@
+/*
+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.griffin.core.exception;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import org.springframework.http.HttpStatus;
+
+import java.util.Date;
+
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class GriffinExceptionResponse {
+
+ private Date timestamp = new Date();
+ private int status;
+ private String error;
+ private String code;
+ private String message;
+ private String exception;
+ private String path;
+
+
+ GriffinExceptionResponse(HttpStatus status, GriffinExceptionMessage message, String path) {
+ this.status = status.value();
+ this.error = status.getReasonPhrase();
+ this.code = Integer.toString(message.getCode());
+ this.message = message.getMessage();
+ this.path = path;
+ }
+
+ GriffinExceptionResponse(HttpStatus status, String message, String path, String exception) {
+ this.status = status.value();
+ this.error = status.getReasonPhrase();
+ this.message = message;
+ this.path = path;
+ this.exception = exception;
+ }
+
+ public Date getTimestamp() {
+ return timestamp;
+ }
+
+ public int getStatus() {
+ return status;
+ }
+
+ public String getError() {
+ return error;
+ }
+
+ public String getCode() {
+ return code;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public String getPath() {
+ return path;
+ }
+
+ public String getException() {
+ return exception;
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/6b1a7000/service/src/main/java/org/apache/griffin/core/job/JobController.java
----------------------------------------------------------------------
diff --git a/service/src/main/java/org/apache/griffin/core/job/JobController.java b/service/src/main/java/org/apache/griffin/core/job/JobController.java
index 3731d9f..7705e43 100644
--- a/service/src/main/java/org/apache/griffin/core/job/JobController.java
+++ b/service/src/main/java/org/apache/griffin/core/job/JobController.java
@@ -19,12 +19,9 @@ under the License.
package org.apache.griffin.core.job;
-import org.apache.griffin.core.job.entity.JobDataBean;
-import org.apache.griffin.core.job.entity.JobHealth;
-import org.apache.griffin.core.job.entity.JobInstanceBean;
-import org.apache.griffin.core.job.entity.JobSchedule;
-import org.apache.griffin.core.util.GriffinOperationMessage;
+import org.apache.griffin.core.job.entity.*;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@@ -42,18 +39,21 @@ public class JobController {
}
@RequestMapping(value = "/jobs", method = RequestMethod.POST)
- public GriffinOperationMessage addJob(@RequestBody JobSchedule jobSchedule) throws Exception {
+ @ResponseStatus(HttpStatus.CREATED)
+ public GriffinJob addJob(@RequestBody JobSchedule jobSchedule) throws Exception {
return jobService.addJob(jobSchedule);
}
@RequestMapping(value = "/jobs", method = RequestMethod.DELETE)
- public GriffinOperationMessage deleteJob(@RequestParam("jobName") String jobName) {
- return jobService.deleteJob(jobName);
+ @ResponseStatus(HttpStatus.NO_CONTENT)
+ public void deleteJob(@RequestParam("jobName") String jobName) {
+ jobService.deleteJob(jobName);
}
@RequestMapping(value = "/jobs/{id}", method = RequestMethod.DELETE)
- public GriffinOperationMessage deleteJob(@PathVariable("id") Long id) {
- return jobService.deleteJob(id);
+ @ResponseStatus(HttpStatus.NO_CONTENT)
+ public void deleteJob(@PathVariable("id") Long id) {
+ jobService.deleteJob(id);
}
@RequestMapping(value = "/jobs/instances", method = RequestMethod.GET)
http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/6b1a7000/service/src/main/java/org/apache/griffin/core/job/JobService.java
----------------------------------------------------------------------
diff --git a/service/src/main/java/org/apache/griffin/core/job/JobService.java b/service/src/main/java/org/apache/griffin/core/job/JobService.java
index 33dce25..8c2c197 100644
--- a/service/src/main/java/org/apache/griffin/core/job/JobService.java
+++ b/service/src/main/java/org/apache/griffin/core/job/JobService.java
@@ -19,11 +19,7 @@ under the License.
package org.apache.griffin.core.job;
-import org.apache.griffin.core.job.entity.JobDataBean;
-import org.apache.griffin.core.job.entity.JobHealth;
-import org.apache.griffin.core.job.entity.JobInstanceBean;
-import org.apache.griffin.core.job.entity.JobSchedule;
-import org.apache.griffin.core.util.GriffinOperationMessage;
+import org.apache.griffin.core.job.entity.*;
import org.quartz.SchedulerException;
import java.util.List;
@@ -32,13 +28,13 @@ public interface JobService {
List<JobDataBean> getAliveJobs();
- GriffinOperationMessage addJob(JobSchedule jobSchedule) throws Exception;
+ GriffinJob addJob(JobSchedule jobSchedule) throws Exception;
- boolean pauseJob(String group, String name) throws SchedulerException;
+ void pauseJob(String group, String name) throws SchedulerException;
- GriffinOperationMessage deleteJob(Long jobId);
+ void deleteJob(Long jobId);
- GriffinOperationMessage deleteJob(String jobName);
+ void deleteJob(String jobName);
List<JobInstanceBean> findInstancesOfJob(Long jobId, int page, int size);
http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/6b1a7000/service/src/main/java/org/apache/griffin/core/job/JobServiceImpl.java
----------------------------------------------------------------------
diff --git a/service/src/main/java/org/apache/griffin/core/job/JobServiceImpl.java b/service/src/main/java/org/apache/griffin/core/job/JobServiceImpl.java
index ef2fb9f..226ad64 100644
--- a/service/src/main/java/org/apache/griffin/core/job/JobServiceImpl.java
+++ b/service/src/main/java/org/apache/griffin/core/job/JobServiceImpl.java
@@ -21,24 +21,20 @@ package org.apache.griffin.core.job;
import com.fasterxml.jackson.core.type.TypeReference;
import org.apache.commons.lang.StringUtils;
-import org.apache.griffin.core.error.exception.GriffinException.GetHealthInfoFailureException;
-import org.apache.griffin.core.error.exception.GriffinException.GetJobsFailureException;
+import org.apache.griffin.core.exception.GriffinException;
import org.apache.griffin.core.job.entity.*;
import org.apache.griffin.core.job.repo.GriffinJobRepo;
import org.apache.griffin.core.job.repo.JobInstanceRepo;
import org.apache.griffin.core.job.repo.JobScheduleRepo;
import org.apache.griffin.core.measure.entity.DataSource;
import org.apache.griffin.core.measure.entity.GriffinMeasure;
-import org.apache.griffin.core.measure.entity.Measure;
import org.apache.griffin.core.measure.repo.GriffinMeasureRepo;
-import org.apache.griffin.core.util.GriffinOperationMessage;
import org.apache.griffin.core.util.JsonUtil;
import org.quartz.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
-import org.springframework.dao.DataAccessException;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
@@ -54,7 +50,7 @@ import java.io.IOException;
import java.text.ParseException;
import java.util.*;
-import static org.apache.griffin.core.util.GriffinOperationMessage.*;
+import static org.apache.griffin.core.exception.GriffinExceptionMessage.*;
import static org.quartz.JobBuilder.newJob;
import static org.quartz.JobKey.jobKey;
import static org.quartz.TriggerBuilder.newTrigger;
@@ -100,9 +96,9 @@ public class JobServiceImpl implements JobService {
dataList.add(jobData);
}
}
- } catch (Exception e) {
+ } catch (SchedulerException e) {
LOGGER.error("Failed to get running jobs.", e);
- throw new GetJobsFailureException();
+ throw new GriffinException.ServiceException("Failed to get running jobs.", e);
}
return dataList;
}
@@ -132,7 +128,7 @@ public class JobServiceImpl implements JobService {
return null;
}
- private void setTriggerTime(Trigger trigger, JobDataBean jobBean) throws SchedulerException {
+ private void setTriggerTime(Trigger trigger, JobDataBean jobBean) {
Date nextFireTime = trigger.getNextFireTime();
Date previousFireTime = trigger.getPreviousFireTime();
jobBean.setNextFireTime(nextFireTime != null ? nextFireTime.getTime() : -1);
@@ -141,23 +137,22 @@ public class JobServiceImpl implements JobService {
@Override
@Transactional(rollbackFor = Exception.class)
- public GriffinOperationMessage addJob(JobSchedule js) throws Exception {
+ public GriffinJob addJob(JobSchedule js) throws Exception {
Long measureId = js.getMeasureId();
GriffinMeasure measure = getMeasureIfValid(measureId);
- if (measure != null) {
- String qName = getQuartzName(js);
- String qGroup = getQuartzGroupName();
- TriggerKey triggerKey = triggerKey(qName, qGroup);
- if (!isJobScheduleParamValid(js, measure) || factory.getObject().checkExists(triggerKey)) {
- return CREATE_JOB_FAIL;
- }
- GriffinJob job = new GriffinJob(measure.getId(), js.getJobName(), qName, qGroup, false);
- job = jobRepo.save(job);
- js = jobScheduleRepo.save(js);
- addJob(triggerKey, js, job);
- return CREATE_JOB_SUCCESS;
+ checkJobScheduleParams(js, measure);
+ String qName = getQuartzName(js);
+ String qGroup = getQuartzGroupName();
+ TriggerKey triggerKey = triggerKey(qName, qGroup);
+ if (factory.getObject().checkExists(triggerKey)) {
+ throw new GriffinException.ConflictException(QUARTZ_JOB_ALREADY_EXIST);
}
- return CREATE_JOB_FAIL;
+ GriffinJob job = new GriffinJob(measure.getId(), js.getJobName(), qName, qGroup, false);
+ job = jobRepo.save(job);
+ js = jobScheduleRepo.save(js);
+ addJob(triggerKey, js, job);
+ return job;
+
}
private void addJob(TriggerKey triggerKey, JobSchedule js, GriffinJob job) throws Exception {
@@ -174,15 +169,17 @@ public class JobServiceImpl implements JobService {
return "BA";
}
- private boolean isJobScheduleParamValid(JobSchedule js, GriffinMeasure measure) throws SchedulerException {
+ private void checkJobScheduleParams(JobSchedule js, GriffinMeasure measure) {
if (!isJobNameValid(js.getJobName())) {
- return false;
+ throw new GriffinException.BadRequestException(INVALID_JOB_NAME);
}
if (!isBaseLineValid(js.getSegments())) {
- return false;
+ throw new GriffinException.BadRequestException(MISSING_BASELINE_CONFIG);
}
List<String> names = getConnectorNames(measure);
- return names != null && isConnectorNamesValid(js.getSegments(), names);
+ if (!isConnectorNamesValid(js.getSegments(), names)) {
+ throw new GriffinException.BadRequestException(INVALID_CONNECTOR_NAME);
+ }
}
private boolean isJobNameValid(String jobName) {
@@ -239,25 +236,23 @@ public class JobServiceImpl implements JobService {
Set<String> sets = new HashSet<>();
List<DataSource> sources = measure.getDataSources();
for (DataSource source : sources) {
- source.getConnectors().forEach(dc -> {
- sets.add(dc.getName());
- });
+ source.getConnectors().forEach(dc -> sets.add(dc.getName()));
}
if (sets.size() < sources.size()) {
LOGGER.warn("Connector names cannot be repeated.");
- return null;
+ return Collections.emptyList();
}
names.addAll(sets);
return names;
}
private GriffinMeasure getMeasureIfValid(Long measureId) {
- Measure measure = measureRepo.findByIdAndDeleted(measureId, false);
+ GriffinMeasure measure = measureRepo.findByIdAndDeleted(measureId, false);
if (measure == null) {
LOGGER.warn("The measure id {} isn't valid. Maybe it doesn't exist or is external measure type.", measureId);
- return null;
+ throw new GriffinException.BadRequestException(INVALID_MEASURE_ID);
}
- return (GriffinMeasure) measure;
+ return measure;
}
@@ -307,51 +302,45 @@ public class JobServiceImpl implements JobService {
}
private boolean pauseJob(JobInstanceBean instance, List<JobInstanceBean> deletedInstances) {
- boolean status;
+ boolean status = true;
try {
- status = pauseJob(instance.getPredicateGroup(), instance.getPredicateName());
- if (status) {
- instance.setDeleted(true);
- deletedInstances.add(instance);
- }
+ pauseJob(instance.getPredicateGroup(), instance.getPredicateName());
+ instance.setDeleted(true);
+ deletedInstances.add(instance);
} catch (SchedulerException e) {
- LOGGER.error("Pause predicate job({},{}) failure.", instance.getId(), instance.getPredicateName());
+ LOGGER.error("Failed to pause predicate job({},{}).", instance.getId(), instance.getPredicateName());
status = false;
}
return status;
}
@Override
- public boolean pauseJob(String group, String name) throws SchedulerException {
+ public void pauseJob(String group, String name) throws SchedulerException {
Scheduler scheduler = factory.getObject();
JobKey jobKey = new JobKey(name, group);
if (!scheduler.checkExists(jobKey)) {
LOGGER.warn("Job({},{}) does not exist.", jobKey.getGroup(), jobKey.getName());
- return true;
+ return;
}
scheduler.pauseJob(jobKey);
- return true;
}
- private boolean setJobDeleted(GriffinJob job) throws SchedulerException {
+ private void setJobDeleted(GriffinJob job) {
job.setDeleted(true);
jobRepo.save(job);
- return true;
}
- private boolean deletePredicateJob(GriffinJob job) throws SchedulerException {
- boolean pauseStatus = true;
+ private void deletePredicateJob(GriffinJob job) throws SchedulerException {
List<JobInstanceBean> instances = job.getJobInstances();
for (JobInstanceBean instance : instances) {
if (!instance.getDeleted()) {
- pauseStatus = pauseStatus && deleteJob(instance.getPredicateGroup(), instance.getPredicateName());
+ deleteJob(instance.getPredicateGroup(), instance.getPredicateName());
instance.setDeleted(true);
if (instance.getState().equals(LivySessionStates.State.finding)) {
instance.setState(LivySessionStates.State.not_found);
}
}
}
- return pauseStatus;
}
/**
@@ -360,59 +349,53 @@ public class JobServiceImpl implements JobService {
* 2. set these jobs as deleted status
*
* @param jobId griffin job id
- * @return custom information
*/
@Override
- public GriffinOperationMessage deleteJob(Long jobId) {
+ public void deleteJob(Long jobId) {
GriffinJob job = jobRepo.findByIdAndDeleted(jobId, false);
- return deleteJob(job) ? DELETE_JOB_SUCCESS : DELETE_JOB_FAIL;
+ if (job == null) {
+ LOGGER.warn("Griffin job does not exist.");
+ throw new GriffinException.NotFoundException(JOB_ID_DOES_NOT_EXIST);
+ }
+ deleteJob(job);
}
/**
* logically delete
*
* @param name griffin job name which may not be unique.
- * @return custom information
*/
@Override
- public GriffinOperationMessage deleteJob(String name) {
+ public void deleteJob(String name) {
List<GriffinJob> jobs = jobRepo.findByJobNameAndDeleted(name, false);
if (CollectionUtils.isEmpty(jobs)) {
LOGGER.warn("There is no job with '{}' name.", name);
- return DELETE_JOB_FAIL;
+ throw new GriffinException.NotFoundException(JOB_NAME_DOES_NOT_EXIST);
}
for (GriffinJob job : jobs) {
- if (!deleteJob(job)) {
- return DELETE_JOB_FAIL;
- }
+ deleteJob(job);
}
- return DELETE_JOB_SUCCESS;
}
- private boolean deleteJob(GriffinJob job) {
- if (job == null) {
- LOGGER.warn("Griffin job does not exist.");
- return false;
- }
+ private void deleteJob(GriffinJob job) {
try {
- if (pauseJob(job.getQuartzGroup(), job.getQuartzName()) && deletePredicateJob(job) && setJobDeleted(job)) {
- return true;
- }
+ pauseJob(job.getQuartzGroup(), job.getQuartzName());
+ deletePredicateJob(job);
+ setJobDeleted(job);
} catch (Exception e) {
- LOGGER.error("Delete job failure.", e);
+ LOGGER.error("Failed to delete job", e);
+ throw new GriffinException.ServiceException("Failed to delete job", e);
}
- return false;
}
- private boolean deleteJob(String group, String name) throws SchedulerException {
+ private void deleteJob(String group, String name) throws SchedulerException {
Scheduler scheduler = factory.getObject();
JobKey jobKey = new JobKey(name, group);
if (!scheduler.checkExists(jobKey)) {
- LOGGER.warn("Job({},{}) does not exist.", jobKey.getGroup(), jobKey.getName());
- return true;
+ LOGGER.info("Job({},{}) does not exist.", jobKey.getGroup(), jobKey.getName());
+ return;
}
scheduler.deleteJob(jobKey);
- return true;
}
/**
@@ -422,17 +405,15 @@ public class JobServiceImpl implements JobService {
*
* @param measureId measure id
*/
- public boolean deleteJobsRelateToMeasure(Long measureId) {
+ public void deleteJobsRelateToMeasure(Long measureId) {
List<GriffinJob> jobs = jobRepo.findByMeasureIdAndDeleted(measureId, false);
if (CollectionUtils.isEmpty(jobs)) {
LOGGER.info("Measure id {} has no related jobs.", measureId);
- return true;
+ return;
}
- boolean status = true;
for (GriffinJob job : jobs) {
- status = status && deleteJob(job);
+ deleteJob(job);
}
- return status;
}
@Override
@@ -440,7 +421,7 @@ public class JobServiceImpl implements JobService {
AbstractJob job = jobRepo.findByIdAndDeleted(jobId, false);
if (job == null) {
LOGGER.warn("Job id {} does not exist.", jobId);
- return new ArrayList<>();
+ throw new GriffinException.NotFoundException(JOB_ID_DOES_NOT_EXIST);
}
size = size > MAX_PAGE_SIZE ? MAX_PAGE_SIZE : size;
size = size <= 0 ? DEFAULT_PAGE_SIZE : size;
@@ -492,7 +473,7 @@ public class JobServiceImpl implements JobService {
} catch (IllegalArgumentException e) {
LOGGER.error("Livy status is illegal. {}", e.getMessage());
} catch (Exception e) {
- LOGGER.error("Sync job instances failure. {}",e.getMessage());
+ LOGGER.error("Sync job instances failure. {}", e.getMessage());
}
}
@@ -551,7 +532,7 @@ public class JobServiceImpl implements JobService {
triggers = (List<Trigger>) factory.getObject().getTriggersOfJob(jobKey);
} catch (SchedulerException e) {
LOGGER.error("Job schedule exception. {}", e.getMessage());
- throw new GetHealthInfoFailureException();
+ throw new GriffinException.ServiceException("Fail to Get HealthInfo", e);
}
return triggers;
}
http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/6b1a7000/service/src/main/java/org/apache/griffin/core/job/SparkSubmitJob.java
----------------------------------------------------------------------
diff --git a/service/src/main/java/org/apache/griffin/core/job/SparkSubmitJob.java b/service/src/main/java/org/apache/griffin/core/job/SparkSubmitJob.java
index e089d15..9a9785f 100644
--- a/service/src/main/java/org/apache/griffin/core/job/SparkSubmitJob.java
+++ b/service/src/main/java/org/apache/griffin/core/job/SparkSubmitJob.java
@@ -100,7 +100,7 @@ public class SparkSubmitJob implements Job {
return result;
}
- private boolean success(List<SegmentPredicate> predicates) throws IOException {
+ private boolean success(List<SegmentPredicate> predicates) {
if (CollectionUtils.isEmpty(predicates)) {
return true;
}
@@ -197,8 +197,9 @@ public class SparkSubmitJob implements Job {
String result = post2Livy();
boolean pauseStatus = false;
if (result != null) {
- pauseStatus = jobService.pauseJob(jd.getKey().getGroup(), jd.getKey().getName());
- LOGGER.info("Delete predicate job {}.", pauseStatus ? "success" : "failure");
+ jobService.pauseJob(jd.getKey().getGroup(), jd.getKey().getName());
+ pauseStatus = true;
+ LOGGER.info("Delete predicate job {} success");
}
saveJobInstance(result, LivySessionStates.State.found, pauseStatus);
}
http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/6b1a7000/service/src/main/java/org/apache/griffin/core/measure/ExternalMeasureOperationImpl.java
----------------------------------------------------------------------
diff --git a/service/src/main/java/org/apache/griffin/core/measure/ExternalMeasureOperationImpl.java b/service/src/main/java/org/apache/griffin/core/measure/ExternalMeasureOperationImpl.java
index ab04567..dc7c056 100644
--- a/service/src/main/java/org/apache/griffin/core/measure/ExternalMeasureOperationImpl.java
+++ b/service/src/main/java/org/apache/griffin/core/measure/ExternalMeasureOperationImpl.java
@@ -20,18 +20,19 @@ under the License.
package org.apache.griffin.core.measure;
import org.apache.commons.lang.StringUtils;
+import org.apache.griffin.core.exception.GriffinException;
import org.apache.griffin.core.job.entity.VirtualJob;
import org.apache.griffin.core.job.repo.VirtualJobRepo;
import org.apache.griffin.core.measure.entity.ExternalMeasure;
import org.apache.griffin.core.measure.entity.Measure;
import org.apache.griffin.core.measure.repo.ExternalMeasureRepo;
-import org.apache.griffin.core.util.GriffinOperationMessage;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
+import org.springframework.transaction.annotation.Transactional;
-import static org.apache.griffin.core.util.GriffinOperationMessage.*;
+import static org.apache.griffin.core.exception.GriffinExceptionMessage.MISSING_METRIC_NAME;
@Component("externalOperation")
public class ExternalMeasureOperationImpl implements MeasureOperation {
@@ -43,56 +44,40 @@ public class ExternalMeasureOperationImpl implements MeasureOperation {
private VirtualJobRepo jobRepo;
@Override
- public GriffinOperationMessage create(Measure measure) {
+ @Transactional
+ public Measure create(Measure measure) {
ExternalMeasure em = (ExternalMeasure) measure;
if (StringUtils.isBlank(em.getMetricName())) {
- LOGGER.error("Failed to create external measure {}. Its metric name is blank.", measure.getName());
- return CREATE_MEASURE_FAIL;
- }
- try {
- em.setVirtualJob(new VirtualJob());
- em = measureRepo.save(em);
- VirtualJob vj = genVirtualJob(em, em.getVirtualJob());
- jobRepo.save(vj);
- return CREATE_MEASURE_SUCCESS;
- } catch (Exception e) {
- LOGGER.error("Failed to create new measure {}.{}", em.getName(), e.getMessage());
+ LOGGER.warn("Failed to create external measure {}. Its metric name is blank.", measure.getName());
+ throw new GriffinException.BadRequestException(MISSING_METRIC_NAME);
+
}
- return CREATE_MEASURE_FAIL;
+ em.setVirtualJob(new VirtualJob());
+ em = measureRepo.save(em);
+ VirtualJob vj = genVirtualJob(em, em.getVirtualJob());
+ jobRepo.save(vj);
+ return em;
}
@Override
- public GriffinOperationMessage update(Measure measure) {
+ public void update(Measure measure) {
ExternalMeasure latestMeasure = (ExternalMeasure) measure;
if (StringUtils.isBlank(latestMeasure.getMetricName())) {
- LOGGER.error("Failed to create external measure {}. Its metric name is blank.", measure.getName());
- return UPDATE_MEASURE_FAIL;
- }
- try {
- ExternalMeasure originMeasure = measureRepo.findOne(latestMeasure.getId());
- VirtualJob vj = genVirtualJob(latestMeasure, originMeasure.getVirtualJob());
- latestMeasure.setVirtualJob(vj);
- measureRepo.save(latestMeasure);
- return UPDATE_MEASURE_SUCCESS;
- } catch (Exception e) {
- LOGGER.error("Failed to update measure. {}", e.getMessage());
+ LOGGER.warn("Failed to update external measure {}. Its metric name is blank.", measure.getName());
+ throw new GriffinException.BadRequestException(MISSING_METRIC_NAME);
}
- return UPDATE_MEASURE_FAIL;
+ ExternalMeasure originMeasure = measureRepo.findOne(latestMeasure.getId());
+ VirtualJob vj = genVirtualJob(latestMeasure, originMeasure.getVirtualJob());
+ latestMeasure.setVirtualJob(vj);
+ measureRepo.save(latestMeasure);
}
@Override
- public GriffinOperationMessage delete(Measure measure) {
- try {
- ExternalMeasure em = (ExternalMeasure) measure;
- em.setDeleted(true);
- em.getVirtualJob().setDeleted(true);
- measureRepo.save(em);
- return DELETE_MEASURE_BY_ID_SUCCESS;
- } catch (Exception e) {
- LOGGER.error("Failed to delete measure. {}", e.getMessage());
- }
- return DELETE_MEASURE_BY_ID_FAIL;
-
+ public void delete(Measure measure) {
+ ExternalMeasure em = (ExternalMeasure) measure;
+ em.setDeleted(true);
+ em.getVirtualJob().setDeleted(true);
+ measureRepo.save(em);
}
private VirtualJob genVirtualJob(ExternalMeasure em, VirtualJob vj) {
http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/6b1a7000/service/src/main/java/org/apache/griffin/core/measure/GriffinMeasureOperationImpl.java
----------------------------------------------------------------------
diff --git a/service/src/main/java/org/apache/griffin/core/measure/GriffinMeasureOperationImpl.java b/service/src/main/java/org/apache/griffin/core/measure/GriffinMeasureOperationImpl.java
index b5d9805..22561a4 100644
--- a/service/src/main/java/org/apache/griffin/core/measure/GriffinMeasureOperationImpl.java
+++ b/service/src/main/java/org/apache/griffin/core/measure/GriffinMeasureOperationImpl.java
@@ -20,6 +20,7 @@ under the License.
package org.apache.griffin.core.measure;
import org.apache.commons.lang.StringUtils;
+import org.apache.griffin.core.exception.GriffinException;
import org.apache.griffin.core.job.JobServiceImpl;
import org.apache.griffin.core.measure.entity.DataConnector;
import org.apache.griffin.core.measure.entity.DataSource;
@@ -27,7 +28,6 @@ import org.apache.griffin.core.measure.entity.GriffinMeasure;
import org.apache.griffin.core.measure.entity.Measure;
import org.apache.griffin.core.measure.repo.DataConnectorRepo;
import org.apache.griffin.core.measure.repo.MeasureRepo;
-import org.apache.griffin.core.util.GriffinOperationMessage;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@@ -37,7 +37,7 @@ import org.springframework.util.CollectionUtils;
import java.util.ArrayList;
import java.util.List;
-import static org.apache.griffin.core.util.GriffinOperationMessage.*;
+import static org.apache.griffin.core.exception.GriffinExceptionMessage.INVALID_CONNECTOR_NAME;
@Component("griffinOperation")
public class GriffinMeasureOperationImpl implements MeasureOperation {
@@ -52,58 +52,34 @@ public class GriffinMeasureOperationImpl implements MeasureOperation {
@Override
- public GriffinOperationMessage create(Measure measure) {
- if (!isConnectorNamesValid((GriffinMeasure) measure)) {
- return CREATE_MEASURE_FAIL;
- }
- try {
- measureRepo.save(measure);
- return CREATE_MEASURE_SUCCESS;
- } catch (Exception e) {
- LOGGER.error("Failed to create new measure {}.", measure.getName(), e);
- }
- return CREATE_MEASURE_FAIL;
+ public Measure create(Measure measure) {
+ checkConnectorNames((GriffinMeasure) measure);
+ return measureRepo.save(measure);
}
@Override
- public GriffinOperationMessage update(Measure measure) {
- try {
- measureRepo.save(measure);
- return UPDATE_MEASURE_SUCCESS;
- } catch (Exception e) {
- LOGGER.error("Failed to update measure. {}", e.getMessage());
- }
- return UPDATE_MEASURE_FAIL;
+ public void update(Measure measure) {
+ measureRepo.save(measure);
}
@Override
- public GriffinOperationMessage delete(Measure measure) {
- try {
- boolean pauseStatus = jobService.deleteJobsRelateToMeasure(measure.getId());
- if (!pauseStatus) {
- return DELETE_MEASURE_BY_ID_FAIL;
- }
- measure.setDeleted(true);
- measureRepo.save(measure);
- return DELETE_MEASURE_BY_ID_SUCCESS;
- } catch (Exception e) {
- LOGGER.error(e.getMessage());
- }
- return DELETE_MEASURE_BY_ID_FAIL;
+ public void delete(Measure measure) {
+ jobService.deleteJobsRelateToMeasure(measure.getId());
+ measure.setDeleted(true);
+ measureRepo.save(measure);
}
- private boolean isConnectorNamesValid(GriffinMeasure measure) {
+ private void checkConnectorNames(GriffinMeasure measure) {
List<String> names = getConnectorNames(measure);
if (names.size() == 0) {
LOGGER.warn("Connector names cannot be empty.");
- return false;
+ throw new GriffinException.BadRequestException(INVALID_CONNECTOR_NAME);
}
List<DataConnector> connectors = dcRepo.findByConnectorNames(names);
if (!CollectionUtils.isEmpty(connectors)) {
LOGGER.warn("Failed to create new measure {}. It's connector names already exist. ", measure.getName());
- return false;
+ throw new GriffinException.BadRequestException(INVALID_CONNECTOR_NAME);
}
- return true;
}
private List<String> getConnectorNames(GriffinMeasure measure) {
http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/6b1a7000/service/src/main/java/org/apache/griffin/core/measure/MeasureController.java
----------------------------------------------------------------------
diff --git a/service/src/main/java/org/apache/griffin/core/measure/MeasureController.java b/service/src/main/java/org/apache/griffin/core/measure/MeasureController.java
index 3b557ca..91ffaac 100644
--- a/service/src/main/java/org/apache/griffin/core/measure/MeasureController.java
+++ b/service/src/main/java/org/apache/griffin/core/measure/MeasureController.java
@@ -20,8 +20,8 @@ under the License.
package org.apache.griffin.core.measure;
import org.apache.griffin.core.measure.entity.Measure;
-import org.apache.griffin.core.util.GriffinOperationMessage;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@@ -43,13 +43,15 @@ public class MeasureController {
}
@RequestMapping(value = "/measures/{id}", method = RequestMethod.DELETE)
- public GriffinOperationMessage deleteMeasureById(@PathVariable("id") Long id) {
- return measureService.deleteMeasureById(id);
+ @ResponseStatus(HttpStatus.NO_CONTENT)
+ public void deleteMeasureById(@PathVariable("id") Long id) {
+ measureService.deleteMeasureById(id);
}
@RequestMapping(value = "/measures", method = RequestMethod.PUT)
- public GriffinOperationMessage updateMeasure(@RequestBody Measure measure) {
- return measureService.updateMeasure(measure);
+ @ResponseStatus(HttpStatus.NO_CONTENT)
+ public void updateMeasure(@RequestBody Measure measure) {
+ measureService.updateMeasure(measure);
}
@RequestMapping(value = "/measures/owner/{owner}", method = RequestMethod.GET)
@@ -58,7 +60,8 @@ public class MeasureController {
}
@RequestMapping(value = "/measures", method = RequestMethod.POST)
- public GriffinOperationMessage createMeasure(@RequestBody Measure measure) {
+ @ResponseStatus(HttpStatus.CREATED)
+ public Measure createMeasure(@RequestBody Measure measure) {
return measureService.createMeasure(measure);
}
}
http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/6b1a7000/service/src/main/java/org/apache/griffin/core/measure/MeasureOperation.java
----------------------------------------------------------------------
diff --git a/service/src/main/java/org/apache/griffin/core/measure/MeasureOperation.java b/service/src/main/java/org/apache/griffin/core/measure/MeasureOperation.java
index 81e9f06..1ebc06c 100644
--- a/service/src/main/java/org/apache/griffin/core/measure/MeasureOperation.java
+++ b/service/src/main/java/org/apache/griffin/core/measure/MeasureOperation.java
@@ -21,14 +21,13 @@ package org.apache.griffin.core.measure;
import org.apache.griffin.core.measure.entity.Measure;
-import org.apache.griffin.core.util.GriffinOperationMessage;
public interface MeasureOperation {
- GriffinOperationMessage create(Measure measure);
+ Measure create(Measure measure);
- GriffinOperationMessage update(Measure measure);
+ void update(Measure measure);
- GriffinOperationMessage delete(Measure measure);
+ void delete(Measure measure);
}
http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/6b1a7000/service/src/main/java/org/apache/griffin/core/measure/MeasureService.java
----------------------------------------------------------------------
diff --git a/service/src/main/java/org/apache/griffin/core/measure/MeasureService.java b/service/src/main/java/org/apache/griffin/core/measure/MeasureService.java
index a330d0a..818db47 100644
--- a/service/src/main/java/org/apache/griffin/core/measure/MeasureService.java
+++ b/service/src/main/java/org/apache/griffin/core/measure/MeasureService.java
@@ -21,7 +21,6 @@ package org.apache.griffin.core.measure;
import org.apache.griffin.core.measure.entity.Measure;
-import org.apache.griffin.core.util.GriffinOperationMessage;
import java.util.List;
@@ -36,16 +35,16 @@ public interface MeasureService {
*/
- GriffinOperationMessage deleteMeasureById(Long id);
+ void deleteMeasureById(Long id);
/*
GriffinOperationMessage deleteMeasureByName(String measureName) ;
*/
- GriffinOperationMessage updateMeasure(Measure measure);
+ void updateMeasure(Measure measure);
List<Measure> getAliveMeasuresByOwner(String owner);
- GriffinOperationMessage createMeasure(Measure measure);
+ Measure createMeasure(Measure measure);
}
http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/6b1a7000/service/src/main/java/org/apache/griffin/core/measure/MeasureServiceImpl.java
----------------------------------------------------------------------
diff --git a/service/src/main/java/org/apache/griffin/core/measure/MeasureServiceImpl.java b/service/src/main/java/org/apache/griffin/core/measure/MeasureServiceImpl.java
index 86dc9a9..d9d7cd8 100644
--- a/service/src/main/java/org/apache/griffin/core/measure/MeasureServiceImpl.java
+++ b/service/src/main/java/org/apache/griffin/core/measure/MeasureServiceImpl.java
@@ -20,10 +20,10 @@ under the License.
package org.apache.griffin.core.measure;
+import org.apache.griffin.core.exception.GriffinException;
import org.apache.griffin.core.measure.entity.GriffinMeasure;
import org.apache.griffin.core.measure.entity.Measure;
import org.apache.griffin.core.measure.repo.MeasureRepo;
-import org.apache.griffin.core.util.GriffinOperationMessage;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@@ -33,7 +33,7 @@ import org.springframework.util.CollectionUtils;
import java.util.List;
-import static org.apache.griffin.core.util.GriffinOperationMessage.*;
+import static org.apache.griffin.core.exception.GriffinExceptionMessage.*;
@Service
public class MeasureServiceImpl implements MeasureService {
@@ -55,7 +55,11 @@ public class MeasureServiceImpl implements MeasureService {
@Override
public Measure getMeasureById(long id) {
- return measureRepo.findByIdAndDeleted(id, false);
+ Measure measure = measureRepo.findByIdAndDeleted(id, false);
+ if (measure == null) {
+ throw new GriffinException.NotFoundException(MEASURE_ID_DOES_NOT_EXIST);
+ }
+ return measure;
}
@Override
@@ -64,38 +68,38 @@ public class MeasureServiceImpl implements MeasureService {
}
@Override
- public GriffinOperationMessage createMeasure(Measure measure) {
+ public Measure createMeasure(Measure measure) {
List<Measure> aliveMeasureList = measureRepo.findByNameAndDeleted(measure.getName(), false);
if (!CollectionUtils.isEmpty(aliveMeasureList)) {
LOGGER.warn("Failed to create new measure {}, it already exists.", measure.getName());
- return CREATE_MEASURE_FAIL_DUPLICATE;
+ throw new GriffinException.ConflictException(MEASURE_NAME_ALREADY_EXIST);
}
MeasureOperation op = getOperation(measure);
return op.create(measure);
}
@Override
- public GriffinOperationMessage updateMeasure(Measure measure) {
+ public void updateMeasure(Measure measure) {
Measure m = measureRepo.findByIdAndDeleted(measure.getId(), false);
if (m == null) {
- return RESOURCE_NOT_FOUND;
+ throw new GriffinException.NotFoundException(MEASURE_ID_DOES_NOT_EXIST);
}
if (!m.getType().equals(measure.getType())) {
- LOGGER.error("Can't update measure to different type.");
- return UPDATE_MEASURE_FAIL;
+ LOGGER.warn("Can't update measure to different type.");
+ throw new GriffinException.BadRequestException(MEASURE_TYPE_DOES_NOT_MATCH);
}
MeasureOperation op = getOperation(measure);
- return op.update(measure);
+ op.update(measure);
}
@Override
- public GriffinOperationMessage deleteMeasureById(Long measureId) {
+ public void deleteMeasureById(Long measureId) {
Measure measure = measureRepo.findByIdAndDeleted(measureId, false);
if (measure == null) {
- return RESOURCE_NOT_FOUND;
+ throw new GriffinException.NotFoundException(MEASURE_ID_DOES_NOT_EXIST);
}
MeasureOperation op = getOperation(measure);
- return op.delete(measure);
+ op.delete(measure);
}
private MeasureOperation getOperation(Measure measure) {
http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/6b1a7000/service/src/main/java/org/apache/griffin/core/metastore/hive/HiveMetaStoreServiceImpl.java
----------------------------------------------------------------------
diff --git a/service/src/main/java/org/apache/griffin/core/metastore/hive/HiveMetaStoreServiceImpl.java b/service/src/main/java/org/apache/griffin/core/metastore/hive/HiveMetaStoreServiceImpl.java
index 67f171f..8c41008 100644
--- a/service/src/main/java/org/apache/griffin/core/metastore/hive/HiveMetaStoreServiceImpl.java
+++ b/service/src/main/java/org/apache/griffin/core/metastore/hive/HiveMetaStoreServiceImpl.java
@@ -73,7 +73,7 @@ public class HiveMetaStoreServiceImpl implements HiveMetaStoreService {
Iterable<String> results = null;
try {
if (client == null) {
- LOGGER.warn("Hive client is null.Please check your hive config.");
+ LOGGER.warn("Hive client is null. Please check your hive config.");
return new ArrayList<>();
}
results = client.getAllDatabases();
@@ -91,7 +91,7 @@ public class HiveMetaStoreServiceImpl implements HiveMetaStoreService {
Iterable<String> results = null;
try {
if (client == null) {
- LOGGER.warn("Hive client is null.Please check your hive config.");
+ LOGGER.warn("Hive client is null. Please check your hive config.");
return new ArrayList<>();
}
results = client.getAllTables(getUseDbName(dbName));
@@ -117,7 +117,7 @@ public class HiveMetaStoreServiceImpl implements HiveMetaStoreService {
Iterable<String> dbs;
// if hive.metastore.uris in application.properties configs wrong, client will be injected failure and will be null.
if (client == null) {
- LOGGER.warn("Hive client is null.Please check your hive config.");
+ LOGGER.warn("Hive client is null. Please check your hive config.");
return results;
}
dbs = getAllDatabases();
@@ -136,7 +136,7 @@ public class HiveMetaStoreServiceImpl implements HiveMetaStoreService {
Table result = null;
try {
if (client == null) {
- LOGGER.warn("Hive client is null.Please check your hive config.");
+ LOGGER.warn("Hive client is null. Please check your hive config.");
return null;
}
result = client.getTable(getUseDbName(dbName), tableName);
@@ -153,7 +153,7 @@ public class HiveMetaStoreServiceImpl implements HiveMetaStoreService {
List<Table> allTables = new ArrayList<>();
try {
if (client == null) {
- LOGGER.warn("Hive client is null.Please check your hive config.");
+ LOGGER.warn("Hive client is null. Please check your hive config.");
return allTables;
}
Iterable<String> tables = client.getAllTables(useDbName);
http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/6b1a7000/service/src/main/java/org/apache/griffin/core/metric/MetricController.java
----------------------------------------------------------------------
diff --git a/service/src/main/java/org/apache/griffin/core/metric/MetricController.java b/service/src/main/java/org/apache/griffin/core/metric/MetricController.java
index 359858b..6a2c51c 100644
--- a/service/src/main/java/org/apache/griffin/core/metric/MetricController.java
+++ b/service/src/main/java/org/apache/griffin/core/metric/MetricController.java
@@ -21,8 +21,8 @@ package org.apache.griffin.core.metric;
import org.apache.griffin.core.metric.model.Metric;
import org.apache.griffin.core.metric.model.MetricValue;
-import org.apache.griffin.core.util.GriffinOperationMessage;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
@@ -49,12 +49,13 @@ public class MetricController {
}
@RequestMapping(value = "/metrics/values", method = RequestMethod.POST)
- public ResponseEntity<GriffinOperationMessage> addMetricValues(@RequestBody List<MetricValue> values) {
+ public ResponseEntity addMetricValues(@RequestBody List<MetricValue> values) {
return metricService.addMetricValues(values);
}
@RequestMapping(value = "/metrics/values", method = RequestMethod.DELETE)
- public ResponseEntity<GriffinOperationMessage> deleteMetricValues(@RequestParam("metricName") String metricName) {
+ @ResponseStatus(HttpStatus.NO_CONTENT)
+ public ResponseEntity deleteMetricValues(@RequestParam("metricName") String metricName) {
return metricService.deleteMetricValues(metricName);
}
}
http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/6b1a7000/service/src/main/java/org/apache/griffin/core/metric/MetricService.java
----------------------------------------------------------------------
diff --git a/service/src/main/java/org/apache/griffin/core/metric/MetricService.java b/service/src/main/java/org/apache/griffin/core/metric/MetricService.java
index 502f254..f68d83c 100644
--- a/service/src/main/java/org/apache/griffin/core/metric/MetricService.java
+++ b/service/src/main/java/org/apache/griffin/core/metric/MetricService.java
@@ -22,7 +22,6 @@ package org.apache.griffin.core.metric;
import org.apache.griffin.core.metric.model.Metric;
import org.apache.griffin.core.metric.model.MetricValue;
-import org.apache.griffin.core.util.GriffinOperationMessage;
import org.springframework.http.ResponseEntity;
import java.util.List;
@@ -34,7 +33,7 @@ public interface MetricService {
List<MetricValue> getMetricValues(String metricName, int offset, int size);
- ResponseEntity<GriffinOperationMessage> addMetricValues(List<MetricValue> values);
+ ResponseEntity addMetricValues(List<MetricValue> values);
- ResponseEntity<GriffinOperationMessage> deleteMetricValues(String metricName);
+ ResponseEntity deleteMetricValues(String metricName);
}
http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/6b1a7000/service/src/main/java/org/apache/griffin/core/metric/MetricServiceImpl.java
----------------------------------------------------------------------
diff --git a/service/src/main/java/org/apache/griffin/core/metric/MetricServiceImpl.java b/service/src/main/java/org/apache/griffin/core/metric/MetricServiceImpl.java
index 4d992e2..b09c050 100644
--- a/service/src/main/java/org/apache/griffin/core/metric/MetricServiceImpl.java
+++ b/service/src/main/java/org/apache/griffin/core/metric/MetricServiceImpl.java
@@ -22,26 +22,29 @@ package org.apache.griffin.core.metric;
import org.apache.commons.collections.MapUtils;
import org.apache.commons.lang.StringUtils;
+import org.apache.griffin.core.exception.GriffinException;
import org.apache.griffin.core.job.entity.AbstractJob;
import org.apache.griffin.core.job.repo.JobRepo;
import org.apache.griffin.core.measure.entity.Measure;
import org.apache.griffin.core.measure.repo.MeasureRepo;
import org.apache.griffin.core.metric.model.Metric;
import org.apache.griffin.core.metric.model.MetricValue;
-import org.apache.griffin.core.util.GriffinOperationMessage;
-import org.elasticsearch.client.ResponseException;
+import org.codehaus.jackson.JsonProcessingException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;
-import java.util.*;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;
-import static org.apache.griffin.core.util.GriffinOperationMessage.*;
+import static org.apache.griffin.core.exception.GriffinExceptionMessage.*;
@Service
public class MetricServiceImpl implements MetricService {
@@ -78,53 +81,49 @@ public class MetricServiceImpl implements MetricService {
@Override
public List<MetricValue> getMetricValues(String metricName, int offset, int size) {
+ if (offset < 0) {
+ throw new GriffinException.BadRequestException(INVALID_METRIC_RECORDS_OFFSET);
+ }
+ if (size < 0) {
+ throw new GriffinException.BadRequestException(INVALID_METRIC_RECORDS_SIZE);
+ }
try {
return metricStore.getMetricValues(metricName, offset, size);
- } catch (Exception e) {
+ } catch (IOException e) {
LOGGER.error("Failed to get metric values named {}. {}", metricName, e.getMessage());
+ throw new GriffinException.ServiceException("Failed to get metric values", e);
}
- return Collections.emptyList();
}
@Override
public ResponseEntity addMetricValues(List<MetricValue> values) {
for (MetricValue value : values) {
- if (!isMetricValueValid(value)) {
- LOGGER.warn("Invalid metric value.");
- return new ResponseEntity<>(ADD_METRIC_VALUES_FAIL, HttpStatus.BAD_REQUEST);
- }
+ checkFormat(value);
}
try {
- for (MetricValue value : values) {
- metricStore.addMetricValue(value);
- }
- return new ResponseEntity<>(ADD_METRIC_VALUES_SUCCESS, HttpStatus.CREATED);
- } catch (ResponseException e) {
- LOGGER.error("Failed to add metric values. {}", e.getMessage());
- HttpStatus status = HttpStatus.valueOf(e.getResponse().getStatusLine().getStatusCode());
- return new ResponseEntity<>(ADD_METRIC_VALUES_FAIL, status);
- } catch (Exception e) {
- LOGGER.error("Failed to add metric values. {}", e.getMessage());
- return new ResponseEntity<>(ADD_METRIC_VALUES_FAIL, HttpStatus.INTERNAL_SERVER_ERROR);
+ return metricStore.addMetricValues(values);
+ } catch (JsonProcessingException e) {
+ LOGGER.warn("Failed to parse metric value.", e.getMessage());
+ throw new GriffinException.BadRequestException(INVALID_METRIC_VALUE_FORMAT);
+ } catch (IOException e) {
+ LOGGER.error("Failed to add metric values", e);
+ throw new GriffinException.ServiceException("Failed to add metric values", e);
}
}
- private boolean isMetricValueValid(MetricValue value) {
- return StringUtils.isNotBlank(value.getName()) && value.getTmst() != null && MapUtils.isNotEmpty(value.getValue());
- }
-
@Override
- public ResponseEntity<GriffinOperationMessage> deleteMetricValues(String metricName) {
+ public ResponseEntity deleteMetricValues(String metricName) {
try {
- metricStore.deleteMetricValues(metricName);
- return ResponseEntity.ok(DELETE_METRIC_VALUES_SUCCESS);
- } catch (ResponseException e) {
- LOGGER.error("Failed to delete metric values named {}. {}", metricName, e.getMessage());
- HttpStatus status = HttpStatus.valueOf(e.getResponse().getStatusLine().getStatusCode());
- return new ResponseEntity<>(DELETE_METRIC_VALUES_FAIL, status);
- } catch (Exception e) {
+ return metricStore.deleteMetricValues(metricName);
+ } catch (IOException e) {
LOGGER.error("Failed to delete metric values named {}. {}", metricName, e.getMessage());
- return new ResponseEntity<>(DELETE_METRIC_VALUES_FAIL, HttpStatus.INTERNAL_SERVER_ERROR);
+ throw new GriffinException.ServiceException("Failed to delete metric values.", e);
+ }
+ }
+
+ private void checkFormat(MetricValue value) {
+ if (StringUtils.isBlank(value.getName()) || value.getTmst() == null || MapUtils.isEmpty(value.getValue())) {
+ throw new GriffinException.BadRequestException(INVALID_METRIC_VALUE_FORMAT);
}
}
}
http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/6b1a7000/service/src/main/java/org/apache/griffin/core/metric/MetricStore.java
----------------------------------------------------------------------
diff --git a/service/src/main/java/org/apache/griffin/core/metric/MetricStore.java b/service/src/main/java/org/apache/griffin/core/metric/MetricStore.java
index 12068f6..dacac1d 100644
--- a/service/src/main/java/org/apache/griffin/core/metric/MetricStore.java
+++ b/service/src/main/java/org/apache/griffin/core/metric/MetricStore.java
@@ -20,14 +20,16 @@ under the License.
package org.apache.griffin.core.metric;
import org.apache.griffin.core.metric.model.MetricValue;
+import org.springframework.http.ResponseEntity;
+import java.io.IOException;
import java.util.List;
public interface MetricStore {
- List<MetricValue> getMetricValues(String metricName, int from, int size) throws Exception;
+ List<MetricValue> getMetricValues(String metricName, int from, int size) throws IOException;
- void addMetricValue(MetricValue metricValue) throws Exception;
+ ResponseEntity addMetricValues(List<MetricValue> metricValues) throws IOException;
- void deleteMetricValues(String metricName) throws Exception;
+ ResponseEntity deleteMetricValues(String metricName) throws IOException;
}
http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/6b1a7000/service/src/main/java/org/apache/griffin/core/metric/MetricStoreImpl.java
----------------------------------------------------------------------
diff --git a/service/src/main/java/org/apache/griffin/core/metric/MetricStoreImpl.java b/service/src/main/java/org/apache/griffin/core/metric/MetricStoreImpl.java
index d055b37..4ddf581 100644
--- a/service/src/main/java/org/apache/griffin/core/metric/MetricStoreImpl.java
+++ b/service/src/main/java/org/apache/griffin/core/metric/MetricStoreImpl.java
@@ -28,12 +28,15 @@ import org.apache.griffin.core.util.JsonUtil;
import org.apache.http.HttpEntity;
import org.apache.http.HttpHost;
import org.apache.http.entity.ContentType;
-import org.apache.http.message.BasicHeader;
import org.apache.http.nio.entity.NStringEntity;
import org.apache.http.util.EntityUtils;
import org.elasticsearch.client.Response;
import org.elasticsearch.client.RestClient;
import org.springframework.beans.factory.annotation.Value;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.MediaType;
+import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Component;
import java.io.IOException;
@@ -42,23 +45,36 @@ import java.util.*;
@Component
public class MetricStoreImpl implements MetricStore {
- private RestClient client;
+ private static final String INDEX = "griffin";
+ private static final String TYPE = "accuracy";
+ private static final String URL_BASE = "/griffin/accuracy";
- private ObjectMapper mapper = new ObjectMapper();
+ private RestClient client;
+ private HttpHeaders headers;
+ private String url_get;
+ private String url_delete;
+ private String url_post;
+ private ObjectMapper mapper;
- public MetricStoreImpl(@Value("${elasticsearch.host}") String host, @Value("${elasticsearch.port}") int port) throws IOException {
+ public MetricStoreImpl(@Value("${elasticsearch.host}") String host, @Value("${elasticsearch.port}") int port) {
client = RestClient.builder(new HttpHost(host, port, "http")).build();
+ HttpHeaders headers = new HttpHeaders();
+ headers.setContentType(MediaType.APPLICATION_JSON);
+ this.headers = headers;
+ this.url_get = URL_BASE + "/_search?filter_path=hits.hits._source";
+ this.url_post = URL_BASE + "/_bulk";
+ this.url_delete = URL_BASE + "/_delete_by_query";
+ this.mapper = new ObjectMapper();
}
@Override
- public List<MetricValue> getMetricValues(String metricName, int from, int size) throws Exception {
- HttpEntity entity = getHttpEntity(metricName, from, size);
- Response response = client.performRequest("GET", "/griffin/accuracy/_search?filter_path=hits.hits._source",
- Collections.emptyMap(), entity, new BasicHeader("Content-Type", "application/json"));
- return getMetricValues(response);
+ public List<MetricValue> getMetricValues(String metricName, int from, int size) throws IOException {
+ HttpEntity entity = getHttpEntityForSearch(metricName, from, size);
+ Response response = client.performRequest("GET", url_get, Collections.emptyMap(), entity);
+ return getMetricValuesFromResponse(response);
}
- private HttpEntity getHttpEntity(String metricName, int from, int size) throws JsonProcessingException {
+ private HttpEntity getHttpEntityForSearch(String metricName, int from, int size) throws JsonProcessingException {
Map<String, Object> map = new HashMap<>();
Map<String, Object> queryParam = Collections.singletonMap("term", Collections.singletonMap("name.keyword", metricName));
Map<String, Object> sortParam = Collections.singletonMap("tmst", Collections.singletonMap("order", "desc"));
@@ -69,7 +85,7 @@ public class MetricStoreImpl implements MetricStore {
return new NStringEntity(JsonUtil.toJson(map), ContentType.APPLICATION_JSON);
}
- private List<MetricValue> getMetricValues(Response response) throws IOException {
+ private List<MetricValue> getMetricValuesFromResponse(Response response) throws IOException {
List<MetricValue> metricValues = new ArrayList<>();
JsonNode jsonNode = mapper.readTree(EntityUtils.toString(response.getEntity()));
if (jsonNode.hasNonNull("hits") && jsonNode.get("hits").hasNonNull("hits")) {
@@ -84,19 +100,38 @@ public class MetricStoreImpl implements MetricStore {
}
@Override
- public void addMetricValue(MetricValue metricValue) throws Exception {
- HttpEntity entity = new NStringEntity(JsonUtil.toJson(metricValue), ContentType.APPLICATION_JSON);
- client.performRequest("POST", "/griffin/accuracy", Collections.emptyMap(), entity,
- new BasicHeader("Content-Type", "application/json"));
+ public ResponseEntity addMetricValues(List<MetricValue> metricValues) throws IOException {
+ String bulkRequestBody = getBulkRequestBody(metricValues);
+ HttpEntity entity = new NStringEntity(bulkRequestBody, ContentType.APPLICATION_JSON);
+ Response response = client.performRequest("POST", url_post, Collections.emptyMap(), entity);
+ return getResponseEntityFromResponse(response);
+
+ }
+ private String getBulkRequestBody(List<MetricValue> metricValues) throws JsonProcessingException {
+ String actionMetaData = String.format("{ \"index\" : { \"_index\" : \"%s\", \"_type\" : \"%s\" } }\n", INDEX, TYPE);
+ StringBuilder bulkRequestBody = new StringBuilder();
+ for (MetricValue metricValue : metricValues) {
+ bulkRequestBody.append(actionMetaData);
+ bulkRequestBody.append(JsonUtil.toJson(metricValue));
+ bulkRequestBody.append("\n");
+ }
+ return bulkRequestBody.toString();
}
+
@Override
- public void deleteMetricValues(String metricName) throws Exception {
+ public ResponseEntity deleteMetricValues(String metricName) throws IOException {
Map<String, Object> param = Collections.singletonMap("query",
Collections.singletonMap("term", Collections.singletonMap("name.keyword", metricName)));
HttpEntity entity = new NStringEntity(JsonUtil.toJson(param), ContentType.APPLICATION_JSON);
- client.performRequest("POST", "/griffin/accuracy/_delete_by_query", Collections.emptyMap(),
- entity, new BasicHeader("Content-Type", "application/json"));
+ Response response = client.performRequest("POST", url_delete, Collections.emptyMap(), entity);
+ return getResponseEntityFromResponse(response);
+ }
+
+ private ResponseEntity getResponseEntityFromResponse(Response response) throws IOException {
+ String body = EntityUtils.toString(response.getEntity());
+ HttpStatus status = HttpStatus.valueOf(response.getStatusLine().getStatusCode());
+ return new ResponseEntity<>(body, headers, status);
}
}
http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/6b1a7000/service/src/main/java/org/apache/griffin/core/util/GriffinOperationMessage.java
----------------------------------------------------------------------
diff --git a/service/src/main/java/org/apache/griffin/core/util/GriffinOperationMessage.java b/service/src/main/java/org/apache/griffin/core/util/GriffinOperationMessage.java
deleted file mode 100644
index 86f1aac..0000000
--- a/service/src/main/java/org/apache/griffin/core/util/GriffinOperationMessage.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
-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.griffin.core.util;
-
-
-import com.fasterxml.jackson.annotation.JsonFormat;
-
-@JsonFormat(shape = JsonFormat.Shape.OBJECT)
-public enum GriffinOperationMessage {
- //success
- CREATE_MEASURE_SUCCESS(201, "Create Measure Succeed"),
- DELETE_MEASURE_BY_ID_SUCCESS(202, "Delete Measures By Id Succeed"),
- DELETE_MEASURE_BY_NAME_SUCCESS(203, "Delete Measures By Name Succeed"),
- UPDATE_MEASURE_SUCCESS(204, "Update Measure Succeed"),
- CREATE_JOB_SUCCESS(205, "Create Job Succeed"),
- DELETE_JOB_SUCCESS(206, "Delete Job Succeed"),
- SET_JOB_DELETED_STATUS_SUCCESS(207, "Set Job Deleted Status Succeed"),
- PAUSE_JOB_SUCCESS(208, "Pause Job Succeed"),
- UPDATE_JOB_INSTANCE_SUCCESS(209, "Update Job Instance Succeed"),
- ADD_METRIC_VALUES_SUCCESS(210, "Add Metric Values Succeed"),
- DELETE_METRIC_VALUES_SUCCESS(211, "Delete Metric Values Succeed"),
-
- //failed
- RESOURCE_NOT_FOUND(400, "Resource Not Found"),
- CREATE_MEASURE_FAIL(401, "Create Measure Failed"),
- DELETE_MEASURE_BY_ID_FAIL(402, "Delete Measures By Id Failed"),
- DELETE_MEASURE_BY_NAME_FAIL(403, "Delete Measures By Name Failed"),
- UPDATE_MEASURE_FAIL(404, "Update Measure Failed"),
- CREATE_JOB_FAIL(405, "Create Job Failed"),
- DELETE_JOB_FAIL(406, "Delete Job Failed"),
- SET_JOB_DELETED_STATUS_FAIL(407, "Set Job Deleted Status Failed"),
- PAUSE_JOB_FAIL(408, "Pause Job Failed"),
- UPDATE_JOB_INSTANCE_FAIL(409, "Update Job Instance Failed"),
- CREATE_MEASURE_FAIL_DUPLICATE(410, "Create Measure Failed, duplicate records"),
- UNEXPECTED_RUNTIME_EXCEPTION(411, "Unexpected RuntimeException"),
- ADD_METRIC_VALUES_FAIL(412, "Add Metric Values Failed"),
- DELETE_METRIC_VALUES_FAIL(413, "Delete Metric Values Failed");
-
- private final int code;
- private final String description;
-
- GriffinOperationMessage(int code, String description) {
- this.code = code;
- this.description = description;
- }
-
- public int getCode() {
- return code;
- }
-
- public String getDescription() {
- return description;
- }
-
- @Override
- public String toString() {
- return "GriffinOperationMessage{" +
- "code=" + code +
- ", description='" + description + '\'' +
- '}';
- }
-}