Package com.ibm.fhir.server.resources
Class FHIRResource
- java.lang.Object
-
- com.ibm.fhir.server.resources.FHIRResource
-
-
Field Summary
Fields Modifier and Type Field Description protected static StringAUDIT_LOGGING_ERR_MSGprotected javax.servlet.ServletContextcontextprotected PropertyGroupfhirConfigstatic DateTimeFormatterHTTP_DATETIME_FORMATTERprotected javax.servlet.http.HttpServletRequesthttpServletRequestprotected javax.ws.rs.core.SecurityContextsecurityContextprotected javax.ws.rs.core.UriInfouriInfoUriInfo injected by the JAXRS framework.
-
Constructor Summary
Constructors Constructor Description FHIRResource()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected javax.ws.rs.core.Response.ResponseBuilderaddHeaders(javax.ws.rs.core.Response.ResponseBuilder rb, Resource resource)Adds the Etag and Last-Modified headers to the specified response object.protected javax.ws.rs.core.Response.ResponseBuilderaddHeaders(javax.ws.rs.core.Response.ResponseBuilder rb, URI locationURI)Add the etag header using the version obtained from the locationURIprotected OperationOutcome.IssuebuildOperationOutcomeIssue(IssueSeverity severity, IssueType type, String msg)Builds an OperationOutcomeIssue with the respective values for some of the fields.protected FHIROperationExceptionbuildRestException(String msg, IssueType issueType)protected FHIROperationExceptionbuildRestException(String msg, IssueType issueType, IssueSeverity severity)protected FHIROperationExceptionbuildUnsupportedResourceTypeException(String resourceTypeName)protected voidcheckInitComplete()This method will do a quick check of the "initCompleted" flag in the servlet context.protected voidcheckType(String type)This method will do a quick check of the {type} URL parameter.protected javax.ws.rs.core.ResponseexceptionResponse(FHIROperationException e, javax.ws.rs.core.Response.Status status)protected javax.ws.rs.core.ResponseexceptionResponse(OperationOutcome oo, javax.ws.rs.core.Response.Status status)protected javax.ws.rs.core.ResponseexceptionResponse(FHIRRestBundledRequestException e)protected javax.ws.rs.core.ResponseexceptionResponse(Exception e, javax.ws.rs.core.Response.Status status)protected StringgetAbsoluteUri(String baseUri, String relativeUri)This function will build an absolute URI from the specified base URI and relative URI.protected FHIRPersistencegetPersistenceImpl()Retrieves the persistence implementation to use for the current request.protected StringgetRequestBaseUri(String type)This method returns the "base URI" associated with the current request.protected StringgetRequestUri()Get the original request URI from either the HttpServletRequest or a configured Header (in case of re-writing proxies).protected booleanisDeleteSupported()protected BooleanisUpdateCreateEnabled()protected longparseIfModifiedSince()protected URItoUri(String uriString)This method simply returns a URI object containing the specified URI string.
-
-
-
Field Detail
-
HTTP_DATETIME_FORMATTER
public static final DateTimeFormatter HTTP_DATETIME_FORMATTER
-
AUDIT_LOGGING_ERR_MSG
protected static final String AUDIT_LOGGING_ERR_MSG
- See Also:
- Constant Field Values
-
context
@Context protected javax.servlet.ServletContext context
-
httpServletRequest
@Context protected javax.servlet.http.HttpServletRequest httpServletRequest
-
uriInfo
@Context protected javax.ws.rs.core.UriInfo uriInfo
UriInfo injected by the JAXRS framework.Use
getRequestUri()instead to get the original request URI when constructing URIs that will be sent back to the end user.
-
securityContext
@Context protected javax.ws.rs.core.SecurityContext securityContext
-
fhirConfig
protected PropertyGroup fhirConfig
-
-
Method Detail
-
checkInitComplete
protected void checkInitComplete() throws FHIROperationExceptionThis method will do a quick check of the "initCompleted" flag in the servlet context. If the flag is FALSE, then we'll throw an error to short-circuit the current in-progress REST API invocation.- Throws:
FHIROperationException
-
checkType
protected void checkType(String type) throws FHIROperationException
This method will do a quick check of the {type} URL parameter. If the type is not a valid FHIR resource type, then we'll throw an error to short-circuit the current in-progress REST API invocation.- Throws:
FHIROperationException
-
buildRestException
protected FHIROperationException buildRestException(String msg, IssueType issueType)
-
buildRestException
protected FHIROperationException buildRestException(String msg, IssueType issueType, IssueSeverity severity)
-
parseIfModifiedSince
protected long parseIfModifiedSince()
-
buildOperationOutcomeIssue
protected OperationOutcome.Issue buildOperationOutcomeIssue(IssueSeverity severity, IssueType type, String msg)
Builds an OperationOutcomeIssue with the respective values for some of the fields.
-
getAbsoluteUri
protected String getAbsoluteUri(String baseUri, String relativeUri)
This function will build an absolute URI from the specified base URI and relative URI.- Parameters:
baseUri- the base URI to be used; this will be of the form:// : / relativeUri- the path and query parts- Returns:
- the full URI value as a String
-
addHeaders
protected javax.ws.rs.core.Response.ResponseBuilder addHeaders(javax.ws.rs.core.Response.ResponseBuilder rb, Resource resource)Adds the Etag and Last-Modified headers to the specified response object.
-
addHeaders
protected javax.ws.rs.core.Response.ResponseBuilder addHeaders(javax.ws.rs.core.Response.ResponseBuilder rb, URI locationURI)Add the etag header using the version obtained from the locationURI- Parameters:
rb-locationURI-- Returns:
-
exceptionResponse
protected javax.ws.rs.core.Response exceptionResponse(FHIRRestBundledRequestException e)
-
exceptionResponse
protected javax.ws.rs.core.Response exceptionResponse(FHIROperationException e, javax.ws.rs.core.Response.Status status)
-
exceptionResponse
protected javax.ws.rs.core.Response exceptionResponse(Exception e, javax.ws.rs.core.Response.Status status)
-
exceptionResponse
protected javax.ws.rs.core.Response exceptionResponse(OperationOutcome oo, javax.ws.rs.core.Response.Status status)
-
getPersistenceImpl
protected FHIRPersistence getPersistenceImpl() throws FHIRPersistenceException
Retrieves the persistence implementation to use for the current request.- Throws:
FHIRPersistenceException
-
isDeleteSupported
protected boolean isDeleteSupported() throws FHIRPersistenceException- Throws:
FHIRPersistenceException
-
isUpdateCreateEnabled
protected Boolean isUpdateCreateEnabled()
-
getRequestUri
protected String getRequestUri() throws Exception
Get the original request URI from either the HttpServletRequest or a configured Header (in case of re-writing proxies).When the 'fhirServer/core/originalRequestUriHeaderName' property is empty, this method returns the equivalent of uriInfo.getRequestUri().toString(), except that uriInfo.getRequestUri() will throw an IllegalArgumentException when the query string portion contains a vertical bar | character. The vertical bar is one known case of a special character causing the exception. There could be others.
- Returns:
- String The complete request URI
- Throws:
Exception- if an error occurs while reading the config
-
getRequestBaseUri
protected String getRequestBaseUri(String type) throws Exception
This method returns the "base URI" associated with the current request. For example, if a client invoked POST https://myhost:9443/fhir-server/api/v4/Patient to create a Patient resource, this method would return "https://myhost:9443/fhir-server/api/v4".- Parameters:
type- The resource type associated with the request URI (e.g. "Patient" in the case of https://myhost:9443/fhir-server/api/v4/Patient), or null if there is no such resource type- Returns:
- The base endpoint URI associated with the current request.
- Throws:
Exception- if an error occurs while reading the config
-
toUri
protected URI toUri(String uriString) throws URISyntaxException
This method simply returns a URI object containing the specified URI string.- Parameters:
uriString- the URI string for which the URI object will be created- Throws:
URISyntaxException
-
buildUnsupportedResourceTypeException
protected FHIROperationException buildUnsupportedResourceTypeException(String resourceTypeName)
-
-