blob: 535b926d27f277ad50f7cee139bbbd017d54bbd7 [file] [log] [blame]
/*
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.hadoop.hbase.client;
import java.io.IOException;
import java.util.Collections;
import java.util.Map;
import java.util.NavigableSet;
import org.apache.hadoop.hbase.exceptions.DeserializationException;
import org.apache.hadoop.hbase.filter.Filter;
import org.apache.hadoop.hbase.io.TimeRange;
import org.apache.hadoop.hbase.security.access.Permission;
import org.apache.hadoop.hbase.security.visibility.Authorizations;
import org.apache.hadoop.hbase.util.Bytes;
import org.apache.yetus.audience.InterfaceAudience;
/**
* Immutable version of Scan
*/
@InterfaceAudience.Private
public final class ImmutableScan extends Scan {
private final Scan delegateScan;
/**
* Create Immutable instance of Scan from given Scan object
*
* @param scan Copy all values from Scan
*/
public ImmutableScan(Scan scan) {
this.delegateScan = scan;
}
@Override
public Scan addFamily(byte[] family) {
throw new UnsupportedOperationException("ImmutableScan does not allow access to addFamily");
}
@Override
public Scan addColumn(byte[] family, byte[] qualifier) {
throw new UnsupportedOperationException("ImmutableScan does not allow access to addColumn");
}
@Override
public Scan setTimeRange(long minStamp, long maxStamp) {
throw new UnsupportedOperationException("ImmutableScan does not allow access to setTimeRange");
}
@Deprecated
@Override
public Scan setTimeStamp(long timestamp) {
throw new UnsupportedOperationException("ImmutableScan does not allow access to setTimeStamp");
}
@Override
public Scan setTimestamp(long timestamp) {
throw new UnsupportedOperationException("ImmutableScan does not allow access to setTimestamp");
}
@Override
public Scan setColumnFamilyTimeRange(byte[] cf, long minStamp, long maxStamp) {
throw new UnsupportedOperationException(
"ImmutableScan does not allow access to setColumnFamilyTimeRange");
}
@Override
public Scan withStartRow(byte[] startRow) {
throw new UnsupportedOperationException("ImmutableScan does not allow access to withStartRow");
}
@Override
public Scan withStartRow(byte[] startRow, boolean inclusive) {
throw new UnsupportedOperationException("ImmutableScan does not allow access to withStartRow");
}
@Override
public Scan withStopRow(byte[] stopRow) {
throw new UnsupportedOperationException("ImmutableScan does not allow access to withStopRow");
}
@Override
public Scan withStopRow(byte[] stopRow, boolean inclusive) {
throw new UnsupportedOperationException("ImmutableScan does not allow access to withStopRow");
}
@Override
public Scan setRowPrefixFilter(byte[] rowPrefix) {
throw new UnsupportedOperationException(
"ImmutableScan does not allow access to setRowPrefixFilter");
}
@Override
public Scan readAllVersions() {
throw new UnsupportedOperationException(
"ImmutableScan does not allow access to readAllVersions");
}
@Override
public Scan readVersions(int versions) {
throw new UnsupportedOperationException("ImmutableScan does not allow access to readVersions");
}
@Override
public Scan setBatch(int batch) {
throw new UnsupportedOperationException("ImmutableScan does not allow access to setBatch");
}
@Override
public Scan setMaxResultsPerColumnFamily(int limit) {
throw new UnsupportedOperationException(
"ImmutableScan does not allow access to setMaxResultsPerColumnFamily");
}
@Override
public Scan setRowOffsetPerColumnFamily(int offset) {
throw new UnsupportedOperationException(
"ImmutableScan does not allow access to setRowOffsetPerColumnFamily");
}
@Override
public Scan setCaching(int caching) {
throw new UnsupportedOperationException("ImmutableScan does not allow access to setCaching");
}
@Override
public Scan setMaxResultSize(long maxResultSize) {
throw new UnsupportedOperationException(
"ImmutableScan does not allow access to setMaxResultSize");
}
@Override
public Scan setFilter(Filter filter) {
throw new UnsupportedOperationException("ImmutableScan does not allow access to setFilter");
}
@Override
public Scan setFamilyMap(Map<byte[], NavigableSet<byte[]>> familyMap) {
throw new UnsupportedOperationException("ImmutableScan does not allow access to setFamilyMap");
}
@Override
public Scan setCacheBlocks(boolean cacheBlocks) {
throw new UnsupportedOperationException(
"ImmutableScan does not allow access to setCacheBlocks");
}
@Override
public Scan setReversed(boolean reversed) {
throw new UnsupportedOperationException("ImmutableScan does not allow access to setReversed");
}
@Override
public Scan setAllowPartialResults(final boolean allowPartialResults) {
throw new UnsupportedOperationException(
"ImmutableScan does not allow access to setAllowPartialResults");
}
@Override
public Scan setLoadColumnFamiliesOnDemand(boolean value) {
throw new UnsupportedOperationException(
"ImmutableScan does not allow access to setLoadColumnFamiliesOnDemand");
}
@Override
public Scan setRaw(boolean raw) {
throw new UnsupportedOperationException("ImmutableScan does not allow access to setRaw");
}
@Override
@Deprecated
public Scan setSmall(boolean small) {
throw new UnsupportedOperationException("ImmutableScan does not allow access to setSmall");
}
@Override
public Scan setAttribute(String name, byte[] value) {
throw new UnsupportedOperationException("ImmutableScan does not allow access to setAttribute");
}
@Override
public Scan setId(String id) {
throw new UnsupportedOperationException("ImmutableScan does not allow access to setId");
}
@Override
public Scan setAuthorizations(Authorizations authorizations) {
throw new UnsupportedOperationException(
"ImmutableScan does not allow access to setAuthorizations");
}
@Override
public Scan setACL(Map<String, Permission> perms) {
throw new UnsupportedOperationException("ImmutableScan does not allow access to setACL");
}
@Override
public Scan setACL(String user, Permission perms) {
throw new UnsupportedOperationException("ImmutableScan does not allow access to setACL");
}
@Override
public Scan setConsistency(Consistency consistency) {
throw new UnsupportedOperationException(
"ImmutableScan does not allow access to setConsistency");
}
@Override
public Scan setReplicaId(int id) {
throw new UnsupportedOperationException("ImmutableScan does not allow access to setReplicaId");
}
@Override
public Scan setIsolationLevel(IsolationLevel level) {
throw new UnsupportedOperationException(
"ImmutableScan does not allow access to setIsolationLevel");
}
@Override
public Scan setPriority(int priority) {
throw new UnsupportedOperationException("ImmutableScan does not allow access to setPriority");
}
@Override
public Scan setScanMetricsEnabled(final boolean enabled) {
throw new UnsupportedOperationException(
"ImmutableScan does not allow access to setScanMetricsEnabled");
}
@Override
@Deprecated
public Scan setAsyncPrefetch(boolean asyncPrefetch) {
throw new UnsupportedOperationException(
"ImmutableScan does not allow access to setAsyncPrefetch");
}
@Override
public Scan setLimit(int limit) {
throw new UnsupportedOperationException("ImmutableScan does not allow access to setLimit");
}
@Override
public Scan setOneRowLimit() {
throw new UnsupportedOperationException(
"ImmutableScan does not allow access to setOneRowLimit");
}
@Override
public Scan setReadType(ReadType readType) {
throw new UnsupportedOperationException("ImmutableScan does not allow access to setReadType");
}
@Override
Scan setMvccReadPoint(long mvccReadPoint) {
throw new UnsupportedOperationException(
"ImmutableScan does not allow access to setMvccReadPoint");
}
@Override
Scan resetMvccReadPoint() {
throw new UnsupportedOperationException(
"ImmutableScan does not allow access to resetMvccReadPoint");
}
@Override
public Scan setNeedCursorResult(boolean needCursorResult) {
throw new UnsupportedOperationException(
"ImmutableScan does not allow access to setNeedCursorResult");
}
@Override
public long getMaxResultSize() {
return this.delegateScan.getMaxResultSize();
}
@Override
public Map<byte[], NavigableSet<byte[]>> getFamilyMap() {
return Collections.unmodifiableMap(this.delegateScan.getFamilyMap());
}
@Override
public int numFamilies() {
return this.delegateScan.numFamilies();
}
@Override
public boolean hasFamilies() {
return this.delegateScan.hasFamilies();
}
@Override
public byte[][] getFamilies() {
final byte[][] families = this.delegateScan.getFamilies();
byte[][] cloneFamilies = new byte[families.length][];
for (int i = 0; i < families.length; i++) {
cloneFamilies[i] = Bytes.copy(families[i]);
}
return cloneFamilies;
}
@Override
public byte[] getStartRow() {
final byte[] startRow = this.delegateScan.getStartRow();
return Bytes.copy(startRow);
}
@Override
public boolean includeStartRow() {
return this.delegateScan.includeStartRow();
}
@Override
public byte[] getStopRow() {
final byte[] stopRow = this.delegateScan.getStopRow();
return Bytes.copy(stopRow);
}
@Override
public boolean includeStopRow() {
return this.delegateScan.includeStopRow();
}
@Override
public int getMaxVersions() {
return this.delegateScan.getMaxVersions();
}
@Override
public int getBatch() {
return this.delegateScan.getBatch();
}
@Override
public int getMaxResultsPerColumnFamily() {
return this.delegateScan.getMaxResultsPerColumnFamily();
}
@Override
public int getRowOffsetPerColumnFamily() {
return this.delegateScan.getRowOffsetPerColumnFamily();
}
@Override
public int getCaching() {
return this.delegateScan.getCaching();
}
@Override
public TimeRange getTimeRange() {
return this.delegateScan.getTimeRange();
}
@Override
public Filter getFilter() {
return this.delegateScan.getFilter();
}
@Override
public boolean hasFilter() {
return this.delegateScan.hasFilter();
}
@Override
public boolean getCacheBlocks() {
return this.delegateScan.getCacheBlocks();
}
@Override
public boolean isReversed() {
return this.delegateScan.isReversed();
}
@Override
public boolean getAllowPartialResults() {
return this.delegateScan.getAllowPartialResults();
}
@Override
public byte[] getACL() {
final byte[] acl = this.delegateScan.getACL();
return Bytes.copy(acl);
}
@Override
public Map<String, Object> getFingerprint() {
return Collections.unmodifiableMap(this.delegateScan.getFingerprint());
}
@Override
public Map<String, Object> toMap(int maxCols) {
return Collections.unmodifiableMap(this.delegateScan.toMap(maxCols));
}
@Override
public boolean isRaw() {
return this.delegateScan.isRaw();
}
@Override
@Deprecated
public boolean isSmall() {
return this.delegateScan.isSmall();
}
@Override
public boolean isScanMetricsEnabled() {
return this.delegateScan.isScanMetricsEnabled();
}
@Override
public Boolean isAsyncPrefetch() {
return this.delegateScan.isAsyncPrefetch();
}
@Override
public int getLimit() {
return this.delegateScan.getLimit();
}
@Override
public ReadType getReadType() {
return this.delegateScan.getReadType();
}
@Override
long getMvccReadPoint() {
return this.delegateScan.getMvccReadPoint();
}
@Override
public boolean isNeedCursorResult() {
return this.delegateScan.isNeedCursorResult();
}
@Override
public byte[] getAttribute(String name) {
final byte[] attribute = this.delegateScan.getAttribute(name);
return Bytes.copy(attribute);
}
@Override
public Consistency getConsistency() {
return this.delegateScan.getConsistency();
}
@Override
public long getAttributeSize() {
return this.delegateScan.getAttributeSize();
}
@Override
public Map<String, byte[]> getAttributesMap() {
return Collections.unmodifiableMap(this.delegateScan.getAttributesMap());
}
@Override
public Boolean getLoadColumnFamiliesOnDemandValue() {
return this.delegateScan.getLoadColumnFamiliesOnDemandValue();
}
@Override
public int getPriority() {
return this.delegateScan.getPriority();
}
@Override
public Map<byte[], TimeRange> getColumnFamilyTimeRange() {
return Collections.unmodifiableMap(this.delegateScan.getColumnFamilyTimeRange());
}
@Override
public int getReplicaId() {
return this.delegateScan.getReplicaId();
}
@Override
public boolean doLoadColumnFamiliesOnDemand() {
return this.delegateScan.doLoadColumnFamiliesOnDemand();
}
@Override
public String getId() {
return this.delegateScan.getId();
}
@Override
public boolean isGetScan() {
return this.delegateScan.isGetScan();
}
@Override
public IsolationLevel getIsolationLevel() {
return this.delegateScan.getIsolationLevel();
}
@Override
public Authorizations getAuthorizations() throws DeserializationException {
return this.delegateScan.getAuthorizations();
}
@Override
public String toString(int maxCols) {
return this.delegateScan.toString(maxCols);
}
@Override
public String toString() {
return this.delegateScan.toString();
}
@Override
public Map<String, Object> toMap() {
return Collections.unmodifiableMap(this.delegateScan.toMap());
}
@Override
public String toJSON(int maxCols) throws IOException {
return this.delegateScan.toJSON(maxCols);
}
@Override
public String toJSON() throws IOException {
return this.delegateScan.toJSON();
}
}