JAVA-2423 Move/rename module spring-rest-compress
- Removing spring-rest-compress module as its contents have been moved to spring-resttemplate-2
This commit is contained in:
		
							parent
							
								
									d1cc5e98bd
								
							
						
					
					
						commit
						cc0e244ce4
					
				
							
								
								
									
										2
									
								
								pom.xml
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								pom.xml
									
									
									
									
									
								
							| @ -697,7 +697,6 @@ | |||||||
|                 <module>spring-reactor</module> |                 <module>spring-reactor</module> | ||||||
|                 <module>spring-remoting</module> |                 <module>spring-remoting</module> | ||||||
|                 <module>spring-rest-angular</module> |                 <module>spring-rest-angular</module> | ||||||
|                 <module>spring-rest-compress</module> |  | ||||||
|                 <module>spring-rest-http</module> |                 <module>spring-rest-http</module> | ||||||
|                 <module>spring-rest-http-2</module> |                 <module>spring-rest-http-2</module> | ||||||
|                 <module>spring-rest-query-language</module> |                 <module>spring-rest-query-language</module> | ||||||
| @ -1200,7 +1199,6 @@ | |||||||
|                 <module>spring-reactor</module> |                 <module>spring-reactor</module> | ||||||
|                 <module>spring-remoting</module> |                 <module>spring-remoting</module> | ||||||
|                 <module>spring-rest-angular</module> |                 <module>spring-rest-angular</module> | ||||||
|                 <module>spring-rest-compress</module> |  | ||||||
|                 <module>spring-rest-http</module> |                 <module>spring-rest-http</module> | ||||||
|                 <module>spring-rest-query-language</module> |                 <module>spring-rest-query-language</module> | ||||||
|                 <module>spring-rest-shell</module> |                 <module>spring-rest-shell</module> | ||||||
|  | |||||||
| @ -1,6 +0,0 @@ | |||||||
| ## Spring REST Compress |  | ||||||
| 
 |  | ||||||
| This module contains articles about request compression with Spring |  | ||||||
| 
 |  | ||||||
| ### Relevant Articles: |  | ||||||
| - [How to compress requests using the Spring RestTemplate](https://www.baeldung.com/spring-resttemplate-compressing-requests) |  | ||||||
| @ -1,65 +0,0 @@ | |||||||
| <?xml version="1.0" encoding="UTF-8"?> |  | ||||||
| <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |  | ||||||
|          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> |  | ||||||
|     <modelVersion>4.0.0</modelVersion> |  | ||||||
|     <artifactId>spring-rest-compress</artifactId> |  | ||||||
|     <version>0.0.1-SNAPSHOT</version> |  | ||||||
|     <name>spring-rest-compress</name> |  | ||||||
| 
 |  | ||||||
|     <parent> |  | ||||||
|         <groupId>com.baeldung</groupId> |  | ||||||
|         <artifactId>parent-boot-2</artifactId> |  | ||||||
|         <version>0.0.1-SNAPSHOT</version> |  | ||||||
|         <relativePath>../parent-boot-2</relativePath> |  | ||||||
|     </parent> |  | ||||||
| 
 |  | ||||||
|     <dependencies> |  | ||||||
|         <dependency> |  | ||||||
|             <groupId>org.springframework.boot</groupId> |  | ||||||
|             <artifactId>spring-boot-starter-web</artifactId> |  | ||||||
|             <exclusions> |  | ||||||
|                 <exclusion> |  | ||||||
|                     <groupId>org.springframework.boot</groupId> |  | ||||||
|                     <artifactId>spring-boot-starter-tomcat</artifactId> |  | ||||||
|                 </exclusion> |  | ||||||
|             </exclusions> |  | ||||||
|         </dependency> |  | ||||||
| 
 |  | ||||||
|         <dependency> |  | ||||||
|             <groupId>org.springframework.boot</groupId> |  | ||||||
|             <artifactId>spring-boot-starter-jetty</artifactId> |  | ||||||
|         </dependency> |  | ||||||
| 
 |  | ||||||
|         <dependency> |  | ||||||
|             <groupId>org.apache.httpcomponents</groupId> |  | ||||||
|             <artifactId>httpclient</artifactId> |  | ||||||
|         </dependency> |  | ||||||
| 
 |  | ||||||
|         <dependency> |  | ||||||
|             <groupId>commons-io</groupId> |  | ||||||
|             <artifactId>commons-io</artifactId> |  | ||||||
|             <version>${commons-io.version}</version> |  | ||||||
|         </dependency> |  | ||||||
| 
 |  | ||||||
|         <dependency> |  | ||||||
|             <groupId>org.springframework.boot</groupId> |  | ||||||
|             <artifactId>spring-boot-starter-test</artifactId> |  | ||||||
|             <scope>test</scope> |  | ||||||
|         </dependency> |  | ||||||
|     </dependencies> |  | ||||||
| 
 |  | ||||||
|     <build> |  | ||||||
|         <plugins> |  | ||||||
|             <plugin> |  | ||||||
|                 <groupId>org.springframework.boot</groupId> |  | ||||||
|                 <artifactId>spring-boot-maven-plugin</artifactId> |  | ||||||
|             </plugin> |  | ||||||
|         </plugins> |  | ||||||
|     </build> |  | ||||||
| 
 |  | ||||||
|     <properties> |  | ||||||
|         <java.version>1.8</java.version> |  | ||||||
|         <commons-io.version>2.6</commons-io.version> |  | ||||||
|     </properties> |  | ||||||
| 
 |  | ||||||
| </project> |  | ||||||
| @ -1,38 +0,0 @@ | |||||||
| package com.baeldung.spring.rest.compress; |  | ||||||
| 
 |  | ||||||
| import org.slf4j.Logger; |  | ||||||
| import org.slf4j.LoggerFactory; |  | ||||||
| import org.springframework.http.HttpHeaders; |  | ||||||
| import org.springframework.http.HttpRequest; |  | ||||||
| import org.springframework.http.client.ClientHttpRequestExecution; |  | ||||||
| import org.springframework.http.client.ClientHttpRequestInterceptor; |  | ||||||
| import org.springframework.http.client.ClientHttpResponse; |  | ||||||
| 
 |  | ||||||
| import java.io.IOException; |  | ||||||
| 
 |  | ||||||
| public class CompressingClientHttpRequestInterceptor implements ClientHttpRequestInterceptor { |  | ||||||
| 
 |  | ||||||
|     private static final Logger LOG = LoggerFactory.getLogger(CompressingClientHttpRequestInterceptor.class); |  | ||||||
| 
 |  | ||||||
|     private static final String GZIP_ENCODING = "gzip"; |  | ||||||
| 
 |  | ||||||
|     /** |  | ||||||
|      * Compress a request body using Gzip and add Http headers. |  | ||||||
|      * |  | ||||||
|      * @param req |  | ||||||
|      * @param body |  | ||||||
|      * @param exec |  | ||||||
|      * @return |  | ||||||
|      * @throws IOException |  | ||||||
|      */ |  | ||||||
|     @Override |  | ||||||
|     public ClientHttpResponse intercept(HttpRequest req, byte[] body, ClientHttpRequestExecution exec) |  | ||||||
|             throws IOException { |  | ||||||
|         LOG.info("Compressing request..."); |  | ||||||
|         HttpHeaders httpHeaders = req.getHeaders(); |  | ||||||
|         httpHeaders.add(HttpHeaders.CONTENT_ENCODING, GZIP_ENCODING); |  | ||||||
|         httpHeaders.add(HttpHeaders.ACCEPT_ENCODING, GZIP_ENCODING); |  | ||||||
|         return exec.execute(req, GzipUtils.compress(body)); |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
| } |  | ||||||
| @ -1,52 +0,0 @@ | |||||||
| package com.baeldung.spring.rest.compress; |  | ||||||
| 
 |  | ||||||
| import org.apache.commons.codec.Charsets; |  | ||||||
| import org.apache.commons.io.IOUtils; |  | ||||||
| 
 |  | ||||||
| import java.io.ByteArrayInputStream; |  | ||||||
| import java.io.ByteArrayOutputStream; |  | ||||||
| import java.io.IOException; |  | ||||||
| import java.util.zip.GZIPInputStream; |  | ||||||
| import java.util.zip.GZIPOutputStream; |  | ||||||
| 
 |  | ||||||
| public class GzipUtils { |  | ||||||
| 
 |  | ||||||
|     /** |  | ||||||
|      * Gzip a string. |  | ||||||
|      * |  | ||||||
|      * @param text |  | ||||||
|      * @return |  | ||||||
|      * @throws Exception |  | ||||||
|      */ |  | ||||||
|     public static byte[] compress(String text) throws Exception { |  | ||||||
|         return GzipUtils.compress(text.getBytes(Charsets.UTF_8)); |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     /** |  | ||||||
|      * Gzip a byte array. |  | ||||||
|      * |  | ||||||
|      * @param body |  | ||||||
|      * @return |  | ||||||
|      * @throws IOException |  | ||||||
|      */ |  | ||||||
|     public static byte[] compress(byte[] body) throws IOException { |  | ||||||
|         ByteArrayOutputStream baos = new ByteArrayOutputStream(); |  | ||||||
|         try (GZIPOutputStream gzipOutputStream = new GZIPOutputStream(baos)) { |  | ||||||
|             gzipOutputStream.write(body); |  | ||||||
|         } |  | ||||||
|         return baos.toByteArray(); |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     /** |  | ||||||
|      * Decompress a Gzipped byte array to a String. |  | ||||||
|      * |  | ||||||
|      * @param body |  | ||||||
|      * @return |  | ||||||
|      * @throws IOException |  | ||||||
|      */ |  | ||||||
|     public static String decompress(byte[] body) throws IOException { |  | ||||||
|         try (GZIPInputStream gzipInputStream = new GZIPInputStream(new ByteArrayInputStream(body))) { |  | ||||||
|             return IOUtils.toString(gzipInputStream, Charsets.UTF_8); |  | ||||||
|         } |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| @ -1,38 +0,0 @@ | |||||||
| package com.baeldung.spring.rest.compress; |  | ||||||
| 
 |  | ||||||
| import org.eclipse.jetty.server.handler.HandlerCollection; |  | ||||||
| import org.eclipse.jetty.server.handler.gzip.GzipHandler; |  | ||||||
| import org.springframework.boot.web.embedded.jetty.JettyServletWebServerFactory; |  | ||||||
| import org.springframework.context.annotation.Bean; |  | ||||||
| import org.springframework.context.annotation.Configuration; |  | ||||||
| 
 |  | ||||||
| /** |  | ||||||
|  * Configure Jetty web server so it handles compressed requests. |  | ||||||
|  */ |  | ||||||
| @Configuration |  | ||||||
| public class JettyWebServerConfiguration { |  | ||||||
| 
 |  | ||||||
|     private static final int MIN_BYTES = 1; |  | ||||||
| 
 |  | ||||||
|     /** |  | ||||||
|      * Customise the Jetty web server to automatically decompress requests. |  | ||||||
|      */ |  | ||||||
|     @Bean |  | ||||||
|     public JettyServletWebServerFactory jettyServletWebServerFactory() { |  | ||||||
| 
 |  | ||||||
|         JettyServletWebServerFactory factory = new JettyServletWebServerFactory(); |  | ||||||
|         factory.addServerCustomizers(server -> { |  | ||||||
| 
 |  | ||||||
|             GzipHandler gzipHandler = new GzipHandler(); |  | ||||||
|             // Enable request decompression |  | ||||||
|             gzipHandler.setInflateBufferSize(MIN_BYTES); |  | ||||||
|             gzipHandler.setHandler(server.getHandler()); |  | ||||||
| 
 |  | ||||||
|             HandlerCollection handlerCollection = new HandlerCollection(gzipHandler); |  | ||||||
|             server.setHandler(handlerCollection); |  | ||||||
|         }); |  | ||||||
| 
 |  | ||||||
|         return factory; |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
| } |  | ||||||
| @ -1,29 +0,0 @@ | |||||||
| package com.baeldung.spring.rest.compress; |  | ||||||
| 
 |  | ||||||
| public class Message { |  | ||||||
| 
 |  | ||||||
|     private String text; |  | ||||||
| 
 |  | ||||||
|     public Message() { |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     public Message(String text) { |  | ||||||
|         this.text = text; |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     public String getText() { |  | ||||||
|         return text; |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     public void setText(String text) { |  | ||||||
|         this.text = text; |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     @Override |  | ||||||
|     public String toString() { |  | ||||||
|         final StringBuilder sb = new StringBuilder("Message {"); |  | ||||||
|         sb.append("text='").append(text).append('\''); |  | ||||||
|         sb.append('}'); |  | ||||||
|         return sb.toString(); |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| @ -1,38 +0,0 @@ | |||||||
| package com.baeldung.spring.rest.compress; |  | ||||||
| 
 |  | ||||||
| import org.slf4j.Logger; |  | ||||||
| import org.slf4j.LoggerFactory; |  | ||||||
| import org.springframework.http.ResponseEntity; |  | ||||||
| import org.springframework.web.bind.annotation.PostMapping; |  | ||||||
| import org.springframework.web.bind.annotation.RequestBody; |  | ||||||
| import org.springframework.web.bind.annotation.RequestHeader; |  | ||||||
| import org.springframework.web.bind.annotation.RestController; |  | ||||||
| 
 |  | ||||||
| import java.util.Map; |  | ||||||
| 
 |  | ||||||
| @RestController |  | ||||||
| public class MessageController { |  | ||||||
| 
 |  | ||||||
|     protected static final String PROCESSED = "Processed "; |  | ||||||
| 
 |  | ||||||
|     protected static final String REQUEST_MAPPING = "process"; |  | ||||||
| 
 |  | ||||||
|     private static final Logger LOG = LoggerFactory.getLogger(MessageController.class); |  | ||||||
| 
 |  | ||||||
|     /** |  | ||||||
|      * A simple endpoint that responds with "Processed " + supplied Message content. |  | ||||||
|      * |  | ||||||
|      * @param headers |  | ||||||
|      * @param message |  | ||||||
|      * @return |  | ||||||
|      */ |  | ||||||
|     @PostMapping(value = REQUEST_MAPPING) |  | ||||||
|     public ResponseEntity<String> processMessage(@RequestHeader Map<String, String> headers, |  | ||||||
|             @RequestBody Message message) { |  | ||||||
| 
 |  | ||||||
|         // Print headers |  | ||||||
|         headers.forEach((k, v) -> LOG.info(k + "=" + v)); |  | ||||||
| 
 |  | ||||||
|         return ResponseEntity.ok(PROCESSED + message.getText()); |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| @ -1,21 +0,0 @@ | |||||||
| package com.baeldung.spring.rest.compress; |  | ||||||
| 
 |  | ||||||
| import org.springframework.context.annotation.Bean; |  | ||||||
| import org.springframework.context.annotation.Configuration; |  | ||||||
| import org.springframework.web.client.RestTemplate; |  | ||||||
| 
 |  | ||||||
| @Configuration |  | ||||||
| public class RestTemplateConfiguration { |  | ||||||
| 
 |  | ||||||
|     /** |  | ||||||
|      * A RestTemplate that compresses requests. |  | ||||||
|      * |  | ||||||
|      * @return RestTemplate |  | ||||||
|      */ |  | ||||||
|     @Bean |  | ||||||
|     public RestTemplate getRestTemplate() { |  | ||||||
|         RestTemplate restTemplate = new RestTemplate(); |  | ||||||
|         restTemplate.getInterceptors().add(new CompressingClientHttpRequestInterceptor()); |  | ||||||
|         return restTemplate; |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| @ -1,15 +0,0 @@ | |||||||
| package com.baeldung.spring.rest.compress; |  | ||||||
| 
 |  | ||||||
| import org.springframework.boot.SpringApplication; |  | ||||||
| import org.springframework.boot.autoconfigure.EnableAutoConfiguration; |  | ||||||
| import org.springframework.boot.autoconfigure.SpringBootApplication; |  | ||||||
| 
 |  | ||||||
| @SpringBootApplication |  | ||||||
| @EnableAutoConfiguration |  | ||||||
| public class SpringCompressRequestApplication { |  | ||||||
| 
 |  | ||||||
|     public static void main(String[] args) { |  | ||||||
|         SpringApplication.run(SpringCompressRequestApplication.class, args); |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
| } |  | ||||||
| @ -1,19 +0,0 @@ | |||||||
| package com.baeldung.spring.rest.compress; |  | ||||||
| 
 |  | ||||||
| import org.junit.Test; |  | ||||||
| 
 |  | ||||||
| import static org.junit.Assert.assertEquals; |  | ||||||
| import static org.junit.Assert.assertNotNull; |  | ||||||
| 
 |  | ||||||
| public class GzipUtilsUnitTest { |  | ||||||
| 
 |  | ||||||
|     @Test |  | ||||||
|     public void givenCompressedText_whenDecompressed_thenSuccessful() throws Exception { |  | ||||||
|         final String expectedText = "Hello Baeldung!"; |  | ||||||
|         byte[] compressedText = GzipUtils.compress(expectedText); |  | ||||||
|         String decompressedText = GzipUtils.decompress(compressedText); |  | ||||||
|         assertNotNull(compressedText); |  | ||||||
|         assertEquals(expectedText, decompressedText); |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
| } |  | ||||||
| @ -1,56 +0,0 @@ | |||||||
| package com.baeldung.spring.rest.compress; |  | ||||||
| 
 |  | ||||||
| import org.junit.Test; |  | ||||||
| import org.junit.runner.RunWith; |  | ||||||
| import org.slf4j.Logger; |  | ||||||
| import org.slf4j.LoggerFactory; |  | ||||||
| import org.springframework.beans.factory.annotation.Autowired; |  | ||||||
| import org.springframework.boot.test.context.SpringBootTest; |  | ||||||
| import org.springframework.boot.web.server.LocalServerPort; |  | ||||||
| import org.springframework.http.HttpEntity; |  | ||||||
| import org.springframework.http.HttpStatus; |  | ||||||
| import org.springframework.http.ResponseEntity; |  | ||||||
| import org.springframework.test.context.junit4.SpringRunner; |  | ||||||
| import org.springframework.web.client.RestTemplate; |  | ||||||
| 
 |  | ||||||
| import static org.junit.Assert.assertEquals; |  | ||||||
| import static org.junit.Assert.assertNotNull; |  | ||||||
| 
 |  | ||||||
| @RunWith(SpringRunner.class) |  | ||||||
| @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) |  | ||||||
| public class MessageControllerUnitTest { |  | ||||||
| 
 |  | ||||||
| 	private static final Logger LOG = LoggerFactory.getLogger(MessageControllerUnitTest.class); |  | ||||||
| 
 |  | ||||||
| 	@Autowired |  | ||||||
| 	private RestTemplate restTemplate; |  | ||||||
| 
 |  | ||||||
| 	@LocalServerPort |  | ||||||
| 	private int randomServerPort; |  | ||||||
| 
 |  | ||||||
| 	/** |  | ||||||
| 	 * As a further test you can intercept the request body, using a tool like |  | ||||||
| 	 * Wireshark, to see the request body is actually gzipped. |  | ||||||
| 	 * |  | ||||||
| 	 * @throws Exception |  | ||||||
| 	 */ |  | ||||||
| 	@Test |  | ||||||
| 	public void givenRestTemplate_whenPostCompressedRequest_thenRespondsSuccessfully() throws Exception { |  | ||||||
| 
 |  | ||||||
| 		final String text = "Hello Baeldung!"; |  | ||||||
| 		Message message = new Message(text); |  | ||||||
| 
 |  | ||||||
| 		HttpEntity<Message> request = new HttpEntity<>(message); |  | ||||||
| 		String uri = String.format("http://localhost:%s/%s", randomServerPort, MessageController.REQUEST_MAPPING); |  | ||||||
| 
 |  | ||||||
| 		ResponseEntity<String> responseEntity = restTemplate.postForEntity(uri, request, String.class); |  | ||||||
| 
 |  | ||||||
| 		String response = responseEntity.getBody(); |  | ||||||
| 		LOG.info("Got response [{}]", response); |  | ||||||
| 
 |  | ||||||
| 		assertEquals(HttpStatus.OK, responseEntity.getStatusCode()); |  | ||||||
| 		assertNotNull(response); |  | ||||||
| 		assertEquals(MessageController.PROCESSED + text, response); |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
| } |  | ||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user