[ https://issues.apache.org/jira/browse/HBASE-20119?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Chia-Ping Tsai updated HBASE-20119: ----------------------------------- Description: 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() cps.map(toHBaseCp).foreach(builder.addCoprocessor) cfs.map(toHBaseCf).foreach(builder.addColumnFamily) 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} was: 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} > 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 > Priority: Minor > 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() > cps.map(toHBaseCp).foreach(builder.addCoprocessor) > cfs.map(toHBaseCf).foreach(builder.addColumnFamily) > 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)