<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>com.atlassian.activeobjects</groupId>
        <artifactId>activeobjects-plugin-parent-pom</artifactId>
        <version>0.19.5</version>
    </parent>

    <artifactId>activeobjects-plugin</artifactId>
    <packaging>atlassian-plugin</packaging>
    <name>ActiveObjects Plugin - OSGi Bundle</name>

    <description>An OSGi bundle that provides a service that allows plugins to persist objects using the ActiveObjects
        framework
    </description>

    <properties>
        <db.skip>false</db.skip>
        <mysql.version>5.1.13</mysql.version>
        <postgres.version>8.4-701.jdbc3</postgres.version>
        <oracle.version>10.2.0.4</oracle.version>
        <jtds.version>1.2.4</jtds.version>
        <ao.spi.compatibility.version>0.17</ao.spi.compatibility.version>
        <spring.library.version>2.5.6</spring.library.version>
        <sal.api.compatibility.version>2.4</sal.api.compatibility.version>
    </properties>

    <build>
        <plugins>
            <plugin>
                <groupId>com.atlassian.maven.plugins</groupId>
                <artifactId>maven-refapp-plugin</artifactId>
                <configuration>
                    <systemPropertyVariables>
                        <ao.test.database>${ao.test.database}</ao.test.database>
                        <plugin.root.directories>${basedir}/../activeobjects-test-plugin</plugin.root.directories>
                    </systemPropertyVariables>
                    <instructions>
                        <Bundle-SymbolicName>${project.groupId}.${project.artifactId}</Bundle-SymbolicName>
                        <Import-Package>
                            !javax.servlet.jsp*,
                            !org.apache.velocity.tools*,
                            com.atlassian.activeobjects.spi;version="${ao.spi.compatibility.version}",
                            com.atlassian.event.api*;version="2.0",
                            com.atlassian.sal.api;version="${sal.api.compatibility.version}",
                            com.atlassian.sal.api.auth;version="${sal.api.compatibility.version}",
                            com.atlassian.sal.api.message;version="${sal.api.compatibility.version}",
                            com.atlassian.sal.api.pluginsettings;version="${sal.api.compatibility.version}",
                            com.atlassian.sal.api.transaction;version="${sal.api.compatibility.version}",
                            com.atlassian.sal.api.user;version="${sal.api.compatibility.version}",
                            com.atlassian.sal.api.websudo;version="${sal.api.compatibility.version}",
                            com.atlassian.plugin;version="${atlassian-plugins.version}",
                            com.atlassian.plugin.descriptors;version="${atlassian-plugins.version}",
                            com.atlassian.plugin.hostcontainer;version="${atlassian-plugins.version}",
                            com.atlassian.plugin.osgi.bridge.external;version="${atlassian-plugins.version}",
                            com.atlassian.plugin.osgi.external;version="${atlassian-plugins.version}",
                            com.atlassian.plugin.osgi.factory;version="${atlassian-plugins.version}",
                            com.atlassian.plugin.predicate;version="${atlassian-plugins.version}",
                            com.atlassian.plugin.web;version="${atlassian-plugins.version}",
                            com.atlassian.plugin.webresource;version="${atlassian-plugins.version}",
                            com.atlassian.security.random;version="1.0",
                            com.google.common*;version="1.0",
                            com.mchange.v2.c3p0;resolution:=optional;version="0.8",
                            javax.naming;version="0.0.0",
                            javax.servlet*;version="2.4",
                            javax.sql,
                            javax.xml.namespace*,
                            javax.xml.stream*,
                            javax.xml.transform*,
                            net.java.ao*;version="${ao.version}",
                            org.apache.commons.codec*;version="1.3",
                            org.apache.commons.dbcp;resolution:=optional;version="1.2",
                            org.apache.commons.lang;version="2.0",
                            org.apache.commons.lang.builder;version="2.0",
                            org.apache.commons.logging;version="1.1.1",
                            org.apache.lucene.*;version="2.0";resolution:=optional,
                            org.apache.velocity*;version="1.6.1",
                            org.dom4j*,
                            org.hsqldb;version="1.8.0";resolution:=optional,
                            org.logicalcobwebs.proxool;version="0.9";resolution:=optional,
                            org.osgi.framework;version="1.4",
                            org.osgi.util.tracker;version="1.3",
                            org.slf4j;version="1.5",
                            org.springframework.beans*;version="${spring.library.version}",
                            org.springframework.context*;version="${spring.library.version}",
                            org.springframework.context.support*;version="${spring.library.version}",
                            org.springframework.core*;version="${spring.library.version}",
                            org.springframework.ui*;version="${spring.library.version}",
                            org.springframework.ui.context*;version="${spring.library.version}",
                            org.springframework.ui.velocity*;version="${spring.library.version}",
                            org.springframework.util*;version="${spring.library.version}",
                            org.springframework.validation*;version="${spring.library.version}",
                            org.springframework.web*;version="${spring.library.version}",
                            org.springframework.web.context.support*;version="${spring.library.version}",
                            org.springframework.web.util*;version="${spring.library.version}",
                            org.springframework.osgi*;version="${spring.osgi.version}",
                            snaq.db;resolution:=optional;version="4.9",
                        </Import-Package>
                        <Private-Package>
                            com.atlassian.activeobjects*,
                            com.ctc.wstx*,
                            org.codehaus.stax2*,
                        </Private-Package>
                        <Export-Package>
                            com.atlassian.activeobjects.external*;version="${project.version}",
                            com.atlassian.activeobjects.tx*;version="${project.version}",
                            net.java.ao;version="${ao.version}",
                            net.java.ao.builder;version="${ao.version}",
                            net.java.ao.db;version="${ao.version}",
                            net.java.ao.event;version="${ao.version}",
                            net.java.ao.schema;version="${ao.version}",
                        </Export-Package>
                        <Spring-Context>*;timeout:=60</Spring-Context>
                    </instructions>
                    <noWebapp>true</noWebapp>
                    <pluginArtifacts>
                        <pluginArtifact>
                            <groupId>com.atlassian.activeobjects</groupId>
                            <artifactId>activeobjects-refapp-spi</artifactId>
                            <version>${project.version}</version>
                        </pluginArtifact>
                    </pluginArtifacts>
                </configuration>
            </plugin>
            <!-- creates and drops databases before and after tests -->
            <plugin>
                <groupId>org.leberrigaud.maven.plugins</groupId>
                <artifactId>database-maven-plugin</artifactId>
                <version>0.9.1</version>
                <configuration>
                    <skip>${db.skip}</skip>
                    <database>${ao.test.database}</database>
                    <name>ao_test</name>
                    <username>ao_user</username>
                    <password>ao_password</password>
                    <rootUsername>${db.username}</rootUsername>
                    <rootPassword>${db.password}</rootPassword>
                </configuration>
                <executions>
                    <execution>
                        <id>create-db</id>
                        <goals>
                            <goal>create</goal>
                        </goals>
                        <phase>process-test-resources</phase>
                    </execution>
                    <execution>
                        <id>drop-db</id>
                        <goals>
                            <goal>drop</goal>
                        </goals>
                        <phase>test</phase>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

    <!--
        this is just because of a bug 'somewhere' where exclusions are not taken in account
        properly, so also making sure to mark them provided
     -->
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.apache.lucene</groupId>
                <artifactId>lucene-core</artifactId>
                <version>2.9.4</version>
                <scope>provided</scope>
            </dependency>
            <dependency>
                <groupId>org.apache.lucene</groupId>
                <artifactId>lucene-queries</artifactId>
                <version>2.9.4</version>
                <scope>provided</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <dependencies>
        <dependency>
            <groupId>net.java.dev.activeobjects</groupId>
            <artifactId>activeobjects</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>org.apache.lucene</groupId>
                    <artifactId>lucene-core</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.apache.lucene</groupId>
                    <artifactId>lucene-queries</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>com.atlassian.activeobjects</groupId>
            <artifactId>activeobjects-core</artifactId>
        </dependency>
        <dependency>
            <groupId>com.atlassian.activeobjects</groupId>
            <artifactId>activeobjects-spi</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>com.atlassian.sal</groupId>
            <artifactId>sal-api</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.osgi</groupId>
            <artifactId>spring-osgi-core</artifactId>
        </dependency>
        <dependency>
            <groupId>com.atlassian.plugins</groupId>
            <artifactId>atlassian-plugins-osgi</artifactId>
        </dependency>
        <dependency>
            <groupId>com.atlassian.plugins</groupId>
            <artifactId>atlassian-plugins-osgi-bridge</artifactId>
        </dependency>
        <dependency>
            <groupId>com.atlassian.plugins</groupId>
            <artifactId>atlassian-plugins-webresource</artifactId>
        </dependency>
        <dependency>
            <groupId>com.atlassian.plugins</groupId>
            <artifactId>atlassian-plugins-webfragment</artifactId>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>servlet-api</artifactId>
        </dependency>
        <dependency>
            <groupId>commons-lang</groupId>
            <artifactId>commons-lang</artifactId>
            <version>2.4</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>com.atlassian.activeobjects</groupId>
            <artifactId>activeobjects-dbex</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>org.codehaus.woodstox</groupId>
            <artifactId>woodstox-core-asl</artifactId>
            <version>4.1.0</version>
            <exclusions>
                <exclusion>
                    <groupId>javax.xml.stream</groupId>
                    <artifactId>stax-api</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>com.google.code.gson</groupId>
            <artifactId>gson</artifactId>
            <version>1.7.2</version>
        </dependency>

        <!-- Spring dependencies -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>2.5.6</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context-support</artifactId>
            <version>2.5.6</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>2.5.6</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>2.5.6</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>2.5.6</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
            <version>2.5.6</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <!-- commons-logging is used by Spring -->
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
            <version>1.1.1</version>
            <scope>provided</scope>
        </dependency>

        <dependency>
            <groupId>com.atlassian.security</groupId>
            <artifactId>atlassian-secure-random</artifactId>
            <version>1.0</version>
            <scope>provided</scope>
        </dependency>

        <dependency>
            <groupId>com.atlassian.plugins.test</groupId>
            <artifactId>atlassian-plugins-test</artifactId>
        </dependency>

        <dependency>
            <groupId>commons-codec</groupId>
            <artifactId>commons-codec</artifactId>
            <version>1.3</version>
            <scope>provided</scope>
        </dependency>

        <dependency>
            <groupId>hsqldb</groupId>
            <artifactId>hsqldb</artifactId>
            <scope>provided</scope>
        </dependency>

        <dependency>
            <groupId>com.atlassian.sal</groupId>
            <artifactId>sal-core</artifactId>
            <version>${sal.version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>net.java.dev.activeobjects</groupId>
            <artifactId>activeobjects-test</artifactId>
            <version>${ao.version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>com.atlassian.activeobjects</groupId>
            <artifactId>activeobjects-test-model</artifactId>
            <version>${project.version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>xmlunit</groupId>
            <artifactId>xmlunit</artifactId>
            <version>1.3</version>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <profiles>
        <profile>
            <id>hsql</id>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
            <properties>
                <ao.test.database>hsql</ao.test.database>
                <db.skip>true</db.skip>
            </properties>
        </profile>
        <profile>
            <id>mysql</id>
            <properties>
                <ao.test.database>mysql</ao.test.database>
                <db.username>root</db.username>
                <db.password />
            </properties>
            <dependencies>
                <dependency>
                    <groupId>mysql</groupId>
                    <artifactId>mysql-connector-java</artifactId>
                    <version>5.1.13</version>
                </dependency>
            </dependencies>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.leberrigaud.maven.plugins</groupId>
                        <artifactId>database-maven-plugin</artifactId>
                        <dependencies>
                            <dependency>
                                <groupId>mysql</groupId>
                                <artifactId>mysql-connector-java</artifactId>
                                <version>5.1.13</version>
                            </dependency>
                        </dependencies>
                    </plugin>
                </plugins>
            </build>
        </profile>
        <profile>
            <id>postgres</id>
            <properties>
                <ao.test.database>postgres</ao.test.database>
                <db.username>postgres</db.username>
                <db.password>postgres</db.password>
            </properties>
            <dependencies>
                <dependency>
                    <groupId>postgresql</groupId>
                    <artifactId>postgresql</artifactId>
                    <version>8.4-701.jdbc3</version>
                    <scope>test</scope>
                </dependency>
            </dependencies>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.leberrigaud.maven.plugins</groupId>
                        <artifactId>database-maven-plugin</artifactId>
                        <configuration>
                            <schema>ao_schema</schema>
                        </configuration>
                        <dependencies>
                            <dependency>
                                <groupId>postgresql</groupId>
                                <artifactId>postgresql</artifactId>
                                <version>8.4-701.jdbc3</version>
                            </dependency>
                        </dependencies>
                    </plugin>
                </plugins>
            </build>
        </profile>
        <profile>
            <id>oracle</id>
            <properties>
                <ao.test.database>oracle</ao.test.database>
                <db.username>sys</db.username>
                <db.password>oracle</db.password>
            </properties>
            <dependencies>
                <dependency>
                    <groupId>com.oracle</groupId>
                    <artifactId>oracle-jdbc14</artifactId>
                    <version>10.2.0.4</version>
                    <scope>test</scope>
                </dependency>
            </dependencies>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.leberrigaud.maven.plugins</groupId>
                        <artifactId>database-maven-plugin</artifactId>
                        <configuration>
                            <schema>ao_schema</schema>
                        </configuration>
                        <dependencies>
                            <dependency>
                                <groupId>com.oracle</groupId>
                                <artifactId>oracle-jdbc14</artifactId>
                                <version>10.2.0.4</version>
                            </dependency>
                        </dependencies>
                    </plugin>
                </plugins>
            </build>
        </profile>
        <profile>
            <id>oracle5</id>
            <properties>
                <ao.test.database>oracle</ao.test.database>
                <db.username>sys</db.username>
                <db.password>oracle</db.password>
                <oracle.version>11.2.0.2.0</oracle.version>
            </properties>
            <dependencies>
                <dependency>
                    <groupId>com.oracle</groupId>
                    <artifactId>ojdbc5</artifactId>
                    <version>10.2.0.4</version>
                    <scope>test</scope>
                </dependency>
            </dependencies>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.leberrigaud.maven.plugins</groupId>
                        <artifactId>database-maven-plugin</artifactId>
                        <configuration>
                            <schema>ao_schema</schema>
                        </configuration>
                        <dependencies>
                            <dependency>
                                <groupId>com.oracle</groupId>
                                <artifactId>ojdbc5</artifactId>
                                <version>10.2.0.4</version>
                            </dependency>
                        </dependencies>
                    </plugin>
                </plugins>
            </build>
        </profile>
        <profile>
            <id>oracle6</id>
            <properties>
                <ao.test.database>oracle</ao.test.database>
                <db.username>sys</db.username>
                <db.password>oracle</db.password>
                <oracle.version>11.2.0.2.0</oracle.version>
            </properties>
            <dependencies>
                <dependency>
                    <groupId>com.oracle</groupId>
                    <artifactId>ojdbc6</artifactId>
                    <version>10.2.0.4</version>
                    <scope>test</scope>
                </dependency>
            </dependencies>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.leberrigaud.maven.plugins</groupId>
                        <artifactId>database-maven-plugin</artifactId>
                        <configuration>
                            <schema>ao_schema</schema>
                        </configuration>
                        <dependencies>
                            <dependency>
                                <groupId>com.oracle</groupId>
                                <artifactId>ojdbc6</artifactId>
                                <version>10.2.0.4</version>
                            </dependency>
                        </dependencies>
                    </plugin>
                </plugins>
            </build>
        </profile>
        <profile>
            <id>sqlserver</id>
            <properties>
                <ao.test.database>sqlserver</ao.test.database>
                <db.username>sa</db.username>
                <db.password>admin</db.password>
            </properties>
            <dependencies>
                <dependency>
                    <groupId>net.sourceforge.jtds</groupId>
                    <artifactId>jtds</artifactId>
                    <version>1.2.4</version>
                    <scope>test</scope>
                </dependency>
            </dependencies>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.leberrigaud.maven.plugins</groupId>
                        <artifactId>database-maven-plugin</artifactId>
                        <configuration>
                            <schema>ao_schema</schema>
                        </configuration>
                        <dependencies>
                            <dependency>
                                <groupId>net.sourceforge.jtds</groupId>
                                <artifactId>jtds</artifactId>
                                <version>1.2.4</version>
                            </dependency>
                        </dependencies>
                    </plugin>
                </plugins>
            </build>
        </profile>
        <profile>
            <id>c3p0</id>
            <dependencies>
                <dependency>
                    <groupId>c3p0</groupId>
                    <artifactId>c3p0</artifactId>
                    <version>0.9.1.1</version>
                    <scope>test</scope>
                </dependency>
            </dependencies>
        </profile>
        <profile>
            <!-- This is the release profile that maven will activate for us when releasing -->
            <id>release</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-source-plugin</artifactId>
                        <configuration>
                            <attach>false</attach>
                        </configuration>
                    </plugin>
                    <!-- we use the assembly plugin here, because of a not so common configuration -->
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-assembly-plugin</artifactId>
                        <version>2.2</version>
                        <configuration>
                            <descriptors>
                                <descriptor>src/main/assembly/src.xml</descriptor>
                            </descriptors>
                        </configuration>
                        <executions>
                            <execution>
                                <id>sources</id>
                                <goals>
                                    <goal>single</goal>
                                </goals>
                                <phase>package</phase>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
            <dependencies>
                <dependency>
                    <groupId>com.atlassian.activeobjects</groupId>
                    <artifactId>activeobjects-core</artifactId>
                    <version>${project.version}</version>
                    <classifier>sources</classifier>
                </dependency>
                <dependency>
                    <groupId>com.atlassian.activeobjects</groupId>
                    <artifactId>activeobjects-dbex</artifactId>
                    <version>${project.version}</version>
                    <classifier>sources</classifier>
                </dependency>
                <dependency>
                    <groupId>net.java.dev.activeobjects</groupId>
                    <artifactId>activeobjects</artifactId>
                    <version>${ao.version}</version>
                    <classifier>sources</classifier>
                    <exclusions>
                        <exclusion>
                            <groupId>org.apache.lucene</groupId>
                            <artifactId>lucene-core</artifactId>
                        </exclusion>
                        <exclusion>
                            <groupId>org.apache.lucene</groupId>
                            <artifactId>lucene-queries</artifactId>
                        </exclusion>
                    </exclusions>
                </dependency>

                <!-- using hsql for the release -->
                <dependency>
                    <groupId>hsqldb</groupId>
                    <artifactId>hsqldb</artifactId>
                    <version>${hsqldb.version}</version>
                    <scope>provided</scope>
                </dependency>
            </dependencies>

            <properties>
                <ao.test.database>hsql</ao.test.database>
                <db.skip>true</db.skip>
            </properties>
        </profile>
    </profiles>
</project>
