@Override public Object callServerModuleMethod(String aModuleName, String aMethodName, Scripts.Space aSpace, JSObject onSuccess, JSObject onFailure, Object... aArguments) throws Exception { if (Scripts.getContext() != null) { Scripts.getContext().incAsyncsCount(); } assert Scripts.getSpace() == aSpace; serverCore.executeMethod(aModuleName, aMethodName, aArguments, false, onSuccess != null ? (Object aResult) -> { onSuccess.call(null, new Object[]{aSpace.toJs(aResult)}); } : null, (Exception ex) -> { if (onFailure != null) { onFailure.call(null, new Object[]{ex instanceof JsObjectException ? ((JsObjectException) ex).getData() : ex.toString()}); } else { Logger.getLogger(LocalServerModulesProxy.class.getName()).log(Level.SEVERE, ex.toString()); } }); return null;// Only asynchronous form is allowed. }
public Exception handleErrorResponse(ExceptionResponse aResponse, Scripts.Space aSpace) { if (aResponse instanceof SqlExceptionResponse) { SqlExceptionResponse errorResponse = (SqlExceptionResponse) aResponse; Logger.getLogger(PlatypusPlatypusConnection.class.getName()).log(Level.WARNING, SQL_EXCEPTION_LOG_MSG, new Object[]{aResponse.getErrorMessage(), errorResponse.getSqlState(), errorResponse.getSqlErrorCode()}); return new SQLException(aResponse.getErrorMessage(), errorResponse.getSqlState(), errorResponse.getSqlErrorCode()); } else if (aResponse instanceof AccessControlExceptionResponse) { AccessControlExceptionResponse errorResponse = (AccessControlExceptionResponse) aResponse; Logger.getLogger(PlatypusPlatypusConnection.class.getName()).log(Level.WARNING, ACCESSCONTROL_EXCEPTION_LOG_MSG, new Object[]{errorResponse.getErrorMessage()}); return new AccessControlException(errorResponse.getErrorMessage(), errorResponse.isNotLoggedIn() ? new AuthPermission("*") : null); } else if (aResponse instanceof JsonExceptionResponse) { JsonExceptionResponse errorResponse = (JsonExceptionResponse) aResponse; return new JsObjectException(aSpace.parseJsonWithDates(errorResponse.getJsonContent())); } else { String msg = "Exception from server. " + aResponse.getErrorMessage(); Logger.getLogger(PlatypusConnection.class.getName()).log(Level.WARNING, msg); return new Exception(msg); } }
if (aOnFailure != null) { Scripts.Space targetSpace = Scripts.getSpace(); Exception copiedEx = ex instanceof JsObjectException ? new JsObjectException(targetSpace.makeCopy(((JsObjectException) ex).getData())) : ex; callingSpace.process(callingContext, () -> { assert Scripts.getSpace() == callingSpace; Exception restoredEx = copiedEx instanceof JsObjectException ? new JsObjectException(callingSpace.restoreCopy(((JsObjectException) copiedEx).getData())) : copiedEx; aOnFailure.accept(restoredEx); });
if (ex instanceof JsObjectException) { JsObjectException jsoex = (JsObjectException) ex; Logger.getLogger(PlatypusRequestsHandler.class.getName()).log(Level.SEVERE, String.format(JS_OBJECT_EXCEPTION_MESSAGE, requestEnv.request.getType(), requestEnv.request.getClass().getSimpleName(), jsoex.getMessage())); ioSession.write(new JsonExceptionResponse(jsoex, session.getSpace().toJson(jsoex.getData()))); } else { onError.accept(ex); if (ex instanceof JsObjectException) { JsObjectException jsoex = (JsObjectException) ex; Logger.getLogger(PlatypusRequestsHandler.class.getName()).log(Level.SEVERE, String.format(JS_OBJECT_EXCEPTION_MESSAGE, requestEnv.request.getType(), requestEnv.request.getClass().getSimpleName(), jsoex.getMessage())); ioSession.write(new JsonExceptionResponse(jsoex, session.getSpace().toJson(jsoex.getData()))); } else { onError.accept(ex);
@Override public Object callServerModuleMethod(String aModuleName, String aMethodName, Scripts.Space aSpace, JSObject onSuccess, JSObject onFailure, Object... aArguments) throws Exception { if (onSuccess != null) { executeServerModuleMethod(aModuleName, aMethodName, aSpace, (Object aResult) -> { onSuccess.call(null, new Object[]{aResult}); }, (Exception ex) -> { if (onFailure != null) { onFailure.call(null, new Object[]{ex instanceof JsObjectException ? ((JsObjectException)ex).getData() : ex.getMessage()}); } }, aArguments); return null; } else { return executeServerModuleMethod(aModuleName, aMethodName, aSpace, null, null, aArguments); } }
aHttpResponse.sendError(HttpServletResponse.SC_NOT_FOUND, ex.getMessage()); } else if (ex instanceof JsObjectException) { String errorBody = aPlatypusSession.getSpace().toJson(((JsObjectException) ex).getData()); if (aHttpResponse.getStatus() >= 200 && aHttpResponse.getStatus() < 300) { aHttpResponse.setStatus(HttpServletResponse.SC_CONFLICT);