Chia-Ping Tsai created HBASE-20119: -------------------------------------- Summary: Introduce a pojo class to carry coprocessor information in order to make TableDescriptorBuilder accept multiple cp at once Key: HBASE-20119 URL: https://issues.apache.org/jira/browse/HBASE-20119 Project: HBase Issue Type: Task Reporter: Chia-Ping Tsai Assignee: Chia-Ping Tsai Fix For: 2.0.0
The way to add cp to TableDescriptorBuilder is shown below. {code:java} public TableDescriptorBuilder addCoprocessor(String className) throws IOException { return addCoprocessor(className, null, Coprocessor.PRIORITY_USER, null); } public TableDescriptorBuilder addCoprocessor(String className, Path jarFilePath, int priority, final Map<String, String> kvs) throws IOException { desc.addCoprocessor(className, jarFilePath, priority, kvs); return this; } public TableDescriptorBuilder addCoprocessorWithSpec(final String specStr) throws IOException { desc.addCoprocessorWithSpec(specStr); return this; }{code} When loading our config to create table with multiple cps, we have to write the ugly for-loop. {code:java} val builder = TableDescriptorBuilder.newBuilde(tableName) .setAAA() .setBBB() cfs.map(cf => ColumnFamilyDescriptorBuilder.of(cf)) .foreach(builder.addColumnFamily(_)) cps.foreach(builder.addCoprocessor(_)) admin.createTable(builder.build()) {code} If we introduce a pojo to carry the cp data and add the method accepting multiple cps and cfs, it is easier to exercise the fluent interface of TableDescriptorBuilder {code:java} admin.createTable(TableDescriptorBuilder.newBuilde(tableName) .addCoprocessor(cps.map(toHBaseCp).asJavaCollection) .addColumnFamily(cf.map(toHBaseCf).asJavaCollection) .setAAA() .setBBB() .build){code} -- This message was sent by Atlassian JIRA (v7.6.3#76005)