Class RegionFactory<K,​V>

  • java.lang.Object
    • org.apache.geode.cache.RegionFactory<K,​V>

  • public class RegionFactory<K,​V>
    extends java.lang.Object
    RegionFactory is used to create regions in a cache. Instances of this interface can be created: Once the factory has been created it can be customized with its setter methods.

    The final step is to produce a Region by calling create(String).

    Example: Create a replicate region with a CacheListener

     Cache c = new CacheFactory().create();
     // Create replicate region.
     // Add a cache listener before creating region
     Region r = c.createRegionFactory(REPLICATE).addCacheListener(myListener).create("replicate");
     

    Example: Create a partition region that has redundancy

     Cache c = new CacheFactory().create();
     // Create replicate region.
     // Add a cache listener before creating region
     Region r = c.createRegionFactory(PARTITION_REDUNDANT).create("partition");
     
    Since:
    GemFire 5.0
    • Constructor Detail

      • RegionFactory

        protected RegionFactory​(org.apache.geode.internal.cache.InternalCache cache)
        For internal use only.
        Parameters:
        cache - the cache
        Since:
        GemFire 6.5
      • RegionFactory

        protected RegionFactory​(org.apache.geode.internal.cache.InternalCache cache,
                                RegionShortcut pra)
        For internal use only.
        Parameters:
        cache - the cache
        pra - the RegionShortcut with which to initialize the Region
        Since:
        GemFire 6.5
      • RegionFactory

        protected RegionFactory​(org.apache.geode.internal.cache.InternalCache cache,
                                RegionAttributes ra)
        For internal use only.
        Parameters:
        cache - the cache
        ra - the RegionAttributes with which to initialize the Region
        Since:
        GemFire 6.5
      • RegionFactory

        @VisibleForTesting
        protected RegionFactory​(RegionFactory<K,​V> regionFactory)
        Constructs a RegionFactory that is a copy of an existing RegionFactory
        Parameters:
        regionFactory - the RegionFactory to copy
        Since:
        Geode 1.12.0
      • RegionFactory

        protected RegionFactory​(org.apache.geode.internal.cache.InternalCache cache,
                                java.lang.String regionAttributesId)
        For internal use only.
        Parameters:
        cache - the cache
        regionAttributesId - the id of the RegionAttributes with which to initialize the Region
        Since:
        GemFire 6.5
      • RegionFactory

        @Deprecated
        public RegionFactory​(java.util.Properties distributedSystemProperties,
                             java.lang.String regionAttributesId)
                      throws CacheWriterException,
                             RegionExistsException,
                             TimeoutException
        Deprecated.
        Constructs a RegionFactory by creating a DistributedSystem and a Cache. If a DistributedSystem already exists whose properties match those provied, it uses that DistributedSystem. The Region configuration is initialized using the RegionAttributes identified in the cache.xml file by the provided identifier.
        Parameters:
        distributedSystemProperties - properties used to either find or create a DistributedSystem.
        regionAttributesId - the identifier for set of RegionAttributes in the cache.xml file used as the initial Region configuration for this RegionFactory.
        Throws:
        java.lang.IllegalArgumentException - if there are no attributes associated with the id
        CacheException - if unable to connect the DistributedSystem or create a Cache
        CacheWriterException
        RegionExistsException
        TimeoutException
    • Method Detail

      • getCache

        protected org.apache.geode.internal.cache.InternalCache getCache()
        Returns the cache used by this factory.
        Returns:
        he cache used by this factory
      • getRegionAttributes

        protected RegionAttributes<K,​V> getRegionAttributes()
        Returns the attributes used by this factory to create a region.
        Returns:
        the attributes used by this factory to create a region
      • setEvictionAttributes

        public RegionFactory<K,​V> setEvictionAttributes​(EvictionAttributes evictionAttributes)
        Sets the eviction attributes that controls growth of the Region to be created.
        Parameters:
        evictionAttributes - for the Region to create
        Returns:
        a reference to this RegionFactory object
      • setEntryIdleTimeout

        public RegionFactory<K,​V> setEntryIdleTimeout​(ExpirationAttributes idleTimeout)
        Sets the idleTimeout expiration attributes for region entries for the next RegionAttributes created. Note that the XML element that corresponds to this method "entry-idle-time", does not include "out" in its name.
        Parameters:
        idleTimeout - the idleTimeout ExpirationAttributes for entries in this region
        Returns:
        a reference to this RegionFactory object
        Throws:
        java.lang.IllegalArgumentException - if idleTimeout is null
        See Also:
        AttributesFactory.setEntryIdleTimeout(org.apache.geode.cache.ExpirationAttributes)
      • setRegionIdleTimeout

        public RegionFactory<K,​V> setRegionIdleTimeout​(ExpirationAttributes idleTimeout)
        Sets the idleTimeout expiration attributes for the region itself for the next RegionAttributes created. Note that the XML element that corresponds to this method "region-idle-time", does not include "out" in its name.
        Parameters:
        idleTimeout - the ExpirationAttributes for this region idleTimeout
        Returns:
        a reference to this RegionFactory object
        Throws:
        java.lang.IllegalArgumentException - if idleTimeout is null
        See Also:
        AttributesFactory.setRegionIdleTimeout(org.apache.geode.cache.ExpirationAttributes)
      • setEarlyAck

        @Deprecated
        public RegionFactory<K,​V> setEarlyAck​(boolean earlyAck)
        Deprecated.
        As of 6.5 this setting no longer has any effect.
        Sets for this region whether or not acks are sent after an update is processed.
        Parameters:
        earlyAck - set to true for the acknowledgement to be sent prior to processing the update
        Returns:
        a reference to this RegionFactory object
        See Also:
        AttributesFactory.setEarlyAck(boolean)
      • setMulticastEnabled

        @Deprecated
        public RegionFactory<K,​V> setMulticastEnabled​(boolean value)
        Deprecated.
        since GemFire 10. Any attempt to set the value to true will result in an exception as TCP based communication is the default, and it does not support multicast.
        Sets whether distributed operations on this region should attempt to use multicast.
        Parameters:
        value - true to enable multicast
        Returns:
        a reference to this RegionFactory object
        Throws:
        java.lang.IllegalArgumentException - if value is true
        Since:
        GemFire 5.0
        See Also:
        AttributesFactory.setMulticastEnabled(boolean)
      • setPoolName

        public RegionFactory<K,​V> setPoolName​(java.lang.String poolName)
        Sets the pool name attribute. This causes regions that use these attributes to be a client region which communicates with the servers that the connection pool communicates with.

        If this attribute is set to null or "" then the connection pool is disabled causing regions that use these attributes to be communicate with peers instead of servers.

        The named connection pool must exist on the cache at the time these attributes are used to create a region. See PoolManager.createFactory() for how to create a connection pool.

        Parameters:
        poolName - the name of the connection pool to use; if null or "" then the connection pool attribute is disabled for regions using these attributes.
        Returns:
        a reference to this RegionFactory object
        Throws:
        java.lang.IllegalStateException - if a cache loader or cache writer has already been set.
        Since:
        GemFire 5.7
      • setPublisher

        @Deprecated
        public void setPublisher​(boolean v)
        Deprecated.
        as of 6.5
        Sets whether or not this region should be considered a publisher.
        Parameters:
        v - whether this region should be considered a publisher
        Since:
        GemFire 5.0
      • setEnableAsyncConflation

        public RegionFactory<K,​V> setEnableAsyncConflation​(boolean value)
        Sets whether or not conflation is enabled for sending messages to async peers.
        Parameters:
        value - true to enable async conflation
        Returns:
        a reference to this RegionFactory object
        See Also:
        AttributesFactory.setEnableAsyncConflation(boolean)
      • setEnableSubscriptionConflation

        public RegionFactory<K,​V> setEnableSubscriptionConflation​(boolean value)
        Sets whether or not conflation is enabled for sending messages from a cache server to its clients.
        Parameters:
        value - true to enable subscription conflation
        Returns:
        a reference to this RegionFactory object
        See Also:
        AttributesFactory.setEnableSubscriptionConflation(boolean)
      • setKeyConstraint

        public RegionFactory<K,​V> setKeyConstraint​(java.lang.Class<K> keyConstraint)
        Sets the key constraint for the next RegionAttributes created. Keys in the region will be constrained to this class (or subclass). Any attempt to store a key of an incompatible type in the region will cause a ClassCastException to be thrown.
        Parameters:
        keyConstraint - The Class to constrain the keys to, or null if no constraint
        Returns:
        a reference to this RegionFactory object
        Throws:
        java.lang.IllegalArgumentException - if keyConstraint is a class denoting a primitive type
        See Also:
        AttributesFactory.setKeyConstraint(java.lang.Class<K>)
      • setValueConstraint

        public RegionFactory<K,​V> setValueConstraint​(java.lang.Class<V> valueConstraint)
        Sets the value constraint for the next RegionAttributes created. Values in the region will be constrained to this class (or subclass). Any attempt to store a value of an incompatible type in the region will cause a ClassCastException to be thrown.
        Parameters:
        valueConstraint - The Class to constrain the values to, or null if no constraint
        Returns:
        a reference to this RegionFactory object
        Throws:
        java.lang.IllegalArgumentException - if valueConstraint is a class denoting a primitive type
        See Also:
        AttributesFactory.setValueConstraint(java.lang.Class<V>)
      • setInitialCapacity

        public RegionFactory<K,​V> setInitialCapacity​(int initialCapacity)
        Sets the entry initial capacity for the next RegionAttributes created. This value is used in initializing the map that holds the entries.
        Parameters:
        initialCapacity - the initial capacity of the entry map
        Returns:
        a reference to this RegionFactory object
        Throws:
        java.lang.IllegalArgumentException - if initialCapacity is negative.
        See Also:
        HashMap, AttributesFactory.setInitialCapacity(int)
      • setLoadFactor

        public RegionFactory<K,​V> setLoadFactor​(float loadFactor)
        Sets the entry load factor for the next RegionAttributes created. This value is used in initializing the map that holds the entries.
        Parameters:
        loadFactor - the load factor of the entry map
        Returns:
        a reference to this RegionFactory object
        Throws:
        java.lang.IllegalArgumentException - if loadFactor is nonpositive
        See Also:
        HashMap, AttributesFactory.setLoadFactor(float)
      • setConcurrencyLevel

        public RegionFactory<K,​V> setConcurrencyLevel​(int concurrencyLevel)
        Sets the concurrency level tof the next RegionAttributes created. This value is used in initializing the map that holds the entries.
        Parameters:
        concurrencyLevel - the concurrency level of the entry map
        Returns:
        a reference to this RegionFactory object
        Throws:
        java.lang.IllegalArgumentException - if concurrencyLevel is nonpositive
        See Also:
        AttributesFactory.setConcurrencyLevel(int)
      • setConcurrencyChecksEnabled

        public RegionFactory<K,​V> setConcurrencyChecksEnabled​(boolean enabled)
        Enables a versioning system that detects concurrent modifications and ensures that region contents are consistent across the distributed system. This setting must be the same in each member having the region.
        Parameters:
        enabled - whether concurrency checks should be enabled for the region
        Returns:
        a reference to this RegionFactory object
        Since:
        GemFire 7.0
        See Also:
        AttributesFactory.setConcurrencyChecksEnabled(boolean)
      • setDiskStoreName

        public RegionFactory<K,​V> setDiskStoreName​(java.lang.String name)
        Sets the DiskStore name attribute. This causes the region to belong to the DiskStore.
        Parameters:
        name - the name of the diskstore
        Returns:
        a reference to this RegionFactory object
        Since:
        GemFire 6.5
        See Also:
        AttributesFactory.setDiskStoreName(java.lang.String)
      • setDiskSynchronous

        public RegionFactory<K,​V> setDiskSynchronous​(boolean isSynchronous)
        Sets whether or not the writing to the disk is synchronous.
        Parameters:
        isSynchronous - boolean if true indicates synchronous writes
        Returns:
        a reference to this RegionFactory object
        Since:
        GemFire 6.5
      • setDiskDirs

        @Deprecated
        public RegionFactory<K,​V> setDiskDirs​(java.io.File[] diskDirs)
        Deprecated.
        Sets the directories to which the region's data are written. If multiple directories are used, GemFire will attempt to distribute the data evenly amongst them.
        Parameters:
        diskDirs - the directories to which the region's data is written
        Returns:
        a reference to this RegionFactory object
        See Also:
        AttributesFactory.setDiskDirs
      • setDiskDirsAndSizes

        @Deprecated
        public RegionFactory<K,​V> setDiskDirsAndSizes​(java.io.File[] diskDirs,
                                                            int[] diskSizes)
        Sets the directories to which the region's data are written and also set their sizes in megabytes
        Parameters:
        diskDirs - the directories to which the region's data is written
        diskSizes - the size in megabytes for each directory
        Returns:
        a reference to this RegionFactory object
        Throws:
        java.lang.IllegalArgumentException - if length of the size array does not match to the length of the dir array
        Since:
        GemFire 5.1
        See Also:
        AttributesFactory.setDiskDirsAndSizes
      • setPartitionAttributesFactory

        public RegionFactory<K,​V> setPartitionAttributesFactory​(java.util.function.UnaryOperator<PartitionAttributesFactory<K,​V>> operator)
        convenience method to set up the partition attribute factory
        Parameters:
        operator - the operator to manipulate the partition attribute factory
        Returns:
        the region factory
      • setIndexMaintenanceSynchronous

        public RegionFactory<K,​V> setIndexMaintenanceSynchronous​(boolean synchronous)
        Sets how indexes on this region are kept current.
        Parameters:
        synchronous - whether indexes are maintained in a synchronized fashion
        Returns:
        a reference to this RegionFactory object
      • setStatisticsEnabled

        public RegionFactory<K,​V> setStatisticsEnabled​(boolean statisticsEnabled)
        Sets whether statistics are enabled for this region and its entries.
        Parameters:
        statisticsEnabled - whether statistics are enabled
        Returns:
        a reference to this RegionFactory object
        See Also:
        AttributesFactory.setStatisticsEnabled(boolean)
      • setIgnoreJTA

        public RegionFactory<K,​V> setIgnoreJTA​(boolean flag)
        Sets whether operations on this region should be controlled by JTA transactions or not
        Parameters:
        flag - whether operations on this region should be controlled by JTA transactions
        Returns:
        a reference to this RegionFactory object
        Since:
        GemFire 5.0
      • setLockGrantor

        public RegionFactory<K,​V> setLockGrantor​(boolean isLockGrantor)
        Sets whether this region should become lock grantor.
        Parameters:
        isLockGrantor - whether this region should become lock grantor
        Returns:
        a reference to this RegionFactory object
        See Also:
        AttributesFactory.setLockGrantor(boolean)
      • createSubregion

        public Region<K,​V> createSubregion​(Region<?,​?> parent,
                                                 java.lang.String name)
                                          throws RegionExistsException
        Creates a sub-region in the Cache using the configuration contained in this RegionFactory. Validation of the provided attributes may cause exceptions to be thrown if there are problems with the configuration data.
        Parameters:
        parent - the existing region that will contain the created sub-region
        name - the name of the region to create
        Returns:
        the region object
        Throws:
        RegionExistsException - if a region with the given name already exists in this cache
        RegionDestroyedException - if the parent region has been closed or destroyed
        CacheClosedException - if the cache is closed
        Since:
        GemFire 7.0
      • setCloningEnabled

        public RegionFactory<K,​V> setCloningEnabled​(boolean cloningEnable)
        Sets cloning on region Note: off-heap regions always behave as if cloning is enabled.
        Parameters:
        cloningEnable - whether cloning is enabled for the region
        Returns:
        a reference to this RegionFactory object
        Since:
        GemFire 6.1
        See Also:
        AttributesFactory.setCloningEnabled(boolean)
      • addGatewaySenderId

        public RegionFactory<K,​V> addGatewaySenderId​(java.lang.String gatewaySenderId)
        Adds a gatewaySenderId to the RegionAttributes
        Parameters:
        gatewaySenderId - the gatewaySenderId to add
        Returns:
        a reference to this RegionFactory object
        Since:
        GemFire 7.0
        See Also:
        AttributesFactory.addGatewaySenderId(String)
      • addAsyncEventQueueId

        public RegionFactory<K,​V> addAsyncEventQueueId​(java.lang.String asyncEventQueueId)
        Adds a asyncEventQueueId to the RegionAttributes
        Parameters:
        asyncEventQueueId - id of AsyncEventQueue
        Returns:
        a reference to this RegionFactory instance
        Since:
        GemFire 7.0
      • setCompressor

        public RegionFactory<K,​V> setCompressor​(Compressor compressor)
        Set the compressor to be used by this region for compressing region entry values.
        Parameters:
        compressor - a compressor
        Returns:
        a reference to this RegionFactory instance
        Since:
        GemFire 8.0
      • setOffHeap

        public RegionFactory<K,​V> setOffHeap​(boolean offHeap)
        Enables this region's usage of off-heap memory if true.
        Parameters:
        offHeap - boolean flag to enable off-heap memory
        Returns:
        a reference to this RegionFactory instance
        Since:
        Geode 1.0