Stamatis Zampetakis created HIVE-24402: ------------------------------------------
Summary: Refactor AbstractCliConfig to be final, immutable, and initialisable using a builder Key: HIVE-24402 URL: https://issues.apache.org/jira/browse/HIVE-24402 Project: Hive Issue Type: Task Reporter: Stamatis Zampetakis Assignee: Stamatis Zampetakis The fact that the class is abstract indicates that it is meant to be subclassed but going over the existing use-cases there does not seem a valid reason for this design. Moreover, the class is mutable while in practice there is no reason for this. Roughly the idea is to replace the subclasses in [CliConfigs|https://github.com/apache/hive/blob/master/itests/util/src/main/java/org/apache/hadoop/hive/cli/control/CliConfigs.java] with simple instanciations using a builder while at the same time in an attempt to limit the extension points and simplify the code. +Before+ {code:java} public static class MinimrCliConfig extends AbstractCliConfig { public MinimrCliConfig() { super(CoreCliDriver.class); try { setQueryDir("ql/src/test/queries/clientpositive"); includesFrom(testConfigProps, "minimr.query.files"); setResultsDir("ql/src/test/results/clientpositive"); setLogDir("itests/qtest/target/qfile-results/clientpositive"); setInitScript("q_test_init_for_minimr.sql"); setCleanupScript("q_test_cleanup.sql"); setHiveConfDir(""); setClusterType(MiniClusterType.MR); } catch (Exception e) { throw new RuntimeException("can't construct cliconfig", e); } } } {code} +After+ {code:java} public static final CliConfig MINI_MR = new CliConfig.Builder(CoreCliDriver.class) .queryDir("ql/src/test/queries/clientpositive") .resultDir("ql/src/test/results/clientpositive") .logDir("itests/qtest/target/qfile-results/clientpositive") .addQueryFiles(testConfigProps, "minimr.query.files") .initScriptFile("q_test_init_for_minimr.sql") .cleanupScriptFile("q_test_cleanup.sql") .cluster(MiniClusterType.MR) .build(); {code} -- This message was sent by Atlassian Jira (v8.3.4#803005)