... anything that touches JsonCommand is eventually legacy... you should be watching this instead https://issues.apache.org/jira/browse/FINERACT-2169 ... and independently: if it was not touched in such a long time...:
(a) is it still relevant (b) ... or not On Sun, Aug 2, 2026 at 4:48 PM Ashhar Ahmad Khan <[email protected]> wrote: > Hi everyone, > > While going through the infrastructure/entityaccess module I found that > `FineractEntityAccessWriteServiceImpl` has a method, > `createEntityAccess(JsonCommand command)`, that has never had a body: > > ```java > @Override > public CommandProcessingResult createEntityAccess(JsonCommand command) { > // TODO Auto-generated method stub > return null; > } > ``` > > This traces back to the very first commit that created the file, > `9d11434ee7` ("Branch Specific Products and Charges - initial commit", > Binny G Sreevas, Dec 6 2014), where it was already a stub. It has never > been implemented since, on any branch. There is no API route, > `CommandWrapperBuilder` method, permission record, or command handler for > it anywhere in the codebase, and there never has been. > `FineractEntityApiResource` only exposes `createMap`/`updateMap`/`delete`, > which route to > `createEntityToEntityMapping`/`updateEntityToEntityMapping`/`deleteEntityToEntityMapping`, > not to `createEntityAccess`. As far as I can tell this method has been > unreachable from any entry point since it was written. > > The same file has a second method, `addNewEntityAccess(...)`, which was > implemented from the start and did have a caller: > `FineractEntityAccessUtil.checkConfigurationAndAddProductResrictionsForUserOffice(...)`. > That changed in commit `66f8d7ce43` ("Changing dependency of > m_entity_to_entity_access to m_entity_mapping and adding validation for new > loan application", June 9 2016), which rewrote that method to call > `fineractEntityToEntityMappingRepository.save(...)` directly instead, > bypassing the write service entirely. From that point on > `addNewEntityAccess` has had zero callers. > > So the current state is one class, still a live `@Service` bean, still > injected into three command handlers > (`CreateEntityToEntityMappingCommandHandler`, > `UpdateEntityToEntityMappingCommandHandler`, > `DeleteEntityToEntityMappingCommandHandler`) for the methods that are > actually used, sitting alongside two methods that have had no caller for > roughly ten and twelve years respectively. > > On dependency surface, I checked: > > - No reference to `createEntityAccess` or `addNewEntityAccess` in > `fineract-client` or `fineract-client-feign` > - No OpenAPI/swagger entry for `createEntityAccess` > - No test file references either method > - `m_entity_to_entity_access`, the table `addNewEntityAccess` used to > write to, has 0 rows in `load_sample_data.sql`, and the project's own > generated schema docs list it at 0 rows as well > - No frontend file in the repo references either method > > I don't have a strong sense of what the right next step is here. A few > options as I see it: > > (a) implement `createEntityAccess` and restore a caller for > `addNewEntityAccess`, if there was ever an intended use case for > entity-level (as opposed to entity-to-entity-mapping) access control that > just never got finished, > (b) remove both methods along with `FineractEntityAccess`, its repository, > and the underlying table, since nothing appears to depend on any of it, > (c) leave it as is if anyone knows of a reason it's still there, e.g. > downstream forks or a planned use I haven't found, or > (d) something else. > > I don't have a preference yet between these and would like to hear from > the community, particularly if anyone was around for the 2016 change and > remembers why `addNewEntityAccess`'s only call site was rewritten instead > of removed along with it. > > Thanks, > Ashhar >
