Class CascadingDeleteInterceptor

java.lang.Object
ca.uhn.fhir.jpa.interceptor.CascadingDeleteInterceptor

public class CascadingDeleteInterceptor extends Object
Interceptor that allows for cascading deletes (deletes that resolve constraint issues).

For example, if DiagnosticReport/A has a reference to Observation/B it is not normally possible to delete Observation/B without first deleting DiagnosticReport/A. With this interceptor in place, it is.

When using this interceptor, client requests must include the parameter _cascade=delete on the DELETE URL in order to activate cascading delete, or include the request header X-Cascade-Delete: delete

  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    static final int
     
    static final int
     
  • Constructor Summary

    Constructors
    Constructor
    Description
    CascadingDeleteInterceptor(ca.uhn.fhir.context.FhirContext theFhirContext, ca.uhn.fhir.jpa.api.dao.DaoRegistry theDaoRegistry, ca.uhn.fhir.interceptor.api.IInterceptorBroadcaster theInterceptorBroadcaster)
    Constructor
  • Method Summary

    Modifier and Type
    Method
    Description
    handleDeleteConflicts(ca.uhn.fhir.jpa.api.model.DeleteConflictList theConflictList, ca.uhn.fhir.rest.api.server.RequestDetails theRequest, ca.uhn.fhir.rest.api.server.storage.TransactionDetails theTransactionDetails)
     
    void
    outgoingFailureOperationOutcome(ca.uhn.fhir.rest.api.server.RequestDetails theRequestDetails, org.hl7.fhir.instance.model.api.IBaseOperationOutcome theResponse)
     
    void
    outgoingResponse(ca.uhn.fhir.rest.api.server.RequestDetails theRequestDetails, ca.uhn.fhir.rest.api.server.ResponseDetails theResponseDetails, org.hl7.fhir.instance.model.api.IBaseResource theResponse)
     
    protected ca.uhn.fhir.rest.api.DeleteCascadeModeEnum
    shouldCascade(ca.uhn.fhir.rest.api.server.RequestDetails theRequest)
    Subclasses may override

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

  • Constructor Details

    • CascadingDeleteInterceptor

      public CascadingDeleteInterceptor(@Nonnull ca.uhn.fhir.context.FhirContext theFhirContext, @Nonnull ca.uhn.fhir.jpa.api.dao.DaoRegistry theDaoRegistry, @Nonnull ca.uhn.fhir.interceptor.api.IInterceptorBroadcaster theInterceptorBroadcaster)
      Constructor
      Parameters:
      theDaoRegistry - The DAO registry (must not be null)
  • Method Details

    • handleDeleteConflicts

      public DeleteConflictOutcome handleDeleteConflicts(ca.uhn.fhir.jpa.api.model.DeleteConflictList theConflictList, ca.uhn.fhir.rest.api.server.RequestDetails theRequest, ca.uhn.fhir.rest.api.server.storage.TransactionDetails theTransactionDetails)
    • outgoingFailureOperationOutcome

      public void outgoingFailureOperationOutcome(ca.uhn.fhir.rest.api.server.RequestDetails theRequestDetails, org.hl7.fhir.instance.model.api.IBaseOperationOutcome theResponse)
    • outgoingResponse

      public void outgoingResponse(ca.uhn.fhir.rest.api.server.RequestDetails theRequestDetails, ca.uhn.fhir.rest.api.server.ResponseDetails theResponseDetails, org.hl7.fhir.instance.model.api.IBaseResource theResponse)
    • shouldCascade

      @Nonnull protected ca.uhn.fhir.rest.api.DeleteCascadeModeEnum shouldCascade(@Nullable ca.uhn.fhir.rest.api.server.RequestDetails theRequest)
      Subclasses may override
      Parameters:
      theRequest - The REST request (may be null)
      Returns:
      Returns true if cascading delete should be allowed