Index: webhcat/java-client/src/test/java/org/apache/hcatalog/api/TestHCatClient.java =================================================================== --- webhcat/java-client/src/test/java/org/apache/hcatalog/api/TestHCatClient.java (revision 1419966) +++ webhcat/java-client/src/test/java/org/apache/hcatalog/api/TestHCatClient.java (working copy) @@ -36,6 +36,7 @@ import org.apache.hadoop.mapred.TextInputFormat; import org.apache.hcatalog.cli.SemanticAnalysis.HCatSemanticAnalyzer; import org.apache.hadoop.hive.conf.HiveConf.ConfVars; +import org.apache.hcatalog.common.HCatConstants; import org.apache.hcatalog.common.HCatException; import org.apache.hcatalog.data.schema.HCatFieldSchema; import org.apache.hcatalog.data.schema.HCatFieldSchema.Type; @@ -477,4 +478,28 @@ assertTrue("Unexpected exception! " + t.getMessage(), false); } } + + @Test + public void testGetMessageBusTopicName() throws Exception { + try { + HCatClient client = HCatClient.create(new Configuration(hcatConf)); + String dbName = "testGetMessageBusTopicName_DBName"; + String tableName = "testGetMessageBusTopicName_TableName"; + client.dropDatabase(dbName, true, HCatClient.DropDBMode.CASCADE); + client.createDatabase(HCatCreateDBDesc.create(dbName).build()); + String messageBusTopicName = "MY.topic.name"; + Map tableProperties = new HashMap(1); + tableProperties.put(HCatConstants.HCAT_MSGBUS_TOPIC_NAME, messageBusTopicName); + client.createTable(HCatCreateTableDesc.create(dbName, tableName, Arrays.asList(new HCatFieldSchema("foo", Type.STRING, ""))).tblProps(tableProperties).build()); + + assertEquals("MessageBus topic-name doesn't match!", messageBusTopicName, client.getMessageBusTopicName(dbName, tableName)); + client.dropDatabase(dbName, true, HCatClient.DropDBMode.CASCADE); + client.close(); + } + catch (Exception exception) { + LOG.error("Unexpected exception.", exception); + assertTrue("Unexpected exception:" + exception.getMessage(), false); + } + } + } Index: webhcat/java-client/src/main/java/org/apache/hcatalog/api/HCatClientHMSImpl.java =================================================================== --- webhcat/java-client/src/main/java/org/apache/hcatalog/api/HCatClientHMSImpl.java (revision 1419966) +++ webhcat/java-client/src/main/java/org/apache/hcatalog/api/HCatClientHMSImpl.java (working copy) @@ -42,6 +42,7 @@ import org.apache.hadoop.hive.metastore.api.UnknownDBException; import org.apache.hadoop.hive.metastore.api.UnknownPartitionException; import org.apache.hadoop.hive.metastore.api.UnknownTableException; +import org.apache.hcatalog.common.HCatConstants; import org.apache.hcatalog.common.HCatException; import org.apache.hcatalog.common.HCatUtil; import org.apache.hcatalog.data.schema.HCatFieldSchema; @@ -673,4 +674,19 @@ return numPartitions; } + @Override + public String getMessageBusTopicName(String dbName, String tableName) throws HCatException { + try { + return hmsClient.getTable(dbName, tableName).getParameters().get(HCatConstants.HCAT_MSGBUS_TOPIC_NAME); + } + catch (MetaException e) { + throw new HCatException("MetaException while retrieving JMS Topic name.", e); + } catch (TException e) { + throw new ConnectionFailureException( + "TException while retrieving JMS Topic name.", e); + } catch (NoSuchObjectException e) { + throw new HCatException("Could not find DB:" + dbName + " or Table:" + tableName, e); + } + } + } Index: webhcat/java-client/src/main/java/org/apache/hcatalog/api/HCatClient.java =================================================================== --- webhcat/java-client/src/main/java/org/apache/hcatalog/api/HCatClient.java (revision 1419966) +++ webhcat/java-client/src/main/java/org/apache/hcatalog/api/HCatClient.java (working copy) @@ -319,6 +319,16 @@ throws HCatException; /** + * Retrieve Message-bus topic for a table. + * + * @param dbName The name of the DB. + * @param tableName The name of the table. + * @return Topic-name for the message-bus on which messages will be sent for the specified table. + */ + public abstract String getMessageBusTopicName(String dbName, String tableName) + throws HCatException; + + /** * Close the hcatalog client. * * @throws HCatException