Skip to content
This repository has been archived by the owner on Sep 1, 2023. It is now read-only.

Commit

Permalink
Fix Neo4jDriverHealthIndicatorAutoConfiguration.
Browse files Browse the repository at this point in the history
- Don’t try manually adding the health indicator for OGM, but run after Neo4jHealthIndicatorAutoConfiguration.class.
- Also rename the configuration (See spring-projects/spring-boot#17963).
  • Loading branch information
michael-simons committed Aug 26, 2019
1 parent 588bb2c commit 98c2873
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 30 deletions.
Expand Up @@ -20,13 +20,12 @@

import java.util.Map;

import org.neo4j.driver.v1.Driver;
import org.neo4j.driver.springframework.boot.actuate.Neo4jHealthIndicator;

import org.neo4j.ogm.session.SessionFactory;
import org.neo4j.driver.v1.Driver;
import org.springframework.boot.actuate.autoconfigure.health.CompositeHealthIndicatorConfiguration;
import org.springframework.boot.actuate.autoconfigure.health.ConditionalOnEnabledHealthIndicator;
import org.springframework.boot.actuate.autoconfigure.health.HealthIndicatorAutoConfiguration;
import org.springframework.boot.actuate.autoconfigure.neo4j.Neo4jHealthIndicatorAutoConfiguration;
import org.springframework.boot.actuate.health.Health;
import org.springframework.boot.actuate.health.HealthIndicator;
import org.springframework.boot.autoconfigure.AutoConfigureAfter;
Expand All @@ -48,16 +47,15 @@
* @soundtrack Iron Maiden - Somewhere In Time
*/
@Configuration
@ConditionalOnClass({ Health.class })
@ConditionalOnClass({ Health.class, Driver.class })
@ConditionalOnEnabledHealthIndicator("neo4j")
@AutoConfigureBefore({HealthIndicatorAutoConfiguration.class,
org.springframework.boot.actuate.autoconfigure.neo4j.Neo4jHealthIndicatorAutoConfiguration.class})
@AutoConfigureAfter({ Neo4jDriverAutoConfiguration.class, Neo4jDataAutoConfiguration.class })
@ConditionalOnBean(Driver.class)
@AutoConfigureBefore({ HealthIndicatorAutoConfiguration.class })
@AutoConfigureAfter({ Neo4jDriverAutoConfiguration.class, Neo4jDataAutoConfiguration.class,
Neo4jHealthIndicatorAutoConfiguration.class })
@ConditionalOnMissingBean(name = "neo4jHealthIndicator")
public class Neo4jHealthIndicatorAutoConfiguration {
public class Neo4jDriverHealthIndicatorAutoConfiguration {

@ConditionalOnClass(Driver.class)
@ConditionalOnBean(Driver.class)
@Order(-20)
static class Neo4jNeo4jHealthIndicatorConfiguration
extends CompositeHealthIndicatorConfiguration<Neo4jHealthIndicator, Driver> {
Expand All @@ -68,17 +66,4 @@ HealthIndicator neo4jHealthIndicator(Map<String, Driver> drivers) {
}

}

@ConditionalOnClass(SessionFactory.class)
@ConditionalOnBean(SessionFactory.class)
@Order(-10)
static class Neo4jOgmHealthIndicatorConfiguration
extends CompositeHealthIndicatorConfiguration<org.springframework.boot.actuate.neo4j.Neo4jHealthIndicator, SessionFactory> {

@Bean
HealthIndicator neo4jHealthIndicator(Map<String, SessionFactory> sessionFactories) {
return createHealthIndicator(sessionFactories);
}

}
}
Expand Up @@ -19,4 +19,4 @@

org.springframework.boot.autoconfigure.EnableAutoConfiguration = \
org.neo4j.driver.springframework.boot.autoconfigure.Neo4jDriverAutoConfiguration,\
org.neo4j.driver.springframework.boot.autoconfigure.Neo4jHealthIndicatorAutoConfiguration
org.neo4j.driver.springframework.boot.autoconfigure.Neo4jDriverHealthIndicatorAutoConfiguration
Expand Up @@ -41,11 +41,14 @@
/**
* @author Michael J. Simons
*/
class Neo4jHealthIndicatorAutoConfigurationTest {
class Neo4jDriverHealthIndicatorAutoConfigurationTest {

private final ApplicationContextRunner contextRunner = new ApplicationContextRunner()
.withConfiguration(
AutoConfigurations.of(HealthIndicatorAutoConfiguration.class, Neo4jHealthIndicatorAutoConfiguration.class));
AutoConfigurations.of(HealthIndicatorAutoConfiguration.class,
Neo4jDriverHealthIndicatorAutoConfiguration.class,
org.springframework.boot.actuate.autoconfigure.neo4j.Neo4jHealthIndicatorAutoConfiguration.class
));

@Nested
class NoMatches {
Expand Down Expand Up @@ -108,10 +111,11 @@ class Matches {
void ogmHealthIndicatorShouldHavePrecedence() {
contextRunner
.withUserConfiguration(WithDriver.class, WithSessionFactory.class)
.run(ctx -> assertThat(ctx)
.doesNotHaveBean(Neo4jHealthIndicator.class)
.hasSingleBean(org.springframework.boot.actuate.neo4j.Neo4jHealthIndicator.class)
);
.run(ctx -> {
assertThat(ctx)
.doesNotHaveBean(Neo4jHealthIndicator.class)
.hasSingleBean(org.springframework.boot.actuate.neo4j.Neo4jHealthIndicator.class);
});
}

@Test
Expand Down

0 comments on commit 98c2873

Please sign in to comment.