Home / Class/ DefaultValueCoercionTypeVisitor Class — spring-boot Architecture

DefaultValueCoercionTypeVisitor Class — spring-boot Architecture

Architecture documentation for the DefaultValueCoercionTypeVisitor class in ParameterPropertyDescriptor.java from the spring-boot codebase.

Entity Profile

Source Code

configuration-metadata/spring-boot-configuration-processor/src/main/java/org/springframework/boot/configurationprocessor/ParameterPropertyDescriptor.java lines 156–214

	private static final class DefaultValueCoercionTypeVisitor extends TypeKindVisitor8<Object, String> {

		static final DefaultValueCoercionTypeVisitor INSTANCE = new DefaultValueCoercionTypeVisitor();

		private <T extends Number> T parseNumber(String value, Function<String, T> parser,
				PrimitiveType primitiveType) {
			try {
				return parser.apply(value);
			}
			catch (NumberFormatException ex) {
				throw new IllegalArgumentException(
						String.format("Invalid %s representation '%s'", primitiveType, value));
			}
		}

		@Override
		public Object visitPrimitiveAsBoolean(PrimitiveType type, String value) {
			return Boolean.parseBoolean(value);
		}

		@Override
		public Object visitPrimitiveAsByte(PrimitiveType type, String value) {
			return parseNumber(value, Byte::parseByte, type);
		}

		@Override
		public Object visitPrimitiveAsShort(PrimitiveType type, String value) {
			return parseNumber(value, Short::parseShort, type);
		}

		@Override
		public Object visitPrimitiveAsInt(PrimitiveType type, String value) {
			return parseNumber(value, Integer::parseInt, type);
		}

		@Override
		public Object visitPrimitiveAsLong(PrimitiveType type, String value) {
			return parseNumber(value, Long::parseLong, type);
		}

		@Override
		public Object visitPrimitiveAsChar(PrimitiveType type, String value) {
			if (value.length() > 1) {
				throw new IllegalArgumentException(String.format("Invalid character representation '%s'", value));
			}
			return value;
		}

		@Override
		public Object visitPrimitiveAsFloat(PrimitiveType type, String value) {
			return parseNumber(value, Float::parseFloat, type);
		}

		@Override
		public Object visitPrimitiveAsDouble(PrimitiveType type, String value) {
			return parseNumber(value, Double::parseDouble, type);
		}

	}

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free