small fixes to match articles
This commit is contained in:
		
							parent
							
								
									b7c1092460
								
							
						
					
					
						commit
						f62a8d0f70
					
				| @ -1,11 +1,13 @@ | |||||||
| package com.baeldung; | package com.baeldung; | ||||||
| 
 | 
 | ||||||
|  | import org.springframework.beans.factory.annotation.Value; | ||||||
| import org.springframework.boot.SpringApplication; | import org.springframework.boot.SpringApplication; | ||||||
| import org.springframework.boot.autoconfigure.SpringBootApplication; | import org.springframework.boot.autoconfigure.SpringBootApplication; | ||||||
| 
 | 
 | ||||||
| @SpringBootApplication | @SpringBootApplication | ||||||
| public class SpringBootRestApplication { | public class SpringBootRestApplication { | ||||||
| 
 | 
 | ||||||
|  |      | ||||||
|     public static void main(String[] args) { |     public static void main(String[] args) { | ||||||
|         SpringApplication.run(SpringBootRestApplication.class, args); |         SpringApplication.run(SpringBootRestApplication.class, args); | ||||||
|     } |     } | ||||||
|  | |||||||
| @ -9,7 +9,7 @@ public interface IOperations<T extends Serializable> { | |||||||
| 
 | 
 | ||||||
|     // read - one |     // read - one | ||||||
| 
 | 
 | ||||||
|     T findOne(final long id); |     T findById(final long id); | ||||||
| 
 | 
 | ||||||
|     // read - all |     // read - all | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -18,9 +18,8 @@ public abstract class AbstractService<T extends Serializable> implements IOperat | |||||||
| 
 | 
 | ||||||
|     @Override |     @Override | ||||||
|     @Transactional(readOnly = true) |     @Transactional(readOnly = true) | ||||||
|     public T findOne(final long id) { |     public T findById(final long id) { | ||||||
|         return getDao().findById(id) |         return getDao().findById(id).orElse(null); | ||||||
|             .get(); |  | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     // read - all |     // read - all | ||||||
|  | |||||||
| @ -55,7 +55,7 @@ public class WebConfig implements WebMvcConfigurer { | |||||||
|     @Bean |     @Bean | ||||||
|     public FilterRegistrationBean<ShallowEtagHeaderFilter> shallowEtagHeaderFilter() { |     public FilterRegistrationBean<ShallowEtagHeaderFilter> shallowEtagHeaderFilter() { | ||||||
|         FilterRegistrationBean<ShallowEtagHeaderFilter> filterRegistrationBean = new FilterRegistrationBean<>( new ShallowEtagHeaderFilter()); |         FilterRegistrationBean<ShallowEtagHeaderFilter> filterRegistrationBean = new FilterRegistrationBean<>( new ShallowEtagHeaderFilter()); | ||||||
|         filterRegistrationBean.addUrlPatterns("/auth/foos/*"); |         filterRegistrationBean.addUrlPatterns("/foos/*"); | ||||||
|         filterRegistrationBean.setName("etagFilter"); |         filterRegistrationBean.setName("etagFilter"); | ||||||
|         return filterRegistrationBean; |         return filterRegistrationBean; | ||||||
|     } |     } | ||||||
|  | |||||||
| @ -5,6 +5,7 @@ import java.util.List; | |||||||
| import javax.servlet.http.HttpServletResponse; | import javax.servlet.http.HttpServletResponse; | ||||||
| 
 | 
 | ||||||
| import org.springframework.beans.factory.annotation.Autowired; | import org.springframework.beans.factory.annotation.Autowired; | ||||||
|  | import org.springframework.beans.factory.annotation.Value; | ||||||
| import org.springframework.context.ApplicationEventPublisher; | import org.springframework.context.ApplicationEventPublisher; | ||||||
| import org.springframework.data.domain.Page; | import org.springframework.data.domain.Page; | ||||||
| import org.springframework.data.domain.Pageable; | import org.springframework.data.domain.Pageable; | ||||||
| @ -20,6 +21,7 @@ import org.springframework.web.bind.annotation.RequestMapping; | |||||||
| import org.springframework.web.bind.annotation.RequestParam; | import org.springframework.web.bind.annotation.RequestParam; | ||||||
| import org.springframework.web.bind.annotation.ResponseStatus; | import org.springframework.web.bind.annotation.ResponseStatus; | ||||||
| import org.springframework.web.bind.annotation.RestController; | import org.springframework.web.bind.annotation.RestController; | ||||||
|  | import org.springframework.web.server.ResponseStatusException; | ||||||
| import org.springframework.web.util.UriComponentsBuilder; | import org.springframework.web.util.UriComponentsBuilder; | ||||||
| 
 | 
 | ||||||
| import com.baeldung.persistence.model.Foo; | import com.baeldung.persistence.model.Foo; | ||||||
| @ -32,7 +34,7 @@ import com.baeldung.web.util.RestPreconditions; | |||||||
| import com.google.common.base.Preconditions; | import com.google.common.base.Preconditions; | ||||||
| 
 | 
 | ||||||
| @RestController | @RestController | ||||||
| @RequestMapping(value = "/auth/foos") | @RequestMapping(value = "/foos") | ||||||
| public class FooController { | public class FooController { | ||||||
| 
 | 
 | ||||||
|     @Autowired |     @Autowired | ||||||
| @ -41,6 +43,10 @@ public class FooController { | |||||||
|     @Autowired |     @Autowired | ||||||
|     private IFooService service; |     private IFooService service; | ||||||
|      |      | ||||||
|  | 
 | ||||||
|  |     @Value("${version}") | ||||||
|  |     Integer version; | ||||||
|  | 
 | ||||||
|     public FooController() { |     public FooController() { | ||||||
|         super(); |         super(); | ||||||
|     } |     } | ||||||
| @ -51,28 +57,36 @@ public class FooController { | |||||||
|     @GetMapping(value = "/{id}/custom-etag") |     @GetMapping(value = "/{id}/custom-etag") | ||||||
|     public ResponseEntity<Foo> findByIdWithCustomEtag(@PathVariable("id") final Long id, |     public ResponseEntity<Foo> findByIdWithCustomEtag(@PathVariable("id") final Long id, | ||||||
|         final HttpServletResponse response) { |         final HttpServletResponse response) { | ||||||
|         final Foo resourceById = RestPreconditions.checkFound(service.findOne(id)); |         final Foo foo = RestPreconditions.checkFound(service.findById(id)); | ||||||
| 
 | 
 | ||||||
|         eventPublisher.publishEvent(new SingleResourceRetrievedEvent(this, response)); |         eventPublisher.publishEvent(new SingleResourceRetrievedEvent(this, response)); | ||||||
|         return ResponseEntity.ok() |         return ResponseEntity.ok() | ||||||
|             .eTag(Long.toString(resourceById.getVersion())) |             .eTag(Long.toString(foo.getVersion())) | ||||||
|             .body(resourceById); |             .body(foo); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     // read - one |     // read - one | ||||||
| 
 | 
 | ||||||
|     @GetMapping(value = "/{id}") |     @GetMapping(value = "/{id}") | ||||||
|     public Foo findById(@PathVariable("id") final Long id, final HttpServletResponse response) { |     public Foo findById(@PathVariable("id") final Long id, final HttpServletResponse response) { | ||||||
|         final Foo resourceById = RestPreconditions.checkFound(service.findOne(id)); |         try { | ||||||
|  |             final Foo resourceById = RestPreconditions.checkFound(service.findById(id)); | ||||||
|  | 
 | ||||||
|  |             eventPublisher.publishEvent(new SingleResourceRetrievedEvent(this, response)); | ||||||
|  |             return resourceById; | ||||||
|  |         } | ||||||
|  |         catch (MyResourceNotFoundException exc) { | ||||||
|  |             throw new ResponseStatusException( | ||||||
|  |                 HttpStatus.NOT_FOUND, "Foo Not Found", exc); | ||||||
|  |         } | ||||||
| 
 | 
 | ||||||
|         eventPublisher.publishEvent(new SingleResourceRetrievedEvent(this, response)); |  | ||||||
|         return resourceById; |  | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     // read - all |     // read - all | ||||||
| 
 | 
 | ||||||
|     @GetMapping |     @GetMapping | ||||||
|     public List<Foo> findAll() { |     public List<Foo> findAll() { | ||||||
|  |         System.out.println(version); | ||||||
|         return service.findAll(); |         return service.findAll(); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
| @ -120,7 +134,7 @@ public class FooController { | |||||||
|     @ResponseStatus(HttpStatus.OK) |     @ResponseStatus(HttpStatus.OK) | ||||||
|     public void update(@PathVariable("id") final Long id, @RequestBody final Foo resource) { |     public void update(@PathVariable("id") final Long id, @RequestBody final Foo resource) { | ||||||
|         Preconditions.checkNotNull(resource); |         Preconditions.checkNotNull(resource); | ||||||
|         RestPreconditions.checkFound(service.findOne(resource.getId())); |         RestPreconditions.checkFound(service.findById(resource.getId())); | ||||||
|         service.update(resource); |         service.update(resource); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -7,34 +7,28 @@ import javax.servlet.http.HttpServletResponse; | |||||||
| 
 | 
 | ||||||
| import org.springframework.http.HttpStatus; | import org.springframework.http.HttpStatus; | ||||||
| import org.springframework.stereotype.Controller; | import org.springframework.stereotype.Controller; | ||||||
| import org.springframework.web.bind.annotation.RequestMapping; | import org.springframework.web.bind.annotation.GetMapping; | ||||||
| import org.springframework.web.bind.annotation.RequestMethod; |  | ||||||
| import org.springframework.web.bind.annotation.ResponseStatus; | import org.springframework.web.bind.annotation.ResponseStatus; | ||||||
| import org.springframework.web.util.UriTemplate; | import org.springframework.web.util.UriTemplate; | ||||||
| 
 | 
 | ||||||
| import com.baeldung.web.util.LinkUtil; | import com.baeldung.web.util.LinkUtil; | ||||||
| 
 | 
 | ||||||
| @Controller | @Controller | ||||||
| @RequestMapping(value = "/auth/") |  | ||||||
| public class RootController { | public class RootController { | ||||||
| 
 | 
 | ||||||
|     public RootController() { |  | ||||||
|         super(); |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     // API |     // API | ||||||
| 
 | 
 | ||||||
|     // discover |     // discover | ||||||
| 
 | 
 | ||||||
|     @RequestMapping(value = "admin", method = RequestMethod.GET) |     @GetMapping("/") | ||||||
|     @ResponseStatus(value = HttpStatus.NO_CONTENT) |     @ResponseStatus(value = HttpStatus.NO_CONTENT) | ||||||
|     public void adminRoot(final HttpServletRequest request, final HttpServletResponse response) { |     public void adminRoot(final HttpServletRequest request, final HttpServletResponse response) { | ||||||
|         final String rootUri = request.getRequestURL() |         final String rootUri = request.getRequestURL() | ||||||
|             .toString(); |             .toString(); | ||||||
| 
 | 
 | ||||||
|         final URI fooUri = new UriTemplate("{rootUri}/{resource}").expand(rootUri, "foo"); |         final URI fooUri = new UriTemplate("{rootUri}{resource}").expand(rootUri, "foos"); | ||||||
|         final String linkToFoo = LinkUtil.createLinkHeader(fooUri.toASCIIString(), "collection"); |         final String linkToFoos = LinkUtil.createLinkHeader(fooUri.toASCIIString(), "collection"); | ||||||
|         response.addHeader("Link", linkToFoo); |         response.addHeader("Link", linkToFoos); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
| } | } | ||||||
|  | |||||||
| @ -115,7 +115,7 @@ class PaginatedResultsRetrievedDiscoverabilityListener implements ApplicationLis | |||||||
|     protected void plural(final UriComponentsBuilder uriBuilder, final Class clazz) { |     protected void plural(final UriComponentsBuilder uriBuilder, final Class clazz) { | ||||||
|         final String resourceName = clazz.getSimpleName() |         final String resourceName = clazz.getSimpleName() | ||||||
|             .toLowerCase() + "s"; |             .toLowerCase() + "s"; | ||||||
|         uriBuilder.path("/auth/" + resourceName); |         uriBuilder.path("/" + resourceName); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
| } | } | ||||||
|  | |||||||
| @ -1,6 +1,7 @@ | |||||||
| server.port=8082 |  | ||||||
| server.servlet.context-path=/spring-boot-rest | server.servlet.context-path=/spring-boot-rest | ||||||
| 
 | 
 | ||||||
| ### Spring Boot default error handling configurations | ### Spring Boot default error handling configurations | ||||||
| #server.error.whitelabel.enabled=false | #server.error.whitelabel.enabled=false | ||||||
| #server.error.include-stacktrace=always | #server.error.include-stacktrace=always | ||||||
|  | 
 | ||||||
|  | version=1 | ||||||
| @ -1,5 +1,5 @@ | |||||||
| package com.baeldung; | package com.baeldung; | ||||||
| 
 | 
 | ||||||
| public interface Consts { | public interface Consts { | ||||||
|     int APPLICATION_PORT = 8082; |     int APPLICATION_PORT = 8080; | ||||||
| } | } | ||||||
|  | |||||||
| @ -59,7 +59,7 @@ public abstract class AbstractLiveTest<T extends Serializable> { | |||||||
|     // |     // | ||||||
| 
 | 
 | ||||||
|     protected String getURL() { |     protected String getURL() { | ||||||
|         return "http://localhost:" + APPLICATION_PORT + "/spring-boot-rest/auth/foos"; |         return "http://localhost:" + APPLICATION_PORT + "/spring-boot-rest/foos"; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
| } | } | ||||||
|  | |||||||
| @ -27,7 +27,7 @@ public class FooControllerAppIntegrationTest { | |||||||
| 
 | 
 | ||||||
|     @Test |     @Test | ||||||
|     public void whenFindPaginatedRequest_thenEmptyResponse() throws Exception { |     public void whenFindPaginatedRequest_thenEmptyResponse() throws Exception { | ||||||
|         this.mockMvc.perform(get("/auth/foos").param("page", "0") |         this.mockMvc.perform(get("/foos").param("page", "0") | ||||||
|             .param("size", "2")) |             .param("size", "2")) | ||||||
|             .andExpect(status().isOk()) |             .andExpect(status().isOk()) | ||||||
|             .andExpect(content().json("[]")); |             .andExpect(content().json("[]")); | ||||||
|  | |||||||
| @ -29,7 +29,7 @@ public class FooControllerCustomEtagIntegrationTest { | |||||||
|     @Autowired |     @Autowired | ||||||
|     private MockMvc mvc; |     private MockMvc mvc; | ||||||
| 
 | 
 | ||||||
|     private String FOOS_ENDPOINT = "/auth/foos/"; |     private String FOOS_ENDPOINT = "/foos/"; | ||||||
|     private String CUSTOM_ETAG_ENDPOINT_SUFFIX = "/custom-etag"; |     private String CUSTOM_ETAG_ENDPOINT_SUFFIX = "/custom-etag"; | ||||||
| 
 | 
 | ||||||
|     private static String serializeFoo(Foo foo) throws Exception { |     private static String serializeFoo(Foo foo) throws Exception { | ||||||
|  | |||||||
| @ -51,7 +51,7 @@ public class FooControllerWebLayerIntegrationTest { | |||||||
|         doNothing().when(publisher) |         doNothing().when(publisher) | ||||||
|             .publishEvent(any(PaginatedResultsRetrievedEvent.class)); |             .publishEvent(any(PaginatedResultsRetrievedEvent.class)); | ||||||
| 
 | 
 | ||||||
|         this.mockMvc.perform(get("/auth/foos").param("page", "0") |         this.mockMvc.perform(get("/foos").param("page", "0") | ||||||
|             .param("size", "2")) |             .param("size", "2")) | ||||||
|             .andExpect(status().isOk()) |             .andExpect(status().isOk()) | ||||||
|             .andExpect(jsonPath("$",Matchers.hasSize(1))); |             .andExpect(jsonPath("$",Matchers.hasSize(1))); | ||||||
|  | |||||||
| @ -74,7 +74,7 @@ public class FooPageableLiveTest extends AbstractBasicLiveTest<Foo> { | |||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     protected String getPageableURL() { |     protected String getPageableURL() { | ||||||
|         return "http://localhost:" + APPLICATION_PORT + "/spring-boot-rest/auth/foos/pageable"; |         return "http://localhost:" + APPLICATION_PORT + "/spring-boot-rest/foos/pageable"; | ||||||
|     } |     } | ||||||
|      |      | ||||||
| } | } | ||||||
|  | |||||||
| @ -42,15 +42,14 @@ | |||||||
|                     "raw": "{\n  \"name\": \"Transformers\"\n}" |                     "raw": "{\n  \"name\": \"Transformers\"\n}" | ||||||
|                 }, |                 }, | ||||||
|                 "url": { |                 "url": { | ||||||
|                     "raw": "http://localhost:8082/spring-boot-rest/auth/foos", |                     "raw": "http://localhost:8080/spring-boot-rest/foos", | ||||||
|                     "protocol": "http", |                     "protocol": "http", | ||||||
|                     "host": [ |                     "host": [ | ||||||
|                         "localhost" |                         "localhost" | ||||||
|                     ], |                     ], | ||||||
|                     "port": "8082", |                     "port": "8080", | ||||||
|                     "path": [ |                     "path": [ | ||||||
|                         "spring-boot-rest", |                         "spring-boot-rest", | ||||||
|                         "auth", |  | ||||||
|                         "foos" |                         "foos" | ||||||
|                     ] |                     ] | ||||||
|                 } |                 } | ||||||
| @ -85,15 +84,14 @@ | |||||||
|                     "raw": "" |                     "raw": "" | ||||||
|                 }, |                 }, | ||||||
|                 "url": { |                 "url": { | ||||||
|                     "raw": "http://localhost:8082/spring-boot-rest/auth/foos/{{id}}", |                     "raw": "http://localhost:8080/spring-boot-rest/foos/{{id}}", | ||||||
|                     "protocol": "http", |                     "protocol": "http", | ||||||
|                     "host": [ |                     "host": [ | ||||||
|                         "localhost" |                         "localhost" | ||||||
|                     ], |                     ], | ||||||
|                     "port": "8082", |                     "port": "8080", | ||||||
|                     "path": [ |                     "path": [ | ||||||
|                         "spring-boot-rest", |                         "spring-boot-rest", | ||||||
|                         "auth", |  | ||||||
|                         "foos", |                         "foos", | ||||||
|                         "{{id}}" |                         "{{id}}" | ||||||
|                     ] |                     ] | ||||||
| @ -123,15 +121,14 @@ | |||||||
|                     "raw": "" |                     "raw": "" | ||||||
|                 }, |                 }, | ||||||
|                 "url": { |                 "url": { | ||||||
|                     "raw": "http://localhost:8082/spring-boot-rest/auth/foos/{{id}}", |                     "raw": "http://localhost:8080/spring-boot-rest/foos/{{id}}", | ||||||
|                     "protocol": "http", |                     "protocol": "http", | ||||||
|                     "host": [ |                     "host": [ | ||||||
|                         "localhost" |                         "localhost" | ||||||
|                     ], |                     ], | ||||||
|                     "port": "8082", |                     "port": "8080", | ||||||
|                     "path": [ |                     "path": [ | ||||||
|                         "spring-boot-rest", |                         "spring-boot-rest", | ||||||
|                         "auth", |  | ||||||
|                         "foos", |                         "foos", | ||||||
|                         "{{id}}" |                         "{{id}}" | ||||||
|                     ] |                     ] | ||||||
| @ -164,15 +161,14 @@ | |||||||
|                     "raw": "" |                     "raw": "" | ||||||
|                 }, |                 }, | ||||||
|                 "url": { |                 "url": { | ||||||
|                     "raw": "http://localhost:8082/spring-boot-rest/auth/foos/{{id}}", |                     "raw": "http://localhost:8080/spring-boot-rest/foos/{{id}}", | ||||||
|                     "protocol": "http", |                     "protocol": "http", | ||||||
|                     "host": [ |                     "host": [ | ||||||
|                         "localhost" |                         "localhost" | ||||||
|                     ], |                     ], | ||||||
|                     "port": "8082", |                     "port": "8080", | ||||||
|                     "path": [ |                     "path": [ | ||||||
|                         "spring-boot-rest", |                         "spring-boot-rest", | ||||||
|                         "auth", |  | ||||||
|                         "foos", |                         "foos", | ||||||
|                         "{{id}}" |                         "{{id}}" | ||||||
|                     ] |                     ] | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user