Interface ProtocolReadService

All Known Implementing Classes:
ProtocolReadServiceImpl

public interface ProtocolReadService
Read-only retrieval service for Protocol.

Phase 3 of the ProtocolService decomposition (strangler fig). This service houses the DAO-bound read cluster previously implemented directly on the ProtocolServiceImpl facade: findByName and loadAllUniqueByName. Both methods delegate straight to ProtocolDao.

Write-side methods (the inherited BaseService mutators create, findOrCreate, remove from SecurableBaseImmutableService, which carry @Secured("GROUP_USER") and @Secured("GROUP_USER","ACL_SECURABLE_EDIT")) stay on the ProtocolService facade.

Callers should generally keep using ProtocolService as the facade -- the facade delegates to this service. Direct injection is appropriate where a class is logically read-only (CLIs listing protocols, REST endpoints, etc.).

ACL / @Secured annotations live on ProtocolService (the caller-facing facade interface); enforcement happens at the facade proxy boundary, not here. The read methods on the facade carry @Secured("IS_AUTHENTICATED_ANONYMOUSLY") plus a @PostAuthorize/@PostFilter hasPermission(...,'READ') check -- the new read impl is unsecured at the AOP boundary on purpose, so intra-gemma-core callers that already hold an authenticated session bypass duplicate ACL checks.

See Also:
  • Method Details