-
Notifications
You must be signed in to change notification settings - Fork 46
Added service loader pattern for deserialization #587
Conversation
# Conflicts: # pom.xml
…ically create new tests based on the number of files in the directory.
# Conflicts: # engine.fhir/pom.xml # engine.jaxb/pom.xml # engine/pom.xml # pom.xml
# Conflicts: # engine.fhir/src/test/java/org/opencds/cqf/cql/engine/fhir/model/TestDstu2ModelResolver.java
# Conflicts: # engine.fhir/pom.xml # engine.fhir/src/main/java/org/opencds/cqf/cql/engine/fhir/model/Dstu2FhirModelResolver.java # engine.fhir/src/main/java/org/opencds/cqf/cql/engine/fhir/model/Dstu3FhirModelResolver.java # engine.fhir/src/main/java/org/opencds/cqf/cql/engine/fhir/model/R4FhirModelResolver.java # engine.fhir/src/test/java/org/hl7/fhirpath/CQLOperationsDstu3Test.java # engine.fhir/src/test/java/org/hl7/fhirpath/CQLOperationsR4Test.java # engine.fhir/src/test/java/org/hl7/fhirpath/TestLibraryLoader.java # engine.fhir/src/test/java/org/hl7/fhirpath/TranslatorHelper.java # engine.fhir/src/test/java/org/opencds/cqf/cql/engine/fhir/data/FhirExecutionTestBase.java # engine.fhir/src/test/java/org/opencds/cqf/cql/engine/fhir/data/TestFhirDataProviderDstu3.java # engine.fhir/src/test/java/org/opencds/cqf/cql/engine/fhir/model/TestDstu2ModelResolver.java # engine.fhir/src/test/java/org/opencds/cqf/cql/engine/fhir/retrieve/TestDstu3FhirQueryGenerator.java # engine.fhir/src/test/java/org/opencds/cqf/cql/engine/fhir/retrieve/TestR4FhirQueryGenerator.java # engine.fhir/src/test/java/org/opencds/cqf/cql/engine/fhir/retrieve/TestRestFhirRetrieveProvider.java # engine.jackson/src/test/java/org/opencds/cqf/cql/engine/execution/CqlEngineTests.java # engine.jackson/src/test/java/org/opencds/cqf/cql/engine/execution/CqlExecutionTestBase.java # engine.jackson/src/test/java/org/opencds/cqf/cql/engine/execution/CqlInternalTypeRepresentationSuiteTest.java # engine.jackson/src/test/java/org/opencds/cqf/cql/engine/execution/CqlPerformanceIT.java # engine.jackson/src/test/java/org/opencds/cqf/cql/engine/execution/TestLibraryLoader.java # engine.jackson/src/test/java/org/opencds/cqf/cql/engine/execution/TranslatingTestBase.java # engine.jaxb/pom.xml # engine.jaxb/src/test/java/org/opencds/cqf/cql/engine/execution/ANCFHIRTests.java # engine.jaxb/src/test/java/org/opencds/cqf/cql/engine/execution/CMS53Tests.java # engine.jaxb/src/test/java/org/opencds/cqf/cql/engine/execution/ElmRegressionTests.java # engine.jaxb/src/test/java/org/opencds/cqf/cql/engine/execution/ElmTests.java # engine/pom.xml # engine/src/main/java/org/opencds/cqf/cql/engine/execution/JsonCqlLibraryReader.java # engine/src/test/java/org/opencds/cqf/cql/engine/execution/CqlInternalTypeRepresentationSuiteTest.java # engine/src/test/java/org/opencds/cqf/cql/engine/execution/CqlTestSuite.java # pom.xml
# Conflicts: # engine.fhir/pom.xml # engine.fhir/src/test/java/org/hl7/fhirpath/TestLibraryLoader.java # engine.fhir/src/test/java/org/hl7/fhirpath/TranslatorHelper.java # engine.fhir/src/test/java/org/opencds/cqf/cql/engine/fhir/data/FhirExecutionTestBase.java # engine.jackson/src/test/java/org/opencds/cqf/cql/engine/execution/CqlEngineTests.java # engine.jackson/src/test/java/org/opencds/cqf/cql/engine/execution/CqlExecutionTestBase.java # engine.jackson/src/test/java/org/opencds/cqf/cql/engine/execution/CqlInternalTypeRepresentationSuiteTest.java # engine.jackson/src/test/java/org/opencds/cqf/cql/engine/execution/CqlPerformanceIT.java # engine.jackson/src/test/java/org/opencds/cqf/cql/engine/execution/TestLibraryLoader.java # engine.jackson/src/test/java/org/opencds/cqf/cql/engine/execution/TranslatingTestBase.java # engine.jaxb/src/test/java/org/opencds/cqf/cql/engine/execution/ANCFHIRTests.java # engine.jaxb/src/test/java/org/opencds/cqf/cql/engine/execution/CMS53Tests.java # engine.jaxb/src/test/java/org/opencds/cqf/cql/engine/execution/ElmRegressionTests.java # engine.jaxb/src/test/java/org/opencds/cqf/cql/engine/execution/ElmTests.java # engine/pom.xml # engine/src/main/java/org/opencds/cqf/cql/engine/execution/JsonCqlLibraryReader.java # engine/src/test/java/org/opencds/cqf/cql/engine/execution/CqlInternalTypeRepresentationSuiteTest.java # engine/src/test/java/org/opencds/cqf/cql/engine/execution/CqlTestSuite.java
...n/src/test/java/org/opencds/cqf/cql/engine/execution/CqlErrorsAndMessagingOperatorsTest.java
Outdated
Show resolved
Hide resolved
engine.jackson/src/test/java/org/opencds/cqf/cql/engine/execution/CqlListOperatorsTest.java
Outdated
Show resolved
Hide resolved
JPercival
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Got about half-way through the review, but there's a ton of noise due to different import ordering. Can you take a look at that and see if you can match the current pattern?
# Conflicts: # engine.fhir/src/test/java/org/hl7/fhirpath/TestLibraryLoader.java # engine.jackson/src/main/java/org/opencds/cqf/cql/engine/serializing/jackson/mixins/CqlToElmBaseMixIn.java # engine.jackson/src/main/java/org/opencds/cqf/cql/engine/serializing/jackson/mixins/ElementMixin.java # engine.jackson/src/main/java/org/opencds/cqf/cql/engine/serializing/jackson/mixins/ExpressionDefMixin.java # engine.jackson/src/main/java/org/opencds/cqf/cql/engine/serializing/jackson/mixins/ExpressionMixin.java # engine.jackson/src/main/java/org/opencds/cqf/cql/engine/serializing/jackson/mixins/TypeSpecifierMixin.java # engine.jackson/src/test/java/org/opencds/cqf/cql/engine/execution/TestLibraryLoader.java # engine.jackson/src/test/java/org/opencds/cqf/cql/engine/execution/TranslatingTestBase.java # engine/src/main/java/org/opencds/cqf/cql/engine/elm/execution/ElementMixin.java # engine/src/main/java/org/opencds/cqf/cql/engine/elm/execution/Executable.java # engine/src/main/java/org/opencds/cqf/cql/engine/elm/execution/ExpressionMixin.java # engine/src/main/java/org/opencds/cqf/cql/engine/elm/execution/TypeSpecifierMixin.java # engine/src/main/java/org/opencds/cqf/cql/engine/elm/serialization/ElementMixin.java # engine/src/main/java/org/opencds/cqf/cql/engine/elm/serialization/ExpressionMixin.java # engine/src/main/java/org/opencds/cqf/cql/engine/elm/serialization/TypeSpecifierMixin.java # engine/src/main/java/org/opencds/cqf/cql/engine/execution/JsonCqlLibraryReader.java # engine/src/main/java/org/opencds/cqf/cql/engine/serializing/LibraryWrapper.java
|
@JPercival ready for you again. |
.../src/main/java/org/opencds/cqf/cql/engine/serializing/jackson/mixins/ExpressionDefMixin.java
Outdated
Show resolved
Hide resolved
|
|
||
| public String convertToJson(org.hl7.elm.r1.Library library) throws IOException { | ||
| StringWriter writer = new StringWriter(); | ||
| ElmLibraryWriterFactory.getWriter("application/elm+json").write(library, writer); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There's an enum for this now: LibraryContentType.XML.mimeType()
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Only available in the 2.1.0 release :)
...e.jackson/src/test/java/org/opencds/cqf/cql/engine/serializing/JsonCqlLibraryReaderTest.java
Outdated
Show resolved
Hide resolved
| <counter>LINE</counter> | ||
| <value>COVEREDRATIO</value> | ||
| <minimum>0.50</minimum> | ||
| <minimum>0.02</minimum> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This does raise the question of how to best get coverage in the engine itself. There's not much in the way of unit tests for individual Evaluators.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Because most of the tests uses jackson to convert to json back and forth, I moved them to the jackson branch, which reduces the coverage ratio of the main engine module. It would be nice for organizational purposes if we had the evaluator's mapper in the engine's test cases.
Merge after: #581
This PR splits the engine in Jackson and JAXB flavors. It copies the structure from cqframework/clinical_quality_language#760
engine.jackson: ElmLibraryReader implementations using Jackson
engine.jaxb: ElmLibraryReader implementations using JAXB
Both Jackson and JAXB modules can deserialize XML and JSON into Executable ELM.
Since the current engine requires reloading a compiled ELM into executable ELM through JSON, all CQL tests were moved to the Jackson module until a better solution is found for https://github.com/DBCG/cql_engine/issues/586