changeset 31:7579255a14f8

calling destroy() on the FHIR server at shutdown
author Sebastien Jodogne <s.jodogne@gmail.com>
date Wed, 12 Jun 2024 20:56:03 +0200
parents 296798e75896
children 09f60b487512
files Samples/FHIR/src/main/java/Main.java
diffstat 1 files changed, 14 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/Samples/FHIR/src/main/java/Main.java	Wed Jun 12 20:43:37 2024 +0200
+++ b/Samples/FHIR/src/main/java/Main.java	Wed Jun 12 20:56:03 2024 +0200
@@ -23,6 +23,8 @@
 
 
 import be.uclouvain.orthanc.Callbacks;
+import be.uclouvain.orthanc.ChangeType;
+import be.uclouvain.orthanc.ResourceType;
 
 import ca.uhn.fhir.context.FhirContext;
 import ca.uhn.fhir.rest.server.HardcodedServerAddressStrategy;
@@ -39,7 +41,7 @@
 
 
 public class Main extends RestfulServer {
-    Main() throws ServletException {
+    Main() {
         setFhirContext(FhirContext.forR5());
 
         setServerName("Orthanc FHIR server");
@@ -66,16 +68,24 @@
         setResourceProviders(resourceProviders);
     }
 
-    static {
-        Main main;
+    private static Main main = new Main();
 
+    static {
         try {
-            main = new Main();
             main.init(new MockServletConfig());
         } catch (ServletException e) {
             throw new RuntimeException("Cannot start the HAPI FHIR server");
         }
 
+        Callbacks.register(new Callbacks.OnChange() {
+            @Override
+            public void call(ChangeType changeType, ResourceType resourceType, String resourceId) {
+                if (changeType == ChangeType.ORTHANC_STOPPED) {
+                    main.destroy();
+                }
+            }
+        });
+
         Callbacks.register("/fhir(/.*)", new FhirRequestHandler(main));
         Callbacks.register("/fhir", new FhirRequestHandler(main));
     }