<?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>13-SNAPSHOT</version>
        <relativePath>../../../parent/pom.xml</relativePath>
    </parent>

    <artifactId>org.apache.sling.fragment.xml</artifactId>
    <version>0.0.1-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>

    <properties>
        <fragment.xml.version>0.0.0.fragment_xml</fragment.xml.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="${fragment.xml.version}",
                                javax.xml.bind.annotation;uses:="javax.xml.transform,javax.xml.bind,javax.xml.parsers,javax.xml.transform.dom,org.w3c.dom";version="${fragment.xml.version}",
                                javax.xml.bind.attachment;uses:="javax.activation";version="${fragment.xml.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="${fragment.xml.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="${fragment.xml.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="${fragment.xml.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="${fragment.xml.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="${fragment.xml.version}",
                                javax.xml.stream.util;uses:="javax.xml.stream,javax.xml.stream.events,javax.xml.namespace";version="${fragment.xml.version}",
                                javax.xml.stream;uses:="javax.xml.stream.events,javax.xml.namespace,javax.xml.stream.util,javax.xml.transform";version="${fragment.xml.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.events;uses:="org.w3c.dom,org.w3c.dom.views";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;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>
