From 0c54716066486925a6314128b77bb0294e711015 Mon Sep 17 00:00:00 2001 From: dotasek Date: Fri, 11 Feb 2022 10:32:13 -0500 Subject: [PATCH 01/11] Ignore META-INF while unpacking dependencies --- org.hl7.fhir.validation.cli/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/org.hl7.fhir.validation.cli/pom.xml b/org.hl7.fhir.validation.cli/pom.xml index 85e5a66fc..e02906b57 100644 --- a/org.hl7.fhir.validation.cli/pom.xml +++ b/org.hl7.fhir.validation.cli/pom.xml @@ -76,7 +76,7 @@ unpack-dependencies - **/module-info.class,META-INF/*.SF,META-INF/*.DSA,META-INF/*.RSA + **/module-info.class,META-INF/* ${project.build.directory}/classes false true From 1b5e5b8e729603e40a8004ec20bc55a6e8ee2ab5 Mon Sep 17 00:00:00 2001 From: dotasek Date: Tue, 15 Feb 2022 16:51:13 -0500 Subject: [PATCH 02/11] Update RELEASE_NOTES.md --- RELEASE_NOTES.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md index 7b06c6ab5..b09a26425 100644 --- a/RELEASE_NOTES.md +++ b/RELEASE_NOTES.md @@ -4,4 +4,4 @@ ## Other code changes -* no changes \ No newline at end of file +* Ignore META-INF contents from other dependencies while building Validator jar From ab329c8c63b099a0c1b8f2bc9ecbe2e80aebb9bf Mon Sep 17 00:00:00 2001 From: Bryn Rhodes Date: Mon, 21 Feb 2022 15:05:42 -0700 Subject: [PATCH 03/11] Added a Liquid template resolver to narrative generation to support include resolution in the publisher --- .../org/hl7/fhir/r5/renderers/LiquidRenderer.java | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/renderers/LiquidRenderer.java b/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/renderers/LiquidRenderer.java index 78893a2b4..81f1051d1 100644 --- a/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/renderers/LiquidRenderer.java +++ b/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/renderers/LiquidRenderer.java @@ -32,12 +32,26 @@ public class LiquidRenderer extends ResourceRenderer { this.rcontext = rcontext; this.liquidTemplate = liquidTemplate; } + + private class LiquidRendererIncludeResolver implements LiquidEngine.ILiquidEngineIncludeResolver { + public LiquidRendererIncludeResolver(RenderingContext context) { + this.context = context; + } + + private RenderingContext context; + + @Override + public String fetchInclude(LiquidEngine engine, String name) { + return context.getTemplateProvider().findTemplate(name); + } + } @Override public boolean render(XhtmlNode x, Resource r) throws FHIRFormatError, DefinitionException, IOException, FHIRException, EOperationOutcome { LiquidEngine engine = new LiquidEngine(context.getWorker(), context.getServices()); XhtmlNode xn; try { + engine.setIncludeResolver(new LiquidRendererIncludeResolver(context.getTemplateProvider())); LiquidDocument doc = engine.parse(liquidTemplate, "template"); String html = engine.evaluate(doc, r, rcontext); xn = new XhtmlParser().parseFragment(html); From 5544460d20194a12d9d1c7cec396489e518dce12 Mon Sep 17 00:00:00 2001 From: Bryn Rhodes Date: Wed, 23 Feb 2022 19:44:21 -0700 Subject: [PATCH 04/11] Added documentation --- .../main/java/org/hl7/fhir/r5/renderers/LiquidRenderer.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/renderers/LiquidRenderer.java b/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/renderers/LiquidRenderer.java index 81f1051d1..739773801 100644 --- a/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/renderers/LiquidRenderer.java +++ b/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/renderers/LiquidRenderer.java @@ -33,6 +33,10 @@ public class LiquidRenderer extends ResourceRenderer { this.liquidTemplate = liquidTemplate; } + /** + * This class provides an implementation of the ILiquidEngineIncludeResolver that makes use of the + * template provider available in the rendering context to support resolving includes. + */ private class LiquidRendererIncludeResolver implements LiquidEngine.ILiquidEngineIncludeResolver { public LiquidRendererIncludeResolver(RenderingContext context) { this.context = context; From 8212604250fefb42a69421d76e88fde306d8c033 Mon Sep 17 00:00:00 2001 From: Bryn Rhodes Date: Wed, 23 Feb 2022 20:09:17 -0700 Subject: [PATCH 05/11] Fix missing argument --- .../src/main/java/org/hl7/fhir/r5/renderers/LiquidRenderer.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/renderers/LiquidRenderer.java b/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/renderers/LiquidRenderer.java index 739773801..856855a26 100644 --- a/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/renderers/LiquidRenderer.java +++ b/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/renderers/LiquidRenderer.java @@ -46,7 +46,7 @@ public class LiquidRenderer extends ResourceRenderer { @Override public String fetchInclude(LiquidEngine engine, String name) { - return context.getTemplateProvider().findTemplate(name); + return context.getTemplateProvider().findTemplate(context, name); } } From 778738d3ac644911183e446b0832caab975dbdb3 Mon Sep 17 00:00:00 2001 From: Bryn Rhodes Date: Wed, 23 Feb 2022 20:20:38 -0700 Subject: [PATCH 06/11] Fix constructor argument --- .../src/main/java/org/hl7/fhir/r5/renderers/LiquidRenderer.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/renderers/LiquidRenderer.java b/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/renderers/LiquidRenderer.java index 856855a26..bc8eb4caa 100644 --- a/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/renderers/LiquidRenderer.java +++ b/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/renderers/LiquidRenderer.java @@ -55,7 +55,7 @@ public class LiquidRenderer extends ResourceRenderer { LiquidEngine engine = new LiquidEngine(context.getWorker(), context.getServices()); XhtmlNode xn; try { - engine.setIncludeResolver(new LiquidRendererIncludeResolver(context.getTemplateProvider())); + engine.setIncludeResolver(new LiquidRendererIncludeResolver(context)); LiquidDocument doc = engine.parse(liquidTemplate, "template"); String html = engine.evaluate(doc, r, rcontext); xn = new XhtmlParser().parseFragment(html); From 27732602e368d4c2667ffd96618a5ce283882297 Mon Sep 17 00:00:00 2001 From: dotasek Date: Tue, 1 Mar 2022 17:03:17 -0500 Subject: [PATCH 07/11] Extract package-id when default id unavailable --- .../main/java/org/hl7/fhir/utilities/npm/PackageClient.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/org.hl7.fhir.utilities/src/main/java/org/hl7/fhir/utilities/npm/PackageClient.java b/org.hl7.fhir.utilities/src/main/java/org/hl7/fhir/utilities/npm/PackageClient.java index 35f3788b5..c8f492194 100644 --- a/org.hl7.fhir.utilities/src/main/java/org/hl7/fhir/utilities/npm/PackageClient.java +++ b/org.hl7.fhir.utilities/src/main/java/org/hl7/fhir/utilities/npm/PackageClient.java @@ -222,6 +222,11 @@ public class PackageClient { version = v; fVersion = e.getAsJsonArray("fhir-version").get(0).getAsString(); url = JSONUtil.str(e, "url"); + + String npmPackage = JSONUtil.str(e, "package"); + if (npmPackage != null && id == null) { + id = npmPackage.substring(0, npmPackage.indexOf("#")); + } } } } From cb7cfe9141b2bcfecca16c34318af2a77e20b9f6 Mon Sep 17 00:00:00 2001 From: dotasek Date: Wed, 2 Mar 2022 09:43:41 -0500 Subject: [PATCH 08/11] Refactor for testing, add tests --- .../hl7/fhir/utilities/npm/PackageClient.java | 75 ++++++++++--------- .../fhir/utilities/npm/PackageClientTest.java | 44 +++++++++++ .../npm/PackageClient-baseTestCase.json | 16 ++++ .../npm/PackageClient-testCaseWithId.json | 17 +++++ 4 files changed, 116 insertions(+), 36 deletions(-) create mode 100644 org.hl7.fhir.utilities/src/test/java/org/hl7/fhir/utilities/npm/PackageClientTest.java create mode 100644 org.hl7.fhir.utilities/src/test/resources/npm/PackageClient-baseTestCase.json create mode 100644 org.hl7.fhir.utilities/src/test/resources/npm/PackageClient-testCaseWithId.json diff --git a/org.hl7.fhir.utilities/src/main/java/org/hl7/fhir/utilities/npm/PackageClient.java b/org.hl7.fhir.utilities/src/main/java/org/hl7/fhir/utilities/npm/PackageClient.java index c8f492194..90914dc27 100644 --- a/org.hl7.fhir.utilities/src/main/java/org/hl7/fhir/utilities/npm/PackageClient.java +++ b/org.hl7.fhir.utilities/src/main/java/org/hl7/fhir/utilities/npm/PackageClient.java @@ -16,7 +16,6 @@ import java.io.ByteArrayInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; -import java.net.URL; import java.util.ArrayList; import java.util.Collections; import java.util.Date; @@ -192,47 +191,51 @@ public class PackageClient { } } + protected PackageInfo getPackageInfoFromJSON(JsonObject o, String name, String canonical, String fhirVersion) { + String id = JSONUtil.str(o, "npm-name"); + String pname = JSONUtil.str(o, "name"); + String pcanonical = JSONUtil.str(o, "canonical"); + String description = JSONUtil.str(o, "description"); + boolean ok = true; + if (ok && !Utilities.noString(name)) { + ok = (pname != null && pname.contains(name)) || (description != null && description.contains(name)) || (id != null && id.contains(name)); + } + if (ok && !Utilities.noString(canonical)) { + ok = pcanonical.contains(canonical); + } + String version = null; + String fVersion = null; + String url = null; + + if (ok) { + // if we can find something... + for (JsonObject e : JSONUtil.objects(o, "editions")) { + if (fhirVersion == null || fhirVersion.equals(JSONUtil.str(e, "fhir-version"))) { + String v = JSONUtil.str(e, "ig-version"); + if (version == null || VersionUtilities.isThisOrLater(version, v)) { + version = v; + fVersion = e.getAsJsonArray("fhir-version").get(0).getAsString(); + url = JSONUtil.str(e, "url"); + + String npmPackage = JSONUtil.str(e, "package"); + if (npmPackage != null && id == null) { + id = npmPackage.substring(0, npmPackage.indexOf("#")); + } + } + } + } + } + return new PackageInfo(id, version, fVersion, description, url, pcanonical, address); + } public List listFromRegistry(String name, String canonical, String fhirVersion) throws IOException { List result = new ArrayList<>(); JsonObject packages = JsonTrackingParser.fetchJson("https://raw.githubusercontent.com/FHIR/ig-registry/master/fhir-ig-list.json?nocache=" + System.currentTimeMillis()); for (JsonObject o : JSONUtil.objects(packages, "guides")) { if (o.has("canonical")) { - String id = JSONUtil.str(o, "npm-name"); - String pname = JSONUtil.str(o, "name"); - String pcanonical = JSONUtil.str(o, "canonical"); - String description = JSONUtil.str(o, "description"); - boolean ok = true; - if (ok && !Utilities.noString(name)) { - ok = (pname != null && pname.contains(name)) || (description != null && description.contains(name)) || (id != null && id.contains(name)); - } - if (ok && !Utilities.noString(canonical)) { - ok = pcanonical.contains(canonical); - } - String version = null; - String fVersion = null; - String url = null; - - if (ok) { - // if we can find something... - for (JsonObject e : JSONUtil.objects(o, "editions")) { - if (fhirVersion == null || fhirVersion.equals(JSONUtil.str(e, "fhir-version"))) { - String v = JSONUtil.str(e, "ig-version"); - if (version == null || VersionUtilities.isThisOrLater(version, v)) { - version = v; - fVersion = e.getAsJsonArray("fhir-version").get(0).getAsString(); - url = JSONUtil.str(e, "url"); - - String npmPackage = JSONUtil.str(e, "package"); - if (npmPackage != null && id == null) { - id = npmPackage.substring(0, npmPackage.indexOf("#")); - } - } - } - } - } - if (version != null) { - result.add(new PackageInfo(id, version, fVersion, description, url, pcanonical, address)); + final PackageInfo packageInfo = getPackageInfoFromJSON(o, name, canonical, fhirVersion); + if (packageInfo.getVersion() != null) { + result.add(packageInfo); } } } diff --git a/org.hl7.fhir.utilities/src/test/java/org/hl7/fhir/utilities/npm/PackageClientTest.java b/org.hl7.fhir.utilities/src/test/java/org/hl7/fhir/utilities/npm/PackageClientTest.java new file mode 100644 index 000000000..85f230636 --- /dev/null +++ b/org.hl7.fhir.utilities/src/test/java/org/hl7/fhir/utilities/npm/PackageClientTest.java @@ -0,0 +1,44 @@ +package org.hl7.fhir.utilities.npm; + +import com.google.gson.Gson; +import com.google.gson.JsonObject; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; + +import java.nio.file.Files; +import java.nio.file.Paths; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +public class PackageClientTest { + + PackageClient packageClient = new PackageClient(PackageClient.PRIMARY_SERVER); + + private void assertExpectedFields(final PackageInfo packageInfo) { + assertEquals("dummy.package", packageInfo.getId()); + assertEquals("1.2.3", packageInfo.getVersion()); + assertEquals("4.5.6", packageInfo.getFhirVersion()); + assertEquals("Dummy description", + packageInfo.getDescription()); + assertEquals("https://d.e.f", packageInfo.getUrl()); + assertEquals("https://a.b.c", packageInfo.getCanonical()); + } + + @Test + @DisplayName("test getting package from JSON works") + public void getPackageInfoFromJSONTest() throws java.io.IOException{ + final JsonObject jsonObject = new Gson().fromJson(Files.newBufferedReader(Paths.get("src", "test", "resources", "npm", "PackageClient-baseTestCase.json")), JsonObject.class); + final PackageInfo packageInfo = packageClient.getPackageInfoFromJSON(jsonObject, null, null, null); + + assertExpectedFields(packageInfo); + } + + @Test + @DisplayName("test getting package from JSON works") + public void getPackageInfoWithIdFromJSONTest() throws java.io.IOException { + final JsonObject jsonObject = new Gson().fromJson(Files.newBufferedReader(Paths.get("src", "test", "resources", "npm", "PackageClient-testCaseWithId.json")), JsonObject.class); + final PackageInfo packageInfo = packageClient.getPackageInfoFromJSON(jsonObject, null, null, null); + + assertExpectedFields(packageInfo); + } +} diff --git a/org.hl7.fhir.utilities/src/test/resources/npm/PackageClient-baseTestCase.json b/org.hl7.fhir.utilities/src/test/resources/npm/PackageClient-baseTestCase.json new file mode 100644 index 000000000..1b53ff834 --- /dev/null +++ b/org.hl7.fhir.utilities/src/test/resources/npm/PackageClient-baseTestCase.json @@ -0,0 +1,16 @@ +{ + "name": "Pan-Canadian Patient Summary", + "description": "Dummy description", + "canonical": "https://a.b.c", + "editions": [ + { + "name": "Dummy name", + "ig-version": "1.2.3", + "package": "dummy.package#1.2.3", + "fhir-version": [ + "4.5.6" + ], + "url": "https://d.e.f" + } + ] +} \ No newline at end of file diff --git a/org.hl7.fhir.utilities/src/test/resources/npm/PackageClient-testCaseWithId.json b/org.hl7.fhir.utilities/src/test/resources/npm/PackageClient-testCaseWithId.json new file mode 100644 index 000000000..363503e75 --- /dev/null +++ b/org.hl7.fhir.utilities/src/test/resources/npm/PackageClient-testCaseWithId.json @@ -0,0 +1,17 @@ +{ + "name": "Pan-Canadian Patient Summary", + "description": "Dummy description", + "canonical": "https://a.b.c", + "npm-name": "dummy.package", + "editions": [ + { + "name": "Dummy name", + "ig-version": "1.2.3", + "package": "not.a.dummy.package#1.2.3", + "fhir-version": [ + "4.5.6" + ], + "url": "https://d.e.f" + } + ] +} \ No newline at end of file From 6f57013f98f620a76594f11ebc54171c93c7dbc0 Mon Sep 17 00:00:00 2001 From: dotasek Date: Thu, 3 Mar 2022 16:19:39 -0500 Subject: [PATCH 09/11] Fix intermittent failures in NarrativeGenerationTests --- .../fhir/r5/context/SimpleWorkerContext.java | 2 +- .../fhir/r5/test/utils/TestingUtilities.java | 50 ++++++++++++------- .../hl7/fhir/r5/test/CDARoundTripTests.java | 2 +- .../org/hl7/fhir/r5/test/FHIRPathTests.java | 4 +- .../hl7/fhir/r5/test/GraphQLEngineTests.java | 2 +- .../hl7/fhir/r5/test/LiquidEngineTests.java | 2 +- .../r5/test/NarrativeGenerationTests.java | 2 +- .../fhir/r5/test/NarrativeGeneratorTests.java | 2 +- .../fhir/r5/test/OpenApiGeneratorTest.java | 2 +- .../fhir/r5/test/ProfileUtilitiesTests.java | 20 ++++---- .../fhir/r5/test/ResourceRoundTripTests.java | 6 +-- .../hl7/fhir/r5/test/ShexGeneratorTests.java | 4 +- .../fhir/r5/test/SnapShotGenerationTests.java | 50 +++++++++---------- .../java/org/hl7/fhir/r5/test/VocabTests.java | 8 ++- .../hl7/fhir/r5/test/misc/ResourceTest.java | 6 +-- .../comparison/tests/ComparisonTests.java | 2 +- .../tests/SnapShotGenerationXTests.java | 4 +- .../validation/tests/ValidationTests.java | 20 ++++---- 18 files changed, 103 insertions(+), 85 deletions(-) diff --git a/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/context/SimpleWorkerContext.java b/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/context/SimpleWorkerContext.java index 53a371c13..239b43c25 100644 --- a/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/context/SimpleWorkerContext.java +++ b/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/context/SimpleWorkerContext.java @@ -239,7 +239,7 @@ public class SimpleWorkerContext extends BaseWorkerContext implements IWorkerCon public SimpleWorkerContext fromPackage(NpmPackage pi, IContextResourceLoader loader) throws IOException, FHIRException { SimpleWorkerContext context = getSimpleWorkerContextInstance(); - context.setAllowLoadingDuplicates(true); + context.setAllowLoadingDuplicates(allowLoadingDuplicates); context.version = pi.getNpm().get("version").getAsString(); context.loadFromPackage(pi, loader); context.finishLoading(); diff --git a/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/test/utils/TestingUtilities.java b/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/test/utils/TestingUtilities.java index a6636f734..8459d7869 100644 --- a/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/test/utils/TestingUtilities.java +++ b/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/test/utils/TestingUtilities.java @@ -75,11 +75,23 @@ public class TestingUtilities extends BaseTestingUtilities { static public Map fcontexts; - public static IWorkerContext context() { - return context("4.0.1"); + final static public String DEFAULT_CONTEXT_VERSION = "4.0.1"; + + /** Get an existing instantiation of a WorkerContext if available + * + * This uses the DEFAULT_CONTEXT_VERSION + * */ + public static IWorkerContext getSharedWorkerContext() { + return getSharedWorkerContext(DEFAULT_CONTEXT_VERSION); } - public static IWorkerContext context(String version) { + /** + * Get an existing instantiation of a WorkerContext if available + * + * @param version FHIR Version to get context for + * @return + */ + public static IWorkerContext getSharedWorkerContext(String version) { if ("4.5.0".equals(version)) { version = "4.4.0"; // temporary work around } @@ -89,33 +101,35 @@ public class TestingUtilities extends BaseTestingUtilities { fcontexts = new HashMap<>(); } if (!fcontexts.containsKey(v)) { - FilesystemPackageCacheManager pcm; - try { - pcm = new FilesystemPackageCacheManager(true, ToolsVersion.TOOLS_VERSION); - IWorkerContext fcontext = getWorkerContext(pcm.loadPackage(VersionUtilities.packageForVersion(version), version)); - fcontext.setUcumService(new UcumEssenceService(TestingUtilities.loadTestResourceStream("ucum", "ucum-essence.xml"))); - fcontext.setExpansionProfile(new Parameters()); -// ((SimpleWorkerContext) fcontext).connectToTSServer(new TerminologyClientR5("http://tx.fhir.org/r4"), null); + IWorkerContext fcontext = getWorkerContext(version); fcontexts.put(v, fcontext); - } catch (Exception e) { - e.printStackTrace(); - throw new Error(e); - } } return fcontexts.get(v); } + public static IWorkerContext getWorkerContext(String version) { + FilesystemPackageCacheManager pcm; + try { + pcm = new FilesystemPackageCacheManager(true, ToolsVersion.TOOLS_VERSION); + IWorkerContext fcontext = getWorkerContext(pcm.loadPackage(VersionUtilities.packageForVersion(version), version)); + fcontext.setUcumService(new UcumEssenceService(TestingUtilities.loadTestResourceStream("ucum", "ucum-essence.xml"))); + fcontext.setExpansionProfile(new Parameters()); + return fcontext; + } catch (Exception e) { + e.printStackTrace(); + throw new Error(e); + } + } + public static SimpleWorkerContext getWorkerContext(NpmPackage npmPackage) throws Exception { - SimpleWorkerContext swc = new SimpleWorkerContext.SimpleWorkerContextBuilder().withUserAgent(TestConstants.USER_AGENT).withTerminologyCachePath(TestConstants.TX_CACHE).fromPackage(npmPackage); + SimpleWorkerContext swc = new SimpleWorkerContext.SimpleWorkerContextBuilder().withAllowLoadingDuplicates(true).withUserAgent(TestConstants.USER_AGENT).withTerminologyCachePath(TestConstants.TX_CACHE).fromPackage(npmPackage); TerminologyCache.setCacheErrors(true); - swc.setAllowLoadingDuplicates(true); return swc; } public static SimpleWorkerContext getWorkerContext(NpmPackage npmPackage, IWorkerContext.IContextResourceLoader loader) throws Exception { - SimpleWorkerContext swc = new SimpleWorkerContext.SimpleWorkerContextBuilder().withUserAgent(TestConstants.USER_AGENT).withTerminologyCachePath(TestConstants.TX_CACHE).fromPackage(npmPackage, loader); + SimpleWorkerContext swc = new SimpleWorkerContext.SimpleWorkerContextBuilder().withAllowLoadingDuplicates(true).withUserAgent(TestConstants.USER_AGENT).withTerminologyCachePath(TestConstants.TX_CACHE).fromPackage(npmPackage, loader); TerminologyCache.setCacheErrors(true); - swc.setAllowLoadingDuplicates(true); return swc; } diff --git a/org.hl7.fhir.r5/src/test/java/org/hl7/fhir/r5/test/CDARoundTripTests.java b/org.hl7.fhir.r5/src/test/java/org/hl7/fhir/r5/test/CDARoundTripTests.java index 54980ff21..aea3837e8 100644 --- a/org.hl7.fhir.r5/src/test/java/org/hl7/fhir/r5/test/CDARoundTripTests.java +++ b/org.hl7.fhir.r5/src/test/java/org/hl7/fhir/r5/test/CDARoundTripTests.java @@ -257,7 +257,7 @@ public class CDARoundTripTests { value.setValue("öé"); ByteArrayOutputStream baosXml = new ByteArrayOutputStream(); - Manager.compose(TestingUtilities.context(), xml, baosXml, FhirFormat.XML, OutputStyle.PRETTY, null); + Manager.compose(TestingUtilities.getSharedWorkerContext(), xml, baosXml, FhirFormat.XML, OutputStyle.PRETTY, null); String cdaSerialised = baosXml.toString("UTF-8"); Assertions.assertTrue(cdaSerialised.indexOf("öé") > 0); } diff --git a/org.hl7.fhir.r5/src/test/java/org/hl7/fhir/r5/test/FHIRPathTests.java b/org.hl7.fhir.r5/src/test/java/org/hl7/fhir/r5/test/FHIRPathTests.java index 2b8ef374d..d1f6d8aa4 100644 --- a/org.hl7.fhir.r5/src/test/java/org/hl7/fhir/r5/test/FHIRPathTests.java +++ b/org.hl7.fhir.r5/src/test/java/org/hl7/fhir/r5/test/FHIRPathTests.java @@ -93,7 +93,7 @@ public class FHIRPathTests { @Override public ValueSet resolveValueSet(Object appContext, String url) { - return TestingUtilities.context().fetchResource(ValueSet.class, url); + return TestingUtilities.getSharedWorkerContext().fetchResource(ValueSet.class, url); } } @@ -103,7 +103,7 @@ public class FHIRPathTests { @BeforeAll public static void setUp() { - fp = new FHIRPathEngine(TestingUtilities.context()); + fp = new FHIRPathEngine(TestingUtilities.getSharedWorkerContext()); } public static Stream data() throws ParserConfigurationException, SAXException, IOException { diff --git a/org.hl7.fhir.r5/src/test/java/org/hl7/fhir/r5/test/GraphQLEngineTests.java b/org.hl7.fhir.r5/src/test/java/org/hl7/fhir/r5/test/GraphQLEngineTests.java index fa66313d6..fa20643d6 100644 --- a/org.hl7.fhir.r5/src/test/java/org/hl7/fhir/r5/test/GraphQLEngineTests.java +++ b/org.hl7.fhir.r5/src/test/java/org/hl7/fhir/r5/test/GraphQLEngineTests.java @@ -65,7 +65,7 @@ public class GraphQLEngineTests implements IGraphQLStorageServices { stream = TestingUtilities.loadTestResourceStream("r5", parts[0].toLowerCase()+"-"+parts[1].toLowerCase()+".xml"); } - GraphQLEngine gql = new GraphQLEngine(TestingUtilities.context()); + GraphQLEngine gql = new GraphQLEngine(TestingUtilities.getSharedWorkerContext()); gql.setServices(this); if (stream != null) gql.setFocus(new XmlParser().parse(stream)); diff --git a/org.hl7.fhir.r5/src/test/java/org/hl7/fhir/r5/test/LiquidEngineTests.java b/org.hl7.fhir.r5/src/test/java/org/hl7/fhir/r5/test/LiquidEngineTests.java index 19e31dad6..d1ee8f0f4 100644 --- a/org.hl7.fhir.r5/src/test/java/org/hl7/fhir/r5/test/LiquidEngineTests.java +++ b/org.hl7.fhir.r5/src/test/java/org/hl7/fhir/r5/test/LiquidEngineTests.java @@ -37,7 +37,7 @@ public class LiquidEngineTests implements ILiquidEngineIncludeResolver { @BeforeEach public void setUp() throws Exception { - engine = new LiquidEngine(TestingUtilities.context(), null); + engine = new LiquidEngine(TestingUtilities.getSharedWorkerContext(), null); engine.setIncludeResolver(this); } diff --git a/org.hl7.fhir.r5/src/test/java/org/hl7/fhir/r5/test/NarrativeGenerationTests.java b/org.hl7.fhir.r5/src/test/java/org/hl7/fhir/r5/test/NarrativeGenerationTests.java index 2a25ab3de..bfb77e3cb 100644 --- a/org.hl7.fhir.r5/src/test/java/org/hl7/fhir/r5/test/NarrativeGenerationTests.java +++ b/org.hl7.fhir.r5/src/test/java/org/hl7/fhir/r5/test/NarrativeGenerationTests.java @@ -103,7 +103,7 @@ public class NarrativeGenerationTests { @BeforeAll public static void setUp() { - context = TestingUtilities.context(); + context = TestingUtilities.getSharedWorkerContext(); } @ParameterizedTest(name = "{index}: file {0}") diff --git a/org.hl7.fhir.r5/src/test/java/org/hl7/fhir/r5/test/NarrativeGeneratorTests.java b/org.hl7.fhir.r5/src/test/java/org/hl7/fhir/r5/test/NarrativeGeneratorTests.java index 4a92d9c93..eef9b272b 100644 --- a/org.hl7.fhir.r5/src/test/java/org/hl7/fhir/r5/test/NarrativeGeneratorTests.java +++ b/org.hl7.fhir.r5/src/test/java/org/hl7/fhir/r5/test/NarrativeGeneratorTests.java @@ -34,7 +34,7 @@ public class NarrativeGeneratorTests { @BeforeAll public static void setUp() throws FHIRException { - rc = new RenderingContext(TestingUtilities.context(), null, null, "http://hl7.org/fhir", "", null, ResourceRendererMode.END_USER); + rc = new RenderingContext(TestingUtilities.getSharedWorkerContext(), null, null, "http://hl7.org/fhir", "", null, ResourceRendererMode.END_USER); } @Test diff --git a/org.hl7.fhir.r5/src/test/java/org/hl7/fhir/r5/test/OpenApiGeneratorTest.java b/org.hl7.fhir.r5/src/test/java/org/hl7/fhir/r5/test/OpenApiGeneratorTest.java index bcd667980..f43ede9be 100644 --- a/org.hl7.fhir.r5/src/test/java/org/hl7/fhir/r5/test/OpenApiGeneratorTest.java +++ b/org.hl7.fhir.r5/src/test/java/org/hl7/fhir/r5/test/OpenApiGeneratorTest.java @@ -32,7 +32,7 @@ public class OpenApiGeneratorTest { public void run(InputStream sfn, String dfn) throws IOException, FHIRFormatError, FileNotFoundException { CapabilityStatement cs = (CapabilityStatement) new JsonParser().parse(sfn); Writer oa = new Writer(new FileOutputStream(dfn)); - OpenApiGenerator gen = new OpenApiGenerator(TestingUtilities.context(), cs, oa); + OpenApiGenerator gen = new OpenApiGenerator(TestingUtilities.getSharedWorkerContext(), cs, oa); gen.generate("test-lic", "http://spdx.org/licenses/test-lic.html"); oa.commit(); } diff --git a/org.hl7.fhir.r5/src/test/java/org/hl7/fhir/r5/test/ProfileUtilitiesTests.java b/org.hl7.fhir.r5/src/test/java/org/hl7/fhir/r5/test/ProfileUtilitiesTests.java index fcaca80cb..e5a62e947 100644 --- a/org.hl7.fhir.r5/src/test/java/org/hl7/fhir/r5/test/ProfileUtilitiesTests.java +++ b/org.hl7.fhir.r5/src/test/java/org/hl7/fhir/r5/test/ProfileUtilitiesTests.java @@ -29,13 +29,13 @@ public class ProfileUtilitiesTests { public void testSimple() throws FHIRException { StructureDefinition focus = new StructureDefinition(); - StructureDefinition base = TestingUtilities.context().fetchResource(StructureDefinition.class, "http://hl7.org/fhir/StructureDefinition/Patient").copy(); + StructureDefinition base = TestingUtilities.getSharedWorkerContext().fetchResource(StructureDefinition.class, "http://hl7.org/fhir/StructureDefinition/Patient").copy(); focus.setUrl(Utilities.makeUuidUrn()); focus.setBaseDefinition(base.getUrl()); focus.setType("Patient"); focus.setDerivation(TypeDerivationRule.CONSTRAINT); List messages = new ArrayList<>(); - new ProfileUtilities(TestingUtilities.context(), messages, null).generateSnapshot(base, focus, focus.getUrl(), "http://test.org/test", "Simple Test"); + new ProfileUtilities(TestingUtilities.getSharedWorkerContext(), messages, null).generateSnapshot(base, focus, focus.getUrl(), "http://test.org/test", "Simple Test"); boolean ok = base.getSnapshot().getElement().size() == focus.getSnapshot().getElement().size(); for (int i = 0; i < base.getSnapshot().getElement().size(); i++) { @@ -70,13 +70,13 @@ public class ProfileUtilitiesTests { // */ @Test public void testSimple2() { - StructureDefinition base = TestingUtilities.context().fetchResource(StructureDefinition.class, "http://hl7.org/fhir/StructureDefinition/ValueSet").copy(); + StructureDefinition base = TestingUtilities.getSharedWorkerContext().fetchResource(StructureDefinition.class, "http://hl7.org/fhir/StructureDefinition/ValueSet").copy(); StructureDefinition focus = base.copy(); focus.setUrl(Utilities.makeUuidUrn()); focus.setSnapshot(null); focus.setDifferential(null); List messages = new ArrayList<>(); - new ProfileUtilities(TestingUtilities.context(), messages, null).generateSnapshot(base, focus, focus.getUrl(), "http://test.org", "Simple Test"); + new ProfileUtilities(TestingUtilities.getSharedWorkerContext(), messages, null).generateSnapshot(base, focus, focus.getUrl(), "http://test.org", "Simple Test"); boolean ok = base.getSnapshot().getElement().size() == focus.getSnapshot().getElement().size(); for (int i = 0; i < base.getSnapshot().getElement().size(); i++) { @@ -110,7 +110,7 @@ public class ProfileUtilitiesTests { @Test void testCardinalityChange() { StructureDefinition focus = new StructureDefinition(); - StructureDefinition base = TestingUtilities.context().fetchResource(StructureDefinition.class, "http://hl7.org/fhir/StructureDefinition/Patient").copy(); + StructureDefinition base = TestingUtilities.getSharedWorkerContext().fetchResource(StructureDefinition.class, "http://hl7.org/fhir/StructureDefinition/Patient").copy(); focus.setUrl(Utilities.makeUuidUrn()); focus.setBaseDefinition(base.getUrl()); focus.setType(base.getType()); @@ -119,7 +119,7 @@ public class ProfileUtilitiesTests { id.setPath("Patient.identifier"); id.setMin(1); List messages = new ArrayList<>(); - new ProfileUtilities(TestingUtilities.context(), messages, null).generateSnapshot(base, focus, focus.getUrl(), "http://test.org", "Simple Test"); + new ProfileUtilities(TestingUtilities.getSharedWorkerContext(), messages, null).generateSnapshot(base, focus, focus.getUrl(), "http://test.org", "Simple Test"); boolean ok = base.getSnapshot().getElement().size() == focus.getSnapshot().getElement().size(); for (int i = 0; i < base.getSnapshot().getElement().size(); i++) { @@ -155,7 +155,7 @@ public class ProfileUtilitiesTests { void testMinValueChange() { // Given StructureDefinition focus = new StructureDefinition(); - StructureDefinition base = TestingUtilities.context().fetchResource(StructureDefinition.class, "http://hl7.org/fhir/StructureDefinition/Appointment").copy(); + StructureDefinition base = TestingUtilities.getSharedWorkerContext().fetchResource(StructureDefinition.class, "http://hl7.org/fhir/StructureDefinition/Appointment").copy(); focus.setUrl(Utilities.makeUuidUrn()); focus.setBaseDefinition(base.getUrl()); focus.setType(base.getType()); @@ -165,7 +165,7 @@ public class ProfileUtilitiesTests { id.setMinValue(new IntegerType(1)); List messages = new ArrayList<>(); // When - new ProfileUtilities(TestingUtilities.context(), messages, null).generateSnapshot(base, focus, focus.getUrl(), "http://test.org", "Simple Test"); + new ProfileUtilities(TestingUtilities.getSharedWorkerContext(), messages, null).generateSnapshot(base, focus, focus.getUrl(), "http://test.org", "Simple Test"); // Then boolean ok = base.getSnapshot().getElement().size() == focus.getSnapshot().getElement().size(); for (int i = 0; i < base.getSnapshot().getElement().size(); i++) { @@ -202,7 +202,7 @@ public class ProfileUtilitiesTests { void testMaxValueChange() { // Given StructureDefinition focus = new StructureDefinition(); - StructureDefinition base = TestingUtilities.context().fetchResource(StructureDefinition.class, "http://hl7.org/fhir/StructureDefinition/Appointment").copy(); + StructureDefinition base = TestingUtilities.getSharedWorkerContext().fetchResource(StructureDefinition.class, "http://hl7.org/fhir/StructureDefinition/Appointment").copy(); focus.setUrl(Utilities.makeUuidUrn()); focus.setBaseDefinition(base.getUrl()); focus.setType(base.getType()); @@ -212,7 +212,7 @@ public class ProfileUtilitiesTests { id.setMaxValue(new IntegerType(1)); List messages = new ArrayList<>(); // When - new ProfileUtilities(TestingUtilities.context(), messages, null).generateSnapshot(base, focus, focus.getUrl(), "http://test.org", "Simple Test"); + new ProfileUtilities(TestingUtilities.getSharedWorkerContext(), messages, null).generateSnapshot(base, focus, focus.getUrl(), "http://test.org", "Simple Test"); // Then boolean ok = base.getSnapshot().getElement().size() == focus.getSnapshot().getElement().size(); for (int i = 0; i < base.getSnapshot().getElement().size(); i++) { diff --git a/org.hl7.fhir.r5/src/test/java/org/hl7/fhir/r5/test/ResourceRoundTripTests.java b/org.hl7.fhir.r5/src/test/java/org/hl7/fhir/r5/test/ResourceRoundTripTests.java index f69340efb..fb25a400e 100644 --- a/org.hl7.fhir.r5/src/test/java/org/hl7/fhir/r5/test/ResourceRoundTripTests.java +++ b/org.hl7.fhir.r5/src/test/java/org/hl7/fhir/r5/test/ResourceRoundTripTests.java @@ -33,7 +33,7 @@ public class ResourceRoundTripTests { @Test public void test() throws IOException, FHIRException, EOperationOutcome { DomainResource res = (DomainResource) new XmlParser().parse(TestingUtilities.loadTestResourceStream("r5", "unicode.xml")); - RenderingContext rc = new RenderingContext(TestingUtilities.context(), null, null, "http://hl7.org/fhir", "", null, ResourceRendererMode.END_USER); + RenderingContext rc = new RenderingContext(TestingUtilities.getSharedWorkerContext(), null, null, "http://hl7.org/fhir", "", null, ResourceRendererMode.END_USER); RendererFactory.factory(res, rc).render(res); IOUtils.copy(TestingUtilities.loadTestResourceStream("r5", "unicode.xml"), new FileOutputStream(TestingUtilities.tempFile("gen", "unicode.xml"))); new XmlParser().setOutputStyle(OutputStyle.PRETTY).compose(new FileOutputStream(TestingUtilities.tempFile("gen", "unicode.out.xml")), res); @@ -64,7 +64,7 @@ public class ResourceRoundTripTests { * verify that umlaut like äö etc are not encoded in UTF-8 in attributes */ public void testSerializeUmlaut() throws IOException { - Element xml = Manager.parseSingle(TestingUtilities.context(), TestingUtilities.loadTestResourceStream("r5", "unicode.xml"), + Element xml = Manager.parseSingle(TestingUtilities.getSharedWorkerContext(), TestingUtilities.loadTestResourceStream("r5", "unicode.xml"), FhirFormat.XML); List concept = xml.getChildrenByName("concept"); assertTrue(concept!=null && concept.size()==1); @@ -72,7 +72,7 @@ public class ResourceRoundTripTests { assertTrue(code!=null && code.size()==1); code.get(0).setValue("ö"); ByteArrayOutputStream baosXml = new ByteArrayOutputStream(); - Manager.compose(TestingUtilities.context(), xml, baosXml, FhirFormat.XML, OutputStyle.PRETTY, null); + Manager.compose(TestingUtilities.getSharedWorkerContext(), xml, baosXml, FhirFormat.XML, OutputStyle.PRETTY, null); String cdaSerialised = baosXml.toString("UTF-8"); assertTrue(cdaSerialised.indexOf("ö")>0); } diff --git a/org.hl7.fhir.r5/src/test/java/org/hl7/fhir/r5/test/ShexGeneratorTests.java b/org.hl7.fhir.r5/src/test/java/org/hl7/fhir/r5/test/ShexGeneratorTests.java index 23b076d84..26a3b3408 100644 --- a/org.hl7.fhir.r5/src/test/java/org/hl7/fhir/r5/test/ShexGeneratorTests.java +++ b/org.hl7.fhir.r5/src/test/java/org/hl7/fhir/r5/test/ShexGeneratorTests.java @@ -18,12 +18,12 @@ import org.junit.jupiter.api.Test; public class ShexGeneratorTests { private void doTest(String name) throws FileNotFoundException, IOException, FHIRException, UcumException { - StructureDefinition sd = TestingUtilities.context().fetchResource(StructureDefinition.class, ProfileUtilities.sdNs(name, null)); + StructureDefinition sd = TestingUtilities.getSharedWorkerContext().fetchResource(StructureDefinition.class, ProfileUtilities.sdNs(name, null)); if (sd == null) { throw new FHIRException("StructuredDefinition for " + name + "was null"); } Path outPath = FileSystems.getDefault().getPath(System.getProperty("java.io.tmpdir"), name.toLowerCase() + ".shex"); - TextFile.stringToFile(new ShExGenerator(TestingUtilities.context()).generate(HTMLLinkPolicy.NONE, sd), outPath.toString()); + TextFile.stringToFile(new ShExGenerator(TestingUtilities.getSharedWorkerContext()).generate(HTMLLinkPolicy.NONE, sd), outPath.toString()); } @Test diff --git a/org.hl7.fhir.r5/src/test/java/org/hl7/fhir/r5/test/SnapShotGenerationTests.java b/org.hl7.fhir.r5/src/test/java/org/hl7/fhir/r5/test/SnapShotGenerationTests.java index 1d2c4c96f..2155fb195 100644 --- a/org.hl7.fhir.r5/src/test/java/org/hl7/fhir/r5/test/SnapShotGenerationTests.java +++ b/org.hl7.fhir.r5/src/test/java/org/hl7/fhir/r5/test/SnapShotGenerationTests.java @@ -211,13 +211,13 @@ public class SnapShotGenerationTests { @Override public boolean isDatatype(String name) { - StructureDefinition sd = TestingUtilities.context().fetchTypeDefinition(name); + StructureDefinition sd = TestingUtilities.getSharedWorkerContext().fetchTypeDefinition(name); return (sd != null) && (sd.getDerivation() == TypeDerivationRule.SPECIALIZATION) && (sd.getKind() == StructureDefinitionKind.PRIMITIVETYPE || sd.getKind() == StructureDefinitionKind.COMPLEXTYPE); } @Override public boolean isResource(String typeSimple) { - StructureDefinition sd = TestingUtilities.context().fetchTypeDefinition(typeSimple); + StructureDefinition sd = TestingUtilities.getSharedWorkerContext().fetchTypeDefinition(typeSimple); return (sd != null) && (sd.getDerivation() == TypeDerivationRule.SPECIALIZATION) && (sd.getKind() == StructureDefinitionKind.RESOURCE); } @@ -249,7 +249,7 @@ public class SnapShotGenerationTests { @Override public String getLinkForProfile(StructureDefinition profile, String url) { - StructureDefinition sd = TestingUtilities.context().fetchResource(StructureDefinition.class, url); + StructureDefinition sd = TestingUtilities.getSharedWorkerContext().fetchResource(StructureDefinition.class, url); if (sd == null) return url + "|" + url; else @@ -275,15 +275,15 @@ public class SnapShotGenerationTests { public Resource fetchFixture(String id) { TestFetchMode mode = TestFetchMode.INPUT; if (id.equals("patient")) - return TestingUtilities.context().fetchResource(StructureDefinition.class, "http://hl7.org/fhir/StructureDefinition/Patient"); + return TestingUtilities.getSharedWorkerContext().fetchResource(StructureDefinition.class, "http://hl7.org/fhir/StructureDefinition/Patient"); if (id.equals("valueset")) - return TestingUtilities.context().fetchResource(StructureDefinition.class, "http://hl7.org/fhir/StructureDefinition/ValueSet"); + return TestingUtilities.getSharedWorkerContext().fetchResource(StructureDefinition.class, "http://hl7.org/fhir/StructureDefinition/ValueSet"); if (id.equals("organization")) - return TestingUtilities.context().fetchResource(StructureDefinition.class, "http://hl7.org/fhir/StructureDefinition/Organization"); + return TestingUtilities.getSharedWorkerContext().fetchResource(StructureDefinition.class, "http://hl7.org/fhir/StructureDefinition/Organization"); if (id.equals("operationoutcome")) - return TestingUtilities.context().fetchResource(StructureDefinition.class, "http://hl7.org/fhir/StructureDefinition/OperationOutcome"); + return TestingUtilities.getSharedWorkerContext().fetchResource(StructureDefinition.class, "http://hl7.org/fhir/StructureDefinition/OperationOutcome"); if (id.equals("parameters")) - return TestingUtilities.context().fetchResource(StructureDefinition.class, "http://hl7.org/fhir/StructureDefinition/Parameters"); + return TestingUtilities.getSharedWorkerContext().fetchResource(StructureDefinition.class, "http://hl7.org/fhir/StructureDefinition/Parameters"); if (id.contains("-")) { String[] p = id.split("\\-"); @@ -339,7 +339,7 @@ public class SnapShotGenerationTests { @Override public TypeDetails checkFunction(Object appContext, String functionName, List parameters) throws PathEngineException { if ("fixture".equals(functionName)) - return new TypeDetails(CollectionStatus.SINGLETON, TestingUtilities.context().getResourceNamesAsSet()); + return new TypeDetails(CollectionStatus.SINGLETON, TestingUtilities.getSharedWorkerContext().getResourceNamesAsSet()); return null; } @@ -366,7 +366,7 @@ public class SnapShotGenerationTests { @Override public boolean conformsToProfile(Object appContext, Base item, String url) throws FHIRException { - IResourceValidator val = TestingUtilities.context().newValidator(); + IResourceValidator val = TestingUtilities.getSharedWorkerContext().newValidator(); List valerrors = new ArrayList(); if (item instanceof Resource) { val.validate(appContext, valerrors, (Resource) item, url); @@ -404,7 +404,7 @@ public class SnapShotGenerationTests { @BeforeAll public static void setUp() { - fp = new FHIRPathEngine(TestingUtilities.context()); + fp = new FHIRPathEngine(TestingUtilities.getSharedWorkerContext()); } public static Stream data() throws ParserConfigurationException, IOException, FHIRFormatError, SAXException { @@ -462,7 +462,7 @@ public class SnapShotGenerationTests { private void testSort(TestDetails test, SnapShotGenerationTestsContext context) throws DefinitionException, FHIRException, IOException { StructureDefinition base = getSD(test.getSource().getBaseDefinition(), context); test.setOutput(test.getSource().copy()); - ProfileUtilities pu = new ProfileUtilities(TestingUtilities.context(), null, null); + ProfileUtilities pu = new ProfileUtilities(TestingUtilities.getSharedWorkerContext(), null, null); pu.setIds(test.getSource(), false); List errors = new ArrayList(); pu.sortDifferential(base, test.getOutput(), test.getOutput().getUrl(), errors, false); @@ -476,17 +476,17 @@ public class SnapShotGenerationTests { private void testGen(boolean fail, TestDetails test, SnapShotGenerationTestsContext context) throws Exception { if (!Utilities.noString(test.register)) { List messages = new ArrayList(); - ProfileUtilities pu = new ProfileUtilities(TestingUtilities.context(), messages, null); + ProfileUtilities pu = new ProfileUtilities(TestingUtilities.getSharedWorkerContext(), messages, null); pu.setNewSlicingProcessing(true); for (StructureDefinition sd : test.included) { pu.setIds(sd, false); } for (StructureDefinition sd : test.included) { - if (!TestingUtilities.context().hasResource(StructureDefinition.class, sd.getUrl())) { - TestingUtilities.context().cacheResource(sd); + if (!TestingUtilities.getSharedWorkerContext().hasResource(StructureDefinition.class, sd.getUrl())) { + TestingUtilities.getSharedWorkerContext().cacheResource(sd); } } - StructureDefinition base = TestingUtilities.context().fetchResource(StructureDefinition.class, test.included.get(0).getBaseDefinition()); + StructureDefinition base = TestingUtilities.getSharedWorkerContext().fetchResource(StructureDefinition.class, test.included.get(0).getBaseDefinition()); if (base != null) { pu.generateSnapshot(base, test.included.get(0), test.included.get(0).getUrl(), "http://test.org/profile", test.included.get(0).getName()); } @@ -505,16 +505,16 @@ public class SnapShotGenerationTests { throw new Exception("URL mismatch on base: " + base.getUrl() + " wanting " + test.getSource().getBaseDefinition()); StructureDefinition output = test.getSource().copy(); - ProfileUtilities pu = new ProfileUtilities(TestingUtilities.context(), messages, new TestPKP()); + ProfileUtilities pu = new ProfileUtilities(TestingUtilities.getSharedWorkerContext(), messages, new TestPKP()); pu.setNewSlicingProcessing(test.isNewSliceProcessing()); pu.setThrowException(false); pu.setDebug(test.isDebug()); pu.setIds(test.getSource(), false); - if (!TestingUtilities.context().hasPackage(CommonPackages.ID_XVER, CommonPackages.VER_XVER)) { + if (!TestingUtilities.getSharedWorkerContext().hasPackage(CommonPackages.ID_XVER, CommonPackages.VER_XVER)) { NpmPackage npm = new FilesystemPackageCacheManager(true, ToolsVersion.TOOLS_VERSION).loadPackage(CommonPackages.ID_XVER, CommonPackages.VER_XVER); - TestingUtilities.context().loadFromPackage(npm, new TestPackageLoader(new String[]{"StructureDefinition"}), new String[]{"StructureDefinition"}); + TestingUtilities.getSharedWorkerContext().loadFromPackage(npm, new TestPackageLoader(new String[]{"StructureDefinition"}), new String[]{"StructureDefinition"}); } - pu.setXver(new XVerExtensionManager(TestingUtilities.context())); + pu.setXver(new XVerExtensionManager(TestingUtilities.getSharedWorkerContext())); if (test.isSort()) { List errors = new ArrayList(); int lastCount = output.getDifferential().getElement().size(); @@ -539,14 +539,14 @@ public class SnapShotGenerationTests { throw e; } if (output.getDifferential().hasElement()) { - RenderingContext rc = new RenderingContext(TestingUtilities.context(), null, null, "http://hl7.org/fhir", "", null, ResourceRendererMode.END_USER); + RenderingContext rc = new RenderingContext(TestingUtilities.getSharedWorkerContext(), null, null, "http://hl7.org/fhir", "", null, ResourceRendererMode.END_USER); rc.setDestDir(Utilities.path("[tmp]", "snapshot")); - rc.setProfileUtilities(new ProfileUtilities(TestingUtilities.context(), null, new TestPKP())); + rc.setProfileUtilities(new ProfileUtilities(TestingUtilities.getSharedWorkerContext(), null, new TestPKP())); RendererFactory.factory(output, rc).render(output); } if (!fail) { test.output = output; - TestingUtilities.context().cacheResource(output); + TestingUtilities.getSharedWorkerContext().cacheResource(output); File dst = new File(TestingUtilities.tempFile("snapshot", test.getId() + "-expected.xml")); if (dst.exists()) dst.delete(); @@ -563,14 +563,14 @@ public class SnapShotGenerationTests { private StructureDefinition getSD(String url, SnapShotGenerationTestsContext context) throws DefinitionException, FHIRException, IOException { StructureDefinition sd = context.getByUrl(url); if (sd == null) { - sd = TestingUtilities.context().fetchResource(StructureDefinition.class, url); + sd = TestingUtilities.getSharedWorkerContext().fetchResource(StructureDefinition.class, url); } if (sd == null) { throw new DefinitionException("Unable to find profile "+url); } if (!sd.hasSnapshot()) { StructureDefinition base = getSD(sd.getBaseDefinition(), context); - ProfileUtilities pu = new ProfileUtilities(TestingUtilities.context(), messages, new TestPKP()); + ProfileUtilities pu = new ProfileUtilities(TestingUtilities.getSharedWorkerContext(), messages, new TestPKP()); pu.setNewSlicingProcessing(true); List errors = new ArrayList(); pu.sortDifferential(base, sd, url, errors, false); diff --git a/org.hl7.fhir.r5/src/test/java/org/hl7/fhir/r5/test/VocabTests.java b/org.hl7.fhir.r5/src/test/java/org/hl7/fhir/r5/test/VocabTests.java index 0cb27a1b4..cdbf4fe9e 100644 --- a/org.hl7.fhir.r5/src/test/java/org/hl7/fhir/r5/test/VocabTests.java +++ b/org.hl7.fhir.r5/src/test/java/org/hl7/fhir/r5/test/VocabTests.java @@ -24,6 +24,7 @@ import org.hl7.fhir.r5.renderers.utils.RenderingContext.ITypeParser; import org.hl7.fhir.r5.terminologies.ValueSetExpander.ValueSetExpansionOutcome; import org.hl7.fhir.r5.test.utils.TestingUtilities; import org.hl7.fhir.utilities.TextFile; +import org.hl7.fhir.utilities.VersionUtilities; import org.hl7.fhir.utilities.npm.FilesystemPackageCacheManager; import org.hl7.fhir.utilities.npm.NpmPackage; import org.hl7.fhir.utilities.npm.ToolsVersion; @@ -104,8 +105,11 @@ public class VocabTests { } @BeforeAll - public static void setUp() throws FileNotFoundException, FHIRException, IOException { - context = TestingUtilities.context(); + public static void setUp() throws FHIRException, IOException { + /* Do NOT get a shared worker context from Testing Utilities or else the terminology package loaded below + will appear in tests where it causes failures. + */ + context = TestingUtilities.getWorkerContext(VersionUtilities.getMajMin(TestingUtilities.DEFAULT_CONTEXT_VERSION)); if (!context.hasPackage("hl7.terminology", null)) { NpmPackage utg = new FilesystemPackageCacheManager(true, ToolsVersion.TOOLS_VERSION).loadPackage("hl7.terminology"); diff --git a/org.hl7.fhir.r5/src/test/java/org/hl7/fhir/r5/test/misc/ResourceTest.java b/org.hl7.fhir.r5/src/test/java/org/hl7/fhir/r5/test/misc/ResourceTest.java index f4233fcb2..dcde38c41 100644 --- a/org.hl7.fhir.r5/src/test/java/org/hl7/fhir/r5/test/misc/ResourceTest.java +++ b/org.hl7.fhir.r5/src/test/java/org/hl7/fhir/r5/test/misc/ResourceTest.java @@ -86,9 +86,9 @@ public class ResourceTest { } public Element testEM() throws Exception { - Element resource = Manager.parseSingle(TestingUtilities.context(), new FileInputStream(source), isJson() ? FhirFormat.JSON : FhirFormat.XML); - Manager.compose(TestingUtilities.context(), resource, new FileOutputStream(source.getAbsoluteFile()+".out.json"), FhirFormat.JSON, OutputStyle.PRETTY, null); - Manager.compose(TestingUtilities.context(), resource, new FileOutputStream(source.getAbsoluteFile()+".out.json"), FhirFormat.XML, OutputStyle.PRETTY, null); + Element resource = Manager.parseSingle(TestingUtilities.getSharedWorkerContext(), new FileInputStream(source), isJson() ? FhirFormat.JSON : FhirFormat.XML); + Manager.compose(TestingUtilities.getSharedWorkerContext(), resource, new FileOutputStream(source.getAbsoluteFile()+".out.json"), FhirFormat.JSON, OutputStyle.PRETTY, null); + Manager.compose(TestingUtilities.getSharedWorkerContext(), resource, new FileOutputStream(source.getAbsoluteFile()+".out.json"), FhirFormat.XML, OutputStyle.PRETTY, null); return resource; } diff --git a/org.hl7.fhir.validation/src/test/java/org/hl7/fhir/comparison/tests/ComparisonTests.java b/org.hl7.fhir.validation/src/test/java/org/hl7/fhir/comparison/tests/ComparisonTests.java index 82017d2e6..75d82d6bf 100644 --- a/org.hl7.fhir.validation/src/test/java/org/hl7/fhir/comparison/tests/ComparisonTests.java +++ b/org.hl7.fhir.validation/src/test/java/org/hl7/fhir/comparison/tests/ComparisonTests.java @@ -108,7 +108,7 @@ public class ComparisonTests { if (context == null) { System.out.println("---- Load R5 ----------------------------------------------------------------"); - context = TestingUtilities.context(); + context = TestingUtilities.getSharedWorkerContext(); FilesystemPackageCacheManager pcm = new FilesystemPackageCacheManager(true, ToolsVersion.TOOLS_VERSION); NpmPackage npm = pcm.loadPackage("hl7.fhir.us.core#3.1.0"); BaseWorkerContext bc = (BaseWorkerContext) context; diff --git a/org.hl7.fhir.validation/src/test/java/org/hl7/fhir/conversion/tests/SnapShotGenerationXTests.java b/org.hl7.fhir.validation/src/test/java/org/hl7/fhir/conversion/tests/SnapShotGenerationXTests.java index d5896e537..1be3ec956 100644 --- a/org.hl7.fhir.validation/src/test/java/org/hl7/fhir/conversion/tests/SnapShotGenerationXTests.java +++ b/org.hl7.fhir.validation/src/test/java/org/hl7/fhir/conversion/tests/SnapShotGenerationXTests.java @@ -522,9 +522,9 @@ public class SnapShotGenerationXTests { throw e; } if (output.getDifferential().hasElement()) { - RenderingContext rc = new RenderingContext(TestingUtilities.context(), null, null, "http://hl7.org/fhir", "", null, ResourceRendererMode.END_USER); + RenderingContext rc = new RenderingContext(TestingUtilities.getSharedWorkerContext(), null, null, "http://hl7.org/fhir", "", null, ResourceRendererMode.END_USER); rc.setDestDir(makeTempDir()); - rc.setProfileUtilities(new ProfileUtilities(TestingUtilities.context(), null, new TestPKP())); + rc.setProfileUtilities(new ProfileUtilities(TestingUtilities.getSharedWorkerContext(), null, new TestPKP())); RendererFactory.factory(output, rc).render(output); } if (!fail) { diff --git a/org.hl7.fhir.validation/src/test/java/org/hl7/fhir/validation/tests/ValidationTests.java b/org.hl7.fhir.validation/src/test/java/org/hl7/fhir/validation/tests/ValidationTests.java index 3a79d370e..e5cf2d30b 100644 --- a/org.hl7.fhir.validation/src/test/java/org/hl7/fhir/validation/tests/ValidationTests.java +++ b/org.hl7.fhir.validation/src/test/java/org/hl7/fhir/validation/tests/ValidationTests.java @@ -350,9 +350,9 @@ public class ValidationTests implements IEvaluationContext, IValidatorResourceFe public StructureDefinition loadProfile(String filename, String contents, List messages) throws IOException, FHIRFormatError, FileNotFoundException, FHIRException, DefinitionException { StructureDefinition sd = (StructureDefinition) loadResource(filename, contents); - ProfileUtilities pu = new ProfileUtilities(TestingUtilities.context(version), messages, null); + ProfileUtilities pu = new ProfileUtilities(TestingUtilities.getSharedWorkerContext(version), messages, null); if (!sd.hasSnapshot()) { - StructureDefinition base = TestingUtilities.context(version).fetchResource(StructureDefinition.class, sd.getBaseDefinition()); + StructureDefinition base = TestingUtilities.getSharedWorkerContext(version).fetchResource(StructureDefinition.class, sd.getBaseDefinition()); pu.generateSnapshot(base, sd, sd.getUrl(), null, sd.getTitle()); // (debugging) new XmlParser().setOutputStyle(OutputStyle.PRETTY).compose(new FileOutputStream(Utilities.path("[tmp]", sd.getId()+".xml")), sd); } @@ -360,7 +360,7 @@ public class ValidationTests implements IEvaluationContext, IValidatorResourceFe if (r instanceof StructureDefinition) { StructureDefinition childSd = (StructureDefinition) r; if (!childSd.hasSnapshot()) { - StructureDefinition base = TestingUtilities.context(version).fetchResource(StructureDefinition.class, childSd.getBaseDefinition()); + StructureDefinition base = TestingUtilities.getSharedWorkerContext(version).fetchResource(StructureDefinition.class, childSd.getBaseDefinition()); pu.generateSnapshot(base, childSd, childSd.getUrl(), null, childSd.getTitle()); } } @@ -427,7 +427,7 @@ public class ValidationTests implements IEvaluationContext, IValidatorResourceFe } } } - if (!TestingUtilities.context(version).isNoTerminologyServer() || !focus.has("tx-dependent")) { + if (!TestingUtilities.getSharedWorkerContext(version).isNoTerminologyServer() || !focus.has("tx-dependent")) { Assert.assertEquals("Test " + name + (profile == null ? "" : " profile: "+ profile) + ": Expected " + Integer.toString(java.get("errorCount").getAsInt()) + " errors, but found " + Integer.toString(ec) + ".", java.get("errorCount").getAsInt(), ec); if (java.has("warningCount")) { Assert.assertEquals( "Test " + name + (profile == null ? "" : " profile: "+ profile) + ": Expected " + Integer.toString(java.get("warningCount").getAsInt()) + " warnings, but found " + Integer.toString(wc) + ".", java.get("warningCount").getAsInt(), wc); @@ -501,18 +501,18 @@ public class ValidationTests implements IEvaluationContext, IValidatorResourceFe public Element fetch(IResourceValidator validator, Object appContext, String url) throws FHIRFormatError, DefinitionException, IOException, FHIRException { Element res = null; if (url.equals("Patient/test")) { - res = new ObjectConverter(TestingUtilities.context(version)).convert(new Patient()); + res = new ObjectConverter(TestingUtilities.getSharedWorkerContext(version)).convert(new Patient()); } else if (TestingUtilities.findTestResource("validator", url.replace("/", "-").toLowerCase() + ".json")) { - res = Manager.makeParser(TestingUtilities.context(version), FhirFormat.JSON).parseSingle(TestingUtilities.loadTestResourceStream("validator", url.replace("/", "-").toLowerCase() + ".json")); + res = Manager.makeParser(TestingUtilities.getSharedWorkerContext(version), FhirFormat.JSON).parseSingle(TestingUtilities.loadTestResourceStream("validator", url.replace("/", "-").toLowerCase() + ".json")); } else if (TestingUtilities.findTestResource("validator", url.replace("/", "-").toLowerCase() + ".xml")) { - res = Manager.makeParser(TestingUtilities.context(version), FhirFormat.XML).parseSingle(TestingUtilities.loadTestResourceStream("validator", url.replace("/", "-").toLowerCase() + ".xml")); + res = Manager.makeParser(TestingUtilities.getSharedWorkerContext(version), FhirFormat.XML).parseSingle(TestingUtilities.loadTestResourceStream("validator", url.replace("/", "-").toLowerCase() + ".xml")); } if (res == null && url.contains("/")) { String tail = url.substring(url.indexOf("/") + 1); if (TestingUtilities.findTestResource("validator", tail.replace("/", "-").toLowerCase() + ".json")) { - res = Manager.makeParser(TestingUtilities.context(version), FhirFormat.JSON).parseSingle(TestingUtilities.loadTestResourceStream("validator", tail.replace("/", "-").toLowerCase() + ".json")); + res = Manager.makeParser(TestingUtilities.getSharedWorkerContext(version), FhirFormat.JSON).parseSingle(TestingUtilities.loadTestResourceStream("validator", tail.replace("/", "-").toLowerCase() + ".json")); } else if (TestingUtilities.findTestResource("validator", tail.replace("/", "-").toLowerCase() + ".xml")) { - res = Manager.makeParser(TestingUtilities.context(version), FhirFormat.XML).parseSingle(TestingUtilities.loadTestResourceStream("validator", tail.replace("/", "-").toLowerCase() + ".xml")); + res = Manager.makeParser(TestingUtilities.getSharedWorkerContext(version), FhirFormat.XML).parseSingle(TestingUtilities.loadTestResourceStream("validator", tail.replace("/", "-").toLowerCase() + ".xml")); } } return res; @@ -558,7 +558,7 @@ public class ValidationTests implements IEvaluationContext, IValidatorResourceFe @Override public boolean conformsToProfile(Object appContext, Base item, String url) throws FHIRException { - IResourceValidator val = TestingUtilities.context(version).newValidator(); + IResourceValidator val = TestingUtilities.getSharedWorkerContext(version).newValidator(); List valerrors = new ArrayList(); if (item instanceof Resource) { val.validate(appContext, valerrors, (Resource) item, url); From 8df7938f3e50fd773974d17bf25c5a2b317f4a13 Mon Sep 17 00:00:00 2001 From: dotasek Date: Fri, 4 Mar 2022 13:06:44 -0500 Subject: [PATCH 10/11] Update RELEASE_NOTES.md ***NO_CI*** --- RELEASE_NOTES.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md index 7b06c6ab5..20bd38a65 100644 --- a/RELEASE_NOTES.md +++ b/RELEASE_NOTES.md @@ -4,4 +4,4 @@ ## Other code changes -* no changes \ No newline at end of file +* Fix to r5 TestingUtilities to allow NarrativeGenerationTests to pass. From bb06bae4e645b8b5de163be5ffef39b2696c00f2 Mon Sep 17 00:00:00 2001 From: dotasek Date: Mon, 7 Mar 2022 16:02:00 -0500 Subject: [PATCH 11/11] Apply uniform capitalization requirements for JSON --- .../java/org/hl7/fhir/utilities/npm/PackageClient.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/org.hl7.fhir.utilities/src/main/java/org/hl7/fhir/utilities/npm/PackageClient.java b/org.hl7.fhir.utilities/src/main/java/org/hl7/fhir/utilities/npm/PackageClient.java index 90914dc27..789e65a44 100644 --- a/org.hl7.fhir.utilities/src/main/java/org/hl7/fhir/utilities/npm/PackageClient.java +++ b/org.hl7.fhir.utilities/src/main/java/org/hl7/fhir/utilities/npm/PackageClient.java @@ -81,10 +81,10 @@ public class PackageClient { if (versions != null) { for (String v : sorted(versions.keySet())) { JsonObject obj = versions.getAsJsonObject(v); - res.add(new PackageInfo(JSONUtil.str(obj, "name"), - JSONUtil.str(obj, "version"), - JSONUtil.str(obj, "FhirVersion"), - JSONUtil.str(obj, "description"), + res.add(new PackageInfo(JSONUtil.str(obj, "Name", "name"), + JSONUtil.str(obj, "Version", "version"), + JSONUtil.str(obj, "FhirVersion", "fhirVersion"), + JSONUtil.str(obj, "Description", "description"), JSONUtil.str(obj, "url"), JSONUtil.str(obj, "canonical"), address));