Using the new Location support
This commit is contained in:
		
							parent
							
								
									512fb68c90
								
							
						
					
					
						commit
						18cdfdc62a
					
				| @ -79,11 +79,11 @@ public class FooController { | |||||||
| 
 | 
 | ||||||
|     @RequestMapping(method = RequestMethod.POST) |     @RequestMapping(method = RequestMethod.POST) | ||||||
|     @ResponseStatus(HttpStatus.CREATED) |     @ResponseStatus(HttpStatus.CREATED) | ||||||
|     public void create(@RequestBody final Foo resource, final HttpServletRequest request, final HttpServletResponse response) { |     public void create(@RequestBody final Foo resource, final HttpServletResponse response) { | ||||||
|         Preconditions.checkNotNull(resource); |         Preconditions.checkNotNull(resource); | ||||||
|         final Long idOfCreatedResource = service.create(resource).getId(); |         final Long idOfCreatedResource = service.create(resource).getId(); | ||||||
| 
 | 
 | ||||||
|         eventPublisher.publishEvent(new ResourceCreated(this, request, response, idOfCreatedResource)); |         eventPublisher.publishEvent(new ResourceCreated(this, response, idOfCreatedResource)); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
| } | } | ||||||
|  | |||||||
| @ -1,19 +1,16 @@ | |||||||
| package org.baeldung.web.util; | package org.baeldung.web.util; | ||||||
| 
 | 
 | ||||||
| import javax.servlet.http.HttpServletRequest; |  | ||||||
| import javax.servlet.http.HttpServletResponse; | import javax.servlet.http.HttpServletResponse; | ||||||
| 
 | 
 | ||||||
| import org.springframework.context.ApplicationEvent; | import org.springframework.context.ApplicationEvent; | ||||||
| 
 | 
 | ||||||
| public class ResourceCreated extends ApplicationEvent { | public class ResourceCreated extends ApplicationEvent { | ||||||
|     private final HttpServletResponse response; |     private final HttpServletResponse response; | ||||||
|     private final HttpServletRequest request; |  | ||||||
|     private final long idOfNewResource; |     private final long idOfNewResource; | ||||||
| 
 | 
 | ||||||
|     public ResourceCreated(final Object source, final HttpServletRequest request, final HttpServletResponse response, final long idOfNewResource) { |     public ResourceCreated(final Object source, final HttpServletResponse response, final long idOfNewResource) { | ||||||
|         super(source); |         super(source); | ||||||
| 
 | 
 | ||||||
|         this.request = request; |  | ||||||
|         this.response = response; |         this.response = response; | ||||||
|         this.idOfNewResource = idOfNewResource; |         this.idOfNewResource = idOfNewResource; | ||||||
|     } |     } | ||||||
| @ -24,10 +21,6 @@ public class ResourceCreated extends ApplicationEvent { | |||||||
|         return response; |         return response; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     public HttpServletRequest getRequest() { |  | ||||||
|         return request; |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     public long getIdOfNewResource() { |     public long getIdOfNewResource() { | ||||||
|         return idOfNewResource; |         return idOfNewResource; | ||||||
|     } |     } | ||||||
|  | |||||||
| @ -2,15 +2,14 @@ package org.baeldung.web.util; | |||||||
| 
 | 
 | ||||||
| import java.net.URI; | import java.net.URI; | ||||||
| 
 | 
 | ||||||
| import javax.servlet.http.HttpServletRequest; |  | ||||||
| import javax.servlet.http.HttpServletResponse; | import javax.servlet.http.HttpServletResponse; | ||||||
| 
 | 
 | ||||||
|  | import org.apache.http.HttpHeaders; | ||||||
| import org.springframework.context.ApplicationListener; | import org.springframework.context.ApplicationListener; | ||||||
| import org.springframework.stereotype.Component; | import org.springframework.stereotype.Component; | ||||||
| import org.springframework.web.util.UriTemplate; | import org.springframework.web.servlet.support.ServletUriComponentsBuilder; | ||||||
| 
 | 
 | ||||||
| import com.google.common.base.Preconditions; | import com.google.common.base.Preconditions; | ||||||
| import com.google.common.net.HttpHeaders; |  | ||||||
| 
 | 
 | ||||||
| @Component | @Component | ||||||
| class ResourceCreatedDiscoverabilityListener implements ApplicationListener<ResourceCreated> { | class ResourceCreatedDiscoverabilityListener implements ApplicationListener<ResourceCreated> { | ||||||
| @ -19,16 +18,17 @@ class ResourceCreatedDiscoverabilityListener implements ApplicationListener<Reso | |||||||
|     public void onApplicationEvent(final ResourceCreated resourceCreatedEvent) { |     public void onApplicationEvent(final ResourceCreated resourceCreatedEvent) { | ||||||
|         Preconditions.checkNotNull(resourceCreatedEvent); |         Preconditions.checkNotNull(resourceCreatedEvent); | ||||||
| 
 | 
 | ||||||
|         final HttpServletRequest request = resourceCreatedEvent.getRequest(); |  | ||||||
|         final HttpServletResponse response = resourceCreatedEvent.getResponse(); |         final HttpServletResponse response = resourceCreatedEvent.getResponse(); | ||||||
|         final long idOfNewResource = resourceCreatedEvent.getIdOfNewResource(); |         final long idOfNewResource = resourceCreatedEvent.getIdOfNewResource(); | ||||||
| 
 | 
 | ||||||
|         addLinkHeaderOnResourceCreation(request, response, idOfNewResource); |         addLinkHeaderOnResourceCreation(response, idOfNewResource); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     void addLinkHeaderOnResourceCreation(final HttpServletRequest request, final HttpServletResponse response, final long idOfNewResource) { |     void addLinkHeaderOnResourceCreation(final HttpServletResponse response, final long idOfNewResource) { | ||||||
|         final String requestUrl = request.getRequestURL().toString(); |         // final String requestUrl = request.getRequestURL().toString(); | ||||||
|         final URI uri = new UriTemplate("{requestUrl}/{idOfNewResource}").expand(requestUrl, idOfNewResource); |         // final URI uri = new UriTemplate("{requestUrl}/{idOfNewResource}").expand(requestUrl, idOfNewResource); | ||||||
|  | 
 | ||||||
|  |         final URI uri = ServletUriComponentsBuilder.fromCurrentRequestUri().path("/{idOfNewResource}").buildAndExpand(idOfNewResource).toUri(); | ||||||
|         response.setHeader(HttpHeaders.LOCATION, uri.toASCIIString()); |         response.setHeader(HttpHeaders.LOCATION, uri.toASCIIString()); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user