5
5
import org .reactivecommons .async .rabbit .config .RabbitProperties ;
6
6
import org .reactivecommons .async .rabbit .config .exceptions .InvalidConfigurationException ;
7
7
import org .springframework .beans .factory .annotation .Value ;
8
+ import org .springframework .util .StringUtils ;
8
9
9
10
import java .util .HashMap ;
10
11
15
16
public class AsyncPropsDomain extends HashMap <String , AsyncProps > {
16
17
public AsyncPropsDomain (@ Value ("${spring.application.name}" ) String defaultAppName ,
17
18
RabbitProperties defaultRabbitProperties ,
18
- AsyncPropsDomainProperties configured ) {
19
+ AsyncPropsDomainProperties configured ,
20
+ SecretFiller secretFiller ) {
19
21
super (configured );
20
22
this .computeIfAbsent (DEFAULT_DOMAIN , k -> new AsyncProps ());
21
23
super .forEach ((key , value ) -> { // To ensure that each domain has an appName
@@ -38,6 +40,9 @@ public AsyncPropsDomain(@Value("${spring.application.name}") String defaultAppNa
38
40
if (value .getBrokerConfigProps () == null ) {
39
41
value .setBrokerConfigProps (new BrokerConfigProps (value ));
40
42
}
43
+ if (StringUtils .hasText (value .getSecret ()) && secretFiller != null ) {
44
+ secretFiller .fillWithSecret (value );
45
+ }
41
46
});
42
47
}
43
48
@@ -56,6 +61,7 @@ public static AsyncPropsDomainBuilder builder() {
56
61
public static class AsyncPropsDomainBuilder {
57
62
private String defaultAppName ;
58
63
private RabbitProperties defaultRabbitProperties ;
64
+ private SecretFiller secretFiller ;
59
65
private final HashMap <String , AsyncProps > domains = new HashMap <>();
60
66
61
67
@@ -70,6 +76,12 @@ public AsyncPropsDomainBuilder withDefaultAppName(String defaultAppName) {
70
76
return this ;
71
77
}
72
78
79
+
80
+ public AsyncPropsDomainBuilder withSecretFiller (SecretFiller secretFiller ) {
81
+ this .secretFiller = secretFiller ;
82
+ return this ;
83
+ }
84
+
73
85
public AsyncPropsDomainBuilder withDomain (String domain , AsyncProps props ) {
74
86
domains .put (domain , props );
75
87
return this ;
@@ -80,9 +92,13 @@ public AsyncPropsDomain build() {
80
92
if (defaultRabbitProperties == null ) {
81
93
defaultRabbitProperties = new RabbitProperties ();
82
94
}
83
- return new AsyncPropsDomain (defaultAppName , defaultRabbitProperties , domainProperties );
95
+ return new AsyncPropsDomain (defaultAppName , defaultRabbitProperties , domainProperties , secretFiller );
84
96
}
85
97
86
98
}
87
99
100
+ public interface SecretFiller {
101
+ void fillWithSecret (AsyncProps props );
102
+ }
103
+
88
104
}
0 commit comments