@Bean(name = "Customers") PartitionedRegionFactoryBean<Long, Customer> customersRegion(GemFireCache gemfireCache) { PartitionedRegionFactoryBean<Long, Customer> customers = new PartitionedRegionFactoryBean<>(); customers.setCache(gemfireCache); customers.setClose(false); customers.setPersistent(false); return customers; }
@Bean(name = "ExamplePartition") @Autowired public PartitionedRegionFactoryBean<Object, Object> examplePartitionRegion(Cache gemfireCache, @Qualifier("partitionRegionAttributes") RegionAttributes<Object, Object> regionAttributes) throws Exception { PartitionedRegionFactoryBean<Object, Object> examplePartitionRegion = new PartitionedRegionFactoryBean<Object, Object>(); examplePartitionRegion.setAttributes(regionAttributes); examplePartitionRegion.setCache(gemfireCache); examplePartitionRegion.setName("ExamplePartitionRegion"); examplePartitionRegion.setPersistent(false); return examplePartitionRegion; }
@Override protected void resolveDataPolicy(RegionFactory<K, V> regionFactory, Boolean persistent, DataPolicy dataPolicy) { if (dataPolicy == null) { dataPolicy = (isPersistent() ? DataPolicy.PERSISTENT_PARTITION : DataPolicy.PARTITION); } else { // Validate that the user-defined Data Policy matches the appropriate Spring GemFire XML namespace // configuration meta-data element for Region (i.e. <gfe:partitioned-region .../>)! Assert.isTrue(dataPolicy.withPartitioning(), String.format( "Data Policy '%1$s' is not supported in Partitioned Regions.", dataPolicy)); } // Validate the data-policy and persistent attributes are compatible when specified! RegionUtils.assertDataPolicyAndPersistentAttributeAreCompatible(dataPolicy, persistent); regionFactory.setDataPolicy(dataPolicy); setDataPolicy(dataPolicy); }
/** * Constructs a {@link Class sub-type} of the {@link PeerRegionFactoryBean} class based on * the {@link #getServerRegionShortcut()} and {@link #getDataPolicy()}. * * @return a new instance of the {@link PeerRegionFactoryBean}. * @see org.springframework.data.gemfire.LocalRegionFactoryBean * @see org.springframework.data.gemfire.PartitionedRegionFactoryBean * @see org.springframework.data.gemfire.ReplicatedRegionFactoryBean * @see PeerRegionFactoryBean */ protected PeerRegionFactoryBean<K, V> newPeerRegionFactoryBean() { RegionShortcutWrapper regionShortcutWrapper = RegionShortcutWrapper.valueOf(getServerRegionShortcut()); DataPolicy resolvedDataPolicy = Optional.of(regionShortcutWrapper) .map(RegionShortcutWrapper::getDataPolicy) .orElseGet(this::getDataPolicy); if (regionShortcutWrapper.isLocal()) { return new LocalRegionFactoryBean<>(); } else if (resolvedDataPolicy.withPartitioning()) { return new PartitionedRegionFactoryBean<>(); } else if (resolvedDataPolicy.withReplication()) { ReplicatedRegionFactoryBean<K, V> replicatedRegionFactoryBean = new ReplicatedRegionFactoryBean<>(); replicatedRegionFactoryBean.setScope(getScope()); return replicatedRegionFactoryBean; } return new GenericRegionFactoryBean<>(); }
@Override protected void resolveDataPolicy(RegionFactory<K, V> regionFactory, Boolean persistent, String dataPolicy) { DataPolicy resolvedDataPolicy = null; if (dataPolicy != null) { resolvedDataPolicy = new DataPolicyConverter().convert(dataPolicy); Assert.notNull(resolvedDataPolicy, String.format("Data Policy '%1$s' is invalid.", dataPolicy)); } resolveDataPolicy(regionFactory, persistent, resolvedDataPolicy); } }
@Override protected void resolveDataPolicy(RegionFactory<K, V> regionFactory, Boolean persistent, DataPolicy dataPolicy) { if (dataPolicy == null) { dataPolicy = (isPersistent() ? DataPolicy.PERSISTENT_PARTITION : DataPolicy.PARTITION); } else { // Validate that the user-defined Data Policy matches the appropriate Spring Pivotal GemFire XML namespace // configuration meta-data element for Region (i.e. <gfe:partitioned-region .../>)! Assert.isTrue(dataPolicy.withPartitioning(), String.format( "Data Policy '%1$s' is not supported in Partitioned Regions.", dataPolicy)); } // Validate the data-policy and persistent attributes are compatible when specified! RegionUtils.assertDataPolicyAndPersistentAttributeAreCompatible(dataPolicy, persistent); regionFactory.setDataPolicy(dataPolicy); setDataPolicy(dataPolicy); }
/** * Constructs a {@link Class sub-type} of the {@link PeerRegionFactoryBean} class based on * the {@link #getServerRegionShortcut()} and {@link #getDataPolicy()}. * * @return a new instance of the {@link PeerRegionFactoryBean}. * @see org.springframework.data.gemfire.LocalRegionFactoryBean * @see org.springframework.data.gemfire.PartitionedRegionFactoryBean * @see org.springframework.data.gemfire.ReplicatedRegionFactoryBean * @see PeerRegionFactoryBean */ protected PeerRegionFactoryBean<K, V> newPeerRegionFactoryBean() { RegionShortcutWrapper regionShortcutWrapper = RegionShortcutWrapper.valueOf(getServerRegionShortcut()); DataPolicy resolvedDataPolicy = Optional.of(regionShortcutWrapper) .map(RegionShortcutWrapper::getDataPolicy) .orElseGet(this::getDataPolicy); if (regionShortcutWrapper.isLocal()) { return new LocalRegionFactoryBean<>(); } else if (resolvedDataPolicy.withPartitioning()) { return new PartitionedRegionFactoryBean<>(); } else if (resolvedDataPolicy.withReplication()) { ReplicatedRegionFactoryBean<K, V> replicatedRegionFactoryBean = new ReplicatedRegionFactoryBean<>(); replicatedRegionFactoryBean.setScope(getScope()); return replicatedRegionFactoryBean; } return new GenericRegionFactoryBean<>(); }
@Override protected void resolveDataPolicy(RegionFactory<K, V> regionFactory, Boolean persistent, String dataPolicy) { DataPolicy resolvedDataPolicy = null; if (dataPolicy != null) { resolvedDataPolicy = new DataPolicyConverter().convert(dataPolicy); Assert.notNull(resolvedDataPolicy, String.format("Data Policy '%1$s' is invalid.", dataPolicy)); } resolveDataPolicy(regionFactory, persistent, resolvedDataPolicy); } }
@Bean(name = "Orders") PartitionedRegionFactoryBean<Long, Order> ordersRegions(GemFireCache gemfireCache) { PartitionedRegionFactoryBean<Long, Order> orders = new PartitionedRegionFactoryBean<>(); orders.setCache(gemfireCache); orders.setCacheListeners(asArray(orderCacheListener())); orders.setClose(false); orders.setPersistent(false); return orders; }