001package com.mrivanplays.annotationconfig.yaml;
002
003import com.mrivanplays.annotationconfig.core.FieldTypeResolver;
004import java.lang.reflect.Field;
005import java.util.ArrayList;
006import java.util.List;
007
008/** Field resolver, resolving yaml lists to type of string lists. */
009public class StringListResolver implements FieldTypeResolver {
010
011  /** {@inheritDoc} */
012  @Override
013  public Object toType(Object value, Field field) throws Exception {
014    if (!(value instanceof List<?>)) {
015      throw new IllegalArgumentException("Value given is not a list.");
016    }
017    List<?> list = (List<?>) value;
018    List<String> transformed = new ArrayList<>();
019    for (Object i : list) {
020      if (i instanceof String) {
021        transformed.add(String.valueOf(i));
022      }
023    }
024    return transformed;
025  }
026
027  /** {@inheritDoc} */
028  @Override
029  public boolean shouldResolve(Class<?> fieldType) {
030    return List.class.isAssignableFrom(fieldType);
031  }
032}