Skip to content

Commit 7b25a71

Browse files
committed
XCOMMONS-3289: Allow overwritting xwiki.properties and xwiki.cfg properties via environment variable and Java system properties
1 parent 9bd9791 commit 7b25a71

File tree

14 files changed

+203
-253
lines changed

14 files changed

+203
-253
lines changed

xwiki-platform-core/xwiki-platform-configuration/xwiki-platform-configuration-default/pom.xml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,11 @@
4242
<artifactId>xwiki-commons-configuration-api</artifactId>
4343
<version>${commons.version}</version>
4444
</dependency>
45+
<dependency>
46+
<groupId>org.xwiki.commons</groupId>
47+
<artifactId>xwiki-commons-configuration-default</artifactId>
48+
<version>${commons.version}</version>
49+
</dependency>
4550
<dependency>
4651
<groupId>org.xwiki.commons</groupId>
4752
<artifactId>xwiki-commons-environment-api</artifactId>
@@ -107,7 +112,6 @@
107112
org/xwiki/configuration/internal/AbstractDocumentConfigurationSource.java,
108113
org/xwiki/configuration/internal/AllConfigurationSource.java,
109114
org/xwiki/configuration/internal/CommonsConfigurationSource.java,
110-
org/xwiki/configuration/internal/CompositeConfigurationSource.java,
111115
org/xwiki/configuration/internal/DefaultConfigurationSource.java
112116
</excludes>
113117
</configuration>

xwiki-platform-core/xwiki-platform-configuration/xwiki-platform-configuration-default/src/main/java/org/xwiki/configuration/internal/AbstractCompositeConfigurationSource.java

Lines changed: 0 additions & 135 deletions
This file was deleted.

xwiki-platform-core/xwiki-platform-configuration/xwiki-platform-configuration-default/src/main/java/org/xwiki/configuration/internal/AbstractDocumentConfigurationSource.java

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -264,6 +264,12 @@ protected void setBaseProperty(String propertyName, Object propertyValue, BaseOb
264264

265265
@Override
266266
public List<String> getKeys()
267+
{
268+
return getKeys("");
269+
}
270+
271+
@Override
272+
public List<String> getKeys(String prefix)
267273
{
268274
List<String> keys = Collections.emptyList();
269275

@@ -280,7 +286,7 @@ public List<String> getKeys()
280286
for (String key : properties) {
281287
// We need to check if the key really have a value as otherwise it does not really make sense to
282288
// return it
283-
if (containsKey(key)) {
289+
if (key.startsWith(prefix) && containsKey(key)) {
284290
keys.add(key);
285291
}
286292
}
@@ -374,6 +380,12 @@ public boolean isEmpty()
374380
return getKeys().isEmpty();
375381
}
376382

383+
@Override
384+
public boolean isEmpty(String prefix)
385+
{
386+
return getKeys(prefix).isEmpty();
387+
}
388+
377389
@Override
378390
public void setProperty(String key, Object value) throws ConfigurationSaveException
379391
{

xwiki-platform-core/xwiki-platform-configuration/xwiki-platform-configuration-default/src/main/java/org/xwiki/configuration/internal/AbstractSpacesConfigurationSource.java

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -163,6 +163,17 @@ public List<String> getKeys()
163163
}
164164
}
165165

166+
@Override
167+
public List<String> getKeys(String prefix)
168+
{
169+
XWikiDocument currentDocument = setCurrentDocument(getDocument());
170+
try {
171+
return getSpaceConfigurationSource().getKeys(prefix);
172+
} finally {
173+
setCurrentDocument(currentDocument);
174+
}
175+
}
176+
166177
@Override
167178
public boolean containsKey(String key)
168179
{
@@ -184,6 +195,17 @@ public boolean isEmpty()
184195
setCurrentDocument(currentDocument);
185196
}
186197
}
198+
199+
@Override
200+
public boolean isEmpty(String prefix)
201+
{
202+
XWikiDocument currentDocument = setCurrentDocument(getDocument());
203+
try {
204+
return getSpaceConfigurationSource().isEmpty(prefix);
205+
} finally {
206+
setCurrentDocument(currentDocument);
207+
}
208+
}
187209
}
188210

189211
@Override

xwiki-platform-core/xwiki-platform-configuration/xwiki-platform-configuration-default/src/main/java/org/xwiki/configuration/internal/AbstractWikisConfigurationSource.java

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,12 @@ public List<String> getKeys()
7070
return getFromWiki(() -> AbstractWikisConfigurationSource.super.getKeys());
7171
}
7272

73+
@Override
74+
public List<String> getKeys(String prefix)
75+
{
76+
return getFromWiki(() -> AbstractWikisConfigurationSource.super.getKeys(prefix));
77+
}
78+
7379
@Override
7480
public <T> T getProperty(String key)
7581
{
@@ -94,6 +100,12 @@ public boolean isEmpty()
94100
return getFromWiki(() -> AbstractWikisConfigurationSource.super.isEmpty());
95101
}
96102

103+
@Override
104+
public boolean isEmpty(String prefix)
105+
{
106+
return getFromWiki(() -> AbstractWikisConfigurationSource.super.isEmpty(prefix));
107+
}
108+
97109
private <T> T getFromWiki(Supplier<T> supplier)
98110
{
99111
XWikiContext xcontext = xcontextProvider.get();
@@ -130,6 +142,12 @@ public List<String> getKeys()
130142
return getConfigurationSource().getKeys();
131143
}
132144

145+
@Override
146+
public List<String> getKeys(String prefix)
147+
{
148+
return getConfigurationSource().getKeys(prefix);
149+
}
150+
133151
@Override
134152
public <T> T getProperty(String key)
135153
{
@@ -154,6 +172,12 @@ public boolean isEmpty()
154172
return getConfigurationSource().isEmpty();
155173
}
156174

175+
@Override
176+
public boolean isEmpty(String prefix)
177+
{
178+
return getConfigurationSource().isEmpty(prefix);
179+
}
180+
157181
private ConfigurationSource getConfigurationSource()
158182
{
159183
CompositeConfigurationSource compositeConfigSource = new CompositeConfigurationSource();

0 commit comments

Comments
 (0)