diff --git a/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/context/CanonicalResourceManager.java b/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/context/CanonicalResourceManager.java index f9fe41938..980e22ea1 100644 --- a/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/context/CanonicalResourceManager.java +++ b/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/context/CanonicalResourceManager.java @@ -195,8 +195,13 @@ public class CanonicalResourceManager { } else { return resource instanceof StructureDefinition ? ((StructureDefinition) resource).getDerivationElement().primitiveValue() : null; } - } + } + public void unload() { + if (proxy != null) { + resource = null; + } + } } public class MetadataResourceVersionComparator> implements Comparator { @@ -659,4 +664,12 @@ public class CanonicalResourceManager { } + public void unload() { + for (CachedCanonicalResource t : list) { + t.unload(); + } + + } + + } \ No newline at end of file diff --git a/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/context/TypeManager.java b/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/context/TypeManager.java index 8450989cd..ed1909ea9 100644 --- a/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/context/TypeManager.java +++ b/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/context/TypeManager.java @@ -126,5 +126,14 @@ public class TypeManager { return sd != null && sd.getKind() == StructureDefinitionKind.COMPLEXTYPE; } } + + public void unload() { + + structures.unload(); + typeDefinitions.clear(); + fhirTypeDefinitions.clear(); + primitiveNames.clear(); + dataTypeNames.clear(); + } } diff --git a/org.hl7.fhir.validation/src/main/java/org/hl7/fhir/validation/ValidationEngine.java b/org.hl7.fhir.validation/src/main/java/org/hl7/fhir/validation/ValidationEngine.java index cd7cf08f9..b7de224ae 100644 --- a/org.hl7.fhir.validation/src/main/java/org/hl7/fhir/validation/ValidationEngine.java +++ b/org.hl7.fhir.validation/src/main/java/org/hl7/fhir/validation/ValidationEngine.java @@ -28,6 +28,7 @@ import org.hl7.fhir.exceptions.DefinitionException; import org.hl7.fhir.exceptions.FHIRException; import org.hl7.fhir.r5.conformance.profile.ProfileUtilities; import org.hl7.fhir.r5.context.ContextUtilities; +import org.hl7.fhir.r5.context.ILoggingService; import org.hl7.fhir.r5.context.IWorkerContext; import org.hl7.fhir.r5.context.IWorkerContextManager; import org.hl7.fhir.r5.context.SimpleWorkerContext; @@ -324,7 +325,7 @@ public class ValidationEngine implements IValidatorResourceFetcher, IValidationP private final boolean canRunWithoutTerminologyServer; @With - private final IWorkerContext.ILoggingService loggingService; + private final ILoggingService loggingService; @With private boolean THO = true; @@ -342,7 +343,7 @@ public class ValidationEngine implements IValidatorResourceFetcher, IValidationP loggingService = new SystemOutLoggingService(); } - public ValidationEngineBuilder(String terminologyCachePath, String userAgent, String version, String txServer, String txLog, FhirPublication txVersion, TimeTracker timeTracker, boolean canRunWithoutTerminologyServer, IWorkerContext.ILoggingService loggingService, boolean THO) { + public ValidationEngineBuilder(String terminologyCachePath, String userAgent, String version, String txServer, String txLog, FhirPublication txVersion, TimeTracker timeTracker, boolean canRunWithoutTerminologyServer, ILoggingService loggingService, boolean THO) { this.terminologyCachePath = terminologyCachePath; this.userAgent = userAgent; this.version = version; @@ -431,7 +432,7 @@ public class ValidationEngine implements IValidatorResourceFetcher, IValidationP * * @see IgLoader#loadIgSource(String, boolean, boolean) loadIgSource for detailed description of the src parameter */ - private void loadCoreDefinitions(String src, boolean recursive, String terminologyCachePath, String userAgent, TimeTracker tt, IWorkerContext.ILoggingService loggingService) throws FHIRException, IOException { + private void loadCoreDefinitions(String src, boolean recursive, String terminologyCachePath, String userAgent, TimeTracker tt, ILoggingService loggingService) throws FHIRException, IOException { NpmPackage npm = getPcm().loadPackage(src, null); if (npm != null) { version = npm.fhirVersion();