Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
c2899f9
convert dbFixtureDir property to list
dennisvang Oct 31, 2025
c77dd93
adapt BootstrapConfig to handle multiple directories
dennisvang Oct 31, 2025
bbc2b93
simplify BootstrapConfig resource collection
dennisvang Oct 31, 2025
3f5531b
disable flyway dev data migrations
dennisvang Oct 31, 2025
a953369
disable RdfDevelopmentMigrationRunner
dennisvang Oct 31, 2025
b1f001e
disable bootstrap by default, enable in development
dennisvang Oct 31, 2025
f52109b
fix dbFixturesDirs property list assignment in BootstrapConfig
dennisvang Oct 31, 2025
b60d4ae
undo explicit initialization of bootstrap.enabled
dennisvang Oct 31, 2025
0c50b21
Merge branch 'feature/634-boostrapping-fdp' into proposal/634-multipl…
dennisvang Nov 10, 2025
e40409c
debug log fixtures dirs
dennisvang Nov 10, 2025
c7f43db
log fixtures dirs at info level
dennisvang Nov 10, 2025
a785375
remove unused import
dennisvang Nov 10, 2025
250646b
enable bootstrap by default
dennisvang Nov 10, 2025
060202c
re-enable RdfDevelopmentMigrationRunner
dennisvang Nov 11, 2025
a79f9c8
disable bootstrap for FixtureHistory tests
dennisvang Nov 11, 2025
386cc55
switch to windows-2025 runner (latest)
dennisvang Nov 12, 2025
1471287
note about github runner-images
dennisvang Nov 12, 2025
59cfa3d
Merge branch 'feature/634-boostrapping-fdp' into proposal/634-multipl…
dennisvang Nov 12, 2025
bda58d6
try maven debug output
dennisvang Nov 12, 2025
86f66d3
Revert "try maven debug output"
dennisvang Nov 12, 2025
e378785
try disabling bootstrap
dennisvang Nov 12, 2025
4029b6d
Revert "try disabling bootstrap"
dennisvang Nov 12, 2025
f877668
remove sql-based data migrations from test/resources/test/db/migrations
dennisvang Nov 12, 2025
6c86840
try preliminary workflow with surefire reports
dennisvang Nov 12, 2025
3db1f4e
Revert "try preliminary workflow with surefire reports"
dennisvang Nov 12, 2025
44b5fe4
Revert "remove sql-based data migrations from test/resources/test/db/…
dennisvang Nov 13, 2025
a6b8d40
rename test loggin config so it is picked up automatically
dennisvang Nov 13, 2025
99b47fd
disable mongo autoconfig during tests
dennisvang Nov 13, 2025
6fdb3ef
workaround for path resolution failure on windows
dennisvang Nov 13, 2025
a40a4d3
Revert "rename test logging config so it is picked up automatically"
dennisvang Nov 13, 2025
24d6cda
Revert "disable mongo autoconfig during tests"
dennisvang Nov 13, 2025
81fb68c
concatenate /*.json instead of using Path.resolve
dennisvang Nov 13, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 13 additions & 15 deletions src/main/java/org/fairdatapoint/config/BootstrapConfig.java
Original file line number Diff line number Diff line change
Expand Up @@ -24,10 +24,9 @@

import jakarta.validation.constraints.NotNull;
import lombok.extern.slf4j.Slf4j;
import org.fairdatapoint.config.properties.BootstrapProperties;
import org.fairdatapoint.database.db.repository.FixtureHistoryRepository;
import org.fairdatapoint.entity.bootstrap.FixtureHistory;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.ApplicationListener;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
Expand Down Expand Up @@ -63,30 +62,30 @@
@Slf4j
public class BootstrapConfig {
private final ResourcePatternResolver resourceResolver = new PathMatchingResourcePatternResolver();
private final BootstrapProperties bootstrap;
private final FixtureHistoryRepository fixtureHistoryRepository;
private final boolean bootstrapEnabled;
private final Path dbFixturesPath;
private final List<Resource> resources = new ArrayList<>();

public BootstrapConfig(
FixtureHistoryRepository fixtureHistoryRepository,
@Value("${bootstrap.enabled:false}") boolean bootstrapEnabled,
@Value("${bootstrap.db-fixtures-dir}") String dbFixturesDir
) {
this.bootstrapEnabled = bootstrapEnabled;
this.dbFixturesPath = Path.of(dbFixturesDir);
public BootstrapConfig(BootstrapProperties bootstrapProperties, FixtureHistoryRepository fixtureHistoryRepository) {
this.bootstrap = bootstrapProperties;
this.fixtureHistoryRepository = fixtureHistoryRepository;
}

@Bean
public Jackson2RepositoryPopulatorFactoryBean repositoryPopulator() {
final Jackson2RepositoryPopulatorFactoryBean factory = new Jackson2RepositoryPopulatorFactoryBean();
if (bootstrapEnabled) {
if (this.bootstrap.isEnabled()) {
log.info("Bootstrap repository populator enabled");
try {
// collect fixture resources
final Path fixturesPath = dbFixturesPath.resolve("*.json");
resources.addAll(List.of(resourceResolver.getResources("file:" + fixturesPath)));
log.info("Looking for db fixtures in the following directories: {}",
String.join(", ", this.bootstrap.getDbFixturesDirs()));
for (String fixturesDir : this.bootstrap.getDbFixturesDirs()) {
// Path.of() removes trailing slashes, so it is safe to concatenate "/*.json".
// Note that Path.of(fixturesDir).resolve("*.json") could work on unix but fails on windows.
final String locationPattern = "file:" + Path.of(fixturesDir) + "/*.json";
resources.addAll(List.of(resourceResolver.getResources(locationPattern)));
}
// remove resources that have been applied already
final List<String> appliedFixtures = fixtureHistoryRepository.findAll().stream()
.map(FixtureHistory::getFilename).toList();
Expand Down Expand Up @@ -127,5 +126,4 @@ public void onApplicationEvent(@NotNull RepositoriesPopulatedEvent event) {
}
}
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -28,13 +28,16 @@
import lombok.Setter;
import org.springframework.boot.context.properties.ConfigurationProperties;

import java.util.List;

@NoArgsConstructor
@AllArgsConstructor
@Getter
@Setter
@ConfigurationProperties(prefix = "bootstrap")
public class BootstrapProperties {
// boolean defaults to false
private boolean enabled;
// directories relative to project root
private String dbFixturesDir;
private List<String> dbFixturesDirs;
}
3 changes: 0 additions & 3 deletions src/main/resources/application-development.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,3 @@ spring:
locations: classpath:db/migration
fail-on-missing-locations: true
clean-disabled: false

bootstrap:
enabled: true
4 changes: 3 additions & 1 deletion src/main/resources/application.yml
Original file line number Diff line number Diff line change
Expand Up @@ -113,4 +113,6 @@ server:
forward-headers-strategy: framework

bootstrap:
db-fixtures-dir: "fixtures"
enabled: true
db-fixtures-dirs:
- "fixtures"
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.orm.jpa.AutoConfigureTestEntityManager;
import org.springframework.dao.DataIntegrityViolationException;
import org.springframework.test.context.TestPropertySource;

import java.util.Optional;

Expand All @@ -38,6 +39,7 @@

@AutoConfigureTestEntityManager
@Transactional
@TestPropertySource(properties = "bootstrap.enabled=false")
public class FixtureHistoryRepositoryTests extends BaseIntegrationTest {
@Autowired
FixtureHistoryRepository repository;
Expand Down