You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by mb...@apache.org on 2016/10/21 20:30:44 UTC
[05/51] [partial] incubator-geode git commit: Added Spotless plugin
to enforce formatting standards. Added Google Java Style guide formatter
templates, removed existing formatter templates.
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/8bf39571/geode-core/src/main/java/org/apache/geode/cache/CacheFactory.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/cache/CacheFactory.java b/geode-core/src/main/java/org/apache/geode/cache/CacheFactory.java
index 6d3fd4b..b62feac 100644
--- a/geode-core/src/main/java/org/apache/geode/cache/CacheFactory.java
+++ b/geode-core/src/main/java/org/apache/geode/cache/CacheFactory.java
@@ -1,18 +1,16 @@
/*
- * 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
+ * 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
+ * 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.
+ * 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;
@@ -33,28 +31,38 @@ import org.apache.geode.pdx.PdxSerializer;
/**
- * Factory class used to create the singleton {@link Cache cache} and connect to the GemFire singleton {@link DistributedSystem distributed system}. If the application wants to connect to GemFire as a client it should use {@link org.apache.geode.cache.client.ClientCacheFactory} instead.
-<p> Once the factory has been configured using its {@link #set(String, String)} method you produce a {@link Cache} by calling the {@link #create()} method.
+ * Factory class used to create the singleton {@link Cache cache} and connect to the GemFire
+ * singleton {@link DistributedSystem distributed system}. If the application wants to connect to
+ * GemFire as a client it should use {@link org.apache.geode.cache.client.ClientCacheFactory}
+ * instead.
+ * <p>
+ * Once the factory has been configured using its {@link #set(String, String)} method you produce a
+ * {@link Cache} by calling the {@link #create()} method.
* <p>
* To get the existing unclosed singleton cache instance call {@link #getAnyInstance}.
* <p>
- * If an instance of {@link DistributedSystem} already exists when this factory
- * creates a cache, that instance will be used if it is compatible with this factory.
-<p>
-The following examples illustrate bootstrapping the cache using region shortcuts:
-<p>
-Example 1: Create a cache and a replicate region named customers.
-<PRE>
- Cache c = new CacheFactory().create();
- Region r = c.createRegionFactory(REPLICATE).create("customers");
-</PRE>
-Example 2: Create a cache and a partition region with redundancy
-<PRE>
- Cache c = new CacheFactory().create();
- Region r = c.createRegionFactory(PARTITION_REDUNDANT).create("customers");
-</PRE>
-Example 3: Construct the cache region declaratively in cache.xml
-<PRE>
+ * If an instance of {@link DistributedSystem} already exists when this factory creates a cache,
+ * that instance will be used if it is compatible with this factory.
+ * <p>
+ * The following examples illustrate bootstrapping the cache using region shortcuts:
+ * <p>
+ * Example 1: Create a cache and a replicate region named customers.
+ *
+ * <PRE>
+ * Cache c = new CacheFactory().create();
+ * Region r = c.createRegionFactory(REPLICATE).create("customers");
+ * </PRE>
+ *
+ * Example 2: Create a cache and a partition region with redundancy
+ *
+ * <PRE>
+ * Cache c = new CacheFactory().create();
+ * Region r = c.createRegionFactory(PARTITION_REDUNDANT).create("customers");
+ * </PRE>
+ *
+ * Example 3: Construct the cache region declaratively in cache.xml
+ *
+ * <PRE>
<!DOCTYPE cache PUBLIC
"-//GemStone Systems, Inc.//GemFire Declarative Caching 8.0//EN"
"http://www.gemstone.com/dtd/cache8_0.dtd">
@@ -63,17 +71,19 @@ Example 3: Construct the cache region declaratively in cache.xml
<!-- you can override or add to the REPLICATE attributes by adding
a region-attributes sub element here -->
</cache>
-</PRE>
-Now, create the cache telling it to read your cache.xml file:
-<PRE>
- Cache c = new CacheFactory()
- .set("cache-xml-file", "myCache.xml")
- .create();
- Region r = c.getRegion("myRegion");
-</PRE>
-
-<p> For a complete list of all region shortcuts see {@link RegionShortcut}.
-Applications that need to explicitly control the individual region attributes can do this declaratively in XML or using APIs.
+ * </PRE>
+ *
+ * Now, create the cache telling it to read your cache.xml file:
+ *
+ * <PRE>
+ * Cache c = new CacheFactory().set("cache-xml-file", "myCache.xml").create();
+ * Region r = c.getRegion("myRegion");
+ * </PRE>
+ *
+ * <p>
+ * For a complete list of all region shortcuts see {@link RegionShortcut}. Applications that need to
+ * explicitly control the individual region attributes can do this declaratively in XML or using
+ * APIs.
*
*
*
@@ -82,20 +92,22 @@ Applications that need to explicitly control the individual region attributes ca
public class CacheFactory {
private final Properties dsProps;
-
- private final CacheConfig cacheConfig = new CacheConfig();
-
+
+ private final CacheConfig cacheConfig = new CacheConfig();
+
/**
* Creates a default cache factory.
+ *
* @since GemFire 6.5
*/
public CacheFactory() {
this(null);
}
+
/**
- * Create a CacheFactory initialized with the given gemfire properties.
- * For a list of valid GemFire properties and their meanings
- * see {@linkplain ConfigurationProperties}.
+ * Create a CacheFactory initialized with the given gemfire properties. For a list of valid
+ * GemFire properties and their meanings see {@linkplain ConfigurationProperties}.
+ *
* @param props the gemfire properties to initialize the factory with.
* @since GemFire 6.5
*/
@@ -107,9 +119,9 @@ public class CacheFactory {
}
/**
- * Sets a gemfire property that will be used when creating the Cache.
- * For a list of valid GemFire properties and their meanings
- * see {@link ConfigurationProperties}.
+ * Sets a gemfire property that will be used when creating the Cache. For a list of valid GemFire
+ * properties and their meanings see {@link ConfigurationProperties}.
+ *
* @param name the name of the gemfire property
* @param value the value of the gemfire property
* @return a reference to this CacheFactory object
@@ -119,107 +131,80 @@ public class CacheFactory {
this.dsProps.setProperty(name, value);
return this;
}
+
/**
* Creates a new cache that uses the specified <code>system</code>.
*
* <p>
*
- * The <code>system</code> can specify a <A
- * href="../distributed/DistributedSystem.html#cache-xml-file">"cache-xml-file"</a>
- * property which will cause this creation to also create the
- * regions, objects, and attributes declared in the file. The
- * contents of the file must comply with the
- * <code>"doc-files/cache8_0.dtd"></code> file.
- * Note that when parsing the XML file {@link Declarable} classes
- * are loaded using the current thread's {@linkplain
- * Thread#getContextClassLoader context class loader}.
+ * The <code>system</code> can specify a
+ * <A href="../distributed/DistributedSystem.html#cache-xml-file">"cache-xml-file"</a> property
+ * which will cause this creation to also create the regions, objects, and attributes declared in
+ * the file. The contents of the file must comply with the <code>"doc-files/cache8_0.dtd"></code>
+ * file. Note that when parsing the XML file {@link Declarable} classes are loaded using the
+ * current thread's {@linkplain Thread#getContextClassLoader context class loader}.
*
- * @param system
- * a <code>DistributedSystem</code> obtained by calling
+ * @param system a <code>DistributedSystem</code> obtained by calling
* {@link DistributedSystem#connect}.
*
- * @return a <code>Cache</code> that uses the specified
- * <code>system</code> for distribution.
+ * @return a <code>Cache</code> that uses the specified <code>system</code> for distribution.
*
- * @throws IllegalArgumentException
- * If <code>system</code> is not {@link
- * DistributedSystem#isConnected connected}.
- * @throws CacheExistsException
- * If an open cache already exists.
- * @throws CacheXmlException
- * If a problem occurs while parsing the declarative caching
- * XML file.
- * @throws TimeoutException
- * If a {@link Region#put(Object, Object)} times out while initializing the
- * cache.
- * @throws CacheWriterException
- * If a <code>CacheWriterException</code> is thrown while
+ * @throws IllegalArgumentException If <code>system</code> is not
+ * {@link DistributedSystem#isConnected connected}.
+ * @throws CacheExistsException If an open cache already exists.
+ * @throws CacheXmlException If a problem occurs while parsing the declarative caching XML file.
+ * @throws TimeoutException If a {@link Region#put(Object, Object)} times out while initializing
+ * the cache.
+ * @throws CacheWriterException If a <code>CacheWriterException</code> is thrown while
* initializing the cache.
- * @throws GatewayException
- * If a <code>GatewayException</code> is thrown while
- * initializing the cache.
- * @throws RegionExistsException
- * If the declarative caching XML file describes a region
- * that already exists (including the root region).
+ * @throws GatewayException If a <code>GatewayException</code> is thrown while initializing the
+ * cache.
+ * @throws RegionExistsException If the declarative caching XML file describes a region that
+ * already exists (including the root region).
* @deprecated as of 6.5 use {@link #CacheFactory(Properties)} instead.
*/
@Deprecated
- public static synchronized Cache create(DistributedSystem system)
- throws CacheExistsException, TimeoutException, CacheWriterException,
- GatewayException,
- RegionExistsException
- {
+ public static synchronized Cache create(DistributedSystem system) throws CacheExistsException,
+ TimeoutException, CacheWriterException, GatewayException, RegionExistsException {
return create(system, false, new CacheConfig());
}
-
- private static synchronized Cache create(DistributedSystem system, boolean existingOk, CacheConfig cacheConfig)
- throws CacheExistsException, TimeoutException, CacheWriterException,
- GatewayException,
- RegionExistsException
- {
+
+ private static synchronized Cache create(DistributedSystem system, boolean existingOk,
+ CacheConfig cacheConfig) throws CacheExistsException, TimeoutException, CacheWriterException,
+ GatewayException, RegionExistsException {
// Moved code in this method to GemFireCacheImpl.create
return GemFireCacheImpl.create(system, existingOk, cacheConfig);
}
/**
- * Creates a new cache that uses the configured distributed system.
- * If a connected distributed system already exists it will be used
- * if it is compatible with the properties on this factory.
- * Otherwise a a distributed system will be created with the configured properties.
- * If a cache already exists it will be returned.
- * <p>If the cache does need to be created it will also be initialized from
- * cache.xml if it exists.
+ * Creates a new cache that uses the configured distributed system. If a connected distributed
+ * system already exists it will be used if it is compatible with the properties on this factory.
+ * Otherwise a a distributed system will be created with the configured properties. If a cache
+ * already exists it will be returned.
+ * <p>
+ * If the cache does need to be created it will also be initialized from cache.xml if it exists.
*
* @return the created or already existing singleton cache
*
- * @throws CacheXmlException
- * If a problem occurs while parsing the declarative caching
- * XML file.
- * @throws TimeoutException
- * If a {@link Region#put(Object, Object)} times out while initializing the
- * cache.
- * @throws CacheWriterException
- * If a <code>CacheWriterException</code> is thrown while
+ * @throws CacheXmlException If a problem occurs while parsing the declarative caching XML file.
+ * @throws TimeoutException If a {@link Region#put(Object, Object)} times out while initializing
+ * the cache.
+ * @throws CacheWriterException If a <code>CacheWriterException</code> is thrown while
* initializing the cache.
- * @throws GatewayException
- * If a <code>GatewayException</code> is thrown while
- * initializing the cache.
- * @throws RegionExistsException
- * If the declarative caching XML file describes a region
- * that already exists (including the root region).
- * @throws IllegalStateException if cache already exists and is not compatible
- * with the new configuration.
+ * @throws GatewayException If a <code>GatewayException</code> is thrown while initializing the
+ * cache.
+ * @throws RegionExistsException If the declarative caching XML file describes a region that
+ * already exists (including the root region).
+ * @throws IllegalStateException if cache already exists and is not compatible with the new
+ * configuration.
* @throws AuthenticationFailedException if authentication fails.
- * @throws AuthenticationRequiredException if the distributed system is in secure mode
- * and this new member is not configured with security credentials.
+ * @throws AuthenticationRequiredException if the distributed system is in secure mode and this
+ * new member is not configured with security credentials.
* @since GemFire 6.5
*/
public Cache create()
- throws TimeoutException, CacheWriterException,
- GatewayException,
- RegionExistsException
- {
- synchronized(CacheFactory.class) {
+ throws TimeoutException, CacheWriterException, GatewayException, RegionExistsException {
+ synchronized (CacheFactory.class) {
DistributedSystem ds = null;
if (this.dsProps.isEmpty()) {
// any ds will do
@@ -233,20 +218,21 @@ public class CacheFactory {
}
/**
- * Gets the instance of {@link Cache} produced by an
- * earlier call to {@link #create()}.
+ * Gets the instance of {@link Cache} produced by an earlier call to {@link #create()}.
+ *
* @param system the <code>DistributedSystem</code> the cache was created with.
* @return the {@link Cache} associated with the specified system.
- * @throws CacheClosedException if a cache has not been created
- * or the created one is {@link Cache#isClosed closed}
+ * @throws CacheClosedException if a cache has not been created or the created one is
+ * {@link Cache#isClosed closed}
*/
public static Cache getInstance(DistributedSystem system) {
return basicGetInstance(system, false);
}
/**
- * Gets the instance of {@link Cache} produced by an
- * earlier call to {@link #create()} even if it has been closed.
+ * Gets the instance of {@link Cache} produced by an earlier call to {@link #create()} even if it
+ * has been closed.
+ *
* @param system the <code>DistributedSystem</code> the cache was created with.
* @return the {@link Cache} associated with the specified system.
* @throws CacheClosedException if a cache has not been created
@@ -261,8 +247,8 @@ public class CacheFactory {
// Avoid synchronization if this is an initialization thread to avoid
// deadlock when messaging returns to this VM
final int initReq = LocalRegion.threadInitLevelRequirement();
- if (initReq == LocalRegion.ANY_INIT
- || initReq == LocalRegion.BEFORE_INITIAL_IMAGE) { // fix bug 33471
+ if (initReq == LocalRegion.ANY_INIT || initReq == LocalRegion.BEFORE_INITIAL_IMAGE) { // fix bug
+ // 33471
return basicGetInstancePart2(system, closeOk);
} else {
synchronized (CacheFactory.class) {
@@ -270,70 +256,80 @@ public class CacheFactory {
}
}
}
+
private static Cache basicGetInstancePart2(DistributedSystem system, boolean closeOk) {
GemFireCacheImpl instance = GemFireCacheImpl.getInstance();
if (instance == null) {
- throw new CacheClosedException(LocalizedStrings.CacheFactory_A_CACHE_HAS_NOT_YET_BEEN_CREATED.toLocalizedString());
+ throw new CacheClosedException(
+ LocalizedStrings.CacheFactory_A_CACHE_HAS_NOT_YET_BEEN_CREATED.toLocalizedString());
} else {
if (instance.isClosed() && !closeOk) {
- throw instance.getCacheClosedException(LocalizedStrings.CacheFactory_THE_CACHE_HAS_BEEN_CLOSED.toLocalizedString(), null);
+ throw instance.getCacheClosedException(
+ LocalizedStrings.CacheFactory_THE_CACHE_HAS_BEEN_CLOSED.toLocalizedString(), null);
}
if (!instance.getDistributedSystem().equals(system)) {
- throw new CacheClosedException(LocalizedStrings.CacheFactory_A_CACHE_HAS_NOT_YET_BEEN_CREATED_FOR_THE_GIVEN_DISTRIBUTED_SYSTEM.toLocalizedString());
+ throw new CacheClosedException(
+ LocalizedStrings.CacheFactory_A_CACHE_HAS_NOT_YET_BEEN_CREATED_FOR_THE_GIVEN_DISTRIBUTED_SYSTEM
+ .toLocalizedString());
}
return instance;
}
}
/**
- * Gets an arbitrary open instance of {@link Cache} produced by an
- * earlier call to {@link #create()}.
- * @throws CacheClosedException if a cache has not been created
- * or the only created one is {@link Cache#isClosed closed}
+ * Gets an arbitrary open instance of {@link Cache} produced by an earlier call to
+ * {@link #create()}.
+ *
+ * @throws CacheClosedException if a cache has not been created or the only created one is
+ * {@link Cache#isClosed closed}
*/
public static synchronized Cache getAnyInstance() {
GemFireCacheImpl instance = GemFireCacheImpl.getInstance();
if (instance == null) {
- throw new CacheClosedException(LocalizedStrings.CacheFactory_A_CACHE_HAS_NOT_YET_BEEN_CREATED.toLocalizedString());
+ throw new CacheClosedException(
+ LocalizedStrings.CacheFactory_A_CACHE_HAS_NOT_YET_BEEN_CREATED.toLocalizedString());
} else {
instance.getCancelCriterion().checkCancelInProgress(null);
return instance;
}
}
- /** Returns the version of the cache implementation.
+ /**
+ * Returns the version of the cache implementation.
+ *
* @return the version of the cache implementation as a <code>String</code>
*/
public static String getVersion() {
return GemFireVersion.getGemFireVersion();
}
-
- /** Sets the object preference to PdxInstance type.
- * When a cached object that was serialized as a PDX is read
- * from the cache a {@link PdxInstance} will be returned instead of the actual domain class.
- * The PdxInstance is an interface that provides run time access to
- * the fields of a PDX without deserializing the entire PDX.
- * The PdxInstance implementation is a light weight wrapper
- * that simply refers to the raw bytes of the PDX that are kept
- * in the cache. Using this method applications can choose to
- * access PdxInstance instead of Java object.
- * <p>Note that a PdxInstance is only returned if a serialized PDX is found in the cache.
- * If the cache contains a deserialized PDX, then a domain class instance is returned instead of a PdxInstance.
- *
- * @param readSerialized true to prefer PdxInstance
- * @return this CacheFactory
- * @since GemFire 6.6
- * @see org.apache.geode.pdx.PdxInstance
+
+ /**
+ * Sets the object preference to PdxInstance type. When a cached object that was serialized as a
+ * PDX is read from the cache a {@link PdxInstance} will be returned instead of the actual domain
+ * class. The PdxInstance is an interface that provides run time access to the fields of a PDX
+ * without deserializing the entire PDX. The PdxInstance implementation is a light weight wrapper
+ * that simply refers to the raw bytes of the PDX that are kept in the cache. Using this method
+ * applications can choose to access PdxInstance instead of Java object.
+ * <p>
+ * Note that a PdxInstance is only returned if a serialized PDX is found in the cache. If the
+ * cache contains a deserialized PDX, then a domain class instance is returned instead of a
+ * PdxInstance.
+ *
+ * @param readSerialized true to prefer PdxInstance
+ * @return this CacheFactory
+ * @since GemFire 6.6
+ * @see org.apache.geode.pdx.PdxInstance
*/
- public CacheFactory setPdxReadSerialized(boolean readSerialized) {
+ public CacheFactory setPdxReadSerialized(boolean readSerialized) {
this.cacheConfig.setPdxReadSerialized(readSerialized);
return this;
}
-
+
/**
- * Set the PDX serializer for the cache. If this serializer is set,
- * it will be consulted to see if it can serialize any domain classes which are
- * added to the cache in portable data exchange format.
+ * Set the PDX serializer for the cache. If this serializer is set, it will be consulted to see if
+ * it can serialize any domain classes which are added to the cache in portable data exchange
+ * format.
+ *
* @param serializer the serializer to use
* @return this CacheFactory
* @since GemFire 6.6
@@ -343,16 +339,15 @@ public class CacheFactory {
this.cacheConfig.setPdxSerializer(serializer);
return this;
}
-
+
/**
- * Set the disk store that is used for PDX meta data. When
- * serializing objects in the PDX format, the type definitions
- * are persisted to disk. This setting controls which disk store
- * is used for that persistence.
+ * Set the disk store that is used for PDX meta data. When serializing objects in the PDX format,
+ * the type definitions are persisted to disk. This setting controls which disk store is used for
+ * that persistence.
*
* If not set, the metadata will go in the default disk store.
- * @param diskStoreName the name of the disk store to use
- * for the PDX metadata.
+ *
+ * @param diskStoreName the name of the disk store to use for the PDX metadata.
* @return this CacheFactory
* @since GemFire 6.6
*/
@@ -362,14 +357,12 @@ public class CacheFactory {
}
/**
- * Control whether the type metadata for PDX objects is persisted to disk. The
- * default for this setting is false. If you are using persistent regions with
- * PDX then you must set this to true. If you are using a
- * <code>GatewaySender</code> or <code>AsyncEventQueue</code> with PDX then
- * you should set this to true.
+ * Control whether the type metadata for PDX objects is persisted to disk. The default for this
+ * setting is false. If you are using persistent regions with PDX then you must set this to true.
+ * If you are using a <code>GatewaySender</code> or <code>AsyncEventQueue</code> with PDX then you
+ * should set this to true.
*
- * @param isPersistent
- * true if the metadata should be persistent
+ * @param isPersistent true if the metadata should be persistent
* @return this CacheFactory
* @since GemFire 6.6
*/
@@ -377,17 +370,18 @@ public class CacheFactory {
this.cacheConfig.setPdxPersistent(isPersistent);
return this;
}
+
/**
- * Control whether pdx ignores fields that were unread during deserialization.
- * The default is to preserve unread fields be including their data during serialization.
- * But if you configure the cache to ignore unread fields then their data will be lost
- * during serialization.
- * <P>You should only set this attribute to <code>true</code> if you know this member
- * will only be reading cache data. In this use case you do not need to pay the cost
- * of preserving the unread fields since you will never be reserializing pdx data.
+ * Control whether pdx ignores fields that were unread during deserialization. The default is to
+ * preserve unread fields be including their data during serialization. But if you configure the
+ * cache to ignore unread fields then their data will be lost during serialization.
+ * <P>
+ * You should only set this attribute to <code>true</code> if you know this member will only be
+ * reading cache data. In this use case you do not need to pay the cost of preserving the unread
+ * fields since you will never be reserializing pdx data.
*
- * @param ignore <code>true</code> if fields not read during pdx deserialization should be ignored;
- * <code>false</code>, the default, if they should be preserved.
+ * @param ignore <code>true</code> if fields not read during pdx deserialization should be
+ * ignored; <code>false</code>, the default, if they should be preserved.
* @return this CacheFactory
* @since GemFire 6.6
*/
@@ -395,5 +389,5 @@ public class CacheFactory {
this.cacheConfig.setPdxIgnoreUnreadFields(ignore);
return this;
}
-}
+}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/8bf39571/geode-core/src/main/java/org/apache/geode/cache/CacheListener.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/cache/CacheListener.java b/geode-core/src/main/java/org/apache/geode/cache/CacheListener.java
index db4bb3c..8f23238 100644
--- a/geode-core/src/main/java/org/apache/geode/cache/CacheListener.java
+++ b/geode-core/src/main/java/org/apache/geode/cache/CacheListener.java
@@ -1,18 +1,16 @@
/*
- * 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
+ * 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
+ * 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.
+ * 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;
@@ -28,35 +26,30 @@ package org.apache.geode.cache;
*
* <h4>Avoiding the risk of deadlock</h4>
* <p>
- * The methods on a <code>CacheListener</code> are invoked while holding a lock
- * on the entry described by the {@link EntryEvent}, as a result if the listener
- * method takes a long time to execute then it will cause the operation that
- * caused it to be invoked to take a long time. In addition, listener code which
- * calls {@link Region} methods could result in a deadlock. For example, in
- * {@link #afterUpdate(EntryEvent)} for entry key k1,
- * {@link Region#put(Object, Object) put(k2, someVal)} is called at the same
- * time {@link #afterUpdate(EntryEvent)} for entry key k2 calls
- * {@link Region#put(Object, Object) put(k1, someVal)} a deadlock may result.
- * This co-key dependency example can be extended to a co-Region dependency
- * where listener code in Region "A" performs Region operations on "B" and
- * listener code in Region "B" performs Region operations on "A". Deadlocks may
- * be either java-level or distributed multi-VM dead locks depending on Region
- * configuration. To be assured of no deadlocks, listener code should cause some
- * other thread to access the region and must not wait for that thread to
- * complete the task.
+ * The methods on a <code>CacheListener</code> are invoked while holding a lock on the entry
+ * described by the {@link EntryEvent}, as a result if the listener method takes a long time to
+ * execute then it will cause the operation that caused it to be invoked to take a long time. In
+ * addition, listener code which calls {@link Region} methods could result in a deadlock. For
+ * example, in {@link #afterUpdate(EntryEvent)} for entry key k1, {@link Region#put(Object, Object)
+ * put(k2, someVal)} is called at the same time {@link #afterUpdate(EntryEvent)} for entry key k2
+ * calls {@link Region#put(Object, Object) put(k1, someVal)} a deadlock may result. This co-key
+ * dependency example can be extended to a co-Region dependency where listener code in Region "A"
+ * performs Region operations on "B" and listener code in Region "B" performs Region operations on
+ * "A". Deadlocks may be either java-level or distributed multi-VM dead locks depending on Region
+ * configuration. To be assured of no deadlocks, listener code should cause some other thread to
+ * access the region and must not wait for that thread to complete the task.
* </p>
*
* <h4>Concurrency</h4>
* <p>
* Multiple events, on different entries, can cause concurrent invocation of
- * <code>CacheListener</code> methods. Any exceptions thrown by the listener are
- * caught by GemFire and logged.
+ * <code>CacheListener</code> methods. Any exceptions thrown by the listener are caught by GemFire
+ * and logged.
* </p>
*
- * <h4>Declaring instances in Cache XML files</h4>
+ * <h4>Declaring instances in Cache XML files</h4>
* <p>
- * To declare a CacheListener in a Cache XML file, it must also implement
- * {@link Declarable}
+ * To declare a CacheListener in a Cache XML file, it must also implement {@link Declarable}
* </p>
*
*
@@ -68,29 +61,27 @@ package org.apache.geode.cache;
* @see AttributesMutator#initCacheListeners
* @since GemFire 3.0
*/
-public interface CacheListener<K,V> extends CacheCallback {
+public interface CacheListener<K, V> extends CacheCallback {
/**
- * Handles the event of new key being added to a region. The entry did not
- * previously exist in this region in the local cache (even with a null
- * value).
+ * Handles the event of new key being added to a region. The entry did not previously exist in
+ * this region in the local cache (even with a null value).
*
* @param event the EntryEvent
* @see Region#create(Object, Object)
* @see Region#put(Object, Object)
* @see Region#get(Object)
*/
- public void afterCreate(EntryEvent<K,V> event);
+ public void afterCreate(EntryEvent<K, V> event);
/**
- * Handles the event of an entry's value being modified in a region. This
- * entry previously existed in this region in the local cache, but its
- * previous value may have been null.
+ * Handles the event of an entry's value being modified in a region. This entry previously existed
+ * in this region in the local cache, but its previous value may have been null.
*
* @param event the EntryEvent
* @see Region#put(Object, Object)
*/
- public void afterUpdate(EntryEvent<K,V> event);
+ public void afterUpdate(EntryEvent<K, V> event);
/**
* Handles the event of an entry's value being invalidated.
@@ -98,7 +89,7 @@ public interface CacheListener<K,V> extends CacheCallback {
* @param event the EntryEvent
* @see Region#invalidate(Object)
*/
- public void afterInvalidate(EntryEvent<K,V> event);
+ public void afterInvalidate(EntryEvent<K, V> event);
/**
* Handles the event of an entry being destroyed.
@@ -106,25 +97,23 @@ public interface CacheListener<K,V> extends CacheCallback {
* @param event the EntryEvent
* @see Region#destroy(Object)
*/
- public void afterDestroy(EntryEvent<K,V> event);
+ public void afterDestroy(EntryEvent<K, V> event);
/**
- * Handles the event of a region being invalidated. Events are not invoked for
- * each individual value that is invalidated as a result of the region being
- * invalidated. Each subregion, however, gets its own
- * <code>regionInvalidated</code> event invoked on its listener.
+ * Handles the event of a region being invalidated. Events are not invoked for each individual
+ * value that is invalidated as a result of the region being invalidated. Each subregion, however,
+ * gets its own <code>regionInvalidated</code> event invoked on its listener.
*
* @param event the RegionEvent
* @see Region#invalidateRegion()
* @see Region#localInvalidateRegion()
*/
- public void afterRegionInvalidate(RegionEvent<K,V> event);
+ public void afterRegionInvalidate(RegionEvent<K, V> event);
/**
- * Handles the event of a region being destroyed. Events are not invoked for
- * each individual entry that is destroyed as a result of the region being
- * destroyed. Each subregion, however, gets its own
- * <code>afterRegionDestroyed</code> event invoked on its listener.
+ * Handles the event of a region being destroyed. Events are not invoked for each individual entry
+ * that is destroyed as a result of the region being destroyed. Each subregion, however, gets its
+ * own <code>afterRegionDestroyed</code> event invoked on its listener.
*
* @param event the RegionEvent
* @see Region#destroyRegion()
@@ -132,26 +121,25 @@ public interface CacheListener<K,V> extends CacheCallback {
* @see Region#close
* @see Cache#close()
*/
- public void afterRegionDestroy(RegionEvent<K,V> event);
+ public void afterRegionDestroy(RegionEvent<K, V> event);
/**
- * Handles the event of a region being cleared. Events are not invoked for
- * each individual entry that is removed as a result of the region being
- * cleared.
+ * Handles the event of a region being cleared. Events are not invoked for each individual entry
+ * that is removed as a result of the region being cleared.
*
* @param event the RegionEvent
*
* @see Region#clear
* @since GemFire 5.0
*/
- public void afterRegionClear(RegionEvent<K,V> event);
-
+ public void afterRegionClear(RegionEvent<K, V> event);
+
/**
- * Handles the event of a region being created. Events are invoked for
- * each individual region that is created.
- * <p>Note that this method is only called
- * for creates done in the local vm. To be notified of creates done in remote
- * vms use {@link RegionMembershipListener#afterRemoteRegionCreate}.
+ * Handles the event of a region being created. Events are invoked for each individual region that
+ * is created.
+ * <p>
+ * Note that this method is only called for creates done in the local vm. To be notified of
+ * creates done in remote vms use {@link RegionMembershipListener#afterRemoteRegionCreate}.
*
* @param event the RegionEvent
*
@@ -159,7 +147,7 @@ public interface CacheListener<K,V> extends CacheCallback {
* @see Region#createSubregion
* @since GemFire 5.0
*/
- public void afterRegionCreate(RegionEvent<K,V> event);
+ public void afterRegionCreate(RegionEvent<K, V> event);
/**
* Handles the event of a region being live after receiving the marker from the server.
@@ -169,5 +157,5 @@ public interface CacheListener<K,V> extends CacheCallback {
* @see Cache#readyForEvents
* @since GemFire 5.5
*/
- public void afterRegionLive(RegionEvent<K,V> event);
+ public void afterRegionLive(RegionEvent<K, V> event);
}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/8bf39571/geode-core/src/main/java/org/apache/geode/cache/CacheLoader.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/cache/CacheLoader.java b/geode-core/src/main/java/org/apache/geode/cache/CacheLoader.java
index 7bb30c7..8812816 100644
--- a/geode-core/src/main/java/org/apache/geode/cache/CacheLoader.java
+++ b/geode-core/src/main/java/org/apache/geode/cache/CacheLoader.java
@@ -1,32 +1,28 @@
/*
- * 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
+ * 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
+ * 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.
+ * 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;
/**
- * Allows data from outside of the VM to be placed into a region.
- * When {@link org.apache.geode.cache.Region#get(Object)} is called for a region
- * entry that has a <code>null</code> value, the
- * {@link CacheLoader#load load} method of the
- * region's cache loader is invoked. The <code>load</code> method
- * creates the value for the desired key by performing an operation such
- * as a database query. The <code>load</code> may also perform a
- * {@linkplain LoaderHelper#netSearch net search}
- * that will look for the value in a cache instance hosted by
- * another member of the distributed system.</p>
+ * Allows data from outside of the VM to be placed into a region. When
+ * {@link org.apache.geode.cache.Region#get(Object)} is called for a region entry that has a
+ * <code>null</code> value, the {@link CacheLoader#load load} method of the region's cache loader is
+ * invoked. The <code>load</code> method creates the value for the desired key by performing an
+ * operation such as a database query. The <code>load</code> may also perform a
+ * {@linkplain LoaderHelper#netSearch net search} that will look for the value in a cache instance
+ * hosted by another member of the distributed system.
+ * </p>
*
*
*
@@ -35,29 +31,25 @@ package org.apache.geode.cache;
* @see AttributesMutator#setCacheLoader
* @since GemFire 2.0
*/
-public interface CacheLoader<K,V> extends CacheCallback {
+public interface CacheLoader<K, V> extends CacheCallback {
/**
- * Loads a value. Application writers should implement this
- * method to customize the loading of a value. This method is called
- * by the caching service when the requested value is not in the cache.
- * Any exception (including an unchecked exception) thrown by this
- * method is propagated back to and thrown by the invocation of
- * {@link Region#get(Object, Object)} that triggered this load.
+ * Loads a value. Application writers should implement this method to customize the loading of a
+ * value. This method is called by the caching service when the requested value is not in the
+ * cache. Any exception (including an unchecked exception) thrown by this method is propagated
+ * back to and thrown by the invocation of {@link Region#get(Object, Object)} that triggered this
+ * load.
* <p>
*
- * @param helper a LoaderHelper object that is passed in from cache service
- * and provides access to the key, region, argument, and <code>netSearch</code>.
- * @return the value supplied for this key, or null if no value can be
- * supplied. A local loader will always be invoked if one exists.
- * Otherwise one remote loader is invoked.
- * Returning <code>null</code> causes
- * {@link Region#get(Object, Object)} to return <code>null</code>.
- * @throws CacheLoaderException, if an error occurs. This exception or any
- * other exception thrown by this method will be propagated back to the
- * application from the get method.
+ * @param helper a LoaderHelper object that is passed in from cache service and provides access to
+ * the key, region, argument, and <code>netSearch</code>.
+ * @return the value supplied for this key, or null if no value can be supplied. A local loader
+ * will always be invoked if one exists. Otherwise one remote loader is invoked. Returning
+ * <code>null</code> causes {@link Region#get(Object, Object)} to return
+ * <code>null</code>.
+ * @throws CacheLoaderException, if an error occurs. This exception or any other exception thrown
+ * by this method will be propagated back to the application from the get method.
*
- * @see Region#get(Object, Object) Region.get
+ * @see Region#get(Object, Object) Region.get
*/
- public V load(LoaderHelper<K,V> helper)
- throws CacheLoaderException;
+ public V load(LoaderHelper<K, V> helper) throws CacheLoaderException;
}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/8bf39571/geode-core/src/main/java/org/apache/geode/cache/CacheLoaderException.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/cache/CacheLoaderException.java b/geode-core/src/main/java/org/apache/geode/cache/CacheLoaderException.java
index 30e8ebe..65d147a 100755
--- a/geode-core/src/main/java/org/apache/geode/cache/CacheLoaderException.java
+++ b/geode-core/src/main/java/org/apache/geode/cache/CacheLoaderException.java
@@ -1,25 +1,24 @@
/*
- * 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
+ * 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
+ * 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.
+ * 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;
-/** Thrown from the {@link CacheLoader#load} method indicating that an error
- * occurred when a CacheLoader was attempting to load a value. This
- * exception is propagated back to the caller of <code>Region.get</code>.
+/**
+ * Thrown from the {@link CacheLoader#load} method indicating that an error occurred when a
+ * CacheLoader was attempting to load a value. This exception is propagated back to the caller of
+ * <code>Region.get</code>.
*
*
*
@@ -28,35 +27,37 @@ package org.apache.geode.cache;
* @since GemFire 3.0
*/
public class CacheLoaderException extends OperationAbortedException {
-private static final long serialVersionUID = -3383072059406642140L;
-
+ private static final long serialVersionUID = -3383072059406642140L;
+
/**
* Creates a new instance of <code>CacheLoaderException</code>.
*/
- public CacheLoaderException() {
- }
-
-
+ public CacheLoaderException() {}
+
+
/**
* Constructs an instance of <code>CacheLoaderException</code> with the specified detail message.
+ *
* @param msg the detail message
*/
public CacheLoaderException(String msg) {
super(msg);
}
-
+
/**
* Constructs an instance of <code>CacheLoaderException</code> with the specified detail message
* and cause.
+ *
* @param msg the detail message
* @param cause the causal Throwable
*/
public CacheLoaderException(String msg, Throwable cause) {
super(msg, cause);
}
-
+
/**
* Constructs an instance of <code>CacheLoaderException</code> with the specified cause.
+ *
* @param cause the causal Throwable
*/
public CacheLoaderException(Throwable cause) {
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/8bf39571/geode-core/src/main/java/org/apache/geode/cache/CacheRuntimeException.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/cache/CacheRuntimeException.java b/geode-core/src/main/java/org/apache/geode/cache/CacheRuntimeException.java
index d103e6a..a723b32 100644
--- a/geode-core/src/main/java/org/apache/geode/cache/CacheRuntimeException.java
+++ b/geode-core/src/main/java/org/apache/geode/cache/CacheRuntimeException.java
@@ -1,27 +1,25 @@
/*
- * 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
+ * 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
+ * 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.
+ * 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;
import org.apache.geode.GemFireException;
-/** A generic runtime exception that indicates
- * a cache error has occurred. All the other runtime cache exceptions are the
- * subclass of this class. This class is abstract so only subclasses can be
+/**
+ * A generic runtime exception that indicates a cache error has occurred. All the other runtime
+ * cache exceptions are the subclass of this class. This class is abstract so only subclasses can be
* instantiated
*
*
@@ -33,30 +31,32 @@ public abstract class CacheRuntimeException extends GemFireException {
/**
* Creates a new instance of <code>CacheRuntimeException</code> without detail message.
*/
- public CacheRuntimeException() {
- }
-
-
+ public CacheRuntimeException() {}
+
+
/**
* Constructs an instance of <code>CacheRuntimeException</code> with the specified detail message.
+ *
* @param msg the detail message
*/
public CacheRuntimeException(String msg) {
super(msg);
}
-
+
/**
* Constructs an instance of <code>CacheRuntimeException</code> with the specified detail message
* and cause.
+ *
* @param msg the detail message
* @param cause the causal Throwable
*/
public CacheRuntimeException(String msg, Throwable cause) {
super(msg, cause);
}
-
+
/**
* Constructs an instance of <code>CacheRuntimeException</code> with the specified cause.
+ *
* @param cause the causal Throwable
*/
public CacheRuntimeException(Throwable cause) {
@@ -71,9 +71,7 @@ public abstract class CacheRuntimeException extends GemFireException {
String causeStr = cause.toString();
final String glue = ", caused by ";
StringBuffer sb = new StringBuffer(result.length() + causeStr.length() + glue.length());
- sb.append(result)
- .append(glue)
- .append(causeStr);
+ sb.append(result).append(glue).append(causeStr);
result = sb.toString();
}
return result;
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/8bf39571/geode-core/src/main/java/org/apache/geode/cache/CacheStatistics.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/cache/CacheStatistics.java b/geode-core/src/main/java/org/apache/geode/cache/CacheStatistics.java
index 5738c30..05839cc 100644
--- a/geode-core/src/main/java/org/apache/geode/cache/CacheStatistics.java
+++ b/geode-core/src/main/java/org/apache/geode/cache/CacheStatistics.java
@@ -1,26 +1,23 @@
/*
- * 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
+ * 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
+ * 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.
+ * 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;
/**
- * Defines common statistics information
- * for both region and entries. All of these methods may throw a
- * CacheClosedException, RegionDestroyedException or an EntryDestroyedException.
+ * Defines common statistics information for both region and entries. All of these methods may throw
+ * a CacheClosedException, RegionDestroyedException or an EntryDestroyedException.
*
*
*
@@ -29,26 +26,23 @@ package org.apache.geode.cache;
* @since GemFire 2.0
*/
-public interface CacheStatistics
-{
- /** For an entry, returns the time that the entry's value was last modified;
- * for a region, the last time any of the region's entries' values or the
- * values in subregions' entries were modified. The
- * modification may have been initiated locally or it may have been an update
- * distributed from another cache. It may also have been a new value provided
- * by a loader. The modification time on a region is propagated upward to parent
- * regions, transitively, to the root region.
+public interface CacheStatistics {
+ /**
+ * For an entry, returns the time that the entry's value was last modified; for a region, the last
+ * time any of the region's entries' values or the values in subregions' entries were modified.
+ * The modification may have been initiated locally or it may have been an update distributed from
+ * another cache. It may also have been a new value provided by a loader. The modification time on
+ * a region is propagated upward to parent regions, transitively, to the root region.
* <p>
- * The number is expressed as the number of milliseconds since January 1, 1970.
- * The granularity may be as course as 100ms, so the accuracy may be off by
- * up to 50ms.
+ * The number is expressed as the number of milliseconds since January 1, 1970. The granularity
+ * may be as course as 100ms, so the accuracy may be off by up to 50ms.
* <p>
- * Entry and subregion creation will update the modification time on a
- * region, but <code>destroy</code>, <code>destroyRegion</code>,
- * <code>invalidate</code>, and <code>invalidateRegion</code>
- * do not update the modification time.
- * @return the last modification time of the region or the entry;
- * returns 0 if entry is invalid or modification time is uninitialized.
+ * Entry and subregion creation will update the modification time on a region, but
+ * <code>destroy</code>, <code>destroyRegion</code>, <code>invalidate</code>, and
+ * <code>invalidateRegion</code> do not update the modification time.
+ *
+ * @return the last modification time of the region or the entry; returns 0 if entry is invalid or
+ * modification time is uninitialized.
* @see Region#put(Object, Object)
* @see Region#get(Object)
* @see Region#create(Object, Object)
@@ -57,21 +51,18 @@ public interface CacheStatistics
public long getLastModifiedTime();
/**
- * For an entry, returns the last time it was accessed via <code>Region.get</code>;
- * for a region, the last time any of its entries or the entries of its
- * subregions were accessed with <code>Region.get</code>.
- * Any modifications will also update the lastAccessedTime, so
- * <code>lastAccessedTime</code> is always <code>>= lastModifiedTime</code>.
- * The <code>lastAccessedTime</code> on a region is propagated upward to
- * parent regions, transitively, to the the root region.
+ * For an entry, returns the last time it was accessed via <code>Region.get</code>; for a region,
+ * the last time any of its entries or the entries of its subregions were accessed with
+ * <code>Region.get</code>. Any modifications will also update the lastAccessedTime, so
+ * <code>lastAccessedTime</code> is always <code>>= lastModifiedTime</code>. The
+ * <code>lastAccessedTime</code> on a region is propagated upward to parent regions, transitively,
+ * to the the root region.
* <p>
- * The number is expressed as the number of milliseconds
- * since January 1, 1970.
- * The granularity may be as course as 100ms, so the accuracy may be off by
- * up to 50ms.
+ * The number is expressed as the number of milliseconds since January 1, 1970. The granularity
+ * may be as course as 100ms, so the accuracy may be off by up to 50ms.
*
- * @return the last access time of the region or the entry's value;
- * returns 0 if entry is invalid or access time is uninitialized.
+ * @return the last access time of the region or the entry's value; returns 0 if entry is invalid
+ * or access time is uninitialized.
* @see Region#get(Object)
* @see #getLastModifiedTime
* @throws StatisticsDisabledException if statistics are not available
@@ -79,49 +70,48 @@ public interface CacheStatistics
public long getLastAccessedTime() throws StatisticsDisabledException;
/**
- * Returns the number of times that {@link Region#get(Object) Region.get} on
- * the region or the entry was called and there was no value found
- * locally. Unlike <code>lastAccessedTime</code>, the miss count is
- * not propagated to parent regions. Note that remote operations
- * such as a "net search" do not effect the miss count.
+ * Returns the number of times that {@link Region#get(Object) Region.get} on the region or the
+ * entry was called and there was no value found locally. Unlike <code>lastAccessedTime</code>,
+ * the miss count is not propagated to parent regions. Note that remote operations such as a "net
+ * search" do not effect the miss count.
*
- * @return the number of cache misses on the region or the
- * entry.
+ * @return the number of cache misses on the region or the entry.
* @throws StatisticsDisabledException if statistics are not available
*/
public long getMissCount() throws StatisticsDisabledException;
-
+
/**
- * Returns the number of hits for this region or entry. The number
- * of hits is defined as the number of times when the
- * {@link Region#get(Object) Region.get} finds a value locally. Unlike
- * <code>lastAccessedTime</code>, the hit count is not propagated to
- * parent regions. Note that remote operations such as a "net
- * search" do not effect the hit count.
+ * Returns the number of hits for this region or entry. The number of hits is defined as the
+ * number of times when the {@link Region#get(Object) Region.get} finds a value locally. Unlike
+ * <code>lastAccessedTime</code>, the hit count is not propagated to parent regions. Note that
+ * remote operations such as a "net search" do not effect the hit count.
*
* @return the number of hits for this region or entry.
* @throws StatisticsDisabledException if statistics are not available
*/
public long getHitCount() throws StatisticsDisabledException;
-
- /** Return the hit ratio, a convenience method defined as the ratio of hits
- * to the number of calls to {@link Region#get(Object) Region.get}. If there have been zero
- * calls to <code>Region.get</code>, then zero is returned.
- * <p>
- * The hit ratio is equivalent to:
- * <pre>
- * long hitCount = getHitCount();
- * long total = hitCount + getMissCount();
- * return total == 0L ? 0.0f : ((float)hitCount / total);
- * </pre>
+
+ /**
+ * Return the hit ratio, a convenience method defined as the ratio of hits to the number of calls
+ * to {@link Region#get(Object) Region.get}. If there have been zero calls to
+ * <code>Region.get</code>, then zero is returned.
+ * <p>
+ * The hit ratio is equivalent to:
+ *
+ * <pre>
+ * long hitCount = getHitCount();
+ * long total = hitCount + getMissCount();
+ * return total == 0L ? 0.0f : ((float) hitCount / total);
+ * </pre>
*
- * @throws StatisticsDisabledException if statistics are not available
- * @return the hit ratio as a float
+ * @throws StatisticsDisabledException if statistics are not available
+ * @return the hit ratio as a float
*/
public float getHitRatio() throws StatisticsDisabledException;
-
-
- /** Reset the missCount and hitCount to zero for this entry.
+
+
+ /**
+ * Reset the missCount and hitCount to zero for this entry.
*
* @throws StatisticsDisabledException if statistics are not available
*/
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/8bf39571/geode-core/src/main/java/org/apache/geode/cache/CacheTransactionManager.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/cache/CacheTransactionManager.java b/geode-core/src/main/java/org/apache/geode/cache/CacheTransactionManager.java
index 90651f3..8d9c694 100644
--- a/geode-core/src/main/java/org/apache/geode/cache/CacheTransactionManager.java
+++ b/geode-core/src/main/java/org/apache/geode/cache/CacheTransactionManager.java
@@ -1,18 +1,16 @@
/*
- * 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
+ * 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
+ * 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.
+ * 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;
@@ -20,80 +18,85 @@ package org.apache.geode.cache;
import java.util.concurrent.TimeUnit;
-/** <p>The CacheTransactionManager interface allows applications to manage
- * transactions on a per {@link Cache} basis.
+/**
+ * <p>
+ * The CacheTransactionManager interface allows applications to manage transactions on a per
+ * {@link Cache} basis.
*
- * <p>The life cycle of a GemFire transaction starts with a begin
- * operation. The life cycle ends with either a commit or rollback
- * operation. Between the begin and the commit/rollback are typically
- * {@link Region} operations. In general, those that either create,
- * destroy, invalidate or update {@link Region.Entry} are considered
- * transactional, that is they modify transactional state.
+ * <p>
+ * The life cycle of a GemFire transaction starts with a begin operation. The life cycle ends with
+ * either a commit or rollback operation. Between the begin and the commit/rollback are typically
+ * {@link Region} operations. In general, those that either create, destroy, invalidate or update
+ * {@link Region.Entry} are considered transactional, that is they modify transactional state.
*
- * <p>A GemFire transaction may involve operations on multiple regions,
- * each of which may have different attributes.
+ * <p>
+ * A GemFire transaction may involve operations on multiple regions, each of which may have
+ * different attributes.
*
- * <p>While a GemFire transaction and its operations are invoked in
- * the local VM, the resulting transaction state is distributed to
- * other VM's at commit time as per the attributes of each
+ * <p>
+ * While a GemFire transaction and its operations are invoked in the local VM, the resulting
+ * transaction state is distributed to other VM's at commit time as per the attributes of each
* participant Region.
*
- * <p>A transaction can have no more than one thread associated with
- * it and conversely a thread can only operate on one transaction at
- * any given time. Child threads will not inherit the existing
+ * <p>
+ * A transaction can have no more than one thread associated with it and conversely a thread can
+ * only operate on one transaction at any given time. Child threads will not inherit the existing
* transaction.
*
- * <p>Each of the following methods operate on the current thread. All
- * methods throw {@link CacheClosedException} if the Cache is closed.
+ * <p>
+ * Each of the following methods operate on the current thread. All methods throw
+ * {@link CacheClosedException} if the Cache is closed.
*
- * <p>GemFire Transactions currently only support Read Committed
- * isolation. In addition, they are optimistic transactions in that
- * write locking and conflict checks are performed as part of the
+ * <p>
+ * GemFire Transactions currently only support Read Committed isolation. In addition, they are
+ * optimistic transactions in that write locking and conflict checks are performed as part of the
* commit operation.
*
- * <p>For guaranteed Read Committed isolation, avoid making "in place"
- * changes, because such changes will be "seen" by other transactions
- * and break the Read Committed isolation guarantee. e.g.
+ * <p>
+ * For guaranteed Read Committed isolation, avoid making "in place" changes, because such changes
+ * will be "seen" by other transactions and break the Read Committed isolation guarantee. e.g.
*
- * <pre>
- * CacheTransactionManager txMgr = cache.getCacheTransactionManager();
- * txMgr.begin();
- * StringBuffer s = (StringBuffer) r.get("stringBuf");
- * s.append("Changes seen before commit. NOT Read Committed!");
- * r.put("stringBuf", s);
- * txMgr.commit();
- * </pre>
+ * <pre>
+ * CacheTransactionManager txMgr = cache.getCacheTransactionManager();
+ * txMgr.begin();
+ * StringBuffer s = (StringBuffer) r.get("stringBuf");
+ * s.append("Changes seen before commit. NOT Read Committed!");
+ * r.put("stringBuf", s);
+ * txMgr.commit();
+ * </pre>
*
- * <p>To aid in creating copies, the "copy on read"
- * <code>Cache</code> attribute and the {@link
- * org.apache.geode.CopyHelper#copy} method are provided.
- * The following is a Read Committed safe example using the
- * <code>CopyHelper.copy</code> method.
+ * <p>
+ * To aid in creating copies, the "copy on read" <code>Cache</code> attribute and the
+ * {@link org.apache.geode.CopyHelper#copy} method are provided. The following is a Read Committed
+ * safe example using the <code>CopyHelper.copy</code> method.
*
- * <pre>
- * CacheTransactionManager txMgr = cache.getCacheTransactionManager();
- * txMgr.begin();
- * Object o = r.get("stringBuf");
- * StringBuffer s = (StringBuffer) CopyHelper.copy(o);
- * s.append("Changes unseen before commit. Read Committed.");
- * r.put("stringBuf", s);
- * txMgr.commit();
- * </pre>
+ * <pre>
+ * CacheTransactionManager txMgr = cache.getCacheTransactionManager();
+ * txMgr.begin();
+ * Object o = r.get("stringBuf");
+ * StringBuffer s = (StringBuffer) CopyHelper.copy(o);
+ * s.append("Changes unseen before commit. Read Committed.");
+ * r.put("stringBuf", s);
+ * txMgr.commit();
+ * </pre>
*
- * <p>Its important to note that creating copies can negatively
- * impact both performance and memory consumption.
+ * <p>
+ * Its important to note that creating copies can negatively impact both performance and memory
+ * consumption.
*
- * <p>Partitioned Regions, Distributed No Ack and Distributed Ack Regions are supported
- * (see {@link AttributesFactory} for Scope). For both scopes, a
- * consistent configuration (per VM) is enforced.
+ * <p>
+ * Partitioned Regions, Distributed No Ack and Distributed Ack Regions are supported (see
+ * {@link AttributesFactory} for Scope). For both scopes, a consistent configuration (per VM) is
+ * enforced.
*
- * <p>Global Regions, client Regions (see org.apache.geode.cache.client package)
- * and persistent Regions (see {@link DiskWriteAttributes}) do not
- * support transactions.
+ * <p>
+ * Global Regions, client Regions (see org.apache.geode.cache.client package) and persistent Regions
+ * (see {@link DiskWriteAttributes}) do not support transactions.
*
- * <p>When PartitionedRegions are involved in a transaction, all data in the
- * transaction must be colocated together on one data node. See the GemFire
- * Developer Guide for details on using transactions with Partitioned Regions.
+ * <p>
+ * When PartitionedRegions are involved in a transaction, all data in the transaction must be
+ * colocated together on one data node. See the GemFire Developer Guide for details on using
+ * transactions with Partitioned Regions.
*
*
* @since GemFire 4.0
@@ -102,82 +105,75 @@ import java.util.concurrent.TimeUnit;
*
*/
public interface CacheTransactionManager {
- /** Creates a new transaction and associates it with the current thread.
- *
- * @throws IllegalStateException if the thread is already associated with a transaction
- *
- * @since GemFire 4.0
- */
- public void begin();
+ /**
+ * Creates a new transaction and associates it with the current thread.
+ *
+ * @throws IllegalStateException if the thread is already associated with a transaction
+ *
+ * @since GemFire 4.0
+ */
+ public void begin();
- /** Commit the transaction associated with the current thread. If
- * the commit operation fails due to a conflict it will destroy
- * the transaction state and throw a {@link
- * CommitConflictException}. If the commit operation succeeds,
- * it returns after the transaction state has been merged with
- * committed state. When this method completes, the thread is no
- * longer associated with a transaction.
- *
- * @throws IllegalStateException if the thread is not associated with a transaction
- *
- * @throws CommitConflictException if the commit operation fails due to
- * a write conflict.
- *
- * @throws TransactionDataNodeHasDepartedException if the node hosting the
- * transaction data has departed. This is only relevant for transaction that
- * involve PartitionedRegions.
- *
- * @throws TransactionDataNotColocatedException if at commit time, the data
- * involved in the transaction has moved away from the transaction hosting
- * node. This can only happen if rebalancing/recovery happens during a
- * transaction that involves a PartitionedRegion.
- *
- * @throws TransactionInDoubtException when GemFire cannot tell which nodes
- * have applied the transaction and which have not. This only occurs if nodes
- * fail mid-commit, and only then in very rare circumstances.
- */
- public void commit() throws CommitConflictException;
+ /**
+ * Commit the transaction associated with the current thread. If the commit operation fails due to
+ * a conflict it will destroy the transaction state and throw a {@link CommitConflictException}.
+ * If the commit operation succeeds, it returns after the transaction state has been merged with
+ * committed state. When this method completes, the thread is no longer associated with a
+ * transaction.
+ *
+ * @throws IllegalStateException if the thread is not associated with a transaction
+ *
+ * @throws CommitConflictException if the commit operation fails due to a write conflict.
+ *
+ * @throws TransactionDataNodeHasDepartedException if the node hosting the transaction data has
+ * departed. This is only relevant for transaction that involve PartitionedRegions.
+ *
+ * @throws TransactionDataNotColocatedException if at commit time, the data involved in the
+ * transaction has moved away from the transaction hosting node. This can only happen if
+ * rebalancing/recovery happens during a transaction that involves a PartitionedRegion.
+ *
+ * @throws TransactionInDoubtException when GemFire cannot tell which nodes have applied the
+ * transaction and which have not. This only occurs if nodes fail mid-commit, and only
+ * then in very rare circumstances.
+ */
+ public void commit() throws CommitConflictException;
- /** Roll back the transaction associated with the current thread. When
- * this method completes, the thread is no longer associated with a
- * transaction and the transaction context is destroyed.
- *
- * @since GemFire 4.0
- *
- * @throws IllegalStateException if the thread is not associated with a transaction
- */
- public void rollback();
+ /**
+ * Roll back the transaction associated with the current thread. When this method completes, the
+ * thread is no longer associated with a transaction and the transaction context is destroyed.
+ *
+ * @since GemFire 4.0
+ *
+ * @throws IllegalStateException if the thread is not associated with a transaction
+ */
+ public void rollback();
/**
- * Suspends the transaction on the current thread. All subsequent operations
- * performed by this thread will be non-transactional. The suspended
- * transaction can be resumed by calling {@link #resume(TransactionId)}
+ * Suspends the transaction on the current thread. All subsequent operations performed by this
+ * thread will be non-transactional. The suspended transaction can be resumed by calling
+ * {@link #resume(TransactionId)}
*
- * @return the transaction identifier of the suspended transaction or null if
- * the thread was not associated with a transaction
+ * @return the transaction identifier of the suspended transaction or null if the thread was not
+ * associated with a transaction
* @since GemFire 6.6.2
*/
public TransactionId suspend();
/**
- * On the current thread, resumes a transaction that was previously suspended
- * using {@link #suspend()}
+ * On the current thread, resumes a transaction that was previously suspended using
+ * {@link #suspend()}
*
- * @param transactionId
- * the transaction to resume
- * @throws IllegalStateException
- * if the thread is associated with a transaction or if
- * {@link #isSuspended(TransactionId)} would return false for the
- * given transactionId
+ * @param transactionId the transaction to resume
+ * @throws IllegalStateException if the thread is associated with a transaction or if
+ * {@link #isSuspended(TransactionId)} would return false for the given transactionId
* @since GemFire 6.6.2
* @see #tryResume(TransactionId)
*/
public void resume(TransactionId transactionId);
/**
- * This method can be used to determine if a transaction with the given
- * transaction identifier is currently suspended locally. This method does not
- * check other members for transaction status.
+ * This method can be used to determine if a transaction with the given transaction identifier is
+ * currently suspended locally. This method does not check other members for transaction status.
*
* @param transactionId
* @return true if the transaction is in suspended state, false otherwise
@@ -187,28 +183,29 @@ public interface CacheTransactionManager {
public boolean isSuspended(TransactionId transactionId);
/**
- * On the current thread, resumes a transaction that was previously suspended
- * using {@link #suspend()}.
+ * On the current thread, resumes a transaction that was previously suspended using
+ * {@link #suspend()}.
*
* This method is equivalent to
+ *
* <pre>
* if (isSuspended(txId)) {
* resume(txId);
* }
* </pre>
+ *
* except that this action is performed atomically
*
- * @param transactionId
- * the transaction to resume
+ * @param transactionId the transaction to resume
* @return true if the transaction was resumed, false otherwise
* @since GemFire 6.6.2
*/
public boolean tryResume(TransactionId transactionId);
/**
- * On the current thread, resumes a transaction that was previously suspended
- * using {@link #suspend()}, or waits for the specified timeout interval if
- * the transaction has not been suspended. This method will return if:
+ * On the current thread, resumes a transaction that was previously suspended using
+ * {@link #suspend()}, or waits for the specified timeout interval if the transaction has not been
+ * suspended. This method will return if:
* <ul>
* <li>Another thread suspends the transaction</li>
* <li>Another thread calls commit/rollback on the transaction</li>
@@ -217,12 +214,9 @@ public interface CacheTransactionManager {
*
* This method returns immediately if {@link #exists(TransactionId)} returns false.
*
- * @param transactionId
- * the transaction to resume
- * @param time
- * the maximum time to wait
- * @param unit
- * the time unit of the <code>time</code> argument
+ * @param transactionId the transaction to resume
+ * @param time the maximum time to wait
+ * @param unit the time unit of the <code>time</code> argument
* @return true if the transaction was resumed, false otherwise
* @since GemFire 6.6.2
* @see #tryResume(TransactionId)
@@ -230,120 +224,129 @@ public interface CacheTransactionManager {
public boolean tryResume(TransactionId transactionId, long time, TimeUnit unit);
/**
- * Reports the existence of a transaction for the given transactionId. This
- * method can be used to determine if a transaction with the given transaction
- * identifier is currently in progress locally.
+ * Reports the existence of a transaction for the given transactionId. This method can be used to
+ * determine if a transaction with the given transaction identifier is currently in progress
+ * locally.
*
- * @param transactionId
- * the given transaction identifier
+ * @param transactionId the given transaction identifier
* @return true if the transaction is in progress, false otherwise.
* @since GemFire 6.6.2
* @see #isSuspended(TransactionId)
*/
public boolean exists(TransactionId transactionId);
-
- /** Reports the existence of a Transaction for this thread
- *
- * @return true if a transaction exists, false otherwise
- *
- * @since GemFire 4.0
- */
- public boolean exists();
- /** Returns the transaction identifier for the current thread
- *
- * @return the transaction identifier or null if no transaction exists
- *
- * @since GemFire 4.0
- */
- public TransactionId getTransactionId();
+ /**
+ * Reports the existence of a Transaction for this thread
+ *
+ * @return true if a transaction exists, false otherwise
+ *
+ * @since GemFire 4.0
+ */
+ public boolean exists();
- /**
- * Gets the transaction listener for this Cache.
- *
- * @return The TransactionListener instance or null if no listener.
- * @throws IllegalStateException if more than one listener exists on this cache
- * @deprecated as of GemFire 5.0, use {@link #getListeners} instead
- */
- @Deprecated
- public TransactionListener getListener();
+ /**
+ * Returns the transaction identifier for the current thread
+ *
+ * @return the transaction identifier or null if no transaction exists
+ *
+ * @since GemFire 4.0
+ */
+ public TransactionId getTransactionId();
- /** Returns an array of all the transaction listeners on this cache.
- * Modifications to the returned array will not effect what listeners are on this cache.
- * @return the cache's <code>TransactionListener</code>s; an empty array if no listeners
- * @since GemFire 5.0
- */
- public TransactionListener[] getListeners();
+ /**
+ * Gets the transaction listener for this Cache.
+ *
+ * @return The TransactionListener instance or null if no listener.
+ * @throws IllegalStateException if more than one listener exists on this cache
+ * @deprecated as of GemFire 5.0, use {@link #getListeners} instead
+ */
+ @Deprecated
+ public TransactionListener getListener();
- /**
- * Sets the transaction listener for this Cache.
- *
- * @param newListener the TransactionListener to register with the Cache.
- * Use a <code>null</code> to deregister the current listener without
- * registering a new one.
- * @return the previous TransactionListener
- * @throws IllegalStateException if more than one listener exists on this cache
- * @deprecated as of GemFire 5.0, use {@link #addListener} or {@link #initListeners} instead.
- */
- @Deprecated
- public TransactionListener setListener(TransactionListener newListener);
- /**
- * Adds a transaction listener to the end of the list of transaction listeners on this cache.
- * @param aListener the user defined transaction listener to add to the cache.
- * @throws IllegalArgumentException if <code>aListener</code> is null
- * @since GemFire 5.0
- */
- public void addListener(TransactionListener aListener);
- /**
- * Removes a transaction listener from the list of transaction listeners on this cache.
- * 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 transaction listener to remove from the cache.
- * @throws IllegalArgumentException if <code>aListener</code> is null
- * @since GemFire 5.0
- */
- public void removeListener(TransactionListener aListener);
- /**
- * Removes all transaction 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 cache.
- * @throws IllegalArgumentException if the <code>newListeners</code> array has a null element
- * @since GemFire 5.0
- */
- public void initListeners(TransactionListener[] newListeners);
+ /**
+ * Returns an array of all the transaction listeners on this cache. Modifications to the returned
+ * array will not effect what listeners are on this cache.
+ *
+ * @return the cache's <code>TransactionListener</code>s; an empty array if no listeners
+ * @since GemFire 5.0
+ */
+ public TransactionListener[] getListeners();
- /**
- * Set the TransactionWriter for the cache
- * @param writer
- * @see TransactionWriter
- * @since GemFire 6.5
- */
- public void setWriter(TransactionWriter writer);
+ /**
+ * Sets the transaction listener for this Cache.
+ *
+ * @param newListener the TransactionListener to register with the Cache. Use a <code>null</code>
+ * to deregister the current listener without registering a new one.
+ * @return the previous TransactionListener
+ * @throws IllegalStateException if more than one listener exists on this cache
+ * @deprecated as of GemFire 5.0, use {@link #addListener} or {@link #initListeners} instead.
+ */
+ @Deprecated
+ public TransactionListener setListener(TransactionListener newListener);
- /**
- * Returns the current {@link TransactionWriter}
- * @see CacheTransactionManager#setWriter(TransactionWriter)
- * @return the current {@link TransactionWriter}
- * @since GemFire 6.5
- */
- public TransactionWriter getWriter();
-
- /**
- * Sets whether transactions should be executed in distributed or
- * non-distributed mode. Once set this mode should not be changed during
- * the course of transactions.
- *
- * @throws IllegalStateException if a transaction is already in progress
- * and this method sets the distributed mode to a different value.
- * @since Geode 1.0
- */
- public void setDistributed(boolean distributed);
-
- /**
- * Returns the execution mode of transactions
- * @return true if distributed,
- * false otherwise.
- * @since Geode 1.0
- */
- public boolean isDistributed();
+ /**
+ * Adds a transaction listener to the end of the list of transaction listeners on this cache.
+ *
+ * @param aListener the user defined transaction listener to add to the cache.
+ * @throws IllegalArgumentException if <code>aListener</code> is null
+ * @since GemFire 5.0
+ */
+ public void addListener(TransactionListener aListener);
+
+ /**
+ * Removes a transaction listener from the list of transaction listeners on this cache. 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 transaction listener to remove from the cache.
+ * @throws IllegalArgumentException if <code>aListener</code> is null
+ * @since GemFire 5.0
+ */
+ public void removeListener(TransactionListener aListener);
+
+ /**
+ * Removes all transaction 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 cache.
+ * @throws IllegalArgumentException if the <code>newListeners</code> array has a null element
+ * @since GemFire 5.0
+ */
+ public void initListeners(TransactionListener[] newListeners);
+
+ /**
+ * Set the TransactionWriter for the cache
+ *
+ * @param writer
+ * @see TransactionWriter
+ * @since GemFire 6.5
+ */
+ public void setWriter(TransactionWriter writer);
+
+ /**
+ * Returns the current {@link TransactionWriter}
+ *
+ * @see CacheTransactionManager#setWriter(TransactionWriter)
+ * @return the current {@link TransactionWriter}
+ * @since GemFire 6.5
+ */
+ public TransactionWriter getWriter();
+
+ /**
+ * Sets whether transactions should be executed in distributed or non-distributed mode. Once set
+ * this mode should not be changed during the course of transactions.
+ *
+ * @throws IllegalStateException if a transaction is already in progress and this method sets the
+ * distributed mode to a different value.
+ * @since Geode 1.0
+ */
+ public void setDistributed(boolean distributed);
+
+ /**
+ * Returns the execution mode of transactions
+ *
+ * @return true if distributed, false otherwise.
+ * @since Geode 1.0
+ */
+ public boolean isDistributed();
}