Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature#504 #571

Closed
wants to merge 24 commits into from
Closed

Feature#504 #571

wants to merge 24 commits into from

Conversation

PabloMartinFluvia
Copy link
Collaborator

@PabloMartinFluvia PabloMartinFluvia commented Apr 19, 2023

TO DO: integration test for GET Raisc by Scope id.
Added 2 diagrams: what is new + posibles TODO involved to upgrade the design.
Feature#504.pdf
Feature#504_potential_TODOs_involved.pdf

This interface will work as a bridge between our services and the data layer. To 'protect' our models and services from possible changes in the data's structure obtained from third parties
Does a call to dataSourceaAdapter, wich returns a Flux<RaiscResponseDto> with ALL the data from source
GencatDataAdapter is our default implementation of DataSourceAdapter: stereotype @repository + does the calls to the proxy and provides our models populated to the service. // GencatJsonDecryptor is an abstract class, but the methods are concrete and protected: has the responsiblity to parse the json to our models + GencatDataAdapter inherit from this 'decryptor'
@PabloMartinFluvia PabloMartinFluvia linked an issue Apr 19, 2023 that may be closed by this pull request
@sonarqubecloud
Copy link

Kudos, SonarCloud Quality Gate passed!    Quality Gate passed

Bug A 0 Bugs
Vulnerability A 0 Vulnerabilities
Security Hotspot A 0 Security Hotspots
Code Smell A 0 Code Smells

81.9% 81.9% Coverage
0.0% 0.0% Duplication

@jonatanvicente
Copy link
Collaborator

Parece que se ha hecho mucho trabajo, con resultado confuso.
En primer lugar, se ha intentado hacer una segmentación o implementación de arquitectura que no tiene cabida a este nivel (la implementación; la arquitectura fue definida hace tiempo) ni tampoco en este escenario (en un microservicio con abstracciones claras provistas por el framework).
Este microservicio únicamente se conecta a una fuente de datos externa, y la capa de abstracción necesaria la provee el patrón Repository de Spring, aislando completamente la dependencia.

La task definida tan sólo solicita:

  • Conectar con la fuente de datos externa (empleando el Proxy incluido)
  • Filtrar por uno o varios parámetros
  • Dar formato a la salida

Hay que revisar en el código lo siguiente:

  • GencatDataAdapter es un ejemplo del antipatrón 'Objeto Todopoderoso' o 'God Object': él mismo es un repository para acceder a datos, incluye llamadas a un proxy, extiende a JsonMapper para hacer mapeos de objetos JSON e implementa también DataSourceAdapter (un servicio). La funcionalidad que abarca es oscura, el tipo de objeto es inclasificable y es muy difícil de testear bien, ya que abarca demasiada casuística.
  • GencatJsonMapper utiliza Log4j de librería lombok. No utilizamos para trazar librerías cuya finalidad es otra.
  • La sobreescritura del método equals y hashcode (de utilidad discutible) son completamente ilegibles. Un condicional de más de 3 o 4 elementos (según el escenario) es una mala praxis.
  • Se añaden clases y packages 'Utils' con responsabilidad difusa. ¿Son Helpers? ¿Son Adaptadores? ¿Conversores? ¿Proxies?
  • Algunos métodos de test incluyen JSON muy extensos 'hard coded' (no intuitivos), que serían fácilmente legibles si se externalizan (como está hecho en otras partes del proyecto).

Revisa esto, por favor ;)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Service Layer filtrado de raisc por scope + tests
2 participants