<?xml version="1.0" encoding="ISO-8859-1"?>
<!--
  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.
-->
<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/maven-v4_0_0.xsd">

    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.apache.sling</groupId>
        <artifactId>sling</artifactId>
        <version>26</version>
        <relativePath/>
    </parent>

    <artifactId>org.apache.sling.fragment.xml</artifactId>
    <version>1.0.3-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>Apache Sling System Bundle Extension: XML APIs</name>
    <description>
        Adds the XML API packages to the system bundle exports.
        The list of packages is derived from the packages available
        in the Java 7 platform. The system bundle exporting these
        packages gives no guarantee the platform provides them.
        For proper setup it is suggested to either install an
        extension fragment adapted to the platform or to install
        regular API packages as bundles.
    </description>
    <scm>
        <connection>scm:git:https://gitbox.apache.org/repos/asf/sling-org-apache-sling-fragment-xml.git</connection>
        <developerConnection>scm:git:https://gitbox.apache.org/repos/asf/sling-org-apache-sling-fragment-xml.git</developerConnection>
        <url>https://gitbox.apache.org/repos/asf?p=sling-org-apache-sling-fragment-xml.git</url>
    </scm>

    <properties>
        <fragment.xml.version>0.0.0.fragment_xml</fragment.xml.version>
        <jaxb.version>2.1.0</jaxb.version>
        <stax.version>1.0.0</stax.version>
    </properties>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.felix</groupId>
                <artifactId>maven-bundle-plugin</artifactId>
                <executions>
                    <execution>
                        <id>bundle-manifest</id>
                        <phase>process-classes</phase>
                        <goals>
                            <goal>manifest</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <instructions>
                        <Fragment-Host>
                            system.bundle;extension:=framework
                        </Fragment-Host>
                    </instructions>
                </configuration>
            </plugin>
            <plugin>
                <artifactId>maven-jar-plugin</artifactId>
                <configuration>
                    <forceCreation>true</forceCreation>
                    <archive>
                        <manifestFile>
                            ${project.build.outputDirectory}/META-INF/MANIFEST.MF
                        </manifestFile>
                        <manifestEntries>
                            <Export-Package>
                                javax.xml.bind.annotation.adapters;uses:="javax.xml.bind";version="${jaxb.version}",javax.xml.bind.annotation;uses:="javax.xml.transform,javax.xml.bind,javax.xml.parsers,javax.xml.transform.dom,org.w3c.dom";version="${jaxb.version}",javax.xml.bind.attachment;uses:="javax.activation";version="${jaxb.version}",javax.xml.bind.helpers;uses:="javax.xml.bind.annotation.adapters,javax.xml.transform.dom,org.w3c.dom,org.xml.sax,javax.xml.bind.attachment,javax.xml.stream,javax.xml.transform,javax.xml.transform.stream,javax.xml.validation,javax.xml.transform.sax,javax.xml.bind,javax.xml.parsers";version="${jaxb.version}",javax.xml.bind.util;uses:="javax.xml.transform.sax,javax.xml.bind,org.xml.sax,org.xml.sax.ext,org.xml.sax.helpers";version="${jaxb.version}",javax.xml.bind;uses:="javax.xml.validation,javax.xml.namespace,javax.xml.datatype,javax.xml.transform,javax.xml.bind.annotation,javax.xml.transform.stream,org.w3c.dom,javax.xml.bind.attachment,javax.xml.stream,javax.xml.bind.annotation.adapters,org.xml.sax";version="${jaxb.version}",javax.xml.crypto.dom;uses:="javax.xml.crypto,org.w3c.dom";version="${fragment.xml.version}",javax.xml.crypto.dsig.dom;uses:="javax.xml.crypto.dsig,javax.xml.crypto,org.w3c.dom,javax.xml.crypto.dom";version="${fragment.xml.version}",javax.xml.crypto.dsig.keyinfo;uses:="javax.xml.crypto";version="${fragment.xml.version}",javax.xml.crypto.dsig.spec;uses:="javax.xml.crypto";version="${fragment.xml.version}",javax.xml.crypto.dsig;uses:="javax.xml.crypto,javax.xml.crypto.dsig.spec,javax.xml.crypto.dsig.keyinfo";version="${fragment.xml.version}",javax.xml.crypto;uses:="javax.xml.crypto.dsig.keyinfo";version="${fragment.xml.version}",javax.xml.datatype;uses:="javax.xml.namespace";version="${jaxb.version}",javax.xml.namespace;version="${fragment.xml.version}",javax.xml.parsers;uses:="javax.xml.validation,org.w3c.dom,org.xml.sax,org.xml.sax.helpers";version="${fragment.xml.version}",javax.xml.stream.events;uses:="javax.xml.namespace,javax.xml.stream";version="${stax.version}",javax.xml.stream.util;uses:="javax.xml.stream,javax.xml.stream.events,javax.xml.namespace";version="${stax.version}",javax.xml.stream;uses:="javax.xml.stream.events,javax.xml.namespace,javax.xml.stream.util,javax.xml.transform";version="${stax.version}",javax.xml.transform.dom;uses:="javax.xml.transform,org.w3c.dom";version="${fragment.xml.version}",javax.xml.transform.sax;uses:="org.xml.sax.ext,javax.xml.transform,org.xml.sax,javax.xml.transform.stream";version="${fragment.xml.version}",javax.xml.transform.stax;uses:="javax.xml.stream,javax.xml.transform,javax.xml.stream.events";version="${fragment.xml.version}",javax.xml.transform.stream;uses:="javax.xml.transform";version="${fragment.xml.version}",javax.xml.transform;version="${fragment.xml.version}",javax.xml.validation;uses:="org.w3c.dom.ls,javax.xml.transform,javax.xml.transform.stream,org.xml.sax,org.w3c.dom";version="${fragment.xml.version}",javax.xml.xpath;uses:="org.xml.sax,javax.xml.namespace";version="${fragment.xml.version}",javax.xml;version="${fragment.xml.version}",org.w3c.dom.bootstrap;uses:="org.w3c.dom";version="${fragment.xml.version}",org.w3c.dom.css;uses:="org.w3c.dom,org.w3c.dom.stylesheets,org.w3c.dom.views";version="${fragment.xml.version}",org.w3c.dom.events;uses:="org.w3c.dom,org.w3c.dom.views";version="${fragment.xml.version}",org.w3c.dom.html;uses:="org.w3c.dom";version="${fragment.xml.version}",org.w3c.dom.ls;uses:="org.w3c.dom,org.w3c.dom.events,org.w3c.dom.traversal";version="${fragment.xml.version}",org.w3c.dom.ranges;uses:="org.w3c.dom";version="${fragment.xml.version}",org.w3c.dom.stylesheets;uses:="org.w3c.dom";version="${fragment.xml.version}",org.w3c.dom.traversal;uses:="org.w3c.dom";version="${fragment.xml.version}",org.w3c.dom.views;version="${fragment.xml.version}",org.w3c.dom.xpath;version="${fragment.xml.version}",org.w3c.dom;version="${fragment.xml.version}",org.xml.sax.ext;uses:="org.xml.sax,org.xml.sax.helpers";version="${fragment.xml.version}",org.xml.sax.helpers;uses:="org.xml.sax";version="${fragment.xml.version}",org.xml.sax;version="${fragment.xml.version}"
                            </Export-Package>
                        </manifestEntries>
                    </archive>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>
