<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <parent>
        <groupId>org.opencds.cqf.cql</groupId>
        <artifactId>engine.shared</artifactId>
        <version>2.2.0</version>
    </parent>

    <artifactId>engine.fhir</artifactId>
    <version>2.2.0</version>
    <packaging>jar</packaging>

    <name>engine.fhir</name>
    <description>CQL Engine FHIR providers</description>
    <url>https://github.com/DBCG/cql_engine/tree/master/engine.fhir</url>

    <dependencies>
        <dependency>
            <groupId>org.opencds.cqf.cql</groupId>
            <artifactId>engine</artifactId>
            <version>2.2.0</version>
        </dependency>

        <!-- StringUtils, ExceptionUtils and Pair classes. -->
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-text</artifactId>
        </dependency>

        <!-- Support for generated methods for toString(), equals() and hashCode() using jakarta-commons-lang -->
        <dependency>
            <groupId>org.jvnet.jaxb2_commons</groupId>
            <artifactId>jaxb2-basics-runtime</artifactId>
        </dependency>

        <dependency>
            <groupId>jakarta.xml.bind</groupId>
            <artifactId>jakarta.xml.bind-api</artifactId>
        </dependency>

        <!-- dependencies to substitute for excluded ucum dependency "xpp3". Downstream users should add their own
            pull parser impementations and relevant APIS -->
        <dependency>
            <groupId>xpp3</groupId>
            <artifactId>xpp3_min</artifactId>
        </dependency>
        <dependency>
            <groupId>xmlpull</groupId>
            <artifactId>xmlpull</artifactId>
        </dependency>

        <dependency>
            <groupId>ca.uhn.hapi.fhir</groupId>
            <artifactId>hapi-fhir-structures-dstu2</artifactId>
        </dependency>
        <dependency>
            <groupId>ca.uhn.hapi.fhir</groupId>
            <artifactId>hapi-fhir-structures-hl7org-dstu2</artifactId>
        </dependency>
        <dependency>
            <groupId>ca.uhn.hapi.fhir</groupId>
            <artifactId>hapi-fhir-structures-dstu3</artifactId>
        </dependency>
        <dependency>
            <groupId>ca.uhn.hapi.fhir</groupId>
            <artifactId>hapi-fhir-structures-r4</artifactId>
        </dependency>
        <dependency>
            <groupId>ca.uhn.hapi.fhir</groupId>
            <artifactId>hapi-fhir-structures-r5</artifactId>
        </dependency>
        <dependency>
            <groupId>com.github.tomakehurst</groupId>
            <artifactId>wiremock-jre8</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.eclipse.persistence</groupId>
            <artifactId>org.eclipse.persistence.moxy</artifactId>
            <scope>test</scope>
        </dependency>
        <!-- Uses Jackson to load some libraries for testing -->
        <dependency>
            <groupId>org.opencds.cqf.cql</groupId>
            <artifactId>engine.jackson</artifactId>
            <version>2.2.0</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>info.cqframework</groupId>
            <artifactId>cql-to-elm</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>info.cqframework</groupId>
            <artifactId>quick</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>info.cqframework</groupId>
            <artifactId>model-jackson</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>info.cqframework</groupId>
            <artifactId>elm-jackson</artifactId>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>ca.uhn.hapi.fhir</groupId>
            <artifactId>hapi-fhir-client</artifactId>
            <scope>test</scope>
        </dependency>

    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>animal-sniffer-maven-plugin</artifactId>
            </plugin>
        </plugins>
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.jvnet.jaxb2.maven2</groupId>
                    <artifactId>maven-jaxb2-plugin</artifactId>
                    <executions>
                        <execution>
                            <id>generate</id>
                            <goals>
                                <goal>generate</goal>
                            </goals>
                        </execution>
                    </executions>
                    <configuration>
                        <addTestCompileSourceRoot>true</addTestCompileSourceRoot>
                        <generateDirectory>target/generated-test-sources/xjc</generateDirectory>
                        <schemaDirectory>${project.basedir}/src/test/resources/org/hl7/fhirpath/testSchema</schemaDirectory>
                        <schemaIncludes>
                            <include>testSchema.xsd</include>
                        </schemaIncludes>
                        <args>
                            <arg>-Xfluent-api</arg>
                            <arg>-Xequals</arg>
                            <arg>-XhashCode</arg>
                            <arg>-XtoString</arg>
                            <arg>-npa</arg>
                            <arg>-Xannotate</arg>
                        </args>
                        <plugins>
                            <plugin>
                                <groupId>org.jvnet.jaxb2_commons</groupId>
                                <artifactId>jaxb2-fluent-api</artifactId>
                                <version>3.0</version>
                            </plugin>
                            <plugin>
                                <groupId>org.jvnet.jaxb2_commons</groupId>
                                <artifactId>jaxb2-basics</artifactId>
                                <version>0.13.1</version>
                            </plugin>
                            <plugin>
                                <groupId>org.jvnet.jaxb2_commons</groupId>
                                <artifactId>jaxb2-basics-annotate</artifactId>
                                <version>1.1.0</version>
                            </plugin>
                        </plugins>
                        <generatePackage>org.hl7.fhirpath.tests</generatePackage>
                        <readOnly>false</readOnly>
                        <markGenerated>false</markGenerated>
                        <disableXmlSecurity>true</disableXmlSecurity>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-javadoc-plugin</artifactId>
                    <configuration>
                        <excludePackageNames>org.hl7.fhirpath.tests</excludePackageNames>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.jacoco</groupId>
                    <artifactId>jacoco-maven-plugin</artifactId>

                    <executions>
                        <execution>
                            <id>jacoco-check</id>
                            <phase>verify</phase>
                            <goals>
                                <goal>check</goal>
                            </goals>
                        </execution>
                    </executions>
                    <configuration>
                        <!-- generated code -->
                        <excludes>
                            <exclude>**/org/hl7/fhirpath/tests/**</exclude>
                        </excludes>
                        <rules>
                            <rule>
                                <element>BUNDLE</element>
                                <limits>
                                    <limit>
                                        <counter>LINE</counter>
                                        <value>COVEREDRATIO</value>
                                        <minimum>0.50</minimum>
                                    </limit>
                                </limits>
                            </rule>
                        </rules>
                    </configuration>
                </plugin>
            </plugins>
        </pluginManagement>
    </build>
</project>
