Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ConfigBean not resolving config correctly #6652

Merged
merged 1 commit into from
Apr 19, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -255,13 +255,12 @@ public void onPhaseEvent(Event event,
}
} else if (phase == Phase.FINAL_RESOLVE) {
// post-initialize ourselves
if (isRootProvider()) {
if (drivesActivation()) {
ContextualServiceQuery query = DefaultContextualServiceQuery
.builder().serviceInfoCriteria(PicoServices.EMPTY_CRITERIA)
.build();
maybeActivate(query);
}
if (isRootProvider()
&& drivesActivation()) {
ContextualServiceQuery query = DefaultContextualServiceQuery
.builder().serviceInfoCriteria(PicoServices.EMPTY_CRITERIA)
.build();
maybeActivate(query);
}

assertInitialized(true);
Expand Down Expand Up @@ -668,6 +667,7 @@ protected boolean drivesActivation() {
*/
// expected that the generated configured service overrides this to set its new config bean value
protected CB acceptConfig(Config config) {
assertIsInitializing();
return Objects.requireNonNull(toConfigBean(config));
}

Expand Down Expand Up @@ -720,20 +720,16 @@ void resolveConfigDrivenServices() {

LogEntryAndResult logEntryAndResult = createLogEntryAndResult(Phase.PENDING);
try {
if (csp.configBean().isEmpty()) {
throw new PicoServiceProviderException("Expected service to have been configured already", this);
}
csp.startTransitionCurrentActivationPhase(logEntryAndResult, Phase.PENDING);
io.helidon.common.config.Config commonConfig = PicoServices.realizedGlobalBootStrap().config()
.orElseThrow(this::expectedConfigurationSetGlobally);
csp.acceptConfig(commonConfig);
} catch (Throwable t) {
csp.onFailedFinish(logEntryAndResult, t, true);
}
});
}

private PicoException expectedConfigurationSetGlobally() {
return new PicoException("Expected to have configuration set globally - see PicoServices.globalBootstrap()");
}

private void activateConfigDrivenServices() {
assertIsInitialized();
assert (isRootProvider());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,12 +34,12 @@
import io.helidon.builder.AttributeVisitor;
import io.helidon.builder.config.ConfigBean;
import io.helidon.builder.config.spi.ConfigBeanInfo;
import io.helidon.builder.config.spi.ConfigProvider;
import io.helidon.builder.config.spi.MetaConfigBeanInfo;
import io.helidon.common.config.Config;
import io.helidon.common.config.ConfigException;
import io.helidon.config.ConfigValue;
import io.helidon.config.metadata.ConfiguredOption;
import io.helidon.pico.api.Bootstrap;
import io.helidon.pico.api.PicoException;
import io.helidon.pico.api.PicoServiceProviderException;
import io.helidon.pico.api.PicoServices;
Expand Down Expand Up @@ -185,8 +185,8 @@ public void initialize(PicoServices ignoredPicoServices) {
Config config = PicoServices.realizedGlobalBootStrap().config().orElse(null);
if (config == null) {
LOGGER.log(System.Logger.Level.WARNING,
"unable to initialize - no config to read - be sure to provide or initialize "
+ ConfigProvider.class.getName() + " prior to service activation.");
"Unable to initialize - there is no config to read - be sure to initialize "
+ Bootstrap.class.getName() + " config prior to service activation.");
reset(true);
return;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -141,8 +141,8 @@ void testRegistry() {
list = services.lookupAll(criteria);
desc = list.stream().map(ServiceProvider::description).collect(Collectors.toList());
assertThat("no root providers expected in result, but all are auto-started unless overridden", desc,
contains("FakeWebServer{3}:ACTIVE",
"FakeWebServerNotDrivenAndHavingConfiguredByOverrides{2}:PENDING"));
contains("FakeWebServer{fake-server}:ACTIVE",
"FakeWebServerNotDrivenAndHavingConfiguredByOverrides{fake-server}:PENDING"));

criteria = DefaultServiceInfoCriteria.builder()
.serviceTypeName(FakeTlsWSNotDrivenByCB.class.getName())
Expand Down Expand Up @@ -173,7 +173,7 @@ void testRegistry() {
list = services.lookupAll(criteria);
desc = list.stream().map(ServiceProvider::description).collect(Collectors.toList());
assertThat("Slave providers expected here since we have default configuration for this service", desc,
contains("ASingletonService{1}:ACTIVE"));
contains("ASingletonService{@default}:ACTIVE"));
}

// @Test
Expand Down