Skip to content

Commit 9fc5dae

Browse files
dnltskderXear
authored andcommitted
root attributes configuration via properties
1 parent 38f6fd8 commit 9fc5dae

File tree

6 files changed

+49
-16
lines changed

6 files changed

+49
-16
lines changed

src/main/java/com/dasburo/spring/cache/dynamo/DynamoCache.java

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -157,17 +157,26 @@ public final Duration getTtl() {
157157
return cacheConfig.getTtl();
158158
}
159159

160+
/**
161+
* Returns the configuration of additional root attributes for this cache
162+
*
163+
* @return the rootAttributeConfigs value.
164+
*/
165+
public final List<RootAttributeConfig> getRootAttributes() {
166+
return cacheConfig.getRootAttributes();
167+
}
168+
160169
@Override
161170
public void put(Object key, Object value) {
162171
Assert.isTrue(key instanceof String, "'key' must be an instance of 'java.lang.String'.");
163-
writer.put(cacheName, (String) key, serialize(value), cacheConfig.getTtl(), readRootAttributes(cacheConfig.getRootAttributeConfigs(), value));
172+
writer.put(cacheName, (String) key, serialize(value), cacheConfig.getTtl(), readRootAttributes(cacheConfig.getRootAttributes(), value));
164173
}
165174

166175
@Override
167176
public ValueWrapper putIfAbsent(Object key, Object value) {
168177
Assert.isTrue(key instanceof String, "'key' must be an instance of 'java.lang.String'.");
169178

170-
byte[] result = writer.putIfAbsent(cacheName, (String) key, serialize(value), cacheConfig.getTtl(), readRootAttributes(cacheConfig.getRootAttributeConfigs(), value));
179+
byte[] result = writer.putIfAbsent(cacheName, (String) key, serialize(value), cacheConfig.getTtl(), readRootAttributes(cacheConfig.getRootAttributes(), value));
171180
if (result != null) {
172181
LOGGER.debug(String.format("Key: %s already exists in the cache. Element will not be replaced.", key));
173182
return new SimpleValueWrapper(deserialize(result));

src/main/java/com/dasburo/spring/cache/dynamo/DynamoCacheBuilder.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,7 @@ public DynamoCacheBuilder withSerializer(DynamoSerializer serializer) {
134134
* @return this builder for chaining.
135135
*/
136136
public DynamoCacheBuilder withRootAttributes(List<RootAttributeConfig> rootAttributeConfigs) {
137-
this.cacheConfig.setRootAttributeConfigs(rootAttributeConfigs);
137+
this.cacheConfig.setRootAttributes(rootAttributeConfigs);
138138
return this;
139139
}
140140

src/main/java/com/dasburo/spring/cache/dynamo/DynamoCacheConfiguration.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -35,15 +35,15 @@ public class DynamoCacheConfiguration {
3535
private Long readCapacityUnits;
3636
private Long writeCapacityUnits;
3737
private DynamoSerializer serializer;
38-
private List<RootAttributeConfig> rootAttributeConfigs;
38+
private List<RootAttributeConfig> rootAttributes;
3939

40-
private DynamoCacheConfiguration(Duration ttl, boolean flushOnBoot, Long readCapacityUnits, Long writeCapacityUnits, DynamoSerializer serializer, List<RootAttributeConfig> rootAttributeConfigs) {
40+
private DynamoCacheConfiguration(Duration ttl, boolean flushOnBoot, Long readCapacityUnits, Long writeCapacityUnits, DynamoSerializer serializer, List<RootAttributeConfig> rootAttributes) {
4141
this.ttl = ttl;
4242
this.flushOnBoot = flushOnBoot;
4343
this.readCapacityUnits = readCapacityUnits;
4444
this.writeCapacityUnits = writeCapacityUnits;
4545
this.serializer = serializer;
46-
this.rootAttributeConfigs = rootAttributeConfigs;
46+
this.rootAttributes = rootAttributes;
4747
}
4848

4949
public static DynamoCacheConfiguration defaultCacheConfig() {
@@ -90,11 +90,11 @@ public void setSerializer(DynamoSerializer serializer) {
9090
this.serializer = serializer;
9191
}
9292

93-
public List<RootAttributeConfig> getRootAttributeConfigs() {
94-
return rootAttributeConfigs;
93+
public List<RootAttributeConfig> getRootAttributes() {
94+
return rootAttributes;
9595
}
9696

97-
public void setRootAttributeConfigs(List<RootAttributeConfig> rootAttributeConfigs) {
98-
this.rootAttributeConfigs = rootAttributeConfigs;
97+
public void setRootAttributes(List<RootAttributeConfig> rootAttributes) {
98+
this.rootAttributes = rootAttributes;
9999
}
100100
}

src/main/java/com/dasburo/spring/cache/dynamo/autoconfigure/DynamoCacheAutoConfiguration.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,7 @@ private List<DynamoCacheBuilder> dynamoCacheBuilders() {
8080
.withReadCapacityUnit(dynamoCacheProperties.getReadCapacityUnits())
8181
.withWriteCapacityUnit(dynamoCacheProperties.getWriteCapacityUnits())
8282
.withSerializer(new StringSerializer())
83+
.withRootAttributes(dynamoCacheProperties.getRootAttributes())
8384
.withWriter(DynamoCacheWriter.nonLockingDynamoCacheWriter(dynamoTemplate))
8485
);
8586
}

src/main/java/com/dasburo/spring/cache/dynamo/autoconfigure/DynamoCacheProperties.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,10 @@
1515
package com.dasburo.spring.cache.dynamo.autoconfigure;
1616

1717
import com.dasburo.spring.cache.dynamo.DynamoCache;
18+
import com.dasburo.spring.cache.dynamo.rootattribute.RootAttributeConfig;
1819

1920
import java.time.Duration;
21+
import java.util.List;
2022

2123
/**
2224
* Properties for {@link DynamoCache}.
@@ -28,6 +30,7 @@ public class DynamoCacheProperties {
2830
private String cacheName;
2931
private boolean flushOnBoot;
3032
private Duration ttl;
33+
private List<RootAttributeConfig> rootAttributes;
3134
private Long readCapacityUnits = 1L;
3235
private Long writeCapacityUnits = 1L;
3336

@@ -55,6 +58,14 @@ public void setTtl(Duration ttl) {
5558
this.ttl = ttl;
5659
}
5760

61+
public List<RootAttributeConfig> getRootAttributes() {
62+
return rootAttributes;
63+
}
64+
65+
public void setRootAttributes(List<RootAttributeConfig> rootAttributes) {
66+
this.rootAttributes = rootAttributes;
67+
}
68+
5869
public Long getReadCapacityUnits() {
5970
return readCapacityUnits;
6071
}

src/main/java/com/dasburo/spring/cache/dynamo/rootattribute/RootAttributeConfig.java

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,22 +12,34 @@ public class RootAttributeConfig {
1212
private String name;
1313
private ScalarAttributeType type;
1414

15+
/* default constructor required for property binding */
16+
public RootAttributeConfig(){
17+
}
18+
1519
public RootAttributeConfig(String name, ScalarAttributeType type) {
16-
Assert.notNull(type, "type must not be null!");
20+
setName(name);
21+
setType(type);
22+
}
23+
24+
public String getName() {
25+
return name;
26+
}
27+
28+
public void setName(String name) {
1729
Assert.notNull(name, "name must not be null!");
1830
Assert.isTrue(name.length() > 0, "name must not be empty!");
1931
Assert.isTrue(!ATTRIBUTE_KEY.equalsIgnoreCase(name), "name must not equal '" + ATTRIBUTE_KEY+"'");
2032
Assert.isTrue(!ATTRIBUTE_VALUE.equalsIgnoreCase(name), "name must not equal '" + ATTRIBUTE_VALUE+"'");
2133
Assert.isTrue(!ATTRIBUTE_TTL.equalsIgnoreCase(name), "name must not equal '" + ATTRIBUTE_TTL+"'");
2234
this.name = name;
23-
this.type = type;
24-
}
25-
26-
public String getName() {
27-
return name;
2835
}
2936

3037
public ScalarAttributeType getType() {
3138
return type;
3239
}
40+
41+
public void setType(ScalarAttributeType type) {
42+
Assert.notNull(type, "type must not be null!");
43+
this.type = type;
44+
}
3345
}

0 commit comments

Comments
 (0)