J'ai cette route camel où les valeurs json d'une URL sont insérées dans ma base de données. Code :apache camel hibernate insert
@Override
public void configure() throws Exception {
//voor elke tabel een andere route want bij wijzigingen json formaat crashed enkel 1 routebuilder
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.configure(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES, false);
DataFormat jenkinsConfigFormat = new JacksonDataFormat(objectMapper, JenkinsConfiguration.class);
jenkinsConfigurations = configurationService.listJenkinsConfigurations();
logger.info("Starting routes for " + jenkinsConfigurations.size() + " jenkins configurations");
for (JenkinsConfiguration configuration : jenkinsConfigurations) {
from("timer://foo?fixedRate=true&period=120s&delay=20s")
.to(configuration.getUrl() + "/api/json")
.routeId(BUILD_ROUTE)
.unmarshal(jenkinsConfigFormat)
.enrich("direct:jenkinsconfig", new UseLatestAggregationStrategy())
.split(simple("${body.builds}"))
.choice()
.when(buildNumberAlreadyExists())
.otherwise()
.to("hibernate:be.kdg.teamf.model.Build")
.end();
from("timer://foo?fixedRate=true&period=120s&delay=20s")
.routeId(HEALTH_ROUTE)
.to(configuration.getUrl() + "/api/json")
.unmarshal(jenkinsConfigFormat)
.enrich("direct:jenkinsconfig", new UseLatestAggregationStrategy())
.split(simple("${body.healthReport}"))
.choice()
.when(healthReportAlreadyExists())
.otherwise()
.to("hibernate:be.kdg.teamf.model.HealthReport")
.end();
from("timer://foo?fixedRate=true&period=120s&delay=20s")
.routeId(MODULE_ROUTE)
.to(configuration.getUrl() + "/api/json")
.unmarshal(jenkinsConfigFormat)
.enrich("direct:jenkinsconfig", new UseLatestAggregationStrategy())
.split(simple("${body.modules}"))
.choice()
.when(moduleAlreadyExists())
.otherwise()
.to("hibernate:be.kdg.teamf.model.Module")
.end();
List<Build> jenkinsBuilds = buildService.getBuildsJenkinsProject(configuration);
DataFormat buildConfigFormat = new JacksonDataFormat(objectMapper, BuildDetail.class);
Comme vous pouvez le voir tous les jenkinsBuilds sont chargés dans une liste:
List<Build> jenkinsBuilds = buildService.getBuildsJenkinsProject(configuration);
La première fois que je lance le programme de la liste est vide. La deuxième fois que j'exécute le programme, la liste est capable d'obtenir les valeurs voulues de ma base de données.
Ma question est: Comment puis-je configurer mes routes afin que la liste contienne les mêmes valeurs que lorsque je l'exécute la deuxième fois?
Est-il possible de redémarrer toute la méthode Configure()?
merci à l'avance