BAEL-1217 Guide to Spring Type Conversions
Review comments
This commit is contained in:
		
							parent
							
								
									89f9e2fed6
								
							
						
					
					
						commit
						e56da99216
					
				| @ -5,6 +5,7 @@ import org.springframework.core.convert.TypeDescriptor; | ||||
| import org.springframework.core.convert.converter.GenericConverter; | ||||
| 
 | ||||
| import java.math.BigDecimal; | ||||
| import java.math.MathContext; | ||||
| import java.util.Set; | ||||
| 
 | ||||
| public class GenericBigDecimalConverter implements GenericConverter { | ||||
| @ -30,7 +31,9 @@ public class GenericBigDecimalConverter implements GenericConverter { | ||||
|             return new BigDecimal(number); | ||||
|         } else { | ||||
|             Number number = (Number) source; | ||||
|             return new BigDecimal(number.doubleValue()); | ||||
|             BigDecimal converted = new BigDecimal(number.doubleValue()); | ||||
|             converted.setScale(2, BigDecimal.ROUND_HALF_EVEN); | ||||
|             return converted; | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  | ||||
| @ -0,0 +1,21 @@ | ||||
| package org.baeldung.converter.controller; | ||||
| 
 | ||||
| import com.baeldung.toggle.Employee; | ||||
| import org.springframework.http.MediaType; | ||||
| import org.springframework.http.ResponseEntity; | ||||
| import org.springframework.web.bind.annotation.*; | ||||
| 
 | ||||
| @RestController | ||||
| @RequestMapping("/string-to-employee") | ||||
| public class StringToEmployeeConverterController { | ||||
| 
 | ||||
|     @GetMapping | ||||
|     public ResponseEntity<Object> getStringToEmployee(@RequestParam("employee") Employee employee) { | ||||
|         return ResponseEntity.ok(employee); | ||||
|     } | ||||
| 
 | ||||
|     @PostMapping(consumes = {MediaType.TEXT_PLAIN_VALUE}) | ||||
|     public ResponseEntity<Object> postStringToEmployee(@RequestBody Employee employee) { | ||||
|         return ResponseEntity.ok(employee); | ||||
|     } | ||||
| } | ||||
| @ -13,6 +13,8 @@ import org.springframework.test.context.web.WebAppConfiguration; | ||||
| 
 | ||||
| import java.math.BigDecimal; | ||||
| 
 | ||||
| import static org.assertj.core.api.Assertions.assertThat; | ||||
| 
 | ||||
| @RunWith(SpringJUnit4ClassRunner.class) | ||||
| @SpringBootTest(classes = Application.class) | ||||
| @WebAppConfiguration | ||||
| @ -23,23 +25,29 @@ public class CustomConverterTest { | ||||
| 
 | ||||
|     @Test | ||||
|     public void whenConvertStringToIntegerUsingDefaultConverter_thenSuccess() { | ||||
|         System.out.println(conversionService.convert("25", Integer.class)); | ||||
|         assertThat(conversionService.convert("25", Integer.class)).isEqualTo(25); | ||||
|     } | ||||
| 
 | ||||
|     @Test | ||||
|     public void whenConvertStringToEmployee_thenSuccess() { | ||||
|         System.out.println(conversionService.convert("1,50000.00", Employee.class)); | ||||
|         Employee employee = conversionService.convert("1,50000.00", Employee.class); | ||||
|         Employee actualEmployee = new Employee(1, 50000.00); | ||||
|         assertThat(conversionService.convert("1,50000.00", Employee.class)) | ||||
|           .isEqualToComparingFieldByField(actualEmployee); | ||||
|     } | ||||
| 
 | ||||
|     @Test | ||||
|     public void whenConvertStringToEnum_thenSuccess() { | ||||
|         System.out.println(conversionService.convert("ALPHA", Modes.class)); | ||||
|         assertThat(conversionService.convert("ALPHA", Modes.class)).isEqualTo(Modes.ALPHA); | ||||
|     } | ||||
| 
 | ||||
|     @Test | ||||
|     public void whenConvertingToBigDecimalUsingGenericConverter_thenSuccess() { | ||||
|         System.out.println(conversionService.convert(Integer.valueOf(11), BigDecimal.class)); | ||||
|         System.out.println(conversionService.convert(Double.valueOf(25.23), BigDecimal.class)); | ||||
|         System.out.println(conversionService.convert("2.32", BigDecimal.class)); | ||||
|         assertThat(conversionService.convert(Integer.valueOf(11), BigDecimal.class)). | ||||
|           isEqualTo(BigDecimal.valueOf(11)); | ||||
|         assertThat(conversionService.convert(Double.valueOf(25.23), BigDecimal.class)) | ||||
|           .isEqualByComparingTo(BigDecimal.valueOf(Double.valueOf(25.23))); | ||||
|         assertThat(conversionService.convert("2.32", BigDecimal.class)) | ||||
|           .isEqualTo(BigDecimal.valueOf(2.32)); | ||||
|     } | ||||
| } | ||||
|  | ||||
| @ -0,0 +1,39 @@ | ||||
| package org.baeldung.converter.controller; | ||||
| 
 | ||||
| import org.baeldung.Application; | ||||
| import org.baeldung.boot.DemoApplication; | ||||
| import org.junit.Test; | ||||
| import org.junit.runner.RunWith; | ||||
| import org.springframework.beans.factory.annotation.Autowired; | ||||
| import org.springframework.boot.test.autoconfigure.jdbc.AutoConfigureTestDatabase; | ||||
| import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; | ||||
| import org.springframework.boot.test.context.SpringBootTest; | ||||
| import org.springframework.http.MediaType; | ||||
| import org.springframework.test.context.junit4.SpringRunner; | ||||
| import org.springframework.test.web.servlet.MockMvc; | ||||
| 
 | ||||
| import static org.hamcrest.CoreMatchers.is; | ||||
| import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; | ||||
| import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; | ||||
| import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print; | ||||
| import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath; | ||||
| import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; | ||||
| 
 | ||||
| @RunWith(SpringRunner.class) | ||||
| @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, classes = Application.class) | ||||
| @AutoConfigureMockMvc | ||||
| //@AutoConfigureTestDatabase | ||||
| public class StringToEmployeeConverterControllerTest { | ||||
| 
 | ||||
|     @Autowired | ||||
|     private MockMvc mockMvc; | ||||
| 
 | ||||
|     @Test | ||||
|     public void getStringToEmployeeTest() throws Exception { | ||||
|         mockMvc.perform(get("/string-to-employee?employee=1,2000")) | ||||
|                 .andDo(print()) | ||||
|                 .andExpect(jsonPath("$.id", is(1))) | ||||
|                 .andExpect(jsonPath("$.salary", is(2000.0))) | ||||
|                 .andExpect(status().isOk()); | ||||
|     } | ||||
| } | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user