Skip to content
Merged
Show file tree
Hide file tree
Changes from 8 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
39 changes: 18 additions & 21 deletions src/main/java/org/fairdatapoint/config/BootstrapConfig.java
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
package org.fairdatapoint.config;

import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.fairdatapoint.config.properties.BootstrapProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.Resource;
Expand All @@ -33,8 +33,9 @@

import java.io.IOException;
import java.nio.file.Path;
import java.util.Arrays;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;

/**
* The {@code BootstrapConfig} class configures a repository populator to load initial data into the relational
Expand All @@ -55,35 +56,31 @@
@Slf4j
public class BootstrapConfig {
private final ResourcePatternResolver resourceResolver = new PathMatchingResourcePatternResolver();
private final boolean bootstrapEnabled;
private final Path dbFixturesPath;
private final BootstrapProperties bootstrap;

public BootstrapConfig(
@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) {
this.bootstrap = bootstrapProperties;
}

@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");
final Resource[] resources = resourceResolver.getResources("file:" + fixturesPath);
System.out.println(this.bootstrap.getDbFixturesDirs());
final List<Resource> resources = new ArrayList<>();
for (String fixturesDir : this.bootstrap.getDbFixturesDirs()) {
final String locationPattern = "file:" + Path.of(fixturesDir).resolve("*.json");
resources.addAll(List.of(resourceResolver.getResources(locationPattern)));
}
// sort resources to guarantee lexicographic order
Arrays.sort(
resources,
Comparator.comparing(
Resource::getFilename,
Comparator.nullsLast(String::compareTo)
)
);
factory.setResources(resources);
resources.sort(Comparator.comparing(
Resource::getFilename,
Comparator.nullsLast(String::compareTo)
));
factory.setResources(resources.toArray(new Resource[0]));
}
catch (IOException exception) {
exception.printStackTrace();
Expand Down
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;
}
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@
import org.springframework.stereotype.Service;

@Service
@Profile(Profiles.NON_PRODUCTION)
@Profile("none")
public class RdfDevelopmentMigrationRunner {

@Value("${spring.profiles.active}")
Expand Down
5 changes: 4 additions & 1 deletion src/main/resources/application-development.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,9 @@ spring:
username: fdp
password: fdp
flyway:
locations: classpath:dev/db/migration,classpath:db/migration
locations: classpath:db/migration
fail-on-missing-locations: true
clean-disabled: false

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

bootstrap:
db-fixtures-dir: "fixtures"
db-fixtures-dirs:
- "fixtures"
Loading