@Override public boolean isFamilyEssential(byte[] name) throws IOException { if (this.filters.isEmpty()) { return super.isFamilyEssential(name); } for (int i = 0, n = filters.size(); i < n; i++) { if (filters.get(i).isFamilyEssential(name)) { return true; } } return false; }
@Override public boolean filterRowKey(Cell cell) throws IOException { if (filterAllRemaining()) return true; return filterRowKey(cell.getRowArray(), cell.getRowOffset(), cell.getRowLength()); }
@Override public boolean filterRow() throws IOException { ipcHandlerThread = Thread.currentThread(); try { LOG.info("Handler thread " + ipcHandlerThread + " sleeping in filter..."); Thread.sleep(1000); } catch (InterruptedException e) { Throwables.propagate(e); } return super.filterRow(); } }
@SuppressWarnings("deprecation") @Override public KeyValue getNextKeyHint(KeyValue currentKV) throws IOException { if (cellFilter != null) { return cellFilter.getNextKeyHint(currentKV); } return super.getNextKeyHint(currentKV); }
/** * Filters that do not filter by row key can inherit this implementation that * never filters anything. (ie: returns false). * * {@inheritDoc} * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0. * Instead use {@link #filterRowKey(Cell)} */ @Override @Deprecated public boolean filterRowKey(byte[] buffer, int offset, int length) throws IOException { if (filterAllRemaining()) return true; return false; }
@Override public boolean filterRowKey(byte[] buffer, int offset, int length) throws IOException { if (cellFilter != null) { return cellFilter.filterRowKey(buffer, offset, length); } return super.filterRowKey(buffer, offset, length); }
@Override public Cell transformCell(Cell c) throws IOException { transformed = true; return super.transformCell(c); }
@Override public void filterRowCells(List<Cell> kvs) throws IOException { if (cellFilter != null) { cellFilter.filterRowCells(kvs); } else { super.filterRowCells(kvs); } }
@Override public Cell getNextCellHint(Cell currentKV) throws IOException { if (cellFilter != null) { return cellFilter.getNextCellHint(currentKV); } return super.getNextCellHint(currentKV); }
@Override public boolean hasFilterRow() { if (cellFilter != null) { return cellFilter.hasFilterRow(); } return super.hasFilterRow(); }
@Override public byte[] toByteArray() throws IOException { return super.toByteArray(); }
@SuppressWarnings("deprecation") @Override public KeyValue getNextKeyHint(KeyValue currentKV) throws IOException { if (cellFilter != null) { return cellFilter.getNextKeyHint(currentKV); } return super.getNextKeyHint(currentKV); }
/** * Filters that do not filter by row key can inherit this implementation that * never filters anything. (ie: returns false). * * {@inheritDoc} * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0. * Instead use {@link #filterRowKey(Cell)} */ @Override @Deprecated public boolean filterRowKey(byte[] buffer, int offset, int length) throws IOException { if (filterAllRemaining()) return true; return false; }
@Override public boolean filterRowKey(byte[] buffer, int offset, int length) throws IOException { if (cellFilter != null) { return cellFilter.filterRowKey(buffer, offset, length); } return super.filterRowKey(buffer, offset, length); }
/** * For FilterList, we can consider a filter list as a node in a tree. sub-filters of the filter * list are children of the relative node. The logic of transforming cell of a filter list, well, * we can consider it as the process of post-order tree traverse. For a node , before we traverse * the current child, we should set the traverse result (transformed cell) of previous node(s) as * the initial value. (HBASE-18879). * @param c The cell in question. * @return the transformed cell. * @throws IOException */ @Override public Cell transformCell(Cell c) throws IOException { if (isEmpty()) { return super.transformCell(c); } Cell transformed = c; for (int i = 0, n = filters.size(); i < n; i++) { if (subFiltersIncludedCell.get(i)) { transformed = filters.get(i).transformCell(transformed); } } return transformed; }
@Override public void filterRowCells(List<Cell> kvs) throws IOException { if (cellFilter != null) { cellFilter.filterRowCells(kvs); } else { super.filterRowCells(kvs); } }
@Override public Cell getNextCellHint(Cell currentKV) throws IOException { if (cellFilter != null) { return cellFilter.getNextCellHint(currentKV); } return super.getNextCellHint(currentKV); }
@Override public boolean hasFilterRow() { if (cellFilter != null) { return cellFilter.hasFilterRow(); } return super.hasFilterRow(); }
@Override public byte[] toByteArray() throws IOException { return super.toByteArray(); }
@Override public boolean isFamilyEssential(byte[] name) throws IOException { if (this.filters.isEmpty()) { return super.isFamilyEssential(name); } for (int i = 0, n = filters.size(); i < n; i++) { if (filters.get(i).isFamilyEssential(name)) { return true; } } return false; }