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 String
AUDIT_LOGGING_ERR_MSG
protected javax.servlet.ServletContext
context
protected PropertyGroup
fhirConfig
static DateTimeFormatter
HTTP_DATETIME_FORMATTER
protected javax.servlet.http.HttpServletRequest
httpServletRequest
protected javax.ws.rs.core.SecurityContext
securityContext
protected javax.ws.rs.core.UriInfo
uriInfo
UriInfo 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.ResponseBuilder
addHeaders(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.ResponseBuilder
addHeaders(javax.ws.rs.core.Response.ResponseBuilder rb, URI locationURI)
Add the etag header using the version obtained from the locationURIprotected OperationOutcome.Issue
buildOperationOutcomeIssue(IssueSeverity severity, IssueType type, String msg)
Builds an OperationOutcomeIssue with the respective values for some of the fields.protected FHIROperationException
buildRestException(String msg, IssueType issueType)
protected FHIROperationException
buildRestException(String msg, IssueType issueType, IssueSeverity severity)
protected FHIROperationException
buildUnsupportedResourceTypeException(String resourceTypeName)
protected void
checkInitComplete()
This method will do a quick check of the "initCompleted" flag in the servlet context.protected void
checkType(String type)
This method will do a quick check of the {type} URL parameter.protected javax.ws.rs.core.Response
exceptionResponse(FHIROperationException e, javax.ws.rs.core.Response.Status status)
protected javax.ws.rs.core.Response
exceptionResponse(OperationOutcome oo, javax.ws.rs.core.Response.Status status)
protected javax.ws.rs.core.Response
exceptionResponse(FHIRRestBundledRequestException e)
protected javax.ws.rs.core.Response
exceptionResponse(Exception e, javax.ws.rs.core.Response.Status status)
protected String
getAbsoluteUri(String baseUri, String relativeUri)
This function will build an absolute URI from the specified base URI and relative URI.protected FHIRPersistence
getPersistenceImpl()
Retrieves the persistence implementation to use for the current request.protected String
getRequestBaseUri(String type)
This method returns the "base URI" associated with the current request.protected String
getRequestUri()
Get the original request URI from either the HttpServletRequest or a configured Header (in case of re-writing proxies).protected boolean
isDeleteSupported()
protected Boolean
isUpdateCreateEnabled()
protected long
parseIfModifiedSince()
protected URI
toUri(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 FHIROperationException
This 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)
-
-