Ashhar Ahmad Khan created FINERACT-2782:
-------------------------------------------
Summary: UPDATE /v1/email endpoint throws
UnsupportedCommandException despite being documented
Key: FINERACT-2782
URL: https://issues.apache.org/jira/browse/FINERACT-2782
Project: Apache Fineract
Issue Type: Bug
Reporter: Ashhar Ahmad Khan
What is broken
EmailApiResource exposes CREATE, RETRIEVE, UPDATE, DELETE endpoints for
/v1/email. CREATE and DELETE have working @CommandType handlers; UPDATE
does not, so calling the UPDATE endpoint throws UnsupportedCommandException
despite the endpoint existing and being documented.
Why it's broken
Everything downstream of the handler already exists and is correct:
- EmailWritePlatformService.update(Long, JsonCommand) — interface method
already declared
- EmailWritePlatformServiceJpaRepositoryImpl.update(...) — already
implemented (validates, assembles, applies changes, saves only if
changed, returns CommandProcessingResult)
- EmailApiResource.java — already calls
CommandWrapperBuilder().updateEmail(resourceId)
- UPDATE_EMAIL permission — already exists in
fineract-provider/src/main/resources/db/changelog/tenant/parts/0002_initial_data.xml,
same pattern as CREATE_EMAIL/DELETE_EMAIL
The only missing piece is the command handler itself, routing
@CommandType(entity="EMAIL", action="UPDATE") to the existing service
method.
Changes made
- Added UpdateEmailCommandHandler.java, matching the structural pattern
of CreateEmailCommandHandler.java and the sibling
UpdateEmailCampaignCommandHandler.java (@Service,
@RequiredArgsConstructor, single injected write service,
@Transactional processCommand calling .update(command.entityId(), command))
Note: no test coverage exists for the /emails resource at any layer
(CREATE/RETRIEVE/UPDATE/DELETE), and a separate, pre-existing validator
bug was found while investigating this (EmailDataValidator validates
against the wrong resource's constants). Both are being tracked and
will be fixed in a different ticket, since they are
independent of this handler-wiring fix.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)