blob: f2aa41a37f79fda1422f0675d616909cc1d2d330 [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;
import java.io.InputStream;
import java.util.Map;
import java.util.Properties;
import javax.naming.Context;
import org.apache.geode.LogWriter;
import org.apache.geode.cache.client.ClientCache;
import org.apache.geode.cache.client.ClientCacheFactory;
import org.apache.geode.cache.control.ResourceManager;
import org.apache.geode.cache.wan.GatewaySenderFactory;
import org.apache.geode.distributed.DistributedSystem;
import org.apache.geode.pdx.PdxSerializer;
/**
* GemFireCache represents the singleton cache that must be created in order to use GemFire in a
* Java virtual machine. Users must create either a {@link Cache} for a peer/server JVM or a
* {@link ClientCache} for a client JVM. Instances of this interface are created using one of the
* following methods:
* <ul>
* <li>{@link CacheFactory#create()} creates a peer/server instance of {@link Cache}.
* <li>{@link ClientCacheFactory#create()} creates a client instance of {@link ClientCache}.
* </ul>
*
* @since GemFire 6.5
*/
public interface GemFireCache extends RegionService {
/**
* Returns the name of this cache. This method does not throw {@code CacheClosedException} if the
* cache is closed.
*
* @return the String name of this cache
*/
String getName();
/**
* Returns the distributed system used by this cache. This method does not throw
* {@code CacheClosedException} if the cache is closed.
*/
DistributedSystem getDistributedSystem();
/**
* Returns the {@code ResourceManager} for managing this cache's resources.
*
* @return {@code ResourceManager} for managing this cache's resources
* @since GemFire 6.0
*/
ResourceManager getResourceManager();
/**
* Sets the "copy on read" feature for cache read operations.
*
* @since GemFire 4.0
*/
void setCopyOnRead(boolean copyOnRead);
/**
* Indicates whether the "copy on read" is enabled for this cache.
*
* @return true if "copy on read" is enabled, false otherwise.
*
* @since GemFire 4.0
*/
boolean getCopyOnRead();
/**
* Returns the {@code RegionAttributes} with the given {@code id} or {@code null} if no
* {@code RegionAttributes} with that id exists.
*
* @see #setRegionAttributes
*
* @since GemFire 4.1
*/
<K, V> RegionAttributes<K, V> getRegionAttributes(String id);
/**
* Sets the {@code id} of the given {@code RegionAttributes}. If a region attributes named
* {@code name} already exists, the mapping will be overwritten with {@code attrs}. However,
* changing the mapping will not effect existing regions.
*
* @param id The id of the region attributes
* @param attrs The attributes to associate with {@code id}. If {@code attrs} is {@code null}, any
* existing {@code RegionAttributes} associated with {@code id} will be removed.
*
* @see #getRegionAttributes
*
* @since GemFire 4.1
*/
<K, V> void setRegionAttributes(String id, RegionAttributes<K, V> attrs);
/**
* Returns an unmodifiable mapping of ids to region attributes. The keys of the map are
* {@link String}s and the values of the map are {@link RegionAttributes}.
*
* @since GemFire 4.1
*/
<K, V> Map<String, RegionAttributes<K, V>> listRegionAttributes();
/**
* Loads the cache configuration described in a
* <a href="package-summary.html#declarative">declarative caching XML file</a> into this cache. If
* the XML describes a region that already exists, any mutable region attributes, indexes, and
* region entries that are defined in the XML are updated/added.
*
* <P>
*
* Because this method may perform a {@link Region#put(Object, Object) put} on a {@code Region},
* it declares that it throws a {@code TimeoutException}, {@code CacheWriterException},
* {@code GatewayException}, or {@code RegionExistsException}.
*
* @throws CacheXmlException If the XML read from {@code is} does not conform to the dtd or if an
* {@code IOException} occurs while reading the XML.
*
* @since GemFire 4.1
*/
void loadCacheXml(InputStream is)
throws TimeoutException, CacheWriterException, GatewayException, RegionExistsException;
/**
* Gets the logging object for GemFire. This method does not throw {@code CacheClosedException} if
* the cache is closed.
*
* @return the logging object
*/
LogWriter getLogger();
/**
* Gets the security logging object for GemFire. This method does not throw
* {@code CacheClosedException} if the cache is closed.
*
* @return the security logging object
*/
LogWriter getSecurityLogger();
/**
* Returns the DiskStore by name or {@code null} if no disk store is found.
*
* @param name the name of the disk store to find. If {@code null} then the default disk store, if
* it exists, is returned.
* @since GemFire 6.5
*/
DiskStore findDiskStore(String name);
/**
* create diskstore factory
*
* @since GemFire 6.5
*/
DiskStoreFactory createDiskStoreFactory();
GatewaySenderFactory createGatewaySenderFactory();
/**
* Returns whether { @link PdxInstance} is preferred for PDX types instead of Java object.
*
* @see org.apache.geode.cache.CacheFactory#setPdxReadSerialized(boolean)
* @see org.apache.geode.cache.client.ClientCacheFactory#setPdxReadSerialized(boolean)
*
* @since GemFire 6.6
*/
boolean getPdxReadSerialized();
/**
* Returns the PdxSerializer used by this cache, or null if no PDX serializer is defined.
*
* @since GemFire 6.6
* @see CacheFactory#setPdxSerializer(PdxSerializer)
* @see ClientCacheFactory#setPdxSerializer(PdxSerializer)
*/
PdxSerializer getPdxSerializer();
/**
* Returns the disk store used for PDX meta data
*
* @since GemFire 6.6
* @see CacheFactory#setPdxDiskStore(String)
* @see ClientCacheFactory#setPdxDiskStore(String)
*/
String getPdxDiskStore();
/**
* Returns true if the PDX metadata for this cache is persistent
*
* @since GemFire 6.6
* @see CacheFactory#setPdxPersistent(boolean)
* @see ClientCacheFactory#setPdxPersistent(boolean)
*/
boolean getPdxPersistent();
/**
* Returns true if fields that are not read during PDX deserialization should be ignored during
* the PDX serialization.
*
* @since GemFire 6.6
* @see CacheFactory#setPdxIgnoreUnreadFields(boolean)
* @see ClientCacheFactory#setPdxIgnoreUnreadFields(boolean)
*/
boolean getPdxIgnoreUnreadFields();
/**
* Registers PDX meta-data given an instance of a domain class that will be serialized
* with PDX.
* <p>
* Note that this method serializes the given instance so PDX must already be configured
* to do the serialization.
* <p>
* Note that if the instance is not of a class that will be serialized with PDX
* then no meta-data is registered.
* <p>
* Note that in most cases this method never needs to be called. Currently it is only
* needed by the JdbcLoader when gets are done for JDBC data that was not written to the
* table using geode.
*
* @param instance the instance of the domain class for which meta-data is to be registered
* @throws SerializationException if the instance can not be serialized or is not serialized with
* PDX
* @since Geode 1.6
*/
void registerPdxMetaData(Object instance);
/**
* Get the CacheTransactionManager instance for this Cache.
*
* @return The CacheTransactionManager instance.
*
* @throws CacheClosedException if the cache is closed.
*
* @since GemFire 4.0
*/
CacheTransactionManager getCacheTransactionManager();
/**
* Returns the JNDI context associated with the Cache.
*
* @return javax.naming.Context Added as part of providing JTA implementation in Gemfire.
*
* @since GemFire 4.0
*/
Context getJNDIContext();
/**
* Returns the Declarable used to initialize this cache or {@code null} if it does not have an
* initializer.
*
* @since GemFire 6.6
*/
Declarable getInitializer();
/**
* Returns the Properties used to initialize the cache initializer or {@code null} if no
* initializer properties exist.
*
* @since GemFire 6.6
*/
Properties getInitializerProps();
}