001package com.plivo.api.serializers;
002
003import javax.xml.bind.annotation.adapters.XmlAdapter;
004import java.util.Arrays;
005import java.util.List;
006import java.util.stream.Collectors;
007
008public class DelimitedListXMLSerializer extends XmlAdapter<String, List<String>> {
009
010  private final String delimiter;
011
012  DelimitedListXMLSerializer(String delimiter) {
013    this.delimiter = delimiter;
014  }
015
016  DelimitedListXMLSerializer() {
017    this(",");
018  }
019
020  @Override
021  public List<String> unmarshal(String v) throws Exception {
022    if (v == null) {
023      throw new IllegalArgumentException("cannot be null");
024    }
025    return Arrays.asList(v.split(delimiter));
026  }
027
028  @Override
029  public String marshal(List<String> v) throws Exception {
030    return v.stream().map(String::trim).collect(Collectors.joining(delimiter));
031  }
032}