重构/优化Java代码以获取HostNameVerifier

时间:2017-04-26 20:34:21

标签: java optimization java-8 refactoring

我在java类下面检查instance是否为空并且匹配dev / qa / stg / staging / {{1} } prod hostnameVerification然后true返回自定义的getHostnameVerifierForInstance

HostnameVerifier

我想知道这个方法可以重构/改进到更好的版本吗?

1 个答案:

答案 0 :(得分:2)

重构后的代码应该是这样的:

public class SSLConfig {
    private static final String PROD_INSTANCE = "Prod";
    private static final String STG_INSTANCE1 = "Staging";
    private static final String STG_INSTANCE2 = "Stg";
    private static final String QA_INSTANCE = "QA";
    private static final String DEV_INSTANCE = "DEV";

    private static HostnameVerifier getHostnameVerifierForInstance(String instance,
                                                                   String enabled){
        return Boolean.parseBoolean(enabled)&&reject(instance) ? denyAll() 
                : permitAll();
    }

    private static boolean reject(String instance) {
        return rejections().anyMatch(instance.trim().toLowerCase()::startsWith);
    }

    private static Stream<String> rejections() {
        return Stream.of(PROD_INSTANCE, STG_INSTANCE1,
                STG_INSTANCE2, QA_INSTANCE, DEV_INSTANCE).map(String::toLowerCase);
    }

    private static HostnameVerifier denyAll() {
        return (hostname, session) -> false;
    }

    private static HostnameVerifier permitAll() {
        return (hostname, session) -> true;
    }
}