Class TransactionDetails

java.lang.Object
ca.uhn.fhir.rest.api.server.storage.TransactionDetails

public class TransactionDetails extends Object
This object contains runtime information that is gathered and relevant to a single database transaction. This doesn't mean a FHIR transaction necessarily, but rather any operation that happens within a single DB transaction (i.e. a FHIR create, read, transaction, etc.).

The intent with this class is to hold things we want to pass from operation to operation within a transaction in order to avoid looking things up multiple times, etc.

Since:
5.0.0
  • Field Details

  • Constructor Details

  • Method Details

    • getRollbackUndoActions

      Get the actions that should be executed if the transaction is rolled back
      Since:
      5.5.0
    • addRollbackUndoAction

      public void addRollbackUndoAction(@Nonnull Runnable theRunnable)
      Add an action that should be executed if the transaction is rolled back
      Since:
      5.5.0
    • clearRollbackUndoActions

      public void clearRollbackUndoActions()
      Clears any previously added rollback actions
      Since:
      5.5.0
    • getResolvedResourceId

      @Nullable public ResourcePersistentId getResolvedResourceId(org.hl7.fhir.instance.model.api.IIdType theId)
      A Resolved Resource ID is a mapping between a resource ID (e.g. "Patient/ABC" or "Observation/123") and a storage ID for that resource. Resources should only be placed within the TransactionDetails if they are known to exist and be valid targets for other resources to link to.
    • isResolvedResourceIdEmpty

      public boolean isResolvedResourceIdEmpty(org.hl7.fhir.instance.model.api.IIdType theId)
      Was the given resource ID resolved previously in this transaction as not existing
    • addResolvedResourceId

      public void addResolvedResourceId(org.hl7.fhir.instance.model.api.IIdType theResourceId, @Nullable ResourcePersistentId thePersistentId)
      A Resolved Resource ID is a mapping between a resource ID (e.g. "Patient/ABC" or "Observation/123") and a storage ID for that resource. Resources should only be placed within the TransactionDetails if they are known to exist and be valid targets for other resources to link to.
    • getResolvedMatchUrls

    • addResolvedMatchUrl

      public void addResolvedMatchUrl(String theConditionalUrl, @Nonnull ResourcePersistentId thePersistentId)
      A Resolved Conditional URL is a mapping between a conditional URL (e.g. "Patient?identifier=foo|bar" or "Observation/123") and a storage ID for that resource. Resources should only be placed within the TransactionDetails if they are known to exist and be valid targets for other resources to link to.
    • getTransactionDate

      This is the wall-clock time that a given transaction started.
    • clearUserData

      public void clearUserData(String theKey)
      Remove an item previously stored in user data
      See Also:
      getUserData(String)
    • putUserData

      public void putUserData(String theKey, Object theValue)
      Sets an arbitrary object that will last the lifetime of the current transaction
      See Also:
      getUserData(String)
    • getUserData

      public <T> T getUserData(String theKey)
      Gets an arbitrary object that will last the lifetime of the current transaction
      See Also:
      putUserData(String, Object)
    • getOrCreateUserData

      public <T> T getOrCreateUserData(String theKey, Supplier<T> theSupplier)
      Fetches the existing value in the user data map, or uses theSupplier to create a new object and puts that in the map, and returns it
    • beginAcceptingDeferredInterceptorBroadcasts

      public void beginAcceptingDeferredInterceptorBroadcasts(ca.uhn.fhir.interceptor.api.Pointcut... thePointcuts)
      This can be used by processors for FHIR transactions to defer interceptor broadcasts on sub-requests if needed
      Since:
      5.2.0
    • isAcceptingDeferredInterceptorBroadcasts

      This can be used by processors for FHIR transactions to defer interceptor broadcasts on sub-requests if needed
      Since:
      5.2.0
    • isAcceptingDeferredInterceptorBroadcasts

      public boolean isAcceptingDeferredInterceptorBroadcasts(ca.uhn.fhir.interceptor.api.Pointcut thePointcut)
      This can be used by processors for FHIR transactions to defer interceptor broadcasts on sub-requests if needed
      Since:
      5.2.0
    • endAcceptingDeferredInterceptorBroadcasts

      public com.google.common.collect.ListMultimap<ca.uhn.fhir.interceptor.api.Pointcut,​ca.uhn.fhir.interceptor.api.HookParams> endAcceptingDeferredInterceptorBroadcasts()
      This can be used by processors for FHIR transactions to defer interceptor broadcasts on sub-requests if needed
      Since:
      5.2.0
    • addDeferredInterceptorBroadcast

      public void addDeferredInterceptorBroadcast(ca.uhn.fhir.interceptor.api.Pointcut thePointcut, ca.uhn.fhir.interceptor.api.HookParams theHookParams)
      This can be used by processors for FHIR transactions to defer interceptor broadcasts on sub-requests if needed
      Since:
      5.2.0
    • getInvocationTiming

      public ca.uhn.fhir.rest.api.InterceptorInvocationTimingEnum getInvocationTiming(ca.uhn.fhir.interceptor.api.Pointcut thePointcut)
    • deferredBroadcastProcessingFinished

    • clearResolvedItems

      public void clearResolvedItems()