Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -17,14 +17,14 @@
import java.beans.FeatureDescriptor;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import java.util.stream.Stream;

import org.apache.commons.lang3.ArrayUtils;
import org.apache.commons.lang3.StringEscapeUtils;
Expand Down Expand Up @@ -162,7 +162,7 @@ public ElFunctionMapper() {
YamlMacroElEvaluator.ElFunctionMapper.class.getMethod("keys", new Class<?>[] { Map.class }),
YamlMacroElEvaluator.ElFunctionMapper.class.getMethod("values", new Class<?>[] { Map.class }),
YamlMacroElEvaluator.ElFunctionMapper.class.getMethod("escapeXml", new Class<?>[] { String.class }),
YamlMacroElEvaluator.ElFunctionMapper.class.getMethod("union", new Class<?>[] { Collection.class, Collection.class })
YamlMacroElEvaluator.ElFunctionMapper.class.getMethod("union", new Class<?>[] { Collection[].class })
};
for (Method method : exportedMethods) {
functionMap.put(method.getName(), method);
Expand Down Expand Up @@ -205,8 +205,9 @@ public static String escapeXml(String input) {
return StringEscapeUtils.escapeXml10(input);
}

public static List<Object> union(Collection<String> collection1, Collection<String> collection2){
return Stream.concat(collection1.stream(),collection2.stream()).collect(Collectors.toList());
@SafeVarargs
public static List<Object> union(Collection<String>... collections){
return Arrays.stream(collections).flatMap(Collection::stream).collect(Collectors.toList());
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,8 +49,9 @@ void testFunctions() {
assertEquals("foo", evaluateSimpleExpression("defaultIfBlank(\" \",\"foo\")"));
assertEquals("bar", evaluateSimpleExpression("defaultIfBlank(\"bar\",\"foo\")"));

Map<String,Object> lists= ImmutableMap.of("list1",Arrays.asList("foo","bar"), "list2",Arrays.asList("fizz","buzz"));
Map<String,Object> lists= ImmutableMap.of("list1",Arrays.asList("foo","bar"), "list2",Arrays.asList("fizz","buzz"), "list3",Arrays.asList("ping","pong"));
assertIterableEquals(Arrays.asList("foo","bar","fizz","buzz"), (Iterable)evaluateSimpleExpression("union(list1,list2)",lists));
assertIterableEquals(Arrays.asList("foo","bar","fizz","buzz","ping","pong"), (Iterable)evaluateSimpleExpression("union(list1,list2,list3)",lists));
assertIterableEquals(Arrays.asList("item1"),(Iterable) evaluateSimpleExpression("keys(list)",Collections.singletonMap("list", ImmutableMap.of("item1","value"))));

}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -483,7 +483,7 @@ public void testUnionFunction() throws Exception {
yamlList = yamlMacroProcessor.processMacros(yamlList, globalVariables, installLog, session);

AuthorizablesConfig groups = readGroupConfigs(yamlList);
assertEquals(9, groups.size(), "Number of ACEs expected to be 9");
assertEquals(12, groups.size(), "Number of ACEs expected to be 12");
}

@Test
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,13 +16,18 @@
- US
- Mexico

- DEF countriesAPAC=:
- Japan
- China
- South Korea

- group_config:

- FOR country IN ${countriesEU}:
- group-${country}-europe:
- path: /home/groups/netcentric

- FOR country IN ${union(countriesEU,countriesNA)}:
- FOR country IN ${union(countriesEU,countriesNA,countriesAPAC)}:
- group-${country}-global:
- path: /home/groups/netcentric

2 changes: 1 addition & 1 deletion docs/AdvancedFeatures.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ Function Signature | Description
`containsAllItems(List<String> list, List<String> items)`| Returns `true` if all of the items are contained in the given list (independent of their order). | 2.6.1
`containsAnyItem(List<String> list, List<String> items)`| Returns `true` if any of the items is contained in the given list. | 2.6.1
`containsItem(List<String> list, String item)`| Returns `true` if the item is contained in the given list. | 2.2.0
`union(Collection<String> list, Collection<String> list)`| Concatenates two collections. | 3.6.3
`union(Collection<String>... lists)`| Concatenates two or more collections. | 3.6.3
`defaultIfBlank(String str, String default)` | [`StringUtils.defaultIfBlank(...)`](https://commons.apache.org/proper/commons-lang/javadocs/api-3.3/org/apache/commons/lang3/StringUtils.html#defaultIfBlank(T,%20T)) | 3.3.0
`defaultIfEmpty(String str, String default)` | [`StringUtils.defaultIfEmpty(...)`](https://commons.apache.org/proper/commons-lang/javadocs/api-3.3/org/apache/commons/lang3/StringUtils.html#defaultIfEmpty(T,%20T)) | 2.5.0
`endsWith(String str, String suffix)`| [`StringUtils.endsWith(...)`](https://commons.apache.org/proper/commons-lang/javadocs/api-3.3/org/apache/commons/lang3/StringUtils.html#endsWith(java.lang.CharSequence,%20java.lang.CharSequence)) | 1.8.0
Expand Down
Loading