You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@fineract.apache.org by ju...@apache.org on 2019/10/19 18:08:46 UTC
[fineract-cn-permitted-feign-client] 05/36: Identity acquired now
via feign builder instead of autowiring because pulling in configuration
via @FeignClient causes it to be used for *all* the feign clients.
This is an automated email from the ASF dual-hosted git repository.
juhan pushed a commit to branch 0.1.x
in repository https://gitbox.apache.org/repos/asf/fineract-cn-permitted-feign-client.git
commit f7b8d32c9e677e3f7a68fff3611bb107ead67268
Author: myrle-krantz <mk...@mifos.org>
AuthorDate: Mon May 22 16:34:32 2017 +0200
Identity acquired now via feign builder instead of autowiring because pulling in configuration via @FeignClient causes it to be used for *all* the feign clients.
---
...entConfiguration.java => LibraryConstants.java} | 12 ++------
.../config/PermittedFeignClientConfiguration.java | 36 +++++++++++++++++++++-
2 files changed, 38 insertions(+), 10 deletions(-)
diff --git a/library/src/main/java/io/mifos/permittedfeignclient/config/PermittedFeignClientConfiguration.java b/library/src/main/java/io/mifos/permittedfeignclient/LibraryConstants.java
similarity index 63%
copy from library/src/main/java/io/mifos/permittedfeignclient/config/PermittedFeignClientConfiguration.java
copy to library/src/main/java/io/mifos/permittedfeignclient/LibraryConstants.java
index b37a43b..f9e4493 100644
--- a/library/src/main/java/io/mifos/permittedfeignclient/config/PermittedFeignClientConfiguration.java
+++ b/library/src/main/java/io/mifos/permittedfeignclient/LibraryConstants.java
@@ -13,17 +13,11 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package io.mifos.permittedfeignclient.config;
-
-import io.mifos.anubis.config.EnableAnubis;
-import org.springframework.cloud.netflix.feign.EnableFeignClients;
-import org.springframework.context.annotation.Configuration;
+package io.mifos.permittedfeignclient;
/**
* @author Myrle Krantz
*/
-@EnableAnubis
-@EnableFeignClients(basePackages = {"io.mifos.identity.api.v1"})
-@Configuration
-public class PermittedFeignClientConfiguration {
+public interface LibraryConstants {
+ String LOGGER_NAME = "permitted-feign-client-logger";
}
diff --git a/library/src/main/java/io/mifos/permittedfeignclient/config/PermittedFeignClientConfiguration.java b/library/src/main/java/io/mifos/permittedfeignclient/config/PermittedFeignClientConfiguration.java
index b37a43b..2e3f442 100644
--- a/library/src/main/java/io/mifos/permittedfeignclient/config/PermittedFeignClientConfiguration.java
+++ b/library/src/main/java/io/mifos/permittedfeignclient/config/PermittedFeignClientConfiguration.java
@@ -15,15 +15,49 @@
*/
package io.mifos.permittedfeignclient.config;
+import feign.Client;
+import feign.Feign;
+import feign.gson.GsonDecoder;
+import feign.gson.GsonEncoder;
import io.mifos.anubis.config.EnableAnubis;
+import io.mifos.core.api.util.AnnotatedErrorDecoder;
+import io.mifos.core.api.util.TenantedTargetInterceptor;
+import io.mifos.core.api.util.TokenedTargetInterceptor;
+import io.mifos.identity.api.v1.client.IdentityManager;
+import io.mifos.permittedfeignclient.LibraryConstants;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.cloud.netflix.feign.EnableFeignClients;
+import org.springframework.cloud.netflix.feign.support.SpringMvcContract;
+import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
+import javax.annotation.Nonnull;
+
/**
* @author Myrle Krantz
*/
@EnableAnubis
-@EnableFeignClients(basePackages = {"io.mifos.identity.api.v1"})
@Configuration
public class PermittedFeignClientConfiguration {
+ @Bean(name = LibraryConstants.LOGGER_NAME)
+ public Logger logger() {
+ return LoggerFactory.getLogger(LibraryConstants.LOGGER_NAME);
+ }
+
+ @Bean
+ public IdentityManager identityManager(
+ final @Nonnull Client feignClient,
+ final @Qualifier(LibraryConstants.LOGGER_NAME) @Nonnull Logger logger) {
+ return Feign.builder()
+ .contract(new SpringMvcContract())
+ .client(feignClient) //Integrates to ribbon.
+ .errorDecoder(new AnnotatedErrorDecoder(logger, IdentityManager.class))
+ .requestInterceptor(new TenantedTargetInterceptor())
+ .requestInterceptor(new TokenedTargetInterceptor())
+ .decoder(new GsonDecoder())
+ .encoder(new GsonEncoder())
+ .target(IdentityManager.class, "https://identity-v1");
+ }
}