|
17 | 17 | import io.reactivex.Single; |
18 | 18 | import io.vertx.reactivex.core.eventbus.Message; |
19 | 19 | import java.util.Arrays; |
| 20 | +import java.util.Optional; |
20 | 21 | import org.apache.commons.lang3.exception.ExceptionUtils; |
21 | 22 |
|
22 | 23 | /** |
@@ -69,10 +70,22 @@ public Single<JsonObject> handleRequest(Message<JsonObject> pMessage) { |
69 | 70 | .map(resp -> JsonObject.mapFrom(resp.getResponse())) |
70 | 71 | .doOnSuccess(resp -> pMessage.reply(resp)) |
71 | 72 | .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 | + |
76 | 89 | pMessage.reply(JsonObject.mapFrom(resp)); |
77 | 90 | }) |
78 | 91 | .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, |
103 | 116 | public final MaybeSource<Event> apply(Maybe<Event> pRequest) { |
104 | 117 | return process(pRequest); |
105 | 118 | } |
| 119 | + |
106 | 120 | public abstract MaybeSource<Event> process(Maybe<Event> pEvent); |
107 | 121 |
|
108 | 122 | @Override |
|
0 commit comments