OperationHook

Adapter, enrichir, contrôler...

Exemple

Dépendances Maven

<dependency>
	<groupId>com.flower.docs.core</groupId>
	<artifactId>flower-docs-ws-client</artifactId>
	<version>2.4.2</version>
</dependency>
<dependency>
	<groupId>com.flower.docs.apis</groupId>
	<artifactId>flower-docs-operation-api</artifactId>
	<version>2.4.2</version>
</dependency>
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-web</artifactId>
	<version>2.1.5.RELEASE</version>
</dependency>

Hook

@RestController
@RequestMapping("/log")
public class SampleOperationHook extends OperationHook
{
    private static final Logger LOGGER = LoggerFactory.getLogger(SampleOperationHook.class);

    @Override
    public void process(OperationContext context) throws TechnicalException, FunctionalException
    {
        LOGGER.info("Processing context={}", context);
    }
}

Modification du contexte

Sécurité

Configuration

  • accès au Core ws.url

Gestion des erreurs

Par défaut, lors de l’exécution d’un OperationHook, le Core Flower log les erreurs renvoyées en parsant le corps de la réponse HTTP. Pour renvoyer des exceptions Flower adaptées en fonction du contexte, il faut ajouter dans un objet instancié par Spring le code suivant :

@ExceptionHandler(CodeBasedException.class)
public ResponseEntity<Object> handleCustomException(CodeBasedException ex, WebRequest request)
{
    HttpHeaders headers = new HttpHeaders();
    headers.add("code", ex.getCode());
    headers.add("message", ex.getMessage());
    return new ResponseEntity<Object>(headers, HttpStatus.INTERNAL_SERVER_ERROR);
}


Dans le cas d’OperationHook synchrones, il est possible de renvoyer des messages d’erreurs personnalisés à l’utilisateur final. Pour cela, il est nécessaire d’utiliser le code d’erreur F00039 :

throw ExceptionBuilder.createFunctionalException(F00039, "", "Custom error message");