src/testEste documento continua atual como referência técnica do piloto
interno que provou o baseline resource-oriented dentro do
starter. Ele não é onboarding básico; é uma prova operacional e
histórica do endurecimento interno do core novo.
Antes de migrar qualquer consumidor externo, o
praxis-metadata-starter precisa provar o novo core
resource-oriented dentro do proprio repositorio.
O piloto oficial desta fase fica em:
src/test/java/org/praxisplatform/uischema/controller/base/AbstractResourceControllerJpaWriteIntegrationTest.javaEle substitui o piloto JPA de escrita que antes exercitava:
AbstractCrudControllerAbstractBaseCrudServicee passa a validar o contrato canonico novo com:
AbstractResourceControllerAbstractBaseResourceServiceResourceMapper@ResourceIntentEmployeeResponseDtoCreateEmployeeDtoUpdateEmployeeDtoUpdateEmployeeProfileDtoO recurso de teste nao usa mais DTO unico.
Ele nasce com:
EmployeeResponseDto para leituraCreateEmployeeDto para
POST /integration-employeesUpdateEmployeeDto para
PUT /integration-employees/{id}UpdateEmployeeProfileDto para
PATCH /integration-employees/{id}/profileEmployeeFilterDto para query/filterO service piloto usa:
AbstractBaseResourceService<Employee, EmployeeResponseDto, Long, EmployeeFilterDto, CreateEmployeeDto, UpdateEmployeeDto>Isso prova que o boundary novo preserva:
datasetVersionO controller piloto usa:
AbstractResourceController<EmployeeResponseDto, Long, EmployeeFilterDto, CreateEmployeeDto, UpdateEmployeeDto>Isso prova a surface HTTP nova para:
POST /integration-employeesPUT /integration-employees/{id}PATCH /integration-employees/{id}/profileGET /integration-employees/{id}GET /integration-employees/allGET /integration-employees/by-idsDELETE /integration-employees/{id}DELETE /integration-employees/batchGET /integration-employees/schemasO piloto nao valida so payload de negocio. Ele tambem prova que a camada documental acompanha o core novo:
GET /v3/api-docs/integration-employeesGET /schemas/filtered?path=/integration-employees&operation=post&schemaType=requestGET /schemas/filtered?path=/integration-employees/{id}&operation=put&schemaType=requestGET /schemas/filtered?path=/integration-employees/{id}/profile&operation=patch&schemaType=requestCom isso, o starter garante que:
POST referencia CreateEmployeeDtoPUT referencia UpdateEmployeeDtoPATCH /{id}/profile referencia
UpdateEmployeeProfileDto/schemas/filtered resolve corretamente os contratos de
create, update e patch por intencaoO piloto cobre o ciclo essencial do recurso migrado:
Location e X-Data-VersionAntes de sair deste starter para outro projeto, a suite focal minima do piloto deve passar:
mvn "-Dtest=AbstractResourceControllerJpaWriteIntegrationTest,AbstractBaseResourceServiceTest,AbstractResourceControllerMappedCrudTest,AbstractResourceQueryControllerGetByIdsTest,AbstractResourceControllerLinksTest,AbstractResourceQueryControllerHateoasTest,AbstractResourceQueryControllerBasePathDetectionTest,AbstractReadOnlyResourceControllerLinksTest,ApiDocsControllerTest,ApiDocsControllerPathResolutionTest,OpenApiDocsSupportTest,DynamicSwaggerConfigTest" testObservacao:
/schemas/filtered ainda podem emitir warning
sobre x-ui.resource.idField ausente em request DTOs de
create, update e patch por intencao; no estado atual do core isso e
esperado e nao caracteriza regressao do pilotoNao devemos migrar praxis-api-quickstart ou qualquer
outro host enquanto este piloto nao estiver:
O piloto em src/test ja prova que o starter suporta, de
ponta a ponta:
response, create,
update e filterPATCH resource-oriented por intencaoOpenAPI individual do recurso/schemas/filtered para create, update e patchAo migrar o primeiro consumidor externo, siga esta ordem:
ResponseDTOCreateDTOUpdateDTOFilterDTOAbstractResourceController, se o recurso for
mutavelAbstractReadOnlyResourceController, se o recurso for
query-onlyAbstractBaseResourceServiceAbstractReadOnlyResourceService@ResourceIntent, @UiSurface e
@WorkflowAction apenas quando houver operacoes reais
correspondentes/schemas/filtered/schemas/catalog/schemas/surfaces/schemas/actions/capabilitiesv2surfaces,
actions ou capabilitiesQualquer ajuste no core AbstractResource* que
altere:
datasetVersiondeve primeiro manter este piloto verde.
Se o piloto quebrar, a mudanca ainda nao esta pronta para sair do starter.