/* * Copyright 2002-2016 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.core.convert.support; import org.springframework.core.convert.converter.Converter; import org.springframework.core.convert.converter.ConverterFactory; /** * Converts from a Integer to a {@link java.lang.Enum} by calling {@link Class#getEnumConstants()}. * * @author Yanming Zhou * @author Stephane Nicoll * @since 4.3 */ @SuppressWarnings({"unchecked", "rawtypes"}) final class IntegerToEnumConverterFactory implements ConverterFactory<Integer, Enum> { @Override public <T extends Enum> Converter<Integer, T> getConverter(Class<T> targetType) { return new IntegerToEnum(ConversionUtils.getEnumType(targetType)); } private class IntegerToEnum<T extends Enum> implements Converter<Integer, T> { private final Class<T> enumType; public IntegerToEnum(Class<T> enumType) { this.enumType = enumType; } @Override public T convert(Integer source) { return this.enumType.getEnumConstants()[source]; } } }