Skip to content

Commit

Permalink
Add app-manager invocation call
Browse files Browse the repository at this point in the history
  • Loading branch information
flawmop committed Jan 1, 2025
1 parent 25bcf9a commit 261d362
Show file tree
Hide file tree
Showing 3 changed files with 61 additions and 5 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2,23 +2,28 @@

import java.util.function.Consumer;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestClient;

import com.insilicosoft.portal.svc.simulationinvoke.event.SimulationMessage;
import com.insilicosoft.portal.svc.simulationinvoke.service.InvocationService;

import reactor.core.publisher.Flux;

@Configuration
public class SimulationInvokeConfig {

private static final Logger log = LoggerFactory.getLogger(SimulationInvokeConfig.class);
@Bean
RestClient restClient(final @Value("${URL_APP_MANAGER:http://app-manager:8080/}")
String appManagerUrl) {
return RestClient.builder().baseUrl(appManagerUrl).build();
}

@Bean
Consumer<Flux<SimulationMessage>> simulationInvoke() {
return flux -> flux.doOnNext(simulationMessage -> log.info("The simulation {} is invoked", simulationMessage))
Consumer<Flux<SimulationMessage>> simulationInvoke(final InvocationService invocationService) {
return flux -> flux.doOnNext(simulationMessage -> invocationService.invoke(simulationMessage))
.subscribe();
}

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package com.insilicosoft.portal.svc.simulationinvoke.service;

import com.insilicosoft.portal.svc.simulationinvoke.event.SimulationMessage;

public interface InvocationService {

/**
* Invoke a simulation.
*
* @param simulationMessage Simulation to invoke.
*/
void invoke(SimulationMessage simulationMessage);

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
package com.insilicosoft.portal.svc.simulationinvoke.service;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.http.MediaType;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestClient;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.insilicosoft.portal.svc.simulationinvoke.event.SimulationMessage;

@Service
public class RestInvocationServiceImpl implements InvocationService {

private static final Logger logger = LoggerFactory.getLogger(RestInvocationServiceImpl.class);
private static final ObjectMapper objectMapper = new ObjectMapper();

private final RestClient restClient;

public RestInvocationServiceImpl(final RestClient restClient) {
this.restClient = restClient;
}

@Override
public void invoke(SimulationMessage simulationMessage) {
logger.debug("~invoke() : Called for {}", simulationMessage);
String body = "";
try {
body = objectMapper.writeValueAsString(simulationMessage);
} catch (JsonProcessingException e) {
body = "{ 'error': '" + e.getMessage() + "' }";
}
restClient.post().contentType(MediaType.APPLICATION_JSON).body(body).retrieve().toBodilessEntity();
}

}

0 comments on commit 261d362

Please sign in to comment.