Class FHIRRestInteractionVisitorMeta

  • All Implemented Interfaces:
    FHIRRestInteractionVisitor

    public class FHIRRestInteractionVisitorMeta
    extends FHIRRestInteractionVisitorBase
    Used to prepare bundle entries before they hit the persistence layer. For write operations (CREATE, UPDATE, PATCH), the meta phase is responsible for establishing the identity of any incoming resource, and updating the meta element accordingly. For other operations it is currently a NOP, but in the future may be used for optimistic async reads when the payload has been offloaded to another system.
    • Field Detail

      • transaction

        final boolean transaction
    • Constructor Detail

      • FHIRRestInteractionVisitorMeta

        public FHIRRestInteractionVisitorMeta​(boolean transaction,
                                              FHIRResourceHelpers helpers,
                                              java.util.Map<java.lang.String,​java.lang.String> localRefMap,
                                              Bundle.Entry[] responseBundleEntries)
        Public constructor
        Parameters:
        helpers -
    • Method Detail

      • doSearch

        public FHIRRestOperationResponse doSearch​(int entryIndex,
                                                  java.lang.String requestDescription,
                                                  FHIRUrlParser requestURL,
                                                  long accumulatedTime,
                                                  java.lang.String type,
                                                  java.lang.String compartment,
                                                  java.lang.String compartmentId,
                                                  javax.ws.rs.core.MultivaluedMap<java.lang.String,​java.lang.String> queryParameters,
                                                  java.lang.String requestUri,
                                                  boolean checkInteractionAllowed)
                                           throws java.lang.Exception
        Description copied from interface: FHIRRestInteractionVisitor
        Performs heavy lifting associated with a 'search' operation.
        type - the resource type associated with the search
        compartment - the compartment type to search in, or null if not a compartment search
        compartmentId - the specific compartment to search in, or null if not a compartment search
        queryParameters - a Map containing the query parameters from the request URL
        requestUri - the request URI
        Returns:
        a FHIRRestOperationResponse containing the search result bundle
        Throws:
        java.lang.Exception
      • doVRead

        public FHIRRestOperationResponse doVRead​(int entryIndex,
                                                 java.lang.String requestDescription,
                                                 FHIRUrlParser requestURL,
                                                 long accumulatedTime,
                                                 java.lang.String type,
                                                 java.lang.String id,
                                                 java.lang.String versionId,
                                                 javax.ws.rs.core.MultivaluedMap<java.lang.String,​java.lang.String> queryParameters)
                                          throws java.lang.Exception
        Description copied from interface: FHIRRestInteractionVisitor
        Performs a 'vread' operation by retrieving the specified version of a Resource with no query parameters
        type - the resource type associated with the Resource to be retrieved
        id - the id of the Resource to be retrieved
        versionId - the version id of the Resource to be retrieved
        Returns:
        the Resource
        Throws:
        java.lang.Exception
      • doRead

        public FHIRRestOperationResponse doRead​(int entryIndex,
                                                java.lang.String requestDescription,
                                                FHIRUrlParser requestURL,
                                                long accumulatedTime,
                                                java.lang.String type,
                                                java.lang.String id,
                                                boolean throwExcOnNull,
                                                javax.ws.rs.core.MultivaluedMap<java.lang.String,​java.lang.String> queryParameters,
                                                boolean checkInteractionAllowed)
                                         throws java.lang.Exception
        Description copied from interface: FHIRRestInteractionVisitor
        Performs a 'read' operation to retrieve a Resource.
        type - the resource type associated with the Resource to be retrieved
        id - the id of the Resource to be retrieved
        throwExcOnNull - whether to throw an exception on null
        queryParameters - for supporting _elements and _summary for resource read
        checkInteractionAllowed - if true, check that the read interaction is permitted
        Returns:
        a SingleResourceResult wrapping the resource and including its deletion status
        Throws:
        java.lang.Exception
      • doHistory

        public FHIRRestOperationResponse doHistory​(int entryIndex,
                                                   java.lang.String requestDescription,
                                                   FHIRUrlParser requestURL,
                                                   long accumulatedTime,
                                                   java.lang.String type,
                                                   java.lang.String id,
                                                   javax.ws.rs.core.MultivaluedMap<java.lang.String,​java.lang.String> queryParameters,
                                                   java.lang.String requestUri)
                                            throws java.lang.Exception
        Description copied from interface: FHIRRestInteractionVisitor
        Performs the work of retrieving versions of a Resource.
        type - the resource type associated with the Resource to be retrieved
        id - the id of the Resource to be retrieved
        queryParameters - a Map containing the query parameters from the request URL
        Returns:
        a Bundle containing the history of the specified Resource
        Throws:
        java.lang.Exception
      • doCreate

        public FHIRRestOperationResponse doCreate​(int entryIndex,
                                                  FHIRPersistenceEvent event,
                                                  java.util.List<OperationOutcome.Issue> warnings,
                                                  Bundle.Entry validationResponseEntry,
                                                  java.lang.String requestDescription,
                                                  FHIRUrlParser requestURL,
                                                  long accumulatedTime,
                                                  java.lang.String type,
                                                  Resource resource,
                                                  java.lang.String ifNoneExist,
                                                  java.lang.String localIdentifier,
                                                  PayloadPersistenceResponse offloadResponse)
                                           throws java.lang.Exception
        Description copied from interface: FHIRRestInteractionVisitor
        Performs the heavy lifting associated with a 'create' interaction.
        warnings - the list of warning issues accumulated for this entry
        type - the resource type specified as part of the request URL
        resource - the Resource to be stored.
        ifNoneExist - whether to create the resource if none exists
        offloadResponse - the response from payload persistence when offloading
        Returns:
        a FHIRRestOperationResponse object containing the results of the operation
        Throws:
        java.lang.Exception
      • doUpdate

        public FHIRRestOperationResponse doUpdate​(int entryIndex,
                                                  FHIRPersistenceEvent event,
                                                  Bundle.Entry validationResponseEntry,
                                                  java.lang.String requestDescription,
                                                  FHIRUrlParser requestURL,
                                                  long accumulatedTime,
                                                  java.lang.String type,
                                                  java.lang.String id,
                                                  Resource resource,
                                                  Resource prevResource,
                                                  java.lang.String ifMatchValue,
                                                  java.lang.String searchQueryString,
                                                  boolean skippableUpdate,
                                                  java.lang.String localIdentifier,
                                                  java.util.List<OperationOutcome.Issue> warnings,
                                                  boolean isDeleted,
                                                  java.lang.Integer ifNoneMatch,
                                                  PayloadPersistenceResponse offloadResponse)
                                           throws java.lang.Exception
        Description copied from interface: FHIRRestInteractionVisitor
        Performs an update operation (a new version of the Resource will be stored).
        event - the persistence event used for this resource interaction
        id - the id of the Resource being updated
        resource - the new resource to be stored
        prevResource - the old resource value if we have it
        ifMatchValue - an optional "If-Match" header value to request a version-aware update
        searchQueryString - an optional search query string to request a conditional update
        skippableUpdate - if true, and the resource content in the update matches the existing resource on the server, then skip the update; if false, then always attempt the update
        localIdentifier - if not null, represents the local identifier within the bundle used to support local references
        warnings - the accumulated list of warnings gathered while processing the interaction
        isDeleted - flag to indicate if the resource is currently deleted
        ifNoneMatch - conditional create-on-update
        offloadResponse - the response from payload persistence when offloading
        Returns:
        a FHIRRestOperationResponse that contains the results of the operation
        Throws:
        java.lang.Exception
      • doPatch

        public FHIRRestOperationResponse doPatch​(int entryIndex,
                                                 FHIRPersistenceEvent event,
                                                 Bundle.Entry validationResponseEntry,
                                                 java.lang.String requestDescription,
                                                 FHIRUrlParser requestURL,
                                                 long accumulatedTime,
                                                 java.lang.String type,
                                                 java.lang.String id,
                                                 Resource newResource,
                                                 Resource prevResource,
                                                 FHIRPatch patch,
                                                 java.lang.String ifMatchValue,
                                                 java.lang.String searchQueryString,
                                                 boolean skippableUpdate,
                                                 java.util.List<OperationOutcome.Issue> warnings,
                                                 java.lang.String localIdentifier,
                                                 PayloadPersistenceResponse offloadResponse)
                                          throws java.lang.Exception
        Description copied from interface: FHIRRestInteractionVisitor
        Performs a patch operation (a new version of the Resource will be stored).
        event - the persistence event used for this resource interaction
        type - the type of the resource to be updated
        id - the id of the Resource being updated
        newResource - the latest value of the resource
        prevResource - the value of the resource before any changes
        patch - the patch to apply
        ifMatchValue - an optional "If-Match" header value to request a version-aware update
        searchQueryString - an optional search query string to request a conditional update
        skippableUpdate - if true, and the result of the patch matches the existing resource on the server, then skip the update; if false, then always attempt the update
        offloadResponse - response from payload persistencen when offloading
        Returns:
        a FHIRRestOperationResponse that contains the results of the operation
        Throws:
        java.lang.Exception
      • doInvoke

        public FHIRRestOperationResponse doInvoke​(java.lang.String method,
                                                  int entryIndex,
                                                  Bundle.Entry validationResponseEntry,
                                                  java.lang.String requestDescription,
                                                  FHIRUrlParser requestURL,
                                                  long accumulatedTime,
                                                  FHIROperationContext operationContext,
                                                  java.lang.String resourceTypeName,
                                                  java.lang.String logicalId,
                                                  java.lang.String versionId,
                                                  Resource resource,
                                                  javax.ws.rs.core.MultivaluedMap<java.lang.String,​java.lang.String> queryParameters)
                                           throws java.lang.Exception
        Description copied from interface: FHIRRestInteractionVisitor
        Helper method which invokes a custom operation.
        operationContext - the FHIROperationContext associated with the request
        resourceTypeName - the resource type associated with the request
        logicalId - the resource logical id associated with the request
        versionId - the resource version id associated with the request
        resource - the input resource associated with the custom operation to be invoked
        queryParameters - query parameters may be passed instead of a Parameters resource for certain custom operations invoked via GET
        Returns:
        a Resource that represents the response to the custom operation
        Throws:
        java.lang.Exception
      • doDelete

        public FHIRRestOperationResponse doDelete​(int entryIndex,
                                                  java.lang.String requestDescription,
                                                  FHIRUrlParser requestURL,
                                                  long accumulatedTime,
                                                  java.lang.String type,
                                                  java.lang.String id,
                                                  java.lang.String searchQueryString)
                                           throws java.lang.Exception
        Description copied from interface: FHIRRestInteractionVisitor
        Performs a 'delete' operation on the specified resource.
        type - the resource type associated with the Resource to be deleted
        id - the id of the Resource to be deleted
        Returns:
        a FHIRRestOperationResponse that contains the results of the operation
        Throws:
        java.lang.Exception
      • validationResponse

        public FHIRRestOperationResponse validationResponse​(int entryIndex,
                                                            Bundle.Entry validationResponseEntry,
                                                            java.lang.String requestDescription,
                                                            long accumulatedTime)
                                                     throws java.lang.Exception
        Description copied from interface: FHIRRestInteractionVisitor
        Add the given validationResponseEntry to the result bundle
        Returns:
        Throws:
        java.lang.Exception
      • issue

        public FHIRRestOperationResponse issue​(int entryIndex,
                                               java.lang.String requestDescription,
                                               long accumulatedTime,
                                               javax.ws.rs.core.Response.Status status,
                                               Bundle.Entry responseEntry)
                                        throws java.lang.Exception
        Description copied from interface: FHIRRestInteractionVisitor
        Add the issue to the result bundle
        Returns:
        Throws:
        java.lang.Exception
      • getCurrentInstant

        protected Instant getCurrentInstant()
        Get the current time which can be used for the lastUpdated field
        Returns:
        current time in UTC