/*
* 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.geode.cache.operations;
import org.apache.geode.security.ResourcePermission;
/**
* Encapsulates a cache operation and the data associated with it for both the pre-operation and
* post-operation cases. Implementations for specific operations will extend this with the specifics
* as required e.g. a getKey() method for a GET operation. Implementations for all the cache
* operations that require authorization are provided.
*
* Implementations of this interface are <b>not</b> expected to be thread-safe.
*
* @since GemFire 5.5
*
* @deprecated since Geode1.0, use {@link ResourcePermission} instead
*/
public abstract class OperationContext {
public enum OperationCode {
@Deprecated
GET, @Deprecated
PUT, @Deprecated
PUTALL, @Deprecated
REMOVEALL, @Deprecated
DESTROY, @Deprecated
INVALIDATE, @Deprecated
REGISTER_INTEREST, @Deprecated
UNREGISTER_INTEREST, @Deprecated
CONTAINS_KEY, @Deprecated
KEY_SET, @Deprecated
QUERY, @Deprecated
EXECUTE_CQ, @Deprecated
STOP_CQ, @Deprecated
CLOSE_CQ, @Deprecated
REGION_CLEAR, @Deprecated
REGION_CREATE, @Deprecated
REGION_DESTROY, @Deprecated
EXECUTE_FUNCTION, @Deprecated
GET_DURABLE_CQS;
/**
* Check if this is an entry get operation.
*
* @return true if this is an entry get operation
* @deprecated Use {@code getOperationCode() == GET} instead
*/
@Deprecated
public boolean isGet() {
return (this == GET);
}
/**
* Check if this is a entry create/update operation.
*
* @return true if this is a entry create/update operation.
* @deprecated Use {@code getOperationCode() == PUT} instead
*/
@Deprecated
public boolean isPut() {
return (this == PUT);
}
/**
* Check if this is a map putAll operation.
*
* @return true if this is a map putAll operation.
* @deprecated Use {@code getOperationCode() == PUTALL} instead
*/
@Deprecated
public boolean isPutAll() {
return (this == PUTALL);
}
/**
* Check if this is a region removeAll operation.
*
* @return true if this is a region removeAll operation.
* @deprecated Use {@code getOperationCode() == REMOVEALL} instead
* @since GemFire 8.1
*/
@Deprecated
public boolean isRemoveAll() {
return (this == REMOVEALL);
}
/**
* Check if this is an entry destroy operation.
*
* @return true if this is an entry destroy operation.
* @deprecated Use {@code getOperationCode() == DESTROY} instead
*/
@Deprecated
public boolean isDestroy() {
return (this == DESTROY);
}
/**
* Check if this is an entry invalidate operation.
*
* @return true if this is an entry invalidate operation.
* @deprecated Use {@code getOperationCode() == INVALIDATE} instead
*/
@Deprecated
public boolean isInvalidate() {
return (this == INVALIDATE);
}
/**
* Check if this is a register interest operation.
*
* @return true if this is a register interest operation.
* @deprecated Use {@code getOperationCode() == REGISTER_INTEREST} instead
*/
@Deprecated
public boolean isRegisterInterest() {
return (this == REGISTER_INTEREST);
}
/**
* Check if this is an unregister interest operation.
*
* @return true if this is an unregister interest operation.
* @deprecated Use {@code getOperationCode() == UNREGISTER_INTEREST} instead
*/
@Deprecated
public boolean isUnregisterInterest() {
return (this == UNREGISTER_INTEREST);
}
/**
* Check if this is a region <code>containsKey</code> operation.
*
* @return true if this is a region <code>containsKey</code> operation.
* @deprecated Use {@code getOperationCode() == CONTAINS_KEY} instead
*/
@Deprecated
public boolean isContainsKey() {
return (this == CONTAINS_KEY);
}
/**
* Check if this is a region <code>keySet</code> operation.
*
* @return true if this is a region <code>keySet</code> operation.
* @deprecated Use {@code getOperationCode() == KEY_SET} instead
*/
@Deprecated
public boolean isKeySet() {
return (this == KEY_SET);
}
/**
* Check if this is a cache query operation.
*
* @return true if this is a cache query operation.
* @deprecated Use {@code getOperationCode() == QUERY} instead
*/
@Deprecated
public boolean isQuery() {
return (this == QUERY);
}
/**
* Check if this is a continuous query execution operation.
*
* @return true if this is a continuous query execution operation.
* @deprecated Use {@code getOperationCode() == EXECUTE_CQ} instead
*/
@Deprecated
public boolean isExecuteCQ() {
return (this == EXECUTE_CQ);
}
/**
* Check if this is a continuous query stop operation.
*
* @return true if this is a continuous query stop operation.
* @deprecated Use {@code getOperationCode() == STOP_CQ} instead
*/
@Deprecated
public boolean isStopCQ() {
return (this == STOP_CQ);
}
/**
* Check if this is a continuous query close operation.
*
* @return true if this is a continuous query close operation.
* @deprecated Use {@code getOperationCode() == CLOSE_CQ} instead
*/
@Deprecated
public boolean isCloseCQ() {
return (this == CLOSE_CQ);
}
/**
* Check if this is a region clear operation.
*
* @return true if this is a region clear operation.
* @deprecated Use {@code getOperationCode() == REGION_CLEAR} instead
*/
@Deprecated
public boolean isRegionClear() {
return (this == REGION_CLEAR);
}
/**
* Check if this is a region create operation.
*
* @return true if this is a region create operation.
* @deprecated Use {@code getOperationCode() == REGION_CREATE} instead
*/
@Deprecated
public boolean isRegionCreate() {
return (this == REGION_CREATE);
}
/**
* Check if this is a region destroy operation.
*
* @return true if this is a region destroy operation.
* @deprecated Use {@code getOperationCode() == REGION_DESTROY} instead
*/
@Deprecated
public boolean isRegionDestroy() {
return (this == REGION_DESTROY);
}
/**
* Check if this is a execute region function operation.
*
* @return true if this is a execute region function operation.
* @deprecated Use {@code getOperationCode() == EXECUTE_FUNCTION} instead
*/
@Deprecated
public boolean isExecuteRegionFunction() {
return (this == EXECUTE_FUNCTION);
}
/**
* Check if this is a get durable cqs operation.
*
* @return true if this is a get durable cqs operation.
* @deprecated Use {@code getOperationCode() == GET_DURABLE_CQS} instead
*/
@Deprecated
public boolean isGetDurableCQs() {
return (this == GET_DURABLE_CQS);
}
}
/**
* Return the operation code associated with the <code>OperationContext</code> object.
*/
public abstract OperationCode getOperationCode();
/**
* True if the context is for post-operation.
*
* The <code>OperationContext</code> interface encapsulates the data both before the operation is
* performed and after the operation is complete. For example, for a query operation the
* <code>Query</code> object as well as the list of region names referenced by the query would be
* part of the context object in the pre-processing stage. In the post-processing stage the
* context object shall contain results of the query.
*/
public abstract boolean isPostOperation();
/**
* When called post-operation, returns true if the operation was one that performed an update. An
* update occurs when one of the following methods on <code>getOperationCode()</code> returns
* true: <code>isPut()</code>, <code>isPutAll()</code>, <code>isDestroy()</code>,
* <code>isRemoveAll()</code>, <code>isInvalidate()</code>, <code>isRegionCreate()</code>,
* <code>isRegionClear()</code>, <code>isRegionDestroy()</code>. Otherwise, returns false.
*
* @since GemFire 6.6
*/
public boolean isClientUpdate() {
if (isPostOperation()) {
switch (getOperationCode()) {
case PUT:
case PUTALL:
case DESTROY:
case REMOVEALL:
case INVALIDATE:
case REGION_CREATE:
case REGION_DESTROY:
case REGION_CLEAR:
return true;
}
}
return false;
}
/**
* True if the context is created before sending the updates to a client.
*/
@Deprecated
public boolean isClientUpdate(OperationContext context) {
OperationCode opCode = context.getOperationCode();
return context.isPostOperation() && (opCode.isPut() || opCode.isPutAll() || opCode.isDestroy()
|| opCode.isRemoveAll() || opCode.isInvalidate() || opCode.isRegionCreate()
|| opCode.isRegionDestroy() || opCode.isRegionClear());
}
}