@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()+"!"); } }