blob: cd45158cc4d5c0c3a617d87b1385889ff1b69a03 [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.geode.cache;
/**
* Supports modification of certain region attributes after the region has been created. It is
* recommended that the attributes be completely initialized using an {@link AttributesFactory}
* before creating the region instead of using an <code>AttributesMutator</code> after region
* creation. This will avoid a potential performance penalty due to the additional network traffic.
* <p>
* The setter methods all return the previous value of the attribute.
*
*
*
* @see Region#getAttributesMutator
* @see RegionAttributes
* @see AttributesFactory
* @since GemFire 3.0
*/
public interface AttributesMutator<K, V> {
/**
* Returns the Region whose attributes this mutator affects.
*
* @return the Region this mutator affects
*/
Region<K, V> getRegion();
/**
* Changes the timeToLive expiration attributes for the region as a whole
*
* @param timeToLive the expiration attributes for the region timeToLive
* @return the previous value of region timeToLive
* @throws IllegalArgumentException if timeToLive is null or if the ExpirationAction is
* LOCAL_INVALIDATE and the region is {@link DataPolicy#withReplication replicated}
* @throws IllegalStateException if statistics are disabled for this region.
*/
ExpirationAttributes setRegionTimeToLive(ExpirationAttributes timeToLive);
/**
* Changes the idleTimeout expiration attributes for the region as a whole. Resets the
* {@link CacheStatistics#getLastAccessedTime} for the region.
*
* @param idleTimeout the ExpirationAttributes for this region idleTimeout
* @return the previous value of region idleTimeout
* @throws IllegalArgumentException if idleTimeout is null or if the ExpirationAction is
* LOCAL_INVALIDATE and the region is {@link DataPolicy#withReplication replicated}
* @throws IllegalStateException if statistics are disabled for this region.
*/
ExpirationAttributes setRegionIdleTimeout(ExpirationAttributes idleTimeout);
/**
* Changes the timeToLive expiration attributes for values in this region.
*
* @param timeToLive the timeToLive expiration attributes for entries
* @return the previous value of entry timeToLive
* @throws IllegalArgumentException if timeToLive is null or if the ExpirationAction is
* LOCAL_DESTROY and the region is {@link DataPolicy#withReplication replicated} or if the
* ExpirationAction is LOCAL_INVALIDATE and the region is
* {@link DataPolicy#withReplication replicated}
* @throws IllegalStateException if statistics are disabled for this region.
*/
ExpirationAttributes setEntryTimeToLive(ExpirationAttributes timeToLive);
/**
* Changes the custom timeToLive for values in this region
*
* @param custom the new CustomExpiry
* @return the old CustomExpiry
*/
CustomExpiry<K, V> setCustomEntryTimeToLive(CustomExpiry<K, V> custom);
/**
* Changes the idleTimeout expiration attributes for values in the region.
*
* @param idleTimeout the idleTimeout expiration attributes for entries
* @return the previous value of entry idleTimeout
* @throws IllegalArgumentException if idleTimeout is null or if the ExpirationAction is
* LOCAL_DESTROY and the region is {@link DataPolicy#withReplication replicated} or if the
* the ExpirationAction is LOCAL_INVALIDATE and the region is
* {@link DataPolicy#withReplication replicated}
* @see AttributesFactory#setStatisticsEnabled
* @throws IllegalStateException if statistics are disabled for this region.
*/
ExpirationAttributes setEntryIdleTimeout(ExpirationAttributes idleTimeout);
/**
* Changes the CustomExpiry for idleTimeout for values in the region
*
* @param custom the new CustomExpiry
* @return the old CustomExpiry
*/
CustomExpiry<K, V> setCustomEntryIdleTimeout(CustomExpiry<K, V> custom);
/**
* Adds a cache listener to the end of the list of cache listeners on this region.
*
* @param aListener the user defined cache listener to add to the region.
* @throws IllegalArgumentException if <code>aListener</code> is null
* @since GemFire 5.0
*/
void addCacheListener(CacheListener<K, V> aListener);
/**
* Removes a cache listener from the list of cache listeners on this region. Does nothing if the
* specified listener has not been added. If the specified listener has been added then
* {@link CacheCallback#close} will be called on it; otherwise does nothing.
*
* @param aListener the cache listener to remove from the region.
* @throws IllegalArgumentException if <code>aListener</code> is null
* @since GemFire 5.0
*/
void removeCacheListener(CacheListener<K, V> aListener);
/**
* Removes all cache listeners, calling {@link CacheCallback#close} on each of them, and then adds
* each listener in the specified array.
*
* @param newListeners a possibly null or empty array of listeners to add to this region.
* @throws IllegalArgumentException if the <code>newListeners</code> array has a null element
* @since GemFire 5.0
*/
void initCacheListeners(CacheListener<K, V>[] newListeners);
/**
* Changes the cache writer for the region.
*
* @param cacheWriter the cache writer
* @return the previous CacheWriter
*/
CacheWriter<K, V> setCacheWriter(CacheWriter<K, V> cacheWriter);
/**
* Changes the cache loader for the region.
*
* Changing the cache loader for partitioned regions is not recommended due to the fact that it
* can result in an inconsistent cache loader configuration. This feature may be removed in future
* releases.
*
* @param cacheLoader the cache loader
* @return the previous CacheLoader
*/
CacheLoader<K, V> setCacheLoader(CacheLoader<K, V> cacheLoader);
/**
* Allows changing the eviction controller attributes for the region.
*
* @return the {@link EvictionAttributesMutator} used to change the EvictionAttributes
*/
EvictionAttributesMutator getEvictionAttributesMutator();
/**
* Sets cloning on region Note: off-heap regions always behave as if cloning is enabled.
*
* @since GemFire 6.1
*/
void setCloningEnabled(boolean cloningEnable);
/**
* Returns whether or not cloning is enabled on region
*
* @return True if cloning is enabled (default); false cloning is not enabled.
*
* @since GemFire 6.1
*/
boolean getCloningEnabled();
/**
* Adds GatewaySenderId to the list of GatewaySenderIds of the region. If the GatewaySenderId is
* not present on this VM then it will try to send it to other VM's
*
*/
void addGatewaySenderId(String gatewaySenderId);
/**
* Removes GatewaySenderId from the list of GatewaySenderIds of the region.
*
*/
void removeGatewaySenderId(String gatewaySenderId);
/**
* Adds AsyncEventQueueId to the list of AsyncEventQueueId of the region.
*
*/
void addAsyncEventQueueId(String asyncEventQueueId);
/**
* Removes AsyncEventQueueId from the list of AsyncEventQueuesId of the region.
*
*/
void removeAsyncEventQueueId(String asyncEventQueueId);
}