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

lambdify.apigateway.ParamReader Maven / Gradle / Ivy

The newest version!
package lambdify.apigateway;

import java.time.*;
import java.util.*;
import java.util.function.Function;
import lombok.val;

/**
 *
 */
public class ParamReader {

	private Map> converters = new HashMap<>();

	{
		registerConverter( ZonedDateTime.class, s -> ZonedDateTime.parse( s ).withZoneSameInstant( ZoneOffset.UTC ) );
		registerConverter( LocalDate.class, LocalDate::parse );
		registerConverter( Byte.class, Byte::parseByte );
		registerConverter( byte.class, Byte::parseByte, Byte.valueOf( "0" ) );
		registerConverter( Short.class, Short::parseShort );
		registerConverter( short.class, Short::parseShort, Short.valueOf( "0" ));
		registerConverter( Long.class, Long::parseLong );
		registerConverter( long.class, Long::parseLong, Long.valueOf( "0" ) );
		registerConverter( Integer.class, Integer::parseInt );
		registerConverter( int.class, Integer::parseInt, Integer.valueOf( "0" ) );
		registerConverter( Double.class, Double::parseDouble );
		registerConverter( double.class, Double::parseDouble, Double.valueOf( "0" ) );
		registerConverter( Float.class, Float::parseFloat );
		registerConverter( float.class, Float::parseFloat, Float.valueOf( "0" ) );
		registerConverter( String.class, s -> s );
	}

	public  void registerConverter( Class clazz, Function converter, T defaultValue ) {
		registerConverter( clazz, s->{
			if ( s == null )
				return defaultValue;
			return converter.apply( s );
		});
	}

	public  void registerConverter( Class clazz, Function converter ) {
		converters.put( clazz, converter );
	}

	@SuppressWarnings( "unchecked" )
	public  T convert( String value, Class clazz ) {
		val converter = converters.get( clazz );
		if ( converter == null )
			throw new RuntimeException( "No converter found for " + clazz );
		return (T)converter.apply( value );
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy