From 6eea43b266cc1c5afcaf302209e2b4e5ca0d83bb Mon Sep 17 00:00:00 2001 From: Dave Syer Date: Mon, 1 Apr 2019 15:19:19 +0100 Subject: [PATCH] Fix test for supplier exporter in functional application You need to look beyond the application context (now) since it might still be of type GenericApplicationContext even in a webflux app. --- .../web/source/FunctionExporterInitializer.java | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/spring-cloud-function-web/src/main/java/org/springframework/cloud/function/web/source/FunctionExporterInitializer.java b/spring-cloud-function-web/src/main/java/org/springframework/cloud/function/web/source/FunctionExporterInitializer.java index 44ad3b8de..a3ba12757 100644 --- a/spring-cloud-function-web/src/main/java/org/springframework/cloud/function/web/source/FunctionExporterInitializer.java +++ b/spring-cloud-function-web/src/main/java/org/springframework/cloud/function/web/source/FunctionExporterInitializer.java @@ -16,6 +16,7 @@ package org.springframework.cloud.function.web.source; +import org.springframework.boot.web.reactive.context.ConfigurableReactiveWebEnvironment; import org.springframework.boot.web.reactive.context.ReactiveWebApplicationContext; import org.springframework.cloud.function.context.FunctionCatalog; import org.springframework.cloud.function.context.FunctionRegistration; @@ -23,6 +24,7 @@ import org.springframework.cloud.function.context.config.ContextFunctionCatalogI import org.springframework.context.ApplicationContextInitializer; import org.springframework.context.support.GenericApplicationContext; import org.springframework.util.ClassUtils; +import org.springframework.web.context.ConfigurableWebEnvironment; import org.springframework.web.context.WebApplicationContext; import org.springframework.web.reactive.function.client.WebClient; @@ -52,14 +54,18 @@ class FunctionExporterInitializer } private boolean isExporting(GenericApplicationContext context) { - if (context.getEnvironment().getProperty("spring.cloud.function.web.export", - Boolean.class, false)) { - return true; + Boolean enabled = context.getEnvironment() + .getProperty("spring.cloud.function.web.export.enabled", Boolean.class); + if (enabled != null) { + return enabled; } if (ClassUtils.isPresent("org.springframework.web.context.WebApplicationContext", getClass().getClassLoader())) { if (context instanceof WebApplicationContext - || context instanceof ReactiveWebApplicationContext) { + || context instanceof ReactiveWebApplicationContext + || context.getEnvironment() instanceof ConfigurableWebEnvironment + || context + .getEnvironment() instanceof ConfigurableReactiveWebEnvironment) { return false; } }