Interface PrincipalComponentAnalysisReadService

All Known Implementing Classes:
PrincipalComponentAnalysisReadServiceImpl

public interface PrincipalComponentAnalysisReadService
Read-only retrieval service for PrincipalComponentAnalysis.

Phase 3 of the PrincipalComponentAnalysisService decomposition (strangler fig). This service houses the three read methods previously implemented directly on the PrincipalComponentAnalysisServiceImpl facade: getTopLoadedProbes, loadForExperiment, and existsByExperiment. Each delegates to the matching PrincipalComponentAnalysisDao method (with loadForExperiment additionally logging when more than one PCA is found and returning an arbitrary one for backward compatibility).

Write-side methods (create, removeForExperiment, and the inherited BaseImmutableService mutators) stay on the PrincipalComponentAnalysisService facade.

Callers should generally keep using PrincipalComponentAnalysisService as the facade -- the facade delegates to this service. Direct injection is appropriate where a class is logically read-only.

ACL / @Secured annotations live on PrincipalComponentAnalysisService (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", "ACL_SECURABLE_READ"}). The new read impl is unsecured at the AOP boundary on purpose -- intra-gemma-core callers that already hold an authenticated session bypass duplicate ACL checks.

See Also: