/* * Copyright (c) [2011-2016] "Pivotal Software, Inc." / "Neo Technology" / "Graph Aware Ltd." * * This product is licensed to you under the Apache License, Version 2.0 (the "License"). * You may not use this product except in compliance with the License. * * This product may include a number of subcomponents with * separate copyright notices and license terms. Your use of the source * code for these subcomponents is subject to the terms and * conditions of the subcomponent's license, as noted in the LICENSE file. * */ package org.springframework.data.neo4j.integration.conversion; import org.springframework.core.convert.TypeDescriptor; import org.springframework.core.convert.converter.ConditionalConverter; import org.springframework.core.convert.converter.Converter; import org.springframework.core.convert.converter.ConverterFactory; import org.springframework.data.neo4j.integration.conversion.domain.MonetaryAmount; /** * Not a properly-implemented factory, but it does serve the purpose of helping to verify that converters defined for abstract * supertypes can still be used correctly. * * @author Adam George */ public class SpringMonetaryAmountToNumberConverterFactory implements ConverterFactory<MonetaryAmount, Number>, ConditionalConverter { private final SpringMonetaryAmountToIntegerConverter wrappedConverter = new SpringMonetaryAmountToIntegerConverter(); @Override public boolean matches(TypeDescriptor sourceType, TypeDescriptor targetType) { return MonetaryAmount.class.isAssignableFrom(sourceType.getType()) && Number.class.isAssignableFrom(targetType.getType()); } @SuppressWarnings("unchecked") @Override public <T extends Number> Converter<MonetaryAmount, T> getConverter(Class<T> targetType) { return (Converter<MonetaryAmount, T>) this.wrappedConverter; } }