Skip to content
mekor-dev edited this page Sep 30, 2020 · 20 revisions

Hello (EN)

Hello FR

Hi and welcome on this wiki!
On this page, I will describe my folders structure and some important classes. If you want information about the different systems in this project, check the right column !

mekor/rest/quickstart/configuration

This package contains every configuration related classes. Here are some:

  • AppConfig: Holds environment dependent properties (see Here )
  • RestAPI: Configure the root URI of the API. General JAX-RS configuration is done in this class.
  • exception handlers: They handle exceptions and return a JSON APIError instead of the default HTML page.
  • request filters: They do some process before or after executing every endpoint method (getting locale, adding default headers...)

mekor/rest/quickstart/api

This package contains all the class defining the endpoints of the application.

It also contains some pretty useful utils classes:

  • APIUtils: contains some utility methods used in the API (return an error, create a response with pagination headers...)
  • CurrentRequest: Holds useful information fetched by RequestFilters (authenticated user, used locale...)
  • APIError: An object that encapsulate exceptions to parse them in a nice looking JSON.

mekor/rest/quickstart/exceptions

This package contains every exceptions that I created. There is often an exception handler associated with these exceptions.

mekor/rest/quickstart/model

This package contains every entities, DTOs and their associated mappers. You can see Mapstruct documentation to know how the mapping is done.

There is also some utils or mother classes:

  • LocalizedString: Allow to persist localized strings in DB. Format: {"fr": "Texte français", "en: "English text"}
  • GenericEntity and SingleIDEntity: Mother classes of every entities (holds creation date, update date...)
  • GenericDTO and SingleIDDTO: Mother classes of every DTOs.
  • /mekor/rest/quickstart/model/mappers/utils: Used to ease the mappers writing.

/mekor/rest/quickstart/repositories

This package contains every repositories. They allow easy writing of DB management methods. I'm using the Deltaspike Data Module and QueryDSL.

The GenericRepository class holds some default behavior for every repositories.

/mekor/rest/quickstart/services

This package contains every business related classes.

/mekor/rest/quickstart/security

This package contains the authentication system and the security system. More information Here

/mekor/rest/quickstart/utils

Some utility classes. Here are some:

  • GsonUtils: Class for easy JSON parsing
  • GsonIgnore: Annotation for ignoring a field when using GsonUtils
  • LocaleUtils: Class for parsing locale and storing supported locales and default locale.
  • ApplicationPage: Holds front-end application URIs (for Notification or email building for exemple)

Hello (FR)

Hello EN

Bonjour et bienvenu sur ce Wiki !
Sur cette page, je détaille la structure de dossiers de mon projet et quelques classes importantes. Si vous voulez plus d'informations sur les différents systèmes qui composent ce projet, faites un tour dans la colonne de droite !

mekor/rest/quickstart/configuration

Ce package contient toutes les classes de configuration. En voila quelques-unes:

  • AppConfig: Contient les propriété dépendantes de l'environnement (Voir Ici )
  • RestAPI: Définit l'URI racine de l'API. La configuration de JAX-RS se fait également dans cette classe.
  • exception handlers: Il gèrent les exceptions et renvoient un joli APIError en JSON au lieu de la page HTML par défaut.
  • request filters: Il exécutent du code avant et après mes méthodes de l'API (récupérer la locale, ajouter les header par défaut...)

mekor/rest/quickstart/api

Ce package contient toutes les classes de l'API.

Il contient également quelques classes utils :

  • APIUtils: Contient des méthodes utils utilisées dans l'API (retourner une erreur, créer une réponse en ajoutant les headers de pagination...)
  • CurrentRequest: Contient des informations utiles récupérées par les RequestFilters (utilisateur authentifié, locale de la requête...)
  • APIError: Un objet qui encapsule les exceptions pour les parser en un joli JSON

mekor/rest/quickstart/exceptions

Ce package contient toutes les exceptions que j'ai crée. Souvent, un ExceptionHandler est associé à ces exceptions.

mekor/rest/quickstart/model

Ce packge contient toutes les entités, DTOs et leur Mappers associés. Voici la Documentation Mapstruct pour savoir comment le mapping est effectué.

Il contient également quelques classes utils et classes mères :

  • LocalizedString: Permet de persister des chaines de caractères localisées en base de données. Format: {"fr": "Texte français", "en: "English text"}
  • GenericEntity and SingleIDEntity: Classes mères de toutes les entités (stocke la date dé création, date de mise à jour...)
  • GenericDTO and SingleIDDTO: Classes mères de toutes les DTOs
  • /mekor/rest/quickstart/model/mappers/utils: Utilisées pour faciliter l'écriture des mappers.

/mekor/rest/quickstart/repositories

Ce package contient touts les repositories. Il permettent d'écrire facilement des méthodes de gestion de la DB. J'utilise le Data Module de Deltaspike et QueryDSL.

La classe GenericRepository contient le comportement par défaut des repositories.

/mekor/rest/quickstart/services

Ce package contient la totalité des classes métiers

/mekor/rest/quickstart/security

Ce package contient le système d'authentification et de sécurité. Plus d'information Ici

/mekor/rest/quickstart/utils

Quelques classes utils:

  • GsonUtils: Classe pour simplifier le parsing JSON
  • GsonIgnore: Annotation pour ignorer un attribut lorsqu'on utilise GsonUtils
  • LocaleUtils: Classe pour parser les locales et stocker les locales supportées et la locale par défaut
  • ApplicationPage: Contient les URIs de l'application Front-End (pour la construction des notifications ou des email par exemple)