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}