<?xml version="1.0"?>
<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <artifactId>opencast-common</artifactId>
  <name>Opencast :: common</name>
  <packaging>bundle</packaging>
  <parent>
    <groupId>org.opencastproject</groupId>
    <artifactId>base</artifactId>
    <version>15.2</version>
    <relativePath>../../pom.xml</relativePath>
  </parent>
  <properties>
    <opencast.basedir>${project.basedir}/../..</opencast.basedir>
    <checkstyle.skip>false</checkstyle.skip>
  </properties>
  <dependencies>
    <dependency>
      <groupId>com.entwinemedia.common</groupId>
      <artifactId>functional</artifactId>
    </dependency>
    <dependency>
      <groupId>org.freemarker</groupId>
      <artifactId>freemarker</artifactId>
    </dependency>
    <dependency>
      <groupId>jakarta.xml.bind</groupId>
      <artifactId>jakarta.xml.bind-api</artifactId>
    </dependency>
    <dependency>
      <groupId>org.eclipse.persistence</groupId>
      <artifactId>org.eclipse.persistence.core</artifactId>
    </dependency>
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
    </dependency>
    <dependency>
      <groupId>jakarta.ws.rs</groupId>
      <artifactId>jakarta.ws.rs-api</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.httpcomponents</groupId>
      <artifactId>httpclient-osgi</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.httpcomponents</groupId>
      <artifactId>httpcore-osgi</artifactId>
    </dependency>
    <dependency>
      <groupId>com.googlecode.json-simple</groupId>
      <artifactId>json-simple</artifactId>
    </dependency>
    <dependency>
      <groupId>commons-io</groupId>
      <artifactId>commons-io</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.commons</groupId>
      <artifactId>commons-lang3</artifactId>
    </dependency>
    <dependency>
      <groupId>joda-time</groupId>
      <artifactId>joda-time</artifactId>
    </dependency>
    <dependency>
      <groupId>com.google.guava</groupId>
      <artifactId>guava</artifactId>
    </dependency>
    <dependency>
      <groupId>org.mnode.ical4j</groupId>
      <artifactId>ical4j</artifactId>
    </dependency>
    <!-- OSGi -->
    <dependency>
      <groupId>org.osgi</groupId>
      <artifactId>osgi.core</artifactId>
    </dependency>
    <dependency>
      <groupId>org.osgi</groupId>
      <artifactId>org.osgi.service.component</artifactId>
    </dependency>
    <dependency>
      <groupId>org.osgi</groupId>
      <artifactId>org.osgi.service.component.annotations</artifactId>
    </dependency>
    <dependency>
      <groupId>org.osgi</groupId>
      <artifactId>org.osgi.service.cm</artifactId>
    </dependency>
    <!-- Persistence -->
    <dependency>
      <groupId>org.eclipse.persistence</groupId>
      <artifactId>jakarta.persistence</artifactId>
    </dependency>
    <dependency>
      <groupId>org.eclipse.persistence</groupId>
      <artifactId>org.eclipse.persistence.jpa</artifactId>
    </dependency>
    <dependency>
      <groupId>com.mchange</groupId>
      <artifactId>c3p0</artifactId>
    </dependency>
    <!-- Embedding opencast version of truezip -->
    <dependency>
      <groupId>de.schlichtherle</groupId>
      <artifactId>truezip</artifactId>
      <version>6.8.4</version>
      <exclusions>
        <exclusion>
          <groupId>bouncycastle</groupId>
          <artifactId>bcprov-jdk15</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    <!-- Logging -->
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-api</artifactId>
    </dependency>
    <!-- REST test environment -->
    <dependency>
      <groupId>io.rest-assured</groupId>
      <artifactId>json-path</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>io.rest-assured</groupId>
      <artifactId>xml-path</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.codehaus.jettison</groupId>
      <artifactId>jettison</artifactId>
    </dependency>
    <!-- Testing -->
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.hamcrest</groupId>
      <artifactId>hamcrest</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>net.sf.saxon</groupId>
      <artifactId>Saxon-HE</artifactId>
      <version>9.6.0-4</version>
    </dependency>
    <!--
    - Parameterized tests for JUnit
    - https://github.com/Pragmatists/JUnitParams
    -->
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-reload4j</artifactId>
    </dependency>
    <dependency>
      <groupId>org.easymock</groupId>
      <artifactId>easymock</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>com.h2database</groupId>
      <artifactId>h2</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.xmlmatchers</groupId>
      <artifactId>xml-matchers</artifactId>
      <version>1.0-RC1</version>
      <scope>test</scope>
      <exclusions>
        <exclusion>
          <groupId>net.sf.saxon</groupId>
          <artifactId>Saxon-HE</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    <!-- for xml matchers equivalence tests -->
    <dependency>
      <groupId>xmlunit</groupId>
      <artifactId>xmlunit</artifactId>
      <scope>test</scope>
    </dependency>
    <!-- for xml matchers (org.w3c.dom.ElementTraversal) -->
    <dependency>
      <groupId>org.apache.servicemix.specs</groupId>
      <artifactId>org.apache.servicemix.specs.jaxp-api-1.4</artifactId>
      <version>2.4.0</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.osgi</groupId>
      <artifactId>org.osgi.service.http.whiteboard</artifactId>
      <scope>compile</scope>
    </dependency>
  </dependencies>
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-dependency-plugin</artifactId>
        <extensions>true</extensions>
        <configuration>
          <ignoredUnusedDeclaredDependencies>
            <!-- provide a logger for tests -->
            <ignoredUnusedDeclaredDependency>org.slf4j:slf4j-reload4j</ignoredUnusedDeclaredDependency>
            <!-- probably needed for the module scheduler-api -->
            <ignoredUnusedDeclaredDependency>org.mnode.ical4j:ical4j</ignoredUnusedDeclaredDependency>
            <ignoredUnusedDeclaredDependency>com.h2database:h2</ignoredUnusedDeclaredDependency>
            <ignoredUnusedDeclaredDependency>net.sf.saxon:Saxon-HE</ignoredUnusedDeclaredDependency>
          </ignoredUnusedDeclaredDependencies>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.pitest</groupId>
        <artifactId>pitest-maven</artifactId>
        <version>0.31</version>
        <configuration>
          <targetClasses>
            <param>org.opencastproject.util*</param>
            <param>org.opencastproject.security*</param>
            <!--<param>org.opencastproject.mediapackage*</param>-->
          </targetClasses>
          <targetTests>
            <param>org.opencastproject.util*Test</param>
            <param>org.opencastproject.security*Test</param>
            <!--<param>org.opencastproject.mediapackage*Test</param>-->
          </targetTests>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.felix</groupId>
        <artifactId>maven-bundle-plugin</artifactId>
        <extensions>true</extensions>
        <configuration>
          <instructions>
            <Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName>
            <Build-Number>${buildNumber}</Build-Number>
            <Import-Package>
              !com.mchange.v2.c3p0.*,
              !com.sun.*,
              !javax.cache.*,
              !javax.el.*,
              !javax.servlet.jsp.*,
              !org.apache.log.*,
              !org.apache.tools.*,
              !org.bouncycastle.crypto.*,
              !org.dom4j.*,
              !org.eclipse.persistence.jpa.*,
              !org.jaxen.*,
              !org.jdom.*,
              !org.mozilla.javascript.*,
              !org.python.*,
              !org.zeroturnaround.javarebel.*,
              javax.ws.rs;version=2.0.1,
              javax.ws.rs.core;version=2.0.1,
              javax.ws.rs.ext;version=2.0.1,
              *
            </Import-Package>
            <Embed-Dependency>
              truezip;inline=true,
              freemarker;inline=true,
              ical4j;inline=true
            </Embed-Dependency>
            <Private-Package>
              freemarker.core,
              freemarker.template
            </Private-Package>
            <_exportcontents>
              net.fortuna.ical4j,
              net.fortuna.ical4j.agent,
              net.fortuna.ical4j.data,
              net.fortuna.ical4j.filter,
              net.fortuna.ical4j.model,
              net.fortuna.ical4j.model.component,
              net.fortuna.ical4j.model.parameter,
              net.fortuna.ical4j.model.property,
              net.fortuna.ical4j.transform,
              net.fortuna.ical4j.util,
              net.fortuna.ical4j.validate,
              net.fortuna.ical4j.validate.component,
              net.fortuna.ical4j.validate.property
            </_exportcontents>
            <Export-Package>
              org.opencastproject.util.*;version=${project.version};-split-package:=merge-first,
              org.opencastproject.db;version=${project.version},
              org.opencastproject.capture;version=${project.version},
              org.opencastproject.mediapackage;version=${project.version},
              org.opencastproject.mediapackage.attachment;version=${project.version},
              org.opencastproject.mediapackage.track;version=${project.version},
              org.opencastproject.mediapackage.identifier;version=${project.version},
              org.opencastproject.mediapackage.elementbuilder;version=${project.version},
              org.opencastproject.mediapackage.selector;version=${project.version},
              org.opencastproject.fun;version=${project.version},
              org.opencastproject.fun.juc;version=${project.version},
              org.opencastproject.job.api;version=${project.version},
              org.opencastproject.rest;version=${project.version},
              org.opencastproject.serviceregistry.api;version=${project.version},
              org.opencastproject.security.api;version=${project.version},
              org.opencastproject.storage;version=${project.version},
              org.opencastproject.systems;version=${project.version},
              org.opencastproject.security.util;version=${project.version},
              org.opencastproject.cleanup;version=${project.version}
            </Export-Package>
            <Provide-Capability>
              osgi.service;objectClass="org.opencastproject.util.ReadinessIndicator"
            </Provide-Capability>
          </instructions>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>
