Search in sources :

Example 6 with AbstractCloseableIterator

use of co.cask.cdap.api.dataset.lib.AbstractCloseableIterator in project cdap by caskdata.

the class LevelDBMetadataTable method scanTopics.

private CloseableIterator<TopicMetadata> scanTopics(@Nullable byte[] startKey, @Nullable byte[] stopKey) throws IOException {
    final CloseableIterator<Map.Entry<byte[], byte[]>> iterator = new DBScanIterator(levelDB, startKey, stopKey);
    return new AbstractCloseableIterator<TopicMetadata>() {

        private boolean closed = false;

        @Override
        protected TopicMetadata computeNext() {
            if (closed || (!iterator.hasNext())) {
                return endOfData();
            }
            Map.Entry<byte[], byte[]> entry = iterator.next();
            TopicId topicId = MessagingUtils.toTopicId(entry.getKey());
            Map<String, String> properties = GSON.fromJson(Bytes.toString(entry.getValue()), MAP_TYPE);
            return new TopicMetadata(topicId, properties);
        }

        @Override
        public void close() {
            try {
                iterator.close();
            } finally {
                endOfData();
                closed = true;
            }
        }
    };
}
Also used : AbstractCloseableIterator(co.cask.cdap.api.dataset.lib.AbstractCloseableIterator) TopicId(co.cask.cdap.proto.id.TopicId) TreeMap(java.util.TreeMap) Map(java.util.Map) TopicMetadata(co.cask.cdap.messaging.TopicMetadata)

Aggregations

AbstractCloseableIterator (co.cask.cdap.api.dataset.lib.AbstractCloseableIterator)6 Map (java.util.Map)3 RawMessageTableEntry (co.cask.cdap.messaging.store.RawMessageTableEntry)2 RawPayloadTableEntry (co.cask.cdap.messaging.store.RawPayloadTableEntry)2 IOException (java.io.IOException)2 Result (org.apache.hadoop.hbase.client.Result)2 ResultScanner (org.apache.hadoop.hbase.client.ResultScanner)2 Scan (org.apache.hadoop.hbase.client.Scan)2 CloseableIterator (co.cask.cdap.api.dataset.lib.CloseableIterator)1 AndFilter (co.cask.cdap.logging.filter.AndFilter)1 Filter (co.cask.cdap.logging.filter.Filter)1 LogLocation (co.cask.cdap.logging.write.LogLocation)1 TopicMetadata (co.cask.cdap.messaging.TopicMetadata)1 TopicId (co.cask.cdap.proto.id.TopicId)1 HashMap (java.util.HashMap)1 TreeMap (java.util.TreeMap)1