io.reactivex.Single#error ( )源码实例Demo

下面列出了io.reactivex.Single#error ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

源代码1 项目: Melophile   文件: RemoteSearchSource.java
@Override
public Single<List<TrackEntity>> moreTracks() {
  Page<?> page = queryMap.get(Type.TRACK);
  if (page != null) {
    if (page.isLast) {
      return Single.just(new ArrayList<>());
    }
    return service.searchTracksPage(TrackEntity.Filter.start()
            .nextPage(page).limit(100).createOptions())
            .map(result -> {
              if (result != null) {
                queryMap.put(Type.TRACK, result);
                return result.collection;
              }
              return null;
            }).map(filter::filterTracks);
  }
  return Single.error(new IllegalArgumentException("You haven't made a query!"));
}
 
private Single<DynamicClientRegistrationRequest> validateIdTokenEncryptionAlgorithm(DynamicClientRegistrationRequest request) {
    if(request.getIdTokenEncryptedResponseEnc()!=null && request.getIdTokenEncryptedResponseAlg()==null) {
        return Single.error(new InvalidClientMetadataException("When id_token_encrypted_response_enc is included, id_token_encrypted_response_alg MUST also be provided"));
    }
    //if id_token_encrypted_response_alg is provided, it must be valid.
    if(request.getIdTokenEncryptedResponseAlg()!=null && request.getIdTokenEncryptedResponseAlg().isPresent()) {
        if(!JWAlgorithmUtils.isValidIdTokenResponseAlg(request.getIdTokenEncryptedResponseAlg().get())) {
            return Single.error(new InvalidClientMetadataException("Unsupported id_token_encrypted_response_alg value"));
        }
        if(request.getIdTokenEncryptedResponseEnc()!=null && request.getIdTokenEncryptedResponseEnc().isPresent()) {
            if(!JWAlgorithmUtils.isValidIdTokenResponseEnc(request.getIdTokenEncryptedResponseEnc().get())) {
                return Single.error(new InvalidClientMetadataException("Unsupported id_token_encrypted_response_enc value"));
            }
        }
        else {
            //Apply default value if id_token_encrypted_response_alg is informed and not id_token_encrypted_response_enc.
            request.setIdTokenEncryptedResponseEnc(Optional.of(JWAlgorithmUtils.getDefaultIdTokenResponseEnc()));
        }
    }
    return Single.just(request);
}
 
private Single<Client> sanitizeTemplate(Client template) {
    if(!template.isTemplate()) {
        return Single.error(new InvalidClientMetadataException("Client behind software_id is not a template"));
    }
    //Erase potential confidential values.
    template.setClientId(SecureRandomString.generate());
    template.setDomain(domain.getId());
    template.setId(null);
    template.setClientSecret(null);
    template.setClientName(ClientServiceImpl.DEFAULT_CLIENT_NAME);
    template.setRedirectUris(null);
    template.setSectorIdentifierUri(null);
    template.setJwks(null);
    template.setJwksUri(null);
    //Set it as non template
    template.setTemplate(false);

    return Single.just(template);
}
 
@Override
public Single<Map<Object, Object>> aggregate(ReferenceType referenceType, String referenceId, AuditReportableCriteria criteria, Type analyticsType) {
    // build query
    Bson query = query(referenceType, referenceId, criteria);
    switch (analyticsType) {
        case DATE_HISTO:
            return executeHistogram(criteria, query);
        case GROUP_BY:
            return executeGroupBy(criteria, query);
        case COUNT:
            return executeCount(query);
        default:
            return Single.error(new IllegalArgumentException("Analytics [" + analyticsType + "] cannot be calculated"));
    }
}
 
@Override
public Single<JWT> readRequestObjectFromURI(String requestUri, Client client) {
    try {
        if (requestUri.startsWith(RESOURCE_OBJECT_URN_PREFIX)) {
            // Extract the identifier
            String identifier = requestUri.substring(RESOURCE_OBJECT_URN_PREFIX.length());

            return requestObjectRepository.findById(identifier)
                    .switchIfEmpty(Single.error(new InvalidRequestObjectException()))
                    .flatMap((Function<RequestObject, Single<JWT>>) req -> {
                        if (req.getExpireAt().after(new Date())) {
                            return readRequestObject(req.getPayload(), client);
                        }

                        return Single.error(new InvalidRequestObjectException());
                    });
        } else {
            return webClient.getAbs(UriBuilder.fromHttpUrl(requestUri).build().toString())
                    .rxSend()
                    .map(HttpResponse::bodyAsString)
                    .flatMap((Function<String, Single<JWT>>) s -> readRequestObject(s, client));
        }
    }
    catch (IllegalArgumentException | URISyntaxException ex) {
        return Single.error(new InvalidRequestObjectException(requestUri+" is not valid."));
    }
}
 
源代码6 项目: Melophile   文件: GetPlaylists.java
@Override
public Single<PlaylistSet> buildUseCase(MelophileTheme theme) {
  if (theme != null) {
    return repository.getPlaylistsBy(theme)
            .map(list -> new PlaylistSet(theme, list));
  }
  return Single.error(new IllegalArgumentException("Melophile theme is null!"));
}
 
/**
 * Validate if all requested resources are known and contains the requested scopes.
 * Resources must belong to the same resource owner.
 * @param requestedPermissions Requested resources and associated scopes.
 * @param registeredResources Current registered resource sets.
 * @param requestedResourcesIds List of current requested resource set ids.
 * @return Permission requests input parameter if ok, else an error.
 */
private Single<List<PermissionRequest>> validatePermissionRequest(List<PermissionRequest> requestedPermissions, List<Resource> registeredResources, List<String> requestedResourcesIds) {
    //Check fetched resources is not empty
    if(registeredResources==null || registeredResources.isEmpty()) {
        return Single.error(InvalidPermissionRequestException.INVALID_RESOURCE_ID);
    }

    //Resources must belong to the same resource owner
    if (registeredResources.size() > 1 && registeredResources.stream().map(Resource::getUserId).distinct().count() > 1) {
        return Single.error(InvalidPermissionRequestException.INVALID_RESOURCE_OWNER);
    }

    //Build map with resource ID as key.
    Map<String, Resource> resourceSetMap = registeredResources.stream().collect(Collectors.toMap(Resource::getId, resource -> resource));

    //If the fetched resources does not contains all the requested ids, then return an invalid resource id error.
    if(!resourceSetMap.keySet().containsAll(requestedResourcesIds)) {
        return Single.error(InvalidPermissionRequestException.INVALID_RESOURCE_ID);
    }

    //If current resource set does not contains all the requested scopes, then return an invalid scope error.
    for(PermissionRequest requestResourceScope:requestedPermissions) {
        Resource fetchedResource = resourceSetMap.get(requestResourceScope.getResourceId());
        if(!fetchedResource.getResourceScopes().containsAll(requestResourceScope.getResourceScopes())) {
            return Single.error(InvalidPermissionRequestException.INVALID_SCOPE_RESOURCE);
        }
    }

    //If there is some duplicated resource ids request, merge them.
    if(resourceSetMap.entrySet().size() < requestedPermissions.size()) {
        requestedPermissions = mergeSameResourceRequest(requestedPermissions);
    }

    //Everything is matching.
    return Single.just(requestedPermissions);
}
 
@RequestMapping(method = RequestMethod.GET, value = "/throw")
public Single<Object> error() {
    return Single.error(new RuntimeException("Unexpected"));
}
 
源代码9 项目: burstkit4j   文件: GrpcBurstNodeService.java
@Override
public Single<byte[]> generateTransactionWithMessage(BurstAddress recipientAddress, byte[] recipientPublicKey, byte[] senderPublicKey, BurstValue fee, int deadline, String message) {
    return Single.error(new UnsupportedOperationException("GRPC Client does not support this API call yet")); // TODO
}
 
源代码10 项目: burstkit4j   文件: GrpcBurstNodeService.java
@Override
public Single<byte[]> generateTransactionWithEncryptedMessage(BurstAddress recipient, byte[] senderPublicKey, BurstValue fee, int deadline, BurstEncryptedMessage message) {
    return Single.error(new UnsupportedOperationException("GRPC Client does not support this API call yet")); // TODO

}
 
@RequestMapping(method = RequestMethod.GET, value = "/throw")
public Single<Object> error() {
    return Single.error(new RuntimeException("Unexpected"));
}
 
源代码12 项目: burstkit4j   文件: GrpcBurstNodeService.java
@Override
public Single<byte[]> generateTransferAssetTransaction(byte[] senderPublicKey, BurstAddress recipient, BurstID assetId, BurstValue quantity, BurstValue fee, int deadline) {
    return Single.error(new UnsupportedOperationException("GRPC Client does not support this API call yet")); // TODO
}
 
源代码13 项目: andela-crypto-app   文件: ApiClient.java
public static Single<Country> loadRate(Country oldCountry) {
    long minutesBefore = System.currentTimeMillis() - (10 * 60 * 1000);
    if (oldCountry.refreshedAt > minutesBefore)
        return Single.error(new Throwable("No refresh needed!"));

    return getApi().getPrice(oldCountry.code, BTC_ETH)
            .map(response -> {
                HttpUrl url = response.raw().request().url();
                String from = url.queryParameter(Api.FROM_SYMBOL);

                if (TextUtils.isEmpty(from)) {
                    return null;
                }

                Exchange exchange = response.body();
                if (exchange == null) {
                    return null;
                }

                if (ObjectsCompat.equals(oldCountry.code, from)) {
                    int btcStatus = Country.SAME;
                    if (oldCountry.btc != -1) {
                        if (exchange.bitcoin > oldCountry.btc) {
                            btcStatus = Country.RISE;
                        } else if (exchange.bitcoin < oldCountry.btc) {
                            btcStatus = Country.DROP;
                        }
                    }

                    int ethStatus = Country.SAME;
                    if (oldCountry.eth != -1) {
                        if (exchange.bitcoin > oldCountry.btc) {
                            ethStatus = Country.RISE;
                        } else if (exchange.bitcoin < oldCountry.btc) {
                            ethStatus = Country.DROP;
                        }
                    }
                    oldCountry.btcStatus = btcStatus;
                    oldCountry.ethStatus = ethStatus;

                    oldCountry.eth = exchange.ethereum;
                    oldCountry.btc = exchange.bitcoin;
                    oldCountry.refreshedAt = System.currentTimeMillis();
                    return oldCountry;
                }
                return null;
            })
            .subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread());
}
 
@Override
public Single<JWT> decrypt(String jwt, Client client) {
    try {
        // Parse a first time to check if the JWT is encrypted
        JWT parsedJwt = JWTParser.parse(jwt);

        if (parsedJwt instanceof EncryptedJWT) {

            JWEObject jweObject = JWEObject.parse(jwt);

            JWEAlgorithm algorithm = jweObject.getHeader().getAlgorithm();

            //RSA decryption
            if (RSACryptoProvider.SUPPORTED_ALGORITHMS.contains(algorithm)) {
                return decrypt(jweObject, client, JWKFilter.RSA_KEY_ENCRYPTION(), jwk ->
                        new RSADecrypter(JWKConverter.convert((RSAKey) jwk))
                );
            }
            //Curve decryption (Elliptic "EC" & Edward "OKP")
            else if (ECDHCryptoProvider.SUPPORTED_ALGORITHMS.contains(algorithm)) {
                return decrypt(jweObject, client, JWKFilter.CURVE_KEY_ENCRYPTION(), jwk -> {
                    if (KeyType.EC.getValue().equals(jwk.getKty())) {
                        return new ECDHDecrypter(JWKConverter.convert((ECKey) jwk));
                    }
                    return new X25519Decrypter(JWKConverter.convert((OKPKey) jwk));
                });
            }
            //AES decryption ("OCT" keys)
            else if (AESCryptoProvider.SUPPORTED_ALGORITHMS.contains(algorithm)) {
                return decrypt(jweObject, client, JWKFilter.OCT_KEY_ENCRYPTION(algorithm), jwk ->
                        new AESDecrypter(JWKConverter.convert((OCTKey) jwk))
                );
            }
            //Direct decryption ("OCT" keys)
            else if (DirectCryptoProvider.SUPPORTED_ALGORITHMS.contains(algorithm)) {
                return decrypt(jweObject, client, JWKFilter.OCT_KEY_ENCRYPTION(jweObject.getHeader().getEncryptionMethod()), jwk ->
                        new DirectDecrypter(JWKConverter.convert((OCTKey) jwk))
                );
            }
            //Password Base decryption ("OCT" keys)
            else if (PasswordBasedCryptoProvider.SUPPORTED_ALGORITHMS.contains(algorithm)) {
                return decrypt(jweObject, client, JWKFilter.OCT_KEY_ENCRYPTION(), jwk -> {
                    OctetSequenceKey octKey = JWKConverter.convert((OCTKey) jwk);
                    return new PasswordBasedDecrypter(octKey.getKeyValue().decode());
                });
            }

            return Single.error(new ServerErrorException("Unable to perform Json Web Decryption, unsupported algorithm: " + algorithm.getName()));
        } else {
            return Single.just(parsedJwt);
        }
    } catch (Exception ex) {
        return Single.error(ex);
    }
}
 
源代码15 项目: adamant-android   文件: AbstractMessageProcessor.java
@Override
public Single<Transaction<? extends TransactionAsset>> buildNormalizedTransaction(T message) {
    //TODO: Rewrite the error handling so that any error is displayed under the message.
    if (!api.isAuthorized()){return Single.error(new NotAuthorizedException("Not authorized"));}

    KeyPair keyPair = api.getKeyPair();
    Account account = api.getAccount();

    long currentMessageCost = this.calculateMessageCostInAdamant(message);
    if (currentMessageCost > account.getBalance()){
        return Single.error(
                new NotEnoughAdamantBalanceException(
                        "Not enough adamant. Cost:" + currentMessageCost + ". Balance:" + account.getBalance()
                )
        );
    }

    try {
        return publicKeyStorage.findPublicKey(message.getCompanionId())
                .singleOrError()
                .observeOn(Schedulers.computation())
                .flatMap(publicKey -> buildTransactionMessage(message, publicKey))
                .flatMap((unnormalizedTransactionMessage -> Single.fromPublisher(
                        api.getNormalizedTransaction(unnormalizedTransactionMessage)
                                .subscribeOn(Schedulers.io())
                                .observeOn(Schedulers.computation())
                )))
                .flatMap((transactionWasNormalized -> {
                    if (transactionWasNormalized.isSuccess()) {
                        Transaction<? extends TransactionAsset> transaction = transactionWasNormalized.getTransaction();
                        transaction.setSenderId(account.getAddress());

                        transaction.setSignature(
                                encryptor.createTransactionSignature(
                                        transaction,
                                        keyPair
                                )
                        );

                        return Single.just(transaction);
                    } else {
                        return Single.error(new Exception(transactionWasNormalized.getError()));
                    }
                }));
    } catch (Exception ex) {
        ex.printStackTrace();
        return Single.error(ex);
    }
}
 
/**
 * <pre>
 * Check:
 *  - grant types are null or empty, or contains unknown grant types.
 *  - refresh_token does not come with authorization_code, password or client_credentials grant.
 *  - client_credentials grant come with another grant that require user authentication.
 * </pre>
 * @param application Application with grant_type to validate.
 * @return Single client or error
 */
public static Single<Application> validateGrantTypes(Application application) {
    // no application to check, continue
    if (application==null) {
        return Single.error(new InvalidClientMetadataException("No application to validate grant"));
    }

    // no application settings to check, continue
    if (application.getSettings() == null) {
        return Single.just(application);
    }

    // no application oauth settings to check, continue
    if (application.getSettings().getOauth() == null) {
        return Single.just(application);
    }

    // Each security domain can have multiple extension grant with the same grant_type
    // we must split the client authorized grant types to get the real grant_type value
    ApplicationOAuthSettings oAuthSettings = application.getSettings().getOauth();
    List<String> formattedClientGrantTypes = oAuthSettings.getGrantTypes() == null ? null : oAuthSettings.getGrantTypes().stream().map(str -> str.split(EXTENSION_GRANT_SEPARATOR)[0]).collect(Collectors.toList());
    if(!isSupportedGrantType(formattedClientGrantTypes)) {
        return Single.error(new InvalidClientMetadataException("Missing or invalid grant type."));
    }

    //Ensure correspondance between response & grant types.
    completeGrantTypeCorrespondance(application);

    //refresh_token are not allowed for all grant types...
    Set<String> grantTypeSet = Collections.unmodifiableSet(new HashSet<>(oAuthSettings.getGrantTypes()));
    if(grantTypeSet.contains(REFRESH_TOKEN)) {
        //Hybrid is not managed yet and AM does not support refresh token for client_credentials for now...
        List<String> allowedRefreshTokenGrant = Arrays.asList(AUTHORIZATION_CODE, PASSWORD, JWT_BEARER);//, CLIENT_CREDENTIALS, HYBRID);
        //return true if there is no element in common
        if(Collections.disjoint(formattedClientGrantTypes, allowedRefreshTokenGrant)) {
            return Single.error(new InvalidClientMetadataException(
                    REFRESH_TOKEN+" grant type must be associated with one of "+String.join(", ",allowedRefreshTokenGrant)
            ));
        }
    }

    /*
     * Uncomment when ready to setup a "non expert mode" on the AM user interface"
     * It is not recommended to mix client and user authentication within the same application.
     * (Aka client_credentials and authorization_code, implicit or password...)
    if(grantTypeSet.contains(CLIENT_CREDENTIALS)) {
        //If client_credentials come with at least one of belows grant
        if(!Collections.disjoint(client.getAuthorizedGrantTypes(),Arrays.asList(AUTHORIZATION_CODE, IMPLICIT, PASSWORD, HYBRID, DEVIDE_CODE))) {
            return Single.error(new InvalidClientMetadataException(
                    CLIENT_CREDENTIALS+" must not be associated with another grant that imply user authentication"
            ));
        }
    }
    */

    return Single.just(application);
}
 
源代码17 项目: openapi-generator   文件: PetApiImpl.java
public Single<ApiResponse<ModelApiResponse>> uploadFile(Long petId,String additionalMetadata,FileUpload file) {
    return Single.error(new ApiException("Not Implemented").setStatusCode(501));
}
 
源代码18 项目: burstkit4j   文件: GrpcBurstNodeService.java
@Override
public Single<byte[]> generateSubscriptionCancelTransaction(byte[] senderPublicKey, BurstID subscription, BurstValue fee, int deadline) {
    return Single.error(new UnsupportedOperationException("GRPC Client does not support this API call yet")); // TODO
}
 
源代码19 项目: openapi-generator   文件: UserApiImpl.java
public Single<ApiResponse<Void>> createUsersWithListInput(List<User> user) {
    return Single.error(new ApiException("Not Implemented").setStatusCode(501));
}
 
源代码20 项目: openapi-generator   文件: StoreApiImpl.java
public Single<ApiResponse<Order>> getOrderById(Long orderId) {
    return Single.error(new ApiException("Not Implemented").setStatusCode(501));
}