Skip to content

Commit 45ce7f7

Browse files
authored
Merge pull request #441 from wttech/fix/rework-custom-definitions
added custom definitions configuration service
2 parents 5ab35a8 + cf10eba commit 45ce7f7

File tree

3 files changed

+77
-4
lines changed

3 files changed

+77
-4
lines changed

app/aem/core/src/main/java/com/cognifide/apm/core/scripts/ScriptManagerImpl.java

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,9 @@
5151
import java.util.HashMap;
5252
import java.util.Map;
5353
import java.util.Set;
54+
import java.util.TreeMap;
5455
import java.util.concurrent.CopyOnWriteArraySet;
56+
import java.util.stream.Collectors;
5557
import javax.jcr.RepositoryException;
5658
import javax.jcr.Session;
5759
import org.apache.jackrabbit.api.JackrabbitSession;
@@ -193,9 +195,13 @@ private void updateScriptProperties(Script script, ExecutionMode mode, boolean s
193195

194196
@Override
195197
public Map<String, String> getPredefinedDefinitions() {
196-
Map<String, String> predefinedDefinitions = new HashMap<>();
197-
definitionsProviders.forEach(provider -> predefinedDefinitions.putAll(provider.getPredefinedDefinitions()));
198-
return predefinedDefinitions;
198+
return definitionsProviders.stream()
199+
.flatMap(provider -> provider.getPredefinedDefinitions().entrySet().stream())
200+
.collect(Collectors.toMap(
201+
Map.Entry::getKey, Map.Entry::getValue,
202+
(first, second) -> first,
203+
() -> new TreeMap<>(String.CASE_INSENSITIVE_ORDER)
204+
));
199205
}
200206

201207
private ActionExecutor createExecutor(ExecutionMode mode, ResourceResolver resolver) throws RepositoryException {
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
/*-
2+
* ========================LICENSE_START=================================
3+
* AEM Permission Management
4+
* %%
5+
* Copyright (C) 2013 Wunderman Thompson Technology
6+
* %%
7+
* Licensed under the Apache License, Version 2.0 (the "License");
8+
* you may not use this file except in compliance with the License.
9+
* You may obtain a copy of the License at
10+
*
11+
* http://www.apache.org/licenses/LICENSE-2.0
12+
*
13+
* Unless required by applicable law or agreed to in writing, software
14+
* distributed under the License is distributed on an "AS IS" BASIS,
15+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16+
* See the License for the specific language governing permissions and
17+
* limitations under the License.
18+
* =========================LICENSE_END==================================
19+
*/
20+
package com.cognifide.apm.core.services;
21+
22+
import com.cognifide.apm.api.services.DefinitionsProvider;
23+
import com.cognifide.apm.core.Property;
24+
import java.util.Arrays;
25+
import java.util.Map;
26+
import java.util.stream.Collectors;
27+
import org.apache.commons.lang3.StringUtils;
28+
import org.osgi.service.component.annotations.Activate;
29+
import org.osgi.service.component.annotations.Component;
30+
import org.osgi.service.metatype.annotations.AttributeDefinition;
31+
import org.osgi.service.metatype.annotations.Designate;
32+
import org.osgi.service.metatype.annotations.ObjectClassDefinition;
33+
34+
@Component(
35+
immediate = true,
36+
property = {
37+
Property.DESCRIPTION + "APM Custom Definitions Provider",
38+
Property.VENDOR
39+
}
40+
)
41+
@Designate(ocd = CustomDefinitionsProvider.Configuration.class, factory = true)
42+
public class CustomDefinitionsProvider implements DefinitionsProvider {
43+
44+
private Map<String, String> predefinedDefinitions;
45+
46+
@Activate
47+
public void activate(Configuration config) {
48+
predefinedDefinitions = Arrays.stream(config.definitions())
49+
.map(definition -> definition.split("="))
50+
.map(StringUtils::stripAll)
51+
.filter(StringUtils::isNoneEmpty)
52+
.filter(parts -> parts.length == 2)
53+
.collect(Collectors.toMap(parts -> parts[0], parts -> parts[1], (first, second) -> first));
54+
}
55+
56+
@Override
57+
public Map<String, String> getPredefinedDefinitions() {
58+
return predefinedDefinitions;
59+
}
60+
61+
@ObjectClassDefinition(name = "AEM Permission Management - Custom Definitions Configuration")
62+
public @interface Configuration {
63+
64+
@AttributeDefinition(name = "Definitions", description = "format: key=value")
65+
String[] definitions();
66+
}
67+
}

app/aem/core/src/main/java/com/cognifide/apm/core/scripts/DefaultDefinitionsProvider.java renamed to app/aem/core/src/main/java/com/cognifide/apm/core/services/DefaultDefinitionsProvider.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
* limitations under the License.
1818
* =========================LICENSE_END==================================
1919
*/
20-
package com.cognifide.apm.core.scripts;
20+
package com.cognifide.apm.core.services;
2121

2222
import com.cognifide.apm.api.services.DefinitionsProvider;
2323
import java.util.HashMap;

0 commit comments

Comments
 (0)