All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.spikeify.converters.ListJsonConverter Maven / Gradle / Ivy

There is a newer version: 0.2.35
Show newest version
package com.spikeify.converters;

import com.spikeify.Converter;
import com.spikeify.NoArgClassConstructor;

import java.lang.reflect.Constructor;
import java.util.ArrayList;
import java.util.List;

public class ListJsonConverter implements Converter {

	private final Constructor classConstructor;
	private JsonConverter valueConverter;

	@SuppressWarnings("unchecked")
	public ListJsonConverter(Class listType, Class valueType) {
		this.valueConverter = new JsonConverter(valueType);

		if (listType.equals(List.class)) {
			listType = ArrayList.class;
		}
		classConstructor = NoArgClassConstructor.getNoArgConstructor(listType);
	}

	@SuppressWarnings("unchecked")
	@Override
	public List fromProperty(List propertyList) {
		if (propertyList == null) {
			return null;
		}
		List fieldList = NoArgClassConstructor.newInstance(classConstructor);
		for (Object entry : propertyList) {
			if(entry instanceof String){
				fieldList.add(valueConverter.fromProperty((String) entry));
			} else {
				fieldList.add(entry);
			}
		}
		return fieldList;
	}

	@SuppressWarnings("unchecked")
	@Override
	public List fromField(List fieldList) {
		List propertyList = new ArrayList<>(fieldList.size());
		for (Object entry : fieldList) {
			propertyList.add(valueConverter.fromField(entry));
		}
		return propertyList;
	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy