| /* |
| * |
| * 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(); |
| } |
| |
| } |