Skip to content

Commit f9076b3

Browse files
committed
Added custom error response
1 parent 7dccc8c commit f9076b3

File tree

2 files changed

+36
-4
lines changed

2 files changed

+36
-4
lines changed
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package in.erail.service;
2+
3+
import com.google.common.net.MediaType;
4+
5+
/**
6+
*
7+
* @author vinay
8+
*/
9+
public interface CustomException {
10+
11+
default public MediaType getMediaType() {
12+
return MediaType.JSON_UTF_8;
13+
}
14+
15+
default int getStatusCode() {
16+
return 400;
17+
}
18+
}

src/main/java/in/erail/service/RESTServiceImpl.java

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
import io.reactivex.Single;
1818
import io.vertx.reactivex.core.eventbus.Message;
1919
import java.util.Arrays;
20+
import java.util.Optional;
2021
import org.apache.commons.lang3.exception.ExceptionUtils;
2122

2223
/**
@@ -69,10 +70,22 @@ public Single<JsonObject> handleRequest(Message<JsonObject> pMessage) {
6970
.map(resp -> JsonObject.mapFrom(resp.getResponse()))
7071
.doOnSuccess(resp -> pMessage.reply(resp))
7172
.doOnError(err -> {
72-
ResponseEvent resp = getResponseEventClass().newInstance()
73-
.setStatusCode(HttpResponseStatus.BAD_REQUEST.code())
74-
.setMediaType(MediaType.PLAIN_TEXT_UTF_8)
75-
.setBody(ExceptionUtils.getMessage(err).getBytes());
73+
ResponseEvent resp = getResponseEventClass().newInstance();
74+
75+
if (CustomException.class.isAssignableFrom(err.getClass())) {
76+
CustomException cerr = (CustomException) err;
77+
String msg = Optional.ofNullable(err.getMessage()).orElse("");
78+
resp
79+
.setBody(msg.getBytes())
80+
.setMediaType(cerr.getMediaType())
81+
.setStatusCode(cerr.getStatusCode());
82+
} else {
83+
resp
84+
.setBody(ExceptionUtils.getMessage(err).getBytes())
85+
.setMediaType(MediaType.PLAIN_TEXT_UTF_8)
86+
.setStatusCode(HttpResponseStatus.BAD_REQUEST.code());
87+
}
88+
7689
pMessage.reply(JsonObject.mapFrom(resp));
7790
})
7891
.doOnError(oerr -> getLog().error(() -> String.format("Process exception:[%s],Error:[%s]", getServiceUniqueId(), ExceptionUtils.getStackTrace(oerr))))
@@ -103,6 +116,7 @@ protected MaybeTransformer<Event, Event> composePipeline(MaybeTransformer<Event,
103116
public final MaybeSource<Event> apply(Maybe<Event> pRequest) {
104117
return process(pRequest);
105118
}
119+
106120
public abstract MaybeSource<Event> process(Maybe<Event> pEvent);
107121

108122
@Override

0 commit comments

Comments
 (0)