<?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">

    <!--

        Licensed to the Apache Software Foundation (ASF) under one or more
        contributor license agreements.  See the NOTICE file distributed with
        this work for additional information regarding copyright ownership.
        The ASF licenses this file to You under the Apache License, Version 2.0
        (the "License"); you may not use this file except in compliance with
        the License.  You may obtain a copy of the License at

           http://www.apache.org/licenses/LICENSE-2.0

        Unless required by applicable law or agreed to in writing, software
        distributed under the License is distributed on an "AS IS" BASIS,
        WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
        See the License for the specific language governing permissions and
        limitations under the License.
    -->

    <modelVersion>4.0.0</modelVersion>

    <parent>
        <groupId>org.apache.servicemix.bundles</groupId>
        <artifactId>bundles-pom</artifactId>
        <version>14</version>
        <relativePath>../bundles-pom/pom.xml</relativePath>
    </parent>

    <groupId>org.apache.servicemix.bundles</groupId>
    <artifactId>org.apache.servicemix.bundles.hapi-fhir-structures-hl7org-dstu2</artifactId>
    <version>3.5.0_1-SNAPSHOT</version>
    <packaging>bundle</packaging>
    <name>Apache ServiceMix :: Bundles :: ${pkgArtifactId}</name>
    <description>This OSGi bundle wraps ${pkgArtifactId} ${pkgVersion} jar file.</description>

    <properties>
        <pkgGroupId>ca.uhn.hapi.fhir</pkgGroupId>
        <pkgArtifactId>hapi-fhir-structures-hl7org-dstu2</pkgArtifactId>
        <pkgVersion>3.5.0</pkgVersion>
        <servicemix.osgi.import.pkg>
        javax.servlet;resolution:=optional,
	javax.servlet.http;resolution:=optional,
	ca.uhn.fhir.context;version="[3.5,4)",
	ca.uhn.fhir.context.api;version="[3.5,4)",
	ca.uhn.fhir.context.support;version="[3.5,4)",
	ca.uhn.fhir.fluentpath;version="[3.5,4)",
	ca.uhn.fhir.model.api;version="[3.5,4)",
	ca.uhn.fhir.model.api.annotation;version="[3.5,4)",
	ca.uhn.fhir.model.base.composite;version="[3.5,4)",
	ca.uhn.fhir.model.valueset;version="[3.5,4)",
	ca.uhn.fhir.parser;version="[3.5,4)",
	ca.uhn.fhir.rest.annotation;version="[3.5,4)",
	ca.uhn.fhir.rest.api;version="[3.5,4)",
	ca.uhn.fhir.rest.api.server;version="[3.5,4)",
	ca.uhn.fhir.rest.server;resolution:=optional,
	ca.uhn.fhir.rest.server.exceptions;version="[3.5,4)",
	ca.uhn.fhir.rest.server.method;resolution:=optional,
	ca.uhn.fhir.rest.server.servlet;resolution:=optional,
	ca.uhn.fhir.util;version="[3.5,4)",
	com.google.gson;version="[2.8,3)",
	javax.sound.sampled,
	javax.xml.parsers,
	javax.xml.transform,
	javax.xml.transform.stream,
	net.sf.saxon,
	org.apache.commons.codec.binary;version="[1.11,2)",
	org.apache.commons.io;version="[1.4,2)",
	org.apache.commons.lang3;version="[3.8,4)",
	org.apache.commons.lang3.builder;version="[3.8,4)",
	org.apache.commons.lang3.time;version="[3.8,4)",
	org.hl7.fhir.exceptions;version="[3.5,4)",
	org.hl7.fhir.instance.model.api;version="[3.5,4)",
	org.hl7.fhir.utilities;version="[3.5,4)",
	org.hl7.fhir.utilities.ucum;version="[3.5,4)",
	org.hl7.fhir.utilities.validation;version="[3.5,4)",
	org.hl7.fhir.utilities.xhtml;version="[3.5,4)",
	org.hl7.fhir.utilities.xml;version="[3.5,4)",
	org.w3c.dom,
	org.w3c.dom.ls
        </servicemix.osgi.import.pkg>
        <servicemix.osgi.export.pkg>
        org.hl7.fhir.instance.terminologies;uses:="org.hl7.fhir.exceptions,org.hl7.fhir.instance.model,org.hl7.fhir.instance.utils";version=3.5.0,
	org.hl7.fhir.instance.formats;uses:=org.hl7.fhir.instance.model;version=3.5.0,
	org.hl7.fhir.instance.utils;
		uses:="com.google.gson,
			org.hl7.fhir.exceptions,
			org.hl7.fhir.instance.client,
			org.hl7.fhir.instance.formats,
			org.hl7.fhir.instance.model,
			org.hl7.fhir.instance.terminologies,
			org.hl7.fhir.utilities.validation,
			org.w3c.dom";
		version=3.5.0,
	org.hl7.fhir.instance.utilities;uses:=javax.xml.transform;version=3.5.0,
	org.hl7.fhir.instance.utilities.xml;uses:="org.hl7.fhir.instance.utilities,org.w3c.dom";version=3.5.0,
	org.hl7.fhir.instance.model;
		uses:="ca.uhn.fhir.context,
			ca.uhn.fhir.model.api.annotation,
			org.hl7.fhir.exceptions,
			org.hl7.fhir.instance.model.api,
			org.hl7.fhir.instance.utils,
			org.hl7.fhir.utilities.xhtml";
		version=3.5.0,
	org.hl7.fhir.instance.model.valuesets;uses:=org.hl7.fhir.instance.model;version=3.5.0,
	org.hl7.fhir.instance;
		uses:="ca.uhn.fhir.context,
			ca.uhn.fhir.context.support,
			ca.uhn.fhir.fluentpath,
			ca.uhn.fhir.model.api,
			ca.uhn.fhir.model.base.composite,
			ca.uhn.fhir.rest.api,
			ca.uhn.fhir.rest.api.server,
			ca.uhn.fhir.rest.server,
			org.hl7.fhir.instance.conf,
			org.hl7.fhir.instance.model,
			org.hl7.fhir.instance.model.api";
		version=3.5.0,
	org.hl7.fhir.instance.conf;
		uses:="ca.uhn.fhir.rest.annotation,
			ca.uhn.fhir.rest.server,
			ca.uhn.fhir.rest.server.servlet,
			javax.servlet.http,
			org.hl7.fhir.instance.model,
			org.hl7.fhir.instance.model.api";
		version=3.5.0,
	org.hl7.fhir.instance.client;uses:=org.hl7.fhir.instance.model;version=3.5.0,
	ca.uhn.fhir.rest.server.provider.dstu2hl7org;
		uses:="ca.uhn.fhir.context,
			ca.uhn.fhir.context.api,
			ca.uhn.fhir.model.api,
			ca.uhn.fhir.model.valueset,
			ca.uhn.fhir.rest.api,
			org.hl7.fhir.instance.model.api";
		version=3.5.0
        </servicemix.osgi.export.pkg>
        <servicemix.osgi.fragment.host>
            ca.uhn.hapi.fhir.hapi-fhir-base
        </servicemix.osgi.fragment.host>
    </properties>

    <dependencies>
        <dependency>
            <groupId>${pkgGroupId}</groupId>
            <artifactId>${pkgArtifactId}</artifactId>
            <version>${pkgVersion}</version>
            <optional>true</optional>
        </dependency>

        <!-- sources -->
        <dependency>
            <groupId>${pkgGroupId}</groupId>
            <artifactId>${pkgArtifactId}</artifactId>
            <version>${pkgVersion}</version>
            <classifier>sources</classifier>
            <optional>true</optional>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-shade-plugin</artifactId>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>shade</goal>
                        </goals>
                        <configuration>
                            <artifactSet>
                                <includes>
                                    <include>${pkgGroupId}:${pkgArtifactId}</include>
                                </includes>
                            </artifactSet>
                            <filters>
                                <filter>
                                    <artifact>${pkgGroupId}:${pkgArtifactId}</artifact>
                                    <excludes>
                                        <exclude>**</exclude>
                                    </excludes>
                                </filter>
                            </filters>
                            <promoteTransitiveDependencies>true</promoteTransitiveDependencies>
                            <createDependencyReducedPom>true</createDependencyReducedPom>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>
