Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <!-- Custom converters to allow automatic binding from Http requests parameters to objects -->
- <!-- All converters are annotated w/@Component -->
- <bean id="conversionService"
- class="org.springframework.context.support.ConversionServiceFactoryBean">
- <property name="converters">
- <list>
- <ref bean="stringToAssessmentConverter" />
- </list>
- </property>
- </bean>
- @SpringBootApplication
- public class Application extends SpringBootServletInitializer {
- ...
- @Bean(name="conversionService")
- public ConversionServiceFactoryBean getConversionService(StringToAssessmentConverter stringToAssessmentConverter) {
- ConversionServiceFactoryBean bean = new ConversionServiceFactoryBean();
- Set<Converter> converters = new HashSet<>();
- converters.add(stringToAssessmentConverter);
- bean.setConverters(converters);
- return bean;
- }
- }
- @Component
- public class StringToAssessmentConverter implements Converter<String, Assessment> {
- private AssessmentService assessmentService;
- @Autowired
- public StringToAssessmentConverter(AssessmentService assessmentService) {
- this.assessmentService = assessmentService;
- }
- public Assessment convert(String source) {
- Long id = Long.valueOf(source);
- try {
- return assessmentService.find(id);
- } catch (SecurityException ex) {
- return null;
- }
- }
- }
- import org.springframework.core.convert.converter.Converter
- @Component
- public class DateUtilToDateSQLConverter implements Converter<java.util.Date, Date> {
- @Override
- public Date convert(java.util.Date source) {
- return new Date(source.getTime());
- }
- }
- @SpringBootApplication
- public class Application extends SpringBootServletInitializer {
- @Bean
- public AssessmentService assessmentService(){
- return new AssessmentService();
- }
- @Bean
- public StringToAssessmentConverter stringToAssessmentConverter(){
- return new StringToAssessmentConverter(assessmentService());
- }
- @Bean(name="conversionService")
- public ConversionService getConversionService() {
- ConversionServiceFactoryBean bean = new ConversionServiceFactoryBean();
- Set<Converter> converters = new HashSet<Converter>();
- //add the converter
- converters.add(stringToAssessmentConverter());
- bean.setConverters(converters);
- return bean.getObject();
- }
- // separate these class into its own java file if necessary
- // Assesment service
- class AssessmentService {}
- //converter
- class StringToAssessmentConverter implements Converter<String, Assessment> {
- private AssessmentService assessmentService;
- @Autowired
- public StringToAssessmentConverter(AssessmentService assessmentService) {
- this.assessmentService = assessmentService;
- }
- public Assessment convert(String source) {
- Long id = Long.valueOf(source);
- try {
- return assessmentService.find(id);
- } catch (SecurityException ex) {
- return null;
- }
- }
- }
- }
- @Autowired
- @Bean(name="conversionService")
- public ConversionService getConversionService(StringToAssessmentConverter stringToAssessmentConverter) {
- ConversionServiceFactoryBean bean = new ConversionServiceFactoryBean();
- Set<Converter> converters = new HashSet<Converter>();
- //add the converter
- converters.add(stringToAssessmentConverter);
- bean.setConverters(converters);
- return bean.getObject();
- }
- @Target({ElementType.TYPE, ElementType.FIELD, ElementType.PARAMETER})
- @Retention(RetentionPolicy.RUNTIME)
- @Documented
- @Component
- public @interface TypeConverter {
- }
- @Configuration
- public class ConverterConfiguration {
- @Autowired(required = false)
- @TypeConverter
- private Set<Converter<?, ?>> autoRegisteredConverters;
- @Autowired(required = false)
- @TypeConverter
- private Set<ConverterFactory<?, ?>> autoRegisteredConverterFactories;
- @Autowired
- private ConverterRegistry converterRegistry;
- @PostConstruct
- public void conversionService() {
- if (autoRegisteredConverters != null) {
- for (Converter<?, ?> converter : autoRegisteredConverters) {
- converterRegistry.addConverter(converter);
- }
- }
- if (autoRegisteredConverterFactories != null) {
- for (ConverterFactory<?, ?> converterFactory : autoRegisteredConverterFactories) {
- converterRegistry.addConverterFactory(converterFactory);
- }
- }
- }
- }
- @SuppressWarnings("rawtypes")
- @TypeConverter
- public class StringToEnumConverterFactory implements ConverterFactory<String, Enum> {
- @SuppressWarnings("unchecked")
- public <T extends Enum> Converter<String, T> getConverter(Class<T> targetType) {
- return new StringToEnum(targetType);
- }
- private final class StringToEnum<T extends Enum> implements Converter<String, T> {
- private Class<T> enumType;
- public StringToEnum(Class<T> enumType) {
- this.enumType = enumType;
- }
- @SuppressWarnings("unchecked")
- public T convert(String source) {
- return (T) Enum.valueOf(this.enumType, source.trim().toUpperCase());
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement