1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.openehealth.ipf.commons.ihe.fhir;
18
19 import ca.uhn.fhir.rest.api.RestOperationTypeEnum;
20 import ca.uhn.fhir.rest.api.server.RequestDetails;
21 import ca.uhn.fhir.rest.server.exceptions.BaseServerResponseException;
22 import ca.uhn.fhir.rest.server.interceptor.InterceptorAdapter;
23 import ca.uhn.fhir.rest.server.servlet.ServletRequestDetails;
24
25 import javax.servlet.http.HttpServletRequest;
26 import javax.servlet.http.HttpServletResponse;
27
28
29
30
31
32
33
34
35
36 public class RequestDetailProvider extends InterceptorAdapter {
37
38 private static ThreadLocal<RequestDetails> requestDetails = new ThreadLocal<>();
39
40 public static RequestDetails getRequestDetails() {
41 return requestDetails.get();
42 }
43
44 @Override
45 public void incomingRequestPreHandled(RestOperationTypeEnum operation, ActionRequestDetails processedRequest) {
46 requestDetails.set(processedRequest.getRequestDetails());
47 }
48
49 @Override
50 public void processingCompletedNormally(ServletRequestDetails theRequestDetails) {
51 requestDetails.set(null);
52 }
53
54 @Override
55 public boolean handleException(RequestDetails theRequestDetails,
56 BaseServerResponseException theException,
57 HttpServletRequest theServletRequest,
58 HttpServletResponse theServletResponse) {
59 requestDetails.set(null);
60 return true;
61 }
62
63 }