Advertisement
Guest User

Untitled

a guest
Jul 27th, 2017
53
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.29 KB | None | 0 0
  1. <!-- Custom converters to allow automatic binding from Http requests parameters to objects -->
  2. <!-- All converters are annotated w/@Component -->
  3. <bean id="conversionService"
  4. class="org.springframework.context.support.ConversionServiceFactoryBean">
  5. <property name="converters">
  6. <list>
  7. <ref bean="stringToAssessmentConverter" />
  8. </list>
  9. </property>
  10. </bean>
  11.  
  12. @SpringBootApplication
  13. public class Application extends SpringBootServletInitializer {
  14.  
  15. ...
  16.  
  17. @Bean(name="conversionService")
  18. public ConversionServiceFactoryBean getConversionService(StringToAssessmentConverter stringToAssessmentConverter) {
  19. ConversionServiceFactoryBean bean = new ConversionServiceFactoryBean();
  20.  
  21. Set<Converter> converters = new HashSet<>();
  22.  
  23. converters.add(stringToAssessmentConverter);
  24.  
  25. bean.setConverters(converters);
  26. return bean;
  27. }
  28. }
  29.  
  30. @Component
  31. public class StringToAssessmentConverter implements Converter<String, Assessment> {
  32.  
  33. private AssessmentService assessmentService;
  34.  
  35. @Autowired
  36. public StringToAssessmentConverter(AssessmentService assessmentService) {
  37. this.assessmentService = assessmentService;
  38. }
  39.  
  40. public Assessment convert(String source) {
  41. Long id = Long.valueOf(source);
  42. try {
  43. return assessmentService.find(id);
  44. } catch (SecurityException ex) {
  45. return null;
  46. }
  47. }
  48.  
  49. }
  50.  
  51. import org.springframework.core.convert.converter.Converter
  52. @Component
  53. public class DateUtilToDateSQLConverter implements Converter<java.util.Date, Date> {
  54.  
  55. @Override
  56. public Date convert(java.util.Date source) {
  57. return new Date(source.getTime());
  58. }
  59. }
  60.  
  61. @SpringBootApplication
  62. public class Application extends SpringBootServletInitializer {
  63.  
  64. @Bean
  65. public AssessmentService assessmentService(){
  66. return new AssessmentService();
  67. }
  68.  
  69. @Bean
  70. public StringToAssessmentConverter stringToAssessmentConverter(){
  71. return new StringToAssessmentConverter(assessmentService());
  72. }
  73.  
  74. @Bean(name="conversionService")
  75. public ConversionService getConversionService() {
  76. ConversionServiceFactoryBean bean = new ConversionServiceFactoryBean();
  77. Set<Converter> converters = new HashSet<Converter>();
  78.  
  79. //add the converter
  80. converters.add(stringToAssessmentConverter());
  81.  
  82. bean.setConverters(converters);
  83. return bean.getObject();
  84. }
  85.  
  86. // separate these class into its own java file if necessary
  87. // Assesment service
  88. class AssessmentService {}
  89.  
  90. //converter
  91. class StringToAssessmentConverter implements Converter<String, Assessment> {
  92.  
  93. private AssessmentService assessmentService;
  94.  
  95. @Autowired
  96. public StringToAssessmentConverter(AssessmentService assessmentService) {
  97. this.assessmentService = assessmentService;
  98. }
  99.  
  100. public Assessment convert(String source) {
  101. Long id = Long.valueOf(source);
  102. try {
  103. return assessmentService.find(id);
  104. } catch (SecurityException ex) {
  105. return null;
  106. }
  107. }
  108.  
  109. }
  110. }
  111.  
  112. @Autowired
  113. @Bean(name="conversionService")
  114. public ConversionService getConversionService(StringToAssessmentConverter stringToAssessmentConverter) {
  115. ConversionServiceFactoryBean bean = new ConversionServiceFactoryBean();
  116. Set<Converter> converters = new HashSet<Converter>();
  117.  
  118. //add the converter
  119. converters.add(stringToAssessmentConverter);
  120.  
  121. bean.setConverters(converters);
  122. return bean.getObject();
  123. }
  124.  
  125. @Target({ElementType.TYPE, ElementType.FIELD, ElementType.PARAMETER})
  126. @Retention(RetentionPolicy.RUNTIME)
  127. @Documented
  128. @Component
  129. public @interface TypeConverter {
  130. }
  131.  
  132. @Configuration
  133. public class ConverterConfiguration {
  134.  
  135. @Autowired(required = false)
  136. @TypeConverter
  137. private Set<Converter<?, ?>> autoRegisteredConverters;
  138.  
  139. @Autowired(required = false)
  140. @TypeConverter
  141. private Set<ConverterFactory<?, ?>> autoRegisteredConverterFactories;
  142.  
  143. @Autowired
  144. private ConverterRegistry converterRegistry;
  145.  
  146. @PostConstruct
  147. public void conversionService() {
  148. if (autoRegisteredConverters != null) {
  149. for (Converter<?, ?> converter : autoRegisteredConverters) {
  150. converterRegistry.addConverter(converter);
  151. }
  152. }
  153. if (autoRegisteredConverterFactories != null) {
  154. for (ConverterFactory<?, ?> converterFactory : autoRegisteredConverterFactories) {
  155. converterRegistry.addConverterFactory(converterFactory);
  156. }
  157. }
  158. }
  159.  
  160. }
  161.  
  162. @SuppressWarnings("rawtypes")
  163. @TypeConverter
  164. public class StringToEnumConverterFactory implements ConverterFactory<String, Enum> {
  165.  
  166. @SuppressWarnings("unchecked")
  167. public <T extends Enum> Converter<String, T> getConverter(Class<T> targetType) {
  168. return new StringToEnum(targetType);
  169. }
  170.  
  171. private final class StringToEnum<T extends Enum> implements Converter<String, T> {
  172.  
  173. private Class<T> enumType;
  174.  
  175. public StringToEnum(Class<T> enumType) {
  176. this.enumType = enumType;
  177. }
  178.  
  179. @SuppressWarnings("unchecked")
  180. public T convert(String source) {
  181. return (T) Enum.valueOf(this.enumType, source.trim().toUpperCase());
  182. }
  183. }
  184. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement