Respetando la Arquitectura Hexagonal, se presenta la estructura del proyecto.
Dentro de src/main/java/ar/edu/unq/free_market se encuentran los directorios:
Es donde se encuentran definidos los adapters que implementan los diferentes casos de uso, estos se encuentran divididos
segun a la entidad a la cual pertenecen (product, sale, seller y user). Tambien esta el subdirectorio exceptions, el cual
contiene todas las excepciones que se lanzan en ls validaciones de esta capa de la arquitectura, y el subdirectorio filters
con los filtros para las búsquedas.
En Domain tenemos:
-
model: Con todas las clases relacionadas al modelo. -
port:in: Es donde se definen todos los puertos que deben ser implementados por los adapters de entrada, en la capa de applicación, estos puertos estan divididos según la entidad con la cual trabajan (product,sale,selleryuser).out: Es donde se encuentran los puertos que deben ser implementados por los adapters de salida, en la capa de infrastructura.
En Infrastructure tenemos:
persistence: En donde se encuentran, agrupados según la entidad (product,sale,selleryuser), los adapters que implementan los ports de entrada, los repositories de MongoDB y las clases de documento.web: En donde se encuentran loscontrollers, los cuales utilizan losportsde entrada para comunicarse y realizar acciones sobre el dominio. Tambien está elGlobalExceptionHandler, para handlear todas lasexceptionsy retornar responses adecuadas al usuario, y losdtos, ya sean de entrada o de salida.