@Override
    public void validate(final String username, final String password, final ApiRequest request,
            final IPolicyContext context, final JDBCIdentitySource config,
            final IAsyncResultHandler<Boolean> handler) {
        
        String sqlPwd = password;
        switch (config.getHashAlgorithm()) {
        case MD5:
            sqlPwd = DigestUtils.md5Hex(password);
            break;
        case SHA1:
            sqlPwd = DigestUtils.sha1Hex(password);
            break;
        case SHA256:
            sqlPwd = DigestUtils.sha256Hex(password);
            break;
        case SHA384:
            sqlPwd = DigestUtils.sha384Hex(password);
            break;
        case SHA512:
            sqlPwd = DigestUtils.sha512Hex(password);
            break;
        case None:
        default:
            break;
        }
        final String query = config.getQuery();
        final String queryUsername = username;
        final String queryPassword = sqlPwd;
        
        IJdbcClient client;
        try {
            client = createClient(context, config);
        } catch (Throwable e) {
            handler.handle(AsyncResultImpl.create(e, Boolean.class));
            return;
        }
        
        client.connect(new IAsyncResultHandler<IJdbcConnection>() {
            @Override
            public void handle(IAsyncResult<IJdbcConnection> result) {
                if (result.isError()) {
                    handler.handle(AsyncResultImpl.create(result.getError(), Boolean.class));
                } else {
                    validate(result.getResult(), query, queryUsername, queryPassword, context, config, handler);
                }
            }
        });
    }
@ Override public void validate ( final String username , final String password , final ApiRequest request , final IPolicyContext context , final JDBCIdentitySource config , final IAsyncResultHandler < Boolean > handler ) { String sqlPwd = password ; switch ( config . getHashAlgorithm ( ) ) { case MD5 : sqlPwd = DigestUtils . md5Hex ( password ) ; break ; case SHA1 : sqlPwd = DigestUtils . sha1Hex ( password ) ; break ; case SHA256 : sqlPwd = DigestUtils . sha256Hex ( password ) ; break ; case SHA384 : sqlPwd = DigestUtils . sha384Hex ( password ) ; break ; case SHA512 : sqlPwd = DigestUtils . sha512Hex ( password ) ; break ; case None : default : break ; } final String query = config . getQuery ( ) ; final String queryUsername = username ; final String queryPassword = sqlPwd ; IJdbcClient client ; try { client = createClient ( context , config ) ; } catch ( Throwable e ) { handler . handle ( AsyncResultImpl . create ( e , Boolean . class ) ) ; return ; } client . connect ( new IAsyncResultHandler < IJdbcConnection > ( ) { @ Override public void handle ( IAsyncResult < IJdbcConnection > result ) { if ( result . isError ( ) ) { handler . handle ( AsyncResultImpl . create ( result . getError ( ) , Boolean . class ) ) ; } else { validate ( result . getResult ( ) , query , queryUsername , queryPassword , context , config , handler ) ; } } } ) ; }
@see io.apiman.gateway.engine.policies.auth.IIdentityValidator#validate(String, String, ApiRequest, IPolicyContext, Object, IAsyncResultHandler)