Saltar al contenido principal
Versión: main (sin publicar)

API pública sin documentar

Clases públicas de los módulos core-* que no tienen Javadoc a nivel de tipo en el código fuente. Esta página no inventa descripciones — es una lista de trabajo pendiente para que el equipo complete la documentación en el código, que es donde corresponde.

31 de 110 tipos públicos (28 %) no tienen Javadoc en la declaración del tipo.

Método usado: se recorrieron todos los core-*/src/main/java/**/*.java, se localizó la declaración del tipo público de primer nivel y se verificó si está precedida por un bloque /** … */ (saltando anotaciones multilínea y comentarios //).

:::note "Sin Javadoc de tipo" no siempre significa "sin ninguna documentación" Varias clases de configuración documentan sus campos individualmente aunque el tipo no tenga cabecera. Están marcadas abajo — para esas, lo que falta es una línea que explique el propósito general de la clase. :::

core-auth (14)

TipoClaseArchivo
classApiKeyPropertiescore-auth/src/main/java/dev/echotechs/core/auth/apikey/ApiKeyProperties.java
interfaceApiKeyRepositorycore-auth/src/main/java/dev/echotechs/core/auth/apikey/ApiKeyRepository.java
classJwtPropertiescore-auth/src/main/java/dev/echotechs/core/auth/jwt/JwtProperties.java
interfaceServiceAccountClientRepositorycore-auth/src/main/java/dev/echotechs/core/auth/serviceaccount/ServiceAccountClientRepository.java
classRefreshTokenPropertiescore-auth/src/main/java/dev/echotechs/core/auth/session/RefreshTokenProperties.java
interfaceRefreshTokenRepositorycore-auth/src/main/java/dev/echotechs/core/auth/session/RefreshTokenRepository.java
interfaceUserSessionRepositorycore-auth/src/main/java/dev/echotechs/core/auth/session/UserSessionRepository.java
classAuthCookiePropertiescore-auth/src/main/java/dev/echotechs/core/auth/web/AuthCookieProperties.java
recordAuthenticatedUsercore-auth/src/main/java/dev/echotechs/core/auth/web/AuthenticatedUser.java
recordClientCredentialsRequestcore-auth/src/main/java/dev/echotechs/core/auth/web/dto/ClientCredentialsRequest.java
recordLoginRequestcore-auth/src/main/java/dev/echotechs/core/auth/web/dto/LoginRequest.java
recordPasswordResetConfirmDtocore-auth/src/main/java/dev/echotechs/core/auth/web/dto/PasswordResetConfirmDto.java
recordPasswordResetRequestDtocore-auth/src/main/java/dev/echotechs/core/auth/web/dto/PasswordResetRequestDto.java
recordTokenResponsecore-auth/src/main/java/dev/echotechs/core/auth/web/dto/TokenResponse.java

Los cinco DTOs de web/dto son parte del contrato HTTP público de core-auth — son los que un generador de OpenAPI expondría, así que son los de mayor prioridad.

AuthenticatedUser es el tipo de retorno de UserCredentialAuthenticator, una de las dos interfaces que todo proyecto de dominio tiene que implementar. Que no tenga Javadoc es notable dado que la interfaz que lo devuelve sí lo tiene.

core-storage (6)

TipoClaseArchivo
recordDownloadLinkcore-storage/src/main/java/dev/echotechs/core/storage/DownloadLink.java
recordFileDescriptorcore-storage/src/main/java/dev/echotechs/core/storage/FileDescriptor.java
interfaceFileMetadataRepositorycore-storage/src/main/java/dev/echotechs/core/storage/FileMetadataRepository.java
enumFileStatuscore-storage/src/main/java/dev/echotechs/core/storage/FileStatus.java
classStoragePropertiescore-storage/src/main/java/dev/echotechs/core/storage/StorageProperties.java
recordInitiateUploadRequestcore-storage/src/main/java/dev/echotechs/core/storage/web/dto/InitiateUploadRequest.java

FileDescriptor es el tipo de retorno de tres métodos públicos de FileStorageService y del controller — vale la pena documentar por qué deliberadamente no expone bucket ni objectKey.

FileStatus documenta las tres constantes pero no el enum.

core-config (4)

TipoClaseArchivo
interfaceConfigEntryRepositorycore-config/src/main/java/dev/echotechs/core/config/ConfigEntryRepository.java
classConfigPropertiescore-config/src/main/java/dev/echotechs/core/config/ConfigProperties.java
recordConfigEntryResponsecore-config/src/main/java/dev/echotechs/core/config/web/dto/ConfigEntryResponse.java
recordUpdateConfigValueRequestcore-config/src/main/java/dev/echotechs/core/config/web/dto/UpdateConfigValueRequest.java

ConfigEntryResponse tiene un campo organizationSpecific cuyo significado (si el valor es un override o el default de plataforma) no es evidente desde el nombre.

core-notifications (2)

TipoClaseArchivo
enumNotificationChannelcore-notifications/src/main/java/dev/echotechs/core/notifications/NotificationChannel.java
classNotificationPropertiescore-notifications/src/main/java/dev/echotechs/core/notifications/NotificationProperties.java

NotificationChannel documenta bien la constante PUSH (incluido que no hay sender para ella) pero no el enum.

core-web (2)

TipoClaseArchivo
classConflictExceptioncore-web/src/main/java/dev/echotechs/core/web/error/ConflictException.java
classResourceNotFoundExceptioncore-web/src/main/java/dev/echotechs/core/web/error/ResourceNotFoundException.java

Las otras dos excepciones del paquete (ApiException, UnauthorizedException) sí tienen Javadoc, así que la inconsistencia salta a la vista. Falta documentar el status y el code que produce cada una — ResourceNotFoundException fija RESOURCE_NOT_FOUND, mientras ConflictException recibe el code por parámetro.

core-authz (1)

TipoClaseArchivo
classOpenFgaPropertiescore-authz/src/main/java/dev/echotechs/core/authz/OpenFgaProperties.java

core-reporting (1)

TipoClaseArchivo
classReportGenerationExceptioncore-reporting/src/main/java/dev/echotechs/core/reporting/ReportGenerationException.java

Convendría documentar que no extiende ApiException, por lo que GlobalExceptionHandler la traduce a 500 y no a un 4xx.

core-workflow (1)

TipoClaseArchivo
interfaceWorkflowTransitionRepositorycore-workflow/src/main/java/dev/echotechs/core/workflow/WorkflowTransitionRepository.java

core-persistence (0)

Sin pendientes: su único tipo público, CoreEntity, está documentado.


⚑ = el tipo no tiene Javadoc de cabecera, pero documenta campos o constantes individuales.

Prioridad sugerida

  1. DTOs de contrato HTTP (core-auth/web/dto/*, InitiateUploadRequest, UpdateConfigValueRequest, ConfigEntryResponse) — son la superficie pública de la API y lo primero que aparecería en un OpenAPI generado.
  2. Tipos de retorno de la API pública (AuthenticatedUser, FileDescriptor, DownloadLink, TokenResponse) — los ve todo consumidor.
  3. Clases *Properties — sólo la cabecera; los campos ya están documentados en casi todas.
  4. Repositorios — los de menor prioridad; son interfaces derivadas de Spring Data cuyos nombres de método ya se autoexplican.