@NotNull @Override public Exception translate(@NotNull Throwable t) throws Exception { SoapFaultInfo faultInfo = extractFaultInfo(t); switch (faultInfo.getFaultCause()) { case "BadRequest": throw new BadRequestServiceException(faultInfo); case "AccessDenied": throw new AccessDeniedServiceException(faultInfo); case "Protocol": throw new ProtocolServiceException(faultInfo); case "InternalServerError": throw new InternalServerErrorServiceException(faultInfo); case "ServiceTemporarilyUnavailable": throw new ServiceTemporarilyUnavailableServiceException(faultInfo); case "BadResponse": throw new BadResponseServiceException(faultInfo); default: throw new UnsupportedOperationException("Unhandled case: "+faultInfo.getFaultCause()+"!"); } }
switch (faultInfo.getFaultCause()) { case "BadRequest": return new BadRequestServiceException(faultInfo); case "AccessDenied": return new AccessDeniedServiceException(faultInfo); return new InternalServerErrorServiceException(faultInfo); case "ServiceTemporarilyUnavailable": return new ServiceTemporarilyUnavailableServiceException(faultInfo); case "BadResponse": return new BadResponseServiceException(faultInfo); return new ClientServiceException( new SoapFaultInfo( "Protocol", Blame.CLIENT,
/** * @return never returns. */ public static AccessDeniedServiceException networkRestriction(@NotNull String account, @NotNull String host) throws AccessDeniedServiceException { throw new AccessDeniedServiceException( RestFaultInfoBuilder.faultInfo( FaultInfos.Client.AccessDenied.networkRestriction(account, host), Response.Status.FORBIDDEN ) ); }
throw new BadRequestServiceException( new RestFaultInfo("BadRequest", Blame.CLIENT, e.getMessage(), ""+ErrorCodes.Client.BAD_REQUEST.getCode(), throw new BadRequestServiceException( new RestFaultInfo("BadRequest", Blame.CLIENT, msg, null, switch (faultInfo.getFaultCause()) { case "BadRequest": throw new BadRequestServiceException(faultInfo); case "AccessDenied": throw new AccessDeniedServiceException(faultInfo); case "InternalServerError": throw new InternalServerErrorServiceException(faultInfo); case "ServiceTemporarilyUnavailable": throw new ServiceTemporarilyUnavailableServiceException(faultInfo); case "BadResponse": throw new BadResponseServiceException(faultInfo); default: Blame.assertSize(4); switch (faultInfo.getBlame()) { case CLIENT: throw new ClientServiceException(faultInfo); case SERVER: throw new ServerServiceException(faultInfo); case NETWORK: throw new NetworkServiceException(faultInfo); case UNKNOWN:
|| t instanceof UnsupportedOperationException || t instanceof AssertionError) { throw new InternalServerErrorServiceException( FaultInfos.Server.InternalServerError.internalServerError(message) ); throw new ServiceTemporarilyUnavailableServiceException( FaultInfos.Server.ServiceTemporarilyUnavailable.serviceTemporarilyUnavailable() ); } else {//includes RuntimeException, Exception, Error, Throwable: throw new InternalServerErrorServiceException( FaultInfos.Server.InternalServerError.internalServerError(message) );
/** * @return never returns. */ public static BadRequestServiceException invalidInput(@NotNull String message) throws BadRequestServiceException { throw new BadRequestServiceException( RestFaultInfoBuilder.faultInfo( FaultInfos.Client.BadRequest.invalidInput(message), Response.Status.BAD_REQUEST ) ); }
throw new ClientServiceException( new RestFaultInfo( "Protocol", Blame.CLIENT, String msg = "Client requested content type >>>"+ACCEPT+"<<< but server sent >>>\"" + contentType + "\">>> and that is not supported for type: " + returnType.getType(); throw new BadResponseServiceException( new RestFaultInfo("BadResponse", Blame.SERVER, msg, ""+ErrorCodes.Server.BAD_RESPONSE.getCode(),
/** * @return never returns. */ public static InternalServerErrorServiceException internalServerError(@NotNull String message) throws BadRequestServiceException { throw new InternalServerErrorServiceException( RestFaultInfoBuilder.faultInfo( FaultInfos.Server.InternalServerError.internalServerError(message), Response.Status.INTERNAL_SERVER_ERROR ) ); }
/** * @return never returns. */ public static ServiceTemporarilyUnavailableServiceException serviceTemporarilyUnavailable() throws BadRequestServiceException { throw new ServiceTemporarilyUnavailableServiceException( RestFaultInfoBuilder.faultInfo( FaultInfos.Server.ServiceTemporarilyUnavailable.serviceTemporarilyUnavailable(), Response.Status.SERVICE_UNAVAILABLE ) ); }
@Override @Nullable public Duration doRetry(int executionCounter, @NotNull Exception exception) { if (executionCounter==1) { if (exception instanceof ServiceException) { FaultInfo faultInfo = ((ServiceException) exception).getFaultInfo(); if (faultInfo.getRetrySameLocation().isPresent() && faultInfo.getRetrySameLocation().get().getRetryType() == RetryType.NOW) { return Duration.millis(1000); } } } return null; } }
@NotNull private String readContentType(Response response) throws WebApplicationException { String contentType = null; List<Object> contentTypes = response.getHeaders().get("Content-Type"); if (contentTypes != null && !contentTypes.isEmpty()) { contentType = String.valueOf(contentTypes.get(0)); } if (contentType == null) { String msg = "Missing Content-Type in response"; //throw new WebApplicationException(msg, 500); throw new BadResponseServiceException( new RestFaultInfo("BadResponse", Blame.SERVER, msg, ""+ErrorCodes.Server.BAD_RESPONSE.getCode(), null, Retry.no(), Retry.no(), Response.Status.INTERNAL_SERVER_ERROR.getStatusCode(), Response.Status.INTERNAL_SERVER_ERROR.getReasonPhrase() ) ); } return contentType; }
/** * @return never returns. */ public static AccessDeniedServiceException requestLimitExceeded(@NotNull String account, @NotNull String timePeriod) throws AccessDeniedServiceException { throw new AccessDeniedServiceException( RestFaultInfoBuilder.faultInfo( FaultInfos.Client.AccessDenied.requestLimitReached(account, timePeriod), Response.Status.FORBIDDEN ) ); }
String msg = "Failed marshalling object to JSON data for sending to server: "+e.getMessage(); throw new BadRequestServiceException( new RestFaultInfo("BadRequest", Blame.CLIENT, msg, ""+ ErrorCodes.Client.MARSHALLING_FAILED.getCode(), String msg = "Content type \"" + contentType + "\" is not supported."; throw new BadRequestServiceException( new RestFaultInfo("BadRequest", Blame.CLIENT, msg, ""+ ErrorCodes.Client.UNSUPPORTED_TECHNOLOGY.getCode(),
final RestFaultInfo restFaultInfo; if (e instanceof com.optimaize.anythingworks.common.fault.exceptions.ServiceException) { FaultInfo faultInfo = ((com.optimaize.anythingworks.common.fault.exceptions.ServiceException) e).getFaultInfo(); if (!(faultInfo instanceof RestFaultInfo)) {
/** * @return never returns. */ public static AccessDeniedServiceException accountInactive(@NotNull String account, @NotNull String comment) throws AccessDeniedServiceException { throw new AccessDeniedServiceException( RestFaultInfoBuilder.faultInfo( FaultInfos.Client.AccessDenied.accountInactive(account, comment), Response.Status.FORBIDDEN ) ); }
/** * @return never returns. */ public static AccessDeniedServiceException hostBlocked(@NotNull String host) throws AccessDeniedServiceException { throw new AccessDeniedServiceException( RestFaultInfoBuilder.faultInfo( FaultInfos.Client.AccessDenied.hostBlocked(host), Response.Status.UNAUTHORIZED ) ); }
/** * @return never returns. */ public static AccessDeniedServiceException accountUnknown(@NotNull String userId) throws AccessDeniedServiceException { throw new AccessDeniedServiceException( RestFaultInfoBuilder.faultInfo( FaultInfos.Client.AccessDenied.accountUnknown(userId), Response.Status.UNAUTHORIZED ) ); }
/** * @return never returns. */ public static AccessDeniedServiceException tooManyConcurrentRequests(@NotNull String account) throws AccessDeniedServiceException { throw new AccessDeniedServiceException( RestFaultInfoBuilder.faultInfo( FaultInfos.Client.AccessDenied.tooManyConcurrentRequests(account), Response.Status.FORBIDDEN ) ); }