Skip to content

Commit c9a2dec

Browse files
committed
Polishing.
Introduce convenience methods for Policy and VaultEndpoint creation. See gh-816
1 parent 03a114b commit c9a2dec

File tree

3 files changed

+37
-13
lines changed

3 files changed

+37
-13
lines changed

spring-vault-core/src/main/java/org/springframework/vault/client/VaultEndpoint.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,18 @@ public static VaultEndpoint create(String host, int port) {
7575
return vaultEndpoint;
7676
}
7777

78+
/**
79+
* Create a {@link VaultEndpoint} given a {@link String URI}.
80+
* @param uri must contain hostname, port and scheme, must not be empty or
81+
* {@literal null}.
82+
* @return a new {@link VaultEndpoint}.
83+
* @see #from(URI)
84+
* @since 3.1
85+
*/
86+
public static VaultEndpoint from(String uri) {
87+
return from(URI.create(uri));
88+
}
89+
7890
/**
7991
* Create a {@link VaultEndpoint} given a {@link URI}.
8092
* @param uri must contain hostname, port and scheme, must not be empty or

spring-vault-core/src/main/java/org/springframework/vault/support/Policy.java

Lines changed: 24 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import java.time.Duration;
2020
import java.util.ArrayList;
2121
import java.util.Arrays;
22+
import java.util.Collection;
2223
import java.util.Collections;
2324
import java.util.LinkedHashMap;
2425
import java.util.LinkedHashSet;
@@ -59,9 +60,9 @@
5960
* {@link Policy} support JSON serialization and deserialization using Jackson.
6061
*
6162
* @author Mark Paluch
62-
* @since 2.0
6363
* @see Rule
6464
* @see com.fasterxml.jackson.databind.ObjectMapper
65+
* @since 2.0
6566
*/
6667
@JsonSerialize(using = PolicySerializer.class)
6768
@JsonDeserialize(using = PolicyDeserializer.class)
@@ -356,7 +357,7 @@ public RuleBuilder capability(Capability capability) {
356357
}
357358

358359
/**
359-
* Configure capabilities. apabilities are added when calling this method and
360+
* Configure capabilities. Capabilities are added when calling this method and
360361
* do not replace already configured capabilities.
361362
* @param capabilities must not be {@literal null}.
362363
* @return {@code this} {@link RuleBuilder}.
@@ -369,6 +370,25 @@ public RuleBuilder capabilities(Capability... capabilities) {
369370
return capabilities(Arrays.asList(capabilities));
370371
}
371372

373+
/**
374+
* Configure capabilities. Capabilities are added when calling this method and
375+
* do not replace already configured capabilities.
376+
* @param capabilities must not be {@literal null}.
377+
* @return {@code this} {@link RuleBuilder}.
378+
* @since 3.1
379+
*/
380+
public RuleBuilder capabilities(Collection<? extends Capability> capabilities) {
381+
382+
Assert.notNull(capabilities, "Capabilities must not be null");
383+
Assert.noNullElements(capabilities, "Capabilities must not contain null elements");
384+
385+
for (Capability capability : capabilities) {
386+
this.capabilities.add(capability);
387+
}
388+
389+
return this;
390+
}
391+
372392
/**
373393
* Configure capabilities represented as {@link String} literals. This method
374394
* resolves capabilities using {@link BuiltinCapabilities}. Capabilities are
@@ -397,15 +417,6 @@ public RuleBuilder capabilities(String... capabilities) {
397417
return capabilities(mapped);
398418
}
399419

400-
private RuleBuilder capabilities(Iterable<Capability> capabilities) {
401-
402-
for (Capability capability : capabilities) {
403-
this.capabilities.add(capability);
404-
}
405-
406-
return this;
407-
}
408-
409420
/**
410421
* Configure a min TTL for response wrapping.
411422
* @param ttl must not be {@literal null}.
@@ -749,7 +760,9 @@ public JavaType getOutputType(TypeFactory typeFactory) {
749760
static class StringToDurationConverter implements Converter<String, Duration> {
750761

751762
static Pattern SECONDS = Pattern.compile("(\\d+)s");
763+
752764
static Pattern MINUTES = Pattern.compile("(\\d+)m");
765+
753766
static Pattern HOURS = Pattern.compile("(\\d+)h");
754767

755768
@Override

spring-vault-core/src/test/java/org/springframework/vault/core/lease/TokenExpiryRotatingSecretsIntegrationTests.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -81,8 +81,7 @@ static void beforeAll() {
8181

8282
VaultOperations vaultOperations = prepare.getVaultOperations();
8383

84-
Policy policy = Policy
85-
.of(Rule.builder().capabilities(BuiltinCapabilities.crud().toArray(new Capability[0])).path("/*").build());
84+
Policy policy = Policy.of(Rule.builder().capabilities(BuiltinCapabilities.crud()).path("/*").build());
8685
vaultOperations.opsForSys().createOrUpdatePolicy("TokenExpiryRotatingSecretsIntegrationTests", policy);
8786

8887
vaultOperations.write("auth/userpass/users/token-expiry", Map.of("password", "token-expiry", "token_ttl", 8,

0 commit comments

Comments
 (0)