I need to create a List of enum from a comma separated String. I have some configurations in properties file which are mainly a list of HttpStatus
like:
some.config=TOO_MANY_REQUESTS,GATEWAY_TIMEOUT,BAD_GATEWAY
This configurations can be bind to a LIST as:
@Value("#{'${some.config}'.split(',')}")
private List<HttpStatus> statuses;
Now can this be done with a single line of my code. I am receiving the String as following:
@Bean(name = "somebean")
public void do(@Value("${some.config:}") String statuses) throws IOException {
private List<HttpStatus> sList = StringUtils.isEmpty(statuses) ?
globalSeries : **Arrays.asList(statuses.split("\\s*,\\s*"));**
}
Arrays.asList(series.split("\s*,\s*")); will create a List of string, now can I create a List of enum instead, otherwise I need to iterate the temp List then create a List of enum.
List<YourEnum> list = Stream.of(yourData.split(delimiter).map(YourEnum::valueOf).collect(Collectors.toList())? Anyway possibly related: Lookup Java enum by string valueIllegalArgumentExceptionsomewhereList(allow duplicates, maintain an order)? For most practical use cases, you want aSet, likely anEnumSet.Arrays.stream(statuses.split(",")) .map(s -> HttpStatus.valueOf(s.trim())) .collect(Collectors.toCollection( () -> EnumSet.noneOf(HttpStatus.class) ))