1 package com
.google
.appengine
.api
.datastore
;
3 import static com
.google
.common
.base
.Preconditions
.checkNotNull
;
6 * Specifies the entity cache configuration for the datastore service.
8 * The default entity cache configuration values for an {@code EntityCacheConfig} instance are
9 * a memcache backed entity cache, {@link EntityCachingCriteria#ALL_KEYS} for the caching criteria,
10 * and {@link EntityCachePolicy#CACHE} for the caching policy.
12 * See {@link DatastoreServiceConfig#entityCacheConfig} for details on how to specify an
13 * {@code EntityCacheConfig} to enable caching of datastore entities when using the
16 final class EntityCacheConfig
{
18 private EntityCachingCriteria entityCachingCriteria
= EntityCachingCriteria
.ALL_KEYS
;
19 private EntityCachePolicy entityCachePolicy
= EntityCachePolicy
.CACHE
;
22 * Sets the {@link EntityCachingCriteria}.
24 * @param entityCachingCriteria the {@link EntityCachingCriteria} to use to determine if an entity
26 * @return {@code this} (for chaining)
28 public EntityCacheConfig
entityCachingCriteria(EntityCachingCriteria entityCachingCriteria
) {
29 this.entityCachingCriteria
=
30 checkNotNull(entityCachingCriteria
, "The entityCachingCriteria argument can not be null");
35 * @return the {@link EntityCachingCriteria} specified in this entity cache configuration.
37 public EntityCachingCriteria
getEntityCachingCriteria() {
38 return entityCachingCriteria
;
42 * Sets the {@link EntityCachePolicy}.
44 * @param entityCachePolicy the {@link EntityCachePolicy} to use for entity caching.
45 * @return {@code this} (for chaining)
47 public EntityCacheConfig
entityCachePolicy(EntityCachePolicy entityCachePolicy
) {
48 this.entityCachePolicy
=
49 checkNotNull(entityCachePolicy
, "The entityCachePolicy argument can not be null");
54 * @return the {@link EntityCachePolicy} specified in this entity cache configuration.
56 public EntityCachePolicy
getEntityCachePolicy() {
57 return entityCachePolicy
;
60 private EntityCacheConfig() {
64 * Contains static creation methods for {@link EntityCacheConfig} instances.
66 public static final class Builder
{
69 * Create an {@link EntityCacheConfig} instance with the specified
70 * {@code entityCachingCriteria} and with the default configuration values for all other fields.
72 * @param entityCachingCriteria the {@link EntityCachingCriteria} to use to determine if an
73 * entity should be cached.
74 * @return the newly created EntityCacheConfig instance.
76 public static EntityCacheConfig
withEntityCachingCriteria(
77 EntityCachingCriteria entityCachingCriteria
) {
78 return withDefaults().entityCachingCriteria(entityCachingCriteria
);
82 * Create an {@link EntityCacheConfig} instance with the specified {@code entityCachePolicy} and
83 * with the default configuration values for all other fields.
85 * @param entityCachePolicy the {@link EntityCachePolicy} to use for entity caching.
86 * @return the newly created EntityCacheConfig instance.
88 public static EntityCacheConfig
withEntityCachePolicy(EntityCachePolicy entityCachePolicy
) {
89 return withDefaults().entityCachePolicy(entityCachePolicy
);
93 * Create an {@link EntityCacheConfig} instance with the default configuration values.
95 * @return the newly created EntityCacheConfig instance.
97 public static EntityCacheConfig
withDefaults() {
98 return new EntityCacheConfig();