diff --git a/feign/README.md b/feign/README.md
index 3e733448fb..074ce1cbd2 100644
--- a/feign/README.md
+++ b/feign/README.md
@@ -6,10 +6,4 @@ This module contains articles about Feign
- [Intro to Feign](https://www.baeldung.com/intro-to-feign)
- [Retrying Feign Calls](https://www.baeldung.com/feign-retry)
-- [Setting Request Headers Using Feign](https://www.baeldung.com/java-feign-request-headers)
-- [File Upload With Open Feign](https://www.baeldung.com/java-feign-file-upload)
-- [Feign Logging Configuration](https://www.baeldung.com/java-feign-logging)
-- [Retrieve Original Message From Feign ErrorDecoder](https://www.baeldung.com/feign-retrieve-original-message)
-- [RequestLine with Feign Client](https://www.baeldung.com/feign-requestline)
-- [Propagating Exceptions With OpenFeign and Spring](https://www.baeldung.com/spring-openfeign-propagate-exception)
-- [Post form-url-encoded Data with Spring Cloud Feign](https://www.baeldung.com/spring-cloud-post-form-url-encoded-data)
+- [Setting Request Headers Using Feign](https://www.baeldung.com/java-feign-request-headers)
\ No newline at end of file
diff --git a/feign/pom.xml b/feign/pom.xml
index f39adec607..7f71794e29 100644
--- a/feign/pom.xml
+++ b/feign/pom.xml
@@ -69,11 +69,6 @@
feign-form-spring
${feign.form.spring.version}
-
- org.springframework.cloud
- spring-cloud-starter-openfeign
- ${spring.cloud.openfeign.version}
-
com.github.tomakehurst
wiremock-jre8
diff --git a/feign/src/main/java/com/baeldung/core/ExampleApplication.java b/feign/src/main/java/com/baeldung/core/ExampleApplication.java
index 391e808ede..881265d5ba 100644
--- a/feign/src/main/java/com/baeldung/core/ExampleApplication.java
+++ b/feign/src/main/java/com/baeldung/core/ExampleApplication.java
@@ -2,10 +2,8 @@ package com.baeldung.core;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
-import org.springframework.cloud.openfeign.EnableFeignClients;
@SpringBootApplication
-@EnableFeignClients
public class ExampleApplication {
public static void main(String[] args) {
diff --git a/feign/src/main/java/com/baeldung/core/fileupload/config/ExceptionMessage.java b/feign/src/main/java/com/baeldung/core/fileupload/config/ExceptionMessage.java
deleted file mode 100644
index 8301705ca6..0000000000
--- a/feign/src/main/java/com/baeldung/core/fileupload/config/ExceptionMessage.java
+++ /dev/null
@@ -1,55 +0,0 @@
-package com.baeldung.core.fileupload.config;
-
-public class ExceptionMessage {
- private String timestamp;
- private int status;
- private String error;
- private String message;
- private String path;
-
- public String getTimestamp() {
- return timestamp;
- }
-
- public void setTimestamp(String timestamp) {
- this.timestamp = timestamp;
- }
-
- public int getStatus() {
- return status;
- }
-
- public void setStatus(int status) {
- this.status = status;
- }
-
- public String getError() {
- return error;
- }
-
- public void setError(String error) {
- this.error = error;
- }
-
- public String getMessage() {
- return message;
- }
-
- public void setMessage(String message) {
- this.message = message;
- }
-
- public String getPath() {
- return path;
- }
-
- public void setPath(String path) {
- this.path = path;
- }
-
- @Override
- public String toString() {
- return "ExceptionMessage [timestamp=" + timestamp + ", status=" + status + ", error=" + error + ", message=" + message + ", path=" + path + "]";
- }
-
-}
diff --git a/feign/src/main/java/com/baeldung/core/fileupload/config/FeignSupportConfig.java b/feign/src/main/java/com/baeldung/core/fileupload/config/FeignSupportConfig.java
deleted file mode 100644
index c8c9eb1acc..0000000000
--- a/feign/src/main/java/com/baeldung/core/fileupload/config/FeignSupportConfig.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package com.baeldung.core.fileupload.config;
-
-import org.springframework.boot.autoconfigure.http.HttpMessageConverters;
-import org.springframework.cloud.openfeign.support.SpringEncoder;
-import org.springframework.context.annotation.Bean;
-import org.springframework.web.client.RestTemplate;
-
-import feign.codec.Encoder;
-import feign.codec.ErrorDecoder;
-import feign.form.spring.SpringFormEncoder;
-
-public class FeignSupportConfig {
- @Bean
- public Encoder multipartFormEncoder() {
- return new SpringFormEncoder(new SpringEncoder(() -> new HttpMessageConverters(new RestTemplate().getMessageConverters())));
- }
-
- @Bean
- public ErrorDecoder errorDecoder() {
- return new RetreiveMessageErrorDecoder();
- }
-}
diff --git a/feign/src/main/java/com/baeldung/core/fileupload/config/RetreiveMessageErrorDecoder.java b/feign/src/main/java/com/baeldung/core/fileupload/config/RetreiveMessageErrorDecoder.java
deleted file mode 100644
index fc2c8da0ed..0000000000
--- a/feign/src/main/java/com/baeldung/core/fileupload/config/RetreiveMessageErrorDecoder.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package com.baeldung.core.fileupload.config;
-
-import java.io.IOException;
-import java.io.InputStream;
-
-import com.baeldung.core.exception.BadRequestException;
-import com.baeldung.core.exception.NotFoundException;
-import com.fasterxml.jackson.databind.ObjectMapper;
-
-import feign.Response;
-import feign.codec.ErrorDecoder;
-
-public class RetreiveMessageErrorDecoder implements ErrorDecoder {
- private final ErrorDecoder errorDecoder = new Default();
-
- @Override
- public Exception decode(String methodKey, Response response) {
- ExceptionMessage message;
- try (InputStream bodyIs = response.body()
- .asInputStream()) {
- ObjectMapper mapper = new ObjectMapper();
- message = mapper.readValue(bodyIs, ExceptionMessage.class);
- } catch (IOException e) {
- return new Exception(e.getMessage());
- }
- switch (response.status()) {
- case 400:
- return new BadRequestException(message.getMessage() != null ? message.getMessage() : "Bad Request");
- case 404:
- return new NotFoundException(message.getMessage() != null ? message.getMessage() : "Not found");
- default:
- return errorDecoder.decode(methodKey, response);
- }
- }
-}
diff --git a/feign/src/main/java/com/baeldung/core/fileupload/service/UploadResource.java b/feign/src/main/java/com/baeldung/core/fileupload/service/UploadResource.java
deleted file mode 100644
index 9d3d173cd4..0000000000
--- a/feign/src/main/java/com/baeldung/core/fileupload/service/UploadResource.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package com.baeldung.core.fileupload.service;
-
-import org.springframework.web.multipart.MultipartFile;
-
-import feign.Headers;
-import feign.Param;
-import feign.RequestLine;
-import feign.Response;
-
-public interface UploadResource {
-
- @RequestLine("POST /upload-file")
- @Headers("Content-Type: multipart/form-data")
- Response uploadFile(@Param("file") MultipartFile file);
-
-}
\ No newline at end of file
diff --git a/feign/src/main/java/com/baeldung/core/fileupload/service/UploadService.java b/feign/src/main/java/com/baeldung/core/fileupload/service/UploadService.java
deleted file mode 100644
index 5176ddf0fa..0000000000
--- a/feign/src/main/java/com/baeldung/core/fileupload/service/UploadService.java
+++ /dev/null
@@ -1,32 +0,0 @@
-package com.baeldung.core.fileupload.service;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import org.springframework.web.multipart.MultipartFile;
-
-import feign.Feign;
-import feign.Response;
-import feign.form.spring.SpringFormEncoder;
-
-@Service
-public class UploadService {
- private static final String HTTP_FILE_UPLOAD_URL = "http://localhost:8081";
-
- @Autowired
- private UploadClient client;
-
- public boolean uploadFileWithManualClient(MultipartFile file) {
- UploadResource fileUploadResource = Feign.builder().encoder(new SpringFormEncoder())
- .target(UploadResource.class, HTTP_FILE_UPLOAD_URL);
- Response response = fileUploadResource.uploadFile(file);
- return response.status() == 200;
- }
-
- public String uploadFile(MultipartFile file) {
- return client.fileUpload(file);
- }
-
- public String uploadFileError(MultipartFile file) {
- return client.fileUpload(file);
- }
-}
\ No newline at end of file
diff --git a/feign/src/test/java/com/baeldung/core/OpenFeignFileUploadLiveTest.java b/feign/src/test/java/com/baeldung/core/OpenFeignFileUploadLiveTest.java
deleted file mode 100644
index f9dc8b13ed..0000000000
--- a/feign/src/test/java/com/baeldung/core/OpenFeignFileUploadLiveTest.java
+++ /dev/null
@@ -1,50 +0,0 @@
-package com.baeldung.core;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-
-import org.apache.commons.io.IOUtils;
-import org.junit.Assert;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.mock.web.MockMultipartFile;
-import org.springframework.test.context.junit4.SpringRunner;
-import org.springframework.web.multipart.MultipartFile;
-
-import com.baeldung.core.fileupload.service.UploadService;
-
-@RunWith(SpringRunner.class)
-@SpringBootTest(classes = ExampleApplication.class)
-public class OpenFeignFileUploadLiveTest {
-
- @Autowired
- private UploadService uploadService;
-
- private static String FILE_NAME = "fileupload.txt";
-
- @Test
- public void whenFeignBuilder_thenFileUploadSuccess() throws IOException {
- ClassLoader classloader = Thread.currentThread().getContextClassLoader();
- File file = new File(classloader.getResource(FILE_NAME).getFile());
- Assert.assertTrue(file.exists());
- FileInputStream input = new FileInputStream(file);
- MultipartFile multipartFile = new MockMultipartFile("file", file.getName(), "text/plain",
- IOUtils.toByteArray(input));
- Assert.assertTrue(uploadService.uploadFileWithManualClient(multipartFile));
- }
-
- @Test
- public void whenAnnotatedFeignClient_thenFileUploadSuccess() throws IOException {
- ClassLoader classloader = Thread.currentThread().getContextClassLoader();
- File file = new File(classloader.getResource(FILE_NAME).getFile());
- Assert.assertTrue(file.exists());
- FileInputStream input = new FileInputStream(file);
- MultipartFile multipartFile = new MockMultipartFile("file", file.getName(), "text/plain",
- IOUtils.toByteArray(input));
- String uploadFile = uploadService.uploadFile(multipartFile);
- Assert.assertNotNull(uploadFile);
- }
-}
diff --git a/spring-cloud-modules/spring-cloud-openfeign/README.md b/spring-cloud-modules/spring-cloud-openfeign/README.md
index d1e52eb415..edda9a8f80 100644
--- a/spring-cloud-modules/spring-cloud-openfeign/README.md
+++ b/spring-cloud-modules/spring-cloud-openfeign/README.md
@@ -5,4 +5,10 @@
- [Provide an OAuth2 Token to a Feign Client](https://www.baeldung.com/spring-cloud-feign-oauth-token)
- [Propagating Exceptions With OpenFeign and Spring](https://www.baeldung.com/spring-openfeign-propagate-exception)
- [Feign Client Exception Handling](https://www.baeldung.com/java-feign-client-exception-handling)
+- [File Upload With Open Feign](https://www.baeldung.com/java-feign-file-upload)
+- [Feign Logging Configuration](https://www.baeldung.com/java-feign-logging)
+- [Retrieve Original Message From Feign ErrorDecoder](https://www.baeldung.com/feign-retrieve-original-message)
+- [RequestLine with Feign Client](https://www.baeldung.com/feign-requestline)
+- [Propagating Exceptions With OpenFeign and Spring](https://www.baeldung.com/spring-openfeign-propagate-exception)
+- [Post form-url-encoded Data with Spring Cloud Feign](https://www.baeldung.com/spring-cloud-post-form-url-encoded-data)
- [Configuring Spring Cloud FeignClient URL](https://www.baeldung.com/spring-cloud-feignclient-url)
diff --git a/spring-cloud-modules/spring-cloud-openfeign/pom.xml b/spring-cloud-modules/spring-cloud-openfeign/pom.xml
index 88ad38517b..465be6b74f 100644
--- a/spring-cloud-modules/spring-cloud-openfeign/pom.xml
+++ b/spring-cloud-modules/spring-cloud-openfeign/pom.xml
@@ -61,10 +61,23 @@
spring-boot-starter-test
test
+
+ com.github.tomakehurst
+ wiremock-jre8
+ ${wire.mock.version}
+ test
+
+
+ org.projectlombok
+ lombok
+ ${lombok.version}
+ provided
+
2021.0.3
+ 2.33.2
\ No newline at end of file
diff --git a/feign/src/main/java/com/baeldung/core/client/FormClient.java b/spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/client/FormClient.java
similarity index 91%
rename from feign/src/main/java/com/baeldung/core/client/FormClient.java
rename to spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/client/FormClient.java
index 074402aef3..f127ec3b8b 100644
--- a/feign/src/main/java/com/baeldung/core/client/FormClient.java
+++ b/spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/client/FormClient.java
@@ -1,4 +1,4 @@
-package com.baeldung.core.client;
+package com.baeldung.cloud.openfeign.client;
import java.util.Map;
@@ -11,7 +11,7 @@ import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
-import com.baeldung.core.defaulterrorhandling.model.FormData;
+import com.baeldung.cloud.openfeign.defaulterrorhandling.model.FormData;
import feign.codec.Encoder;
import feign.form.spring.SpringFormEncoder;
diff --git a/feign/src/main/java/com/baeldung/core/client/UserClient.java b/spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/client/UserClient.java
similarity index 75%
rename from feign/src/main/java/com/baeldung/core/client/UserClient.java
rename to spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/client/UserClient.java
index a16f924ad5..a9b78e5db8 100644
--- a/feign/src/main/java/com/baeldung/core/client/UserClient.java
+++ b/spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/client/UserClient.java
@@ -1,9 +1,9 @@
-package com.baeldung.core.client;
+package com.baeldung.cloud.openfeign.client;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
-import com.baeldung.core.config.FeignConfig;
+import com.baeldung.cloud.openfeign.config.FeignConfig;
@FeignClient(name = "user-client", url="https://jsonplaceholder.typicode.com", configuration = FeignConfig.class)
public interface UserClient {
diff --git a/spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/config/FeignConfig.java b/spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/config/FeignConfig.java
new file mode 100644
index 0000000000..005084899b
--- /dev/null
+++ b/spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/config/FeignConfig.java
@@ -0,0 +1,13 @@
+package com.baeldung.cloud.openfeign.config;
+
+import org.springframework.context.annotation.Bean;
+
+import feign.Logger;
+
+public class FeignConfig {
+
+ @Bean
+ Logger.Level feignLoggerLevel() {
+ return Logger.Level.FULL;
+ }
+}
\ No newline at end of file
diff --git a/feign/src/main/java/com/baeldung/core/customizederrorhandling/client/ProductClient.java b/spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/customizederrorhandling/client/ProductClient.java
similarity index 70%
rename from feign/src/main/java/com/baeldung/core/customizederrorhandling/client/ProductClient.java
rename to spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/customizederrorhandling/client/ProductClient.java
index 113051722b..f668e8f2c8 100644
--- a/feign/src/main/java/com/baeldung/core/customizederrorhandling/client/ProductClient.java
+++ b/spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/customizederrorhandling/client/ProductClient.java
@@ -1,12 +1,12 @@
-package com.baeldung.core.customizederrorhandling.client;
+package com.baeldung.cloud.openfeign.customizederrorhandling.client;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
-import com.baeldung.core.customizederrorhandling.config.FeignConfig;
-import com.baeldung.core.defaulterrorhandling.model.Product;
+import com.baeldung.cloud.openfeign.customizederrorhandling.config.FeignConfig;
+import com.baeldung.cloud.openfeign.defaulterrorhandling.model.Product;
@FeignClient(name = "product-client-2", url = "http://localhost:8081/product/", configuration = FeignConfig.class)
public interface ProductClient {
diff --git a/feign/src/main/java/com/baeldung/core/customizederrorhandling/config/CustomErrorDecoder.java b/spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/customizederrorhandling/config/CustomErrorDecoder.java
similarity index 65%
rename from feign/src/main/java/com/baeldung/core/customizederrorhandling/config/CustomErrorDecoder.java
rename to spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/customizederrorhandling/config/CustomErrorDecoder.java
index 5466b61b3a..13e3a55dd7 100644
--- a/feign/src/main/java/com/baeldung/core/customizederrorhandling/config/CustomErrorDecoder.java
+++ b/spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/customizederrorhandling/config/CustomErrorDecoder.java
@@ -1,8 +1,9 @@
-package com.baeldung.core.customizederrorhandling.config;
+package com.baeldung.cloud.openfeign.customizederrorhandling.config;
-import com.baeldung.core.customizederrorhandling.exception.ProductNotFoundException;
-import com.baeldung.core.customizederrorhandling.exception.ProductServiceNotAvailableException;
-import com.baeldung.core.exception.BadRequestException;
+
+import com.baeldung.cloud.openfeign.customizederrorhandling.exception.ProductNotFoundException;
+import com.baeldung.cloud.openfeign.customizederrorhandling.exception.ProductServiceNotAvailableException;
+import com.baeldung.cloud.openfeign.exception.BadRequestException;
import feign.Response;
import feign.codec.ErrorDecoder;
diff --git a/feign/src/main/java/com/baeldung/core/customizederrorhandling/config/FeignConfig.java b/spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/customizederrorhandling/config/FeignConfig.java
similarity index 82%
rename from feign/src/main/java/com/baeldung/core/customizederrorhandling/config/FeignConfig.java
rename to spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/customizederrorhandling/config/FeignConfig.java
index 980b8b5b38..f013f48b64 100644
--- a/feign/src/main/java/com/baeldung/core/customizederrorhandling/config/FeignConfig.java
+++ b/spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/customizederrorhandling/config/FeignConfig.java
@@ -1,4 +1,4 @@
-package com.baeldung.core.customizederrorhandling.config;
+package com.baeldung.cloud.openfeign.customizederrorhandling.config;
import org.springframework.context.annotation.Bean;
diff --git a/feign/src/main/java/com/baeldung/core/customizederrorhandling/controller/ProductController.java b/spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/customizederrorhandling/controller/ProductController.java
similarity index 76%
rename from feign/src/main/java/com/baeldung/core/customizederrorhandling/controller/ProductController.java
rename to spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/customizederrorhandling/controller/ProductController.java
index 6d6f784e66..53458151f8 100644
--- a/feign/src/main/java/com/baeldung/core/customizederrorhandling/controller/ProductController.java
+++ b/spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/customizederrorhandling/controller/ProductController.java
@@ -1,4 +1,4 @@
-package com.baeldung.core.customizederrorhandling.controller;
+package com.baeldung.cloud.openfeign.customizederrorhandling.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
@@ -6,8 +6,8 @@ import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
-import com.baeldung.core.customizederrorhandling.client.ProductClient;
-import com.baeldung.core.defaulterrorhandling.model.Product;
+import com.baeldung.cloud.openfeign.customizederrorhandling.client.ProductClient;
+import com.baeldung.cloud.openfeign.defaulterrorhandling.model.Product;
@RestController("product_controller2")
@RequestMapping(value = "myapp2")
diff --git a/feign/src/main/java/com/baeldung/core/customizederrorhandling/exception/ErrorResponse.java b/spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/customizederrorhandling/exception/ErrorResponse.java
similarity index 94%
rename from feign/src/main/java/com/baeldung/core/customizederrorhandling/exception/ErrorResponse.java
rename to spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/customizederrorhandling/exception/ErrorResponse.java
index 6e739e5e40..d7ec783a8b 100644
--- a/feign/src/main/java/com/baeldung/core/customizederrorhandling/exception/ErrorResponse.java
+++ b/spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/customizederrorhandling/exception/ErrorResponse.java
@@ -1,4 +1,4 @@
-package com.baeldung.core.customizederrorhandling.exception;
+package com.baeldung.cloud.openfeign.customizederrorhandling.exception;
import java.util.Date;
diff --git a/feign/src/main/java/com/baeldung/core/customizederrorhandling/exception/ProductExceptionHandler.java b/spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/customizederrorhandling/exception/ProductExceptionHandler.java
similarity index 95%
rename from feign/src/main/java/com/baeldung/core/customizederrorhandling/exception/ProductExceptionHandler.java
rename to spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/customizederrorhandling/exception/ProductExceptionHandler.java
index c83d917570..80191ce427 100644
--- a/feign/src/main/java/com/baeldung/core/customizederrorhandling/exception/ProductExceptionHandler.java
+++ b/spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/customizederrorhandling/exception/ProductExceptionHandler.java
@@ -1,4 +1,4 @@
-package com.baeldung.core.customizederrorhandling.exception;
+package com.baeldung.cloud.openfeign.customizederrorhandling.exception;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
diff --git a/feign/src/main/java/com/baeldung/core/customizederrorhandling/exception/ProductNotFoundException.java b/spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/customizederrorhandling/exception/ProductNotFoundException.java
similarity index 68%
rename from feign/src/main/java/com/baeldung/core/customizederrorhandling/exception/ProductNotFoundException.java
rename to spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/customizederrorhandling/exception/ProductNotFoundException.java
index fa993ce700..337cb89f7b 100644
--- a/feign/src/main/java/com/baeldung/core/customizederrorhandling/exception/ProductNotFoundException.java
+++ b/spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/customizederrorhandling/exception/ProductNotFoundException.java
@@ -1,4 +1,4 @@
-package com.baeldung.core.customizederrorhandling.exception;
+package com.baeldung.cloud.openfeign.customizederrorhandling.exception;
public class ProductNotFoundException extends RuntimeException {
diff --git a/feign/src/main/java/com/baeldung/core/customizederrorhandling/exception/ProductServiceNotAvailableException.java b/spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/customizederrorhandling/exception/ProductServiceNotAvailableException.java
similarity index 70%
rename from feign/src/main/java/com/baeldung/core/customizederrorhandling/exception/ProductServiceNotAvailableException.java
rename to spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/customizederrorhandling/exception/ProductServiceNotAvailableException.java
index 887d2cd91d..ce30f8c310 100644
--- a/feign/src/main/java/com/baeldung/core/customizederrorhandling/exception/ProductServiceNotAvailableException.java
+++ b/spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/customizederrorhandling/exception/ProductServiceNotAvailableException.java
@@ -1,4 +1,4 @@
-package com.baeldung.core.customizederrorhandling.exception;
+package com.baeldung.cloud.openfeign.customizederrorhandling.exception;
public class ProductServiceNotAvailableException extends RuntimeException {
diff --git a/feign/src/main/java/com/baeldung/core/defaulterrorhandling/client/ProductClient.java b/spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/defaulterrorhandling/client/ProductClient.java
similarity index 71%
rename from feign/src/main/java/com/baeldung/core/defaulterrorhandling/client/ProductClient.java
rename to spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/defaulterrorhandling/client/ProductClient.java
index 4eb435331d..2927024668 100644
--- a/feign/src/main/java/com/baeldung/core/defaulterrorhandling/client/ProductClient.java
+++ b/spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/defaulterrorhandling/client/ProductClient.java
@@ -1,12 +1,12 @@
-package com.baeldung.core.defaulterrorhandling.client;
+package com.baeldung.cloud.openfeign.defaulterrorhandling.client;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
-import com.baeldung.core.defaulterrorhandling.config.FeignConfig;
-import com.baeldung.core.defaulterrorhandling.model.Product;
+import com.baeldung.cloud.openfeign.defaulterrorhandling.config.FeignConfig;
+import com.baeldung.cloud.openfeign.defaulterrorhandling.model.Product;
@FeignClient(name = "product-client", url = "http://localhost:8084/product/", configuration = FeignConfig.class)
public interface ProductClient {
diff --git a/feign/src/main/java/com/baeldung/core/defaulterrorhandling/config/FeignConfig.java b/spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/defaulterrorhandling/config/FeignConfig.java
similarity index 74%
rename from feign/src/main/java/com/baeldung/core/defaulterrorhandling/config/FeignConfig.java
rename to spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/defaulterrorhandling/config/FeignConfig.java
index cef8cbb6d9..e10c33e311 100644
--- a/feign/src/main/java/com/baeldung/core/defaulterrorhandling/config/FeignConfig.java
+++ b/spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/defaulterrorhandling/config/FeignConfig.java
@@ -1,4 +1,4 @@
-package com.baeldung.core.defaulterrorhandling.config;
+package com.baeldung.cloud.openfeign.defaulterrorhandling.config;
import org.springframework.context.annotation.Bean;
diff --git a/feign/src/main/java/com/baeldung/core/defaulterrorhandling/controller/ProductController.java b/spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/defaulterrorhandling/controller/ProductController.java
similarity index 76%
rename from feign/src/main/java/com/baeldung/core/defaulterrorhandling/controller/ProductController.java
rename to spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/defaulterrorhandling/controller/ProductController.java
index 80f571f29a..b9fe879fbd 100644
--- a/feign/src/main/java/com/baeldung/core/defaulterrorhandling/controller/ProductController.java
+++ b/spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/defaulterrorhandling/controller/ProductController.java
@@ -1,4 +1,4 @@
-package com.baeldung.core.defaulterrorhandling.controller;
+package com.baeldung.cloud.openfeign.defaulterrorhandling.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
@@ -6,8 +6,8 @@ import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
-import com.baeldung.core.defaulterrorhandling.client.ProductClient;
-import com.baeldung.core.defaulterrorhandling.model.Product;
+import com.baeldung.cloud.openfeign.defaulterrorhandling.client.ProductClient;
+import com.baeldung.cloud.openfeign.defaulterrorhandling.model.Product;
@RestController("product_controller1")
@RequestMapping(value ="myapp1")
diff --git a/feign/src/main/java/com/baeldung/core/defaulterrorhandling/model/FormData.java b/spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/defaulterrorhandling/model/FormData.java
similarity index 67%
rename from feign/src/main/java/com/baeldung/core/defaulterrorhandling/model/FormData.java
rename to spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/defaulterrorhandling/model/FormData.java
index 6210451f2d..4b03a3e410 100644
--- a/feign/src/main/java/com/baeldung/core/defaulterrorhandling/model/FormData.java
+++ b/spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/defaulterrorhandling/model/FormData.java
@@ -1,4 +1,4 @@
-package com.baeldung.core.defaulterrorhandling.model;
+package com.baeldung.cloud.openfeign.defaulterrorhandling.model;
import lombok.AllArgsConstructor;
import lombok.Data;
diff --git a/feign/src/main/java/com/baeldung/core/defaulterrorhandling/model/Product.java b/spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/defaulterrorhandling/model/Product.java
similarity index 82%
rename from feign/src/main/java/com/baeldung/core/defaulterrorhandling/model/Product.java
rename to spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/defaulterrorhandling/model/Product.java
index 35d860332e..25a1662c99 100644
--- a/feign/src/main/java/com/baeldung/core/defaulterrorhandling/model/Product.java
+++ b/spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/defaulterrorhandling/model/Product.java
@@ -1,4 +1,4 @@
-package com.baeldung.core.defaulterrorhandling.model;
+package com.baeldung.cloud.openfeign.defaulterrorhandling.model;
public class Product {
diff --git a/spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/fileupload/config/FeignSupportConfig.java b/spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/fileupload/config/FeignSupportConfig.java
index 802077a3d7..bedcd32569 100644
--- a/spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/fileupload/config/FeignSupportConfig.java
+++ b/spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/fileupload/config/FeignSupportConfig.java
@@ -1,6 +1,5 @@
package com.baeldung.cloud.openfeign.fileupload.config;
-import org.springframework.beans.factory.ObjectFactory;
import org.springframework.boot.autoconfigure.http.HttpMessageConverters;
import org.springframework.cloud.openfeign.support.SpringEncoder;
import org.springframework.context.annotation.Bean;
@@ -13,12 +12,7 @@ import feign.form.spring.SpringFormEncoder;
public class FeignSupportConfig {
@Bean
public Encoder multipartFormEncoder() {
- return new SpringFormEncoder(new SpringEncoder(new ObjectFactory() {
- @Override
- public HttpMessageConverters getObject() {
- return new HttpMessageConverters(new RestTemplate().getMessageConverters());
- }
- }));
+ return new SpringFormEncoder(new SpringEncoder(() -> new HttpMessageConverters(new RestTemplate().getMessageConverters())));
}
@Bean
diff --git a/spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/fileupload/config/RetreiveMessageErrorDecoder.java b/spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/fileupload/config/RetreiveMessageErrorDecoder.java
index 5ebd7b6887..4324467712 100644
--- a/spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/fileupload/config/RetreiveMessageErrorDecoder.java
+++ b/spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/fileupload/config/RetreiveMessageErrorDecoder.java
@@ -12,9 +12,10 @@ import feign.codec.ErrorDecoder;
public class RetreiveMessageErrorDecoder implements ErrorDecoder {
private final ErrorDecoder errorDecoder = new Default();
+
@Override
public Exception decode(String methodKey, Response response) {
- ExceptionMessage message = null;
+ ExceptionMessage message;
try (InputStream bodyIs = response.body()
.asInputStream()) {
ObjectMapper mapper = new ObjectMapper();
diff --git a/feign/src/main/java/com/baeldung/core/fileupload/controller/FileController.java b/spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/fileupload/controller/FileController.java
similarity index 78%
rename from feign/src/main/java/com/baeldung/core/fileupload/controller/FileController.java
rename to spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/fileupload/controller/FileController.java
index 7ba4746979..5c6d6076b8 100644
--- a/feign/src/main/java/com/baeldung/core/fileupload/controller/FileController.java
+++ b/spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/fileupload/controller/FileController.java
@@ -1,4 +1,4 @@
-package com.baeldung.core.fileupload.controller;
+package com.baeldung.cloud.openfeign.fileupload.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
@@ -6,7 +6,7 @@ import org.springframework.web.bind.annotation.RequestPart;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
-import com.baeldung.core.fileupload.service.UploadService;
+import com.baeldung.cloud.openfeign.fileupload.service.UploadService;
@RestController
public class FileController {
@@ -16,7 +16,7 @@ public class FileController {
@PostMapping(value = "/upload")
public String handleFileUpload(@RequestPart(value = "file") MultipartFile file) {
- return service.uploadFile(file);
+ return service.uploadFileWithFallbackFactory(file);
}
@PostMapping(value = "/upload-mannual-client")
@@ -27,7 +27,7 @@ public class FileController {
@PostMapping(value = "/upload-error")
public String handleFileUploadError(@RequestPart(value = "file") MultipartFile file) {
- return service.uploadFile(file);
+ return service.uploadFileWithFallbackFactory(file);
}
}
\ No newline at end of file
diff --git a/spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/fileupload/service/FileUploadClientFallbackFactory.java b/spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/fileupload/service/FileUploadClientFallbackFactory.java
index 105be15192..9b717d17f1 100644
--- a/spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/fileupload/service/FileUploadClientFallbackFactory.java
+++ b/spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/fileupload/service/FileUploadClientFallbackFactory.java
@@ -11,20 +11,17 @@ import com.baeldung.cloud.openfeign.exception.NotFoundException;
public class FileUploadClientFallbackFactory implements FallbackFactory {
@Override
public FileUploadClientWithFallbackFactory create(Throwable cause) {
- return new FileUploadClientWithFallbackFactory() {
- @Override
- public String fileUpload(MultipartFile file) {
- if (cause instanceof BadRequestException) {
- return "Bad Request!!!";
- }
- if (cause instanceof NotFoundException) {
- return "Not Found!!!";
- }
- if (cause instanceof Exception) {
- return "Exception!!!";
- }
- return "Successfully Uploaded file!!!";
+ return file -> {
+ if (cause instanceof BadRequestException) {
+ return "Bad Request!!!";
}
+ if (cause instanceof NotFoundException) {
+ return "Not Found!!!";
+ }
+ if (cause instanceof Exception) {
+ return "Exception!!!";
+ }
+ return "Successfully Uploaded file!!!";
};
}
}
\ No newline at end of file
diff --git a/feign/src/main/java/com/baeldung/core/fileupload/service/UploadClient.java b/spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/fileupload/service/UploadClient.java
similarity index 85%
rename from feign/src/main/java/com/baeldung/core/fileupload/service/UploadClient.java
rename to spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/fileupload/service/UploadClient.java
index 37b059d642..8f3ef7e421 100644
--- a/feign/src/main/java/com/baeldung/core/fileupload/service/UploadClient.java
+++ b/spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/fileupload/service/UploadClient.java
@@ -1,4 +1,4 @@
-package com.baeldung.core.fileupload.service;
+package com.baeldung.cloud.openfeign.fileupload.service;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.http.MediaType;
@@ -6,7 +6,7 @@ import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestPart;
import org.springframework.web.multipart.MultipartFile;
-import com.baeldung.core.fileupload.config.FeignSupportConfig;
+import com.baeldung.cloud.openfeign.fileupload.config.FeignSupportConfig;
@FeignClient(name = "file", url = "http://localhost:8081", configuration = FeignSupportConfig.class)
public interface UploadClient {
diff --git a/spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/fileupload/service/UploadResource.java b/spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/fileupload/service/UploadResource.java
index 2d5090897d..26e658a7f0 100644
--- a/spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/fileupload/service/UploadResource.java
+++ b/spring-cloud-modules/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/fileupload/service/UploadResource.java
@@ -9,7 +9,7 @@ import feign.Response;
public interface UploadResource {
- @RequestLine("POST /upload-error")
+ @RequestLine("POST /upload-file")
@Headers("Content-Type: multipart/form-data")
Response uploadFile(@Param("file") MultipartFile file);
diff --git a/feign/src/test/java/com/baeldung/core/client/FormClientUnitTest.java b/spring-cloud-modules/spring-cloud-openfeign/src/test/java/com/baeldung/cloud/openfeign/client/FormClientUnitTest.java
similarity index 95%
rename from feign/src/test/java/com/baeldung/core/client/FormClientUnitTest.java
rename to spring-cloud-modules/spring-cloud-openfeign/src/test/java/com/baeldung/cloud/openfeign/client/FormClientUnitTest.java
index b9c263b60b..f374e8e0bd 100644
--- a/feign/src/test/java/com/baeldung/core/client/FormClientUnitTest.java
+++ b/spring-cloud-modules/spring-cloud-openfeign/src/test/java/com/baeldung/cloud/openfeign/client/FormClientUnitTest.java
@@ -1,4 +1,4 @@
-package com.baeldung.core.client;
+package com.baeldung.cloud.openfeign.client;
import static com.github.tomakehurst.wiremock.client.WireMock.aResponse;
import static com.github.tomakehurst.wiremock.client.WireMock.configureFor;
@@ -20,7 +20,7 @@ import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.http.HttpStatus;
import org.springframework.test.context.junit.jupiter.SpringExtension;
-import com.baeldung.core.defaulterrorhandling.model.FormData;
+import com.baeldung.cloud.openfeign.defaulterrorhandling.model.FormData;
import com.github.tomakehurst.wiremock.WireMockServer;
import com.github.tomakehurst.wiremock.client.WireMock;
diff --git a/feign/src/test/java/com/baeldung/core/customizederrorhandling/client/ProductClientUnitTest.java b/spring-cloud-modules/spring-cloud-openfeign/src/test/java/com/baeldung/cloud/openfeign/customizederrorhandling/client/ProductClientUnitTest.java
similarity index 85%
rename from feign/src/test/java/com/baeldung/core/customizederrorhandling/client/ProductClientUnitTest.java
rename to spring-cloud-modules/spring-cloud-openfeign/src/test/java/com/baeldung/cloud/openfeign/customizederrorhandling/client/ProductClientUnitTest.java
index ed5f18eb3f..5e715265aa 100644
--- a/feign/src/test/java/com/baeldung/core/customizederrorhandling/client/ProductClientUnitTest.java
+++ b/spring-cloud-modules/spring-cloud-openfeign/src/test/java/com/baeldung/cloud/openfeign/customizederrorhandling/client/ProductClientUnitTest.java
@@ -1,4 +1,4 @@
-package com.baeldung.core.customizederrorhandling.client;
+package com.baeldung.cloud.openfeign.customizederrorhandling.client;
import static com.github.tomakehurst.wiremock.client.WireMock.aResponse;
import static com.github.tomakehurst.wiremock.client.WireMock.configureFor;
@@ -15,9 +15,9 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
-import com.baeldung.core.ExampleApplication;
-import com.baeldung.core.customizederrorhandling.exception.ProductNotFoundException;
-import com.baeldung.core.customizederrorhandling.exception.ProductServiceNotAvailableException;
+import com.baeldung.cloud.openfeign.ExampleApplication;
+import com.baeldung.cloud.openfeign.customizederrorhandling.exception.ProductNotFoundException;
+import com.baeldung.cloud.openfeign.customizederrorhandling.exception.ProductServiceNotAvailableException;
import com.github.tomakehurst.wiremock.WireMockServer;
@RunWith(SpringRunner.class)
diff --git a/feign/src/test/java/com/baeldung/core/customizederrorhandling/controller/ProductControllerUnitTest.java b/spring-cloud-modules/spring-cloud-openfeign/src/test/java/com/baeldung/cloud/openfeign/customizederrorhandling/controller/ProductControllerUnitTest.java
similarity index 94%
rename from feign/src/test/java/com/baeldung/core/customizederrorhandling/controller/ProductControllerUnitTest.java
rename to spring-cloud-modules/spring-cloud-openfeign/src/test/java/com/baeldung/cloud/openfeign/customizederrorhandling/controller/ProductControllerUnitTest.java
index 04fd68d3e4..d46c6fd86f 100644
--- a/feign/src/test/java/com/baeldung/core/customizederrorhandling/controller/ProductControllerUnitTest.java
+++ b/spring-cloud-modules/spring-cloud-openfeign/src/test/java/com/baeldung/cloud/openfeign/customizederrorhandling/controller/ProductControllerUnitTest.java
@@ -1,4 +1,4 @@
-package com.baeldung.core.customizederrorhandling.controller;
+package com.baeldung.cloud.openfeign.customizederrorhandling.controller;
import static com.github.tomakehurst.wiremock.client.WireMock.aResponse;
import static com.github.tomakehurst.wiremock.client.WireMock.configureFor;
@@ -21,8 +21,8 @@ import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.MvcResult;
-import com.baeldung.core.customizederrorhandling.client.ProductClient;
-import com.baeldung.core.customizederrorhandling.exception.ErrorResponse;
+import com.baeldung.cloud.openfeign.customizederrorhandling.client.ProductClient;
+import com.baeldung.cloud.openfeign.customizederrorhandling.exception.ErrorResponse;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.github.tomakehurst.wiremock.WireMockServer;
import com.github.tomakehurst.wiremock.client.WireMock;
diff --git a/feign/src/test/java/com/baeldung/core/defaulterrorhandling/client/ProductClientUnitTest.java b/spring-cloud-modules/spring-cloud-openfeign/src/test/java/com/baeldung/cloud/openfeign/defaulterrorhandling/client/ProductClientUnitTest.java
similarity index 93%
rename from feign/src/test/java/com/baeldung/core/defaulterrorhandling/client/ProductClientUnitTest.java
rename to spring-cloud-modules/spring-cloud-openfeign/src/test/java/com/baeldung/cloud/openfeign/defaulterrorhandling/client/ProductClientUnitTest.java
index 8a9fa94074..efbe7a3771 100644
--- a/feign/src/test/java/com/baeldung/core/defaulterrorhandling/client/ProductClientUnitTest.java
+++ b/spring-cloud-modules/spring-cloud-openfeign/src/test/java/com/baeldung/cloud/openfeign/defaulterrorhandling/client/ProductClientUnitTest.java
@@ -1,4 +1,4 @@
-package com.baeldung.core.defaulterrorhandling.client;
+package com.baeldung.cloud.openfeign.defaulterrorhandling.client;
import static com.github.tomakehurst.wiremock.client.WireMock.aResponse;
import static com.github.tomakehurst.wiremock.client.WireMock.configureFor;
@@ -17,8 +17,8 @@ import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.http.HttpStatus;
import org.springframework.test.context.junit4.SpringRunner;
-import com.baeldung.core.ExampleApplication;
-import com.baeldung.core.defaulterrorhandling.model.Product;
+import com.baeldung.cloud.openfeign.ExampleApplication;
+import com.baeldung.cloud.openfeign.defaulterrorhandling.model.Product;
import com.github.tomakehurst.wiremock.WireMockServer;
import feign.FeignException;
diff --git a/feign/src/test/java/com/baeldung/core/defaulterrorhandling/controller/ProductControllerUnitTest.java b/spring-cloud-modules/spring-cloud-openfeign/src/test/java/com/baeldung/cloud/openfeign/defaulterrorhandling/controller/ProductControllerUnitTest.java
similarity index 95%
rename from feign/src/test/java/com/baeldung/core/defaulterrorhandling/controller/ProductControllerUnitTest.java
rename to spring-cloud-modules/spring-cloud-openfeign/src/test/java/com/baeldung/cloud/openfeign/defaulterrorhandling/controller/ProductControllerUnitTest.java
index 798ee9035c..7271aa2672 100644
--- a/feign/src/test/java/com/baeldung/core/defaulterrorhandling/controller/ProductControllerUnitTest.java
+++ b/spring-cloud-modules/spring-cloud-openfeign/src/test/java/com/baeldung/cloud/openfeign/defaulterrorhandling/controller/ProductControllerUnitTest.java
@@ -1,4 +1,4 @@
-package com.baeldung.core.defaulterrorhandling.controller;
+package com.baeldung.cloud.openfeign.defaulterrorhandling.controller;
import static com.github.tomakehurst.wiremock.client.WireMock.aResponse;
import static com.github.tomakehurst.wiremock.client.WireMock.configureFor;
@@ -21,7 +21,7 @@ import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
-import com.baeldung.core.defaulterrorhandling.client.ProductClient;
+import com.baeldung.cloud.openfeign.defaulterrorhandling.client.ProductClient;
import com.github.tomakehurst.wiremock.WireMockServer;
import com.github.tomakehurst.wiremock.client.WireMock;
diff --git a/feign/src/test/java/com/baeldung/core/defaulterrorhandling/controller/TestControllerAdvice.java b/spring-cloud-modules/spring-cloud-openfeign/src/test/java/com/baeldung/cloud/openfeign/defaulterrorhandling/controller/TestControllerAdvice.java
similarity index 88%
rename from feign/src/test/java/com/baeldung/core/defaulterrorhandling/controller/TestControllerAdvice.java
rename to spring-cloud-modules/spring-cloud-openfeign/src/test/java/com/baeldung/cloud/openfeign/defaulterrorhandling/controller/TestControllerAdvice.java
index dfd82ed07d..4f06a82a35 100644
--- a/feign/src/test/java/com/baeldung/core/defaulterrorhandling/controller/TestControllerAdvice.java
+++ b/spring-cloud-modules/spring-cloud-openfeign/src/test/java/com/baeldung/cloud/openfeign/defaulterrorhandling/controller/TestControllerAdvice.java
@@ -1,4 +1,4 @@
-package com.baeldung.core.defaulterrorhandling.controller;
+package com.baeldung.cloud.openfeign.defaulterrorhandling.controller;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;