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) | ||||
|     @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); | ||||
|         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; | ||||
| 
 | ||||
| import javax.servlet.http.HttpServletRequest; | ||||
| import javax.servlet.http.HttpServletResponse; | ||||
| 
 | ||||
| import org.springframework.context.ApplicationEvent; | ||||
| 
 | ||||
| public class ResourceCreated extends ApplicationEvent { | ||||
|     private final HttpServletResponse response; | ||||
|     private final HttpServletRequest request; | ||||
|     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); | ||||
| 
 | ||||
|         this.request = request; | ||||
|         this.response = response; | ||||
|         this.idOfNewResource = idOfNewResource; | ||||
|     } | ||||
| @ -24,10 +21,6 @@ public class ResourceCreated extends ApplicationEvent { | ||||
|         return response; | ||||
|     } | ||||
| 
 | ||||
|     public HttpServletRequest getRequest() { | ||||
|         return request; | ||||
|     } | ||||
| 
 | ||||
|     public long getIdOfNewResource() { | ||||
|         return idOfNewResource; | ||||
|     } | ||||
|  | ||||
| @ -2,15 +2,14 @@ package org.baeldung.web.util; | ||||
| 
 | ||||
| import java.net.URI; | ||||
| 
 | ||||
| import javax.servlet.http.HttpServletRequest; | ||||
| import javax.servlet.http.HttpServletResponse; | ||||
| 
 | ||||
| import org.apache.http.HttpHeaders; | ||||
| import org.springframework.context.ApplicationListener; | ||||
| 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.net.HttpHeaders; | ||||
| 
 | ||||
| @Component | ||||
| class ResourceCreatedDiscoverabilityListener implements ApplicationListener<ResourceCreated> { | ||||
| @ -19,16 +18,17 @@ class ResourceCreatedDiscoverabilityListener implements ApplicationListener<Reso | ||||
|     public void onApplicationEvent(final ResourceCreated resourceCreatedEvent) { | ||||
|         Preconditions.checkNotNull(resourceCreatedEvent); | ||||
| 
 | ||||
|         final HttpServletRequest request = resourceCreatedEvent.getRequest(); | ||||
|         final HttpServletResponse response = resourceCreatedEvent.getResponse(); | ||||
|         final long idOfNewResource = resourceCreatedEvent.getIdOfNewResource(); | ||||
| 
 | ||||
|         addLinkHeaderOnResourceCreation(request, response, idOfNewResource); | ||||
|         addLinkHeaderOnResourceCreation(response, idOfNewResource); | ||||
|     } | ||||
| 
 | ||||
|     void addLinkHeaderOnResourceCreation(final HttpServletRequest request, final HttpServletResponse response, final long idOfNewResource) { | ||||
|         final String requestUrl = request.getRequestURL().toString(); | ||||
|         final URI uri = new UriTemplate("{requestUrl}/{idOfNewResource}").expand(requestUrl, idOfNewResource); | ||||
|     void addLinkHeaderOnResourceCreation(final HttpServletResponse response, final long idOfNewResource) { | ||||
|         // final String requestUrl = request.getRequestURL().toString(); | ||||
|         // 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()); | ||||
|     } | ||||
| 
 | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user