Class AuditTrailServiceImplCuratableDispatchTest

java.lang.Object
ubic.gemma.persistence.service.common.auditAndSecurity.AuditTrailServiceImplCuratableDispatchTest

public class AuditTrailServiceImplCuratableDispatchTest extends Object
Does doAddUpdateEvent recognise a curatable entity when it arrives as a proxy?

Curatable is introduced at ExpressionExperiment, below Investigation and BioAssaySet. A Hibernate proxy is generated from the DECLARED type, so a proxy typed to either supertype never implements Curatable — not even after initialization. The instanceof Curatable gate therefore missed, and the curation details were silently left stale while the audit row was written anyway.

Reached in production through @AuditedConditional methods that declare an Investigation parameter (AnnotationSetServiceImpl.attach, WorkflowServiceImpl.advance): AuditedAspect.findAuditable hands the aspect whatever args[0] is, and DatasetsWebService passes proposal.getInvestigation() — a lazy proxy.

Author:
claude
  • Constructor Details

    • AuditTrailServiceImplCuratableDispatchTest

      public AuditTrailServiceImplCuratableDispatchTest()
  • Method Details

    • setUp

      @BeforeEach public void setUp()
    • plainExperiment_updatesCurationDetails

      @Test public void plainExperiment_updatesCurationDetails()
    • experimentBehindAnInvestigationProxy_stillUpdatesCurationDetails

      @Test public void experimentBehindAnInvestigationProxy_stillUpdatesCurationDetails()
    • nonCuratableInvestigation_doesNotUpdateCurationDetails

      @Test public void nonCuratableInvestigation_doesNotUpdateCurationDetails()