# 8.2.5.2. Classes utiles

L’Objectif de Plugin Common est d’inclure tous les classes utiles afin de créer un plugin à partir de ce package .

Les classes de model sont définis sous `/vitam/common/model`.

## 8.2.5.2.1. Classe `Item Status`

Ce classe permet de retourner le statut d’un Item.

## 8.2.5.2.2. Classe `VitamAutoCloseable`

Le mot clé try-with-resources garantit que chaque ressource sera fermée lorsqu’elle n’est plus utilisée. Une ressource et un objet qui implémente l’interface VitamAutoCloseable. Il est donc possible d’utiliser une instance de ces interfaces avec le mot clé try-with-resources.

Les classes de common parameter sont définis sous `/vitam/common/parameter`.

## 8.2.5.2.3. Classe `ParameterHelper`

Ce classe permet de faire un check sur les paramètres et avoir le tenant parameter de session vitam .

## 8.2.5.2.4. Classe `VitamParameter`

Cet interface permet d’aider à créer des nouveaux paramètres liés au classes .

Les classes de common exception sont définis sous `/vitam/processing/common/exception`.

## 8.2.5.2.5. Classe `ProcessingException`

Ce classe est le classe père de tous les Vitam Processing Exception .

Les classes de model common processing sont définis sous `/vitam/processing/common/model`.

## 8.2.5.2.6. Classe `IOParameter`

Ce class permet de définir les paramètres Input et Output pour une action et une step .

## 8.2.5.2.7. Classe `ProcessingUri`

Ce classe permet de formatter le processing URI .

## 8.2.5.2.8. Classe `UriPrefix`

C’est le Handler IO

Les classes des paramètres common sont définis sous `/vitam/processing/common/parameter`.

## 8.2.5.2.9. Classe `AbstractWorkerParameters`

C’est une implémentation abstraite de tous les paramètres de workers .

## 8.2.5.2.10. Classe `DefaultWorkerParameters`

Ce classe permet de définir les paramètres par défaut d’un worker.

## 8.2.5.2.11. Classe `WorkerParameterName`

Ce classe inclut une énumération avec tous les noms des paramètres d’un worker .

## 8.2.5.2.12. Classe `WorkerParameters`

Ce classe permet de définir les paramètres de worker.

## 8.2.5.2.13. Classe `WorkerParametersDeserializer`

Ce classe permet de définir les paramètres d’un worker deserializer.

## 8.2.5.2.14. Classe `WorkerParametersFactory`

Ce classe permet de définir les paramètres d’un worker Factory.

## 8.2.5.2.15. Classe `WorkerParametersSerializer`

Ce classe permet de définir les paramètres de Worker Serializer.

Les classes de model sont définis sous `/vitam/worker/common`.

## 8.2.5.2.16. Interface `HandlerIO`

Cet interface permet de définir les paramètres in et out de tous les Handlers.

Les classes de l’api sont définis sous `/vitam/worker/core/api`.

## 8.2.5.2.17. Classe `WorkerAction`

C’est l’interface contrat de tous les actions Handler event. Un action Handler doit implémenter cette interface .

Les classes de l’implémentation sont définis sous `/vitam/worker/core/impl`.

## 8.2.5.2.18. Classe `HandlerIOImpl`

Ce classe définit les paramètres in et out d’un Handler

How to use : Pour créer un Plugin :

- extends Abstract Class Action Handler
- implementer l’interface VitamAutoCloseable pour garantir qu’une ressource sera fermée lorsqu’elle n’est plus utilisée.
- Un constructeur par défaut
- redéfinir la méthode execute de l’Action Handler :
    - Paramètre WorkerParameters et Handler IO
    - type de retour Item Status
    - throws Processing Exception
- faire l’override de méthode CheckMandatoryIOParameter
    - Paramètre Handler IO
    - throws Processing Exception