private static Result toResult(long reqId, com.yahoo.messagebus.Result mbusResult) { if (mbusResult.isAccepted()) { return new Result(reqId); } return new Result( messageBusErrorToResultType(mbusResult.getError().getCode()), new Error(mbusResult.getError().getMessage() + " (" + mbusResult.getError().getCode() + ")")); }
@Override public Result get(DocumentId id, DocumentProtocol.Priority pri) { long req = getNextRequestId(); try { addResponse(new DocumentResponse(req, syncSession.get(id))); } catch (Exception e) { addResponse(new DocumentResponse(req, e.getMessage(), false)); } return new Result(req); }
/** * A convenience method for assigning the internal trace level and route string to a message before sending it * through the internal mbus session object. * * @param msg the message to send. * @return the document api result object. */ public Result send(Message msg) { try { long reqId = requestId.incrementAndGet(); msg.setContext(reqId); msg.getTrace().setLevel(traceLevel); String toRoute = (msg.getType() == DocumentProtocol.MESSAGE_GETDOCUMENT ? routeForGet : route); if (toRoute != null) { return toResult(reqId, session.send(msg, toRoute, true)); } else { return toResult(reqId, session.send(msg)); } } catch (Exception e) { return new Result(Result.ResultType.FATAL_ERROR, new Error(e.getMessage(), e)); } }
@Override public Result put(Document document, DocumentProtocol.Priority pri) { long req = getNextRequestId(); try { syncSession.put(new DocumentPut(document), pri); addResponse(new DocumentResponse(req)); } catch (Exception e) { addResponse(new DocumentResponse(req, document, e.getMessage(), false)); } return new Result(req); }
@Override public Result update(DocumentUpdate update, DocumentProtocol.Priority pri) { long req = getNextRequestId(); if (syncSession.update(update, pri)) { addResponse(new UpdateResponse(req, true)); } else { addResponse(new DocumentUpdateResponse(req, update, "Document not found.", false)); } return new Result(req); }
@Override public Result remove(DocumentId id, DocumentProtocol.Priority pri) { long req = getNextRequestId(); if (syncSession.remove(new DocumentRemove(id), pri)) { addResponse(new RemoveResponse(req, true)); } else { addResponse(new DocumentIdResponse(req, id, "Document not found.", false)); } return new Result(req); }