<?xml version="1.0" encoding="UTF-8"?>
<!--
  Copyright (C) 2012, 2013 EclipseSource and others.
  All rights reserved. This program and the accompanying materials
  are made available under the terms of the Eclipse Public License v1.0
  which accompanies this distribution, and is available at
  http://www.eclipse.org/legal/epl-v10.html

  Contributors:
     EclipseSource - initial implementation
-->
<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">
  <modelVersion>4.0.0</modelVersion>

  <parent>
    <groupId>org.eclipse.rap.incubator</groupId>
    <artifactId>org.eclipse.rap.incubator-parent</artifactId>
    <version>0.1.0-SNAPSHOT</version>
    <relativePath>../../../org.eclipse.rap.incubator.releng/releng/org.eclipse.rap.incubator.releng/parent</relativePath>
  </parent>

  <repositories>
    <!-- we used to consume the org.apache.commons.[io,fileupload] bundles from Orbit 
         but right now we need a newer version that we need to consume from our own repository
         until we can make these bundles available from a regular Orbit build. 
         These versions are available in our RAP base-platforms/2.3/extra-dependencies 
         repository that is already part of the build - see parent pom. -->
    <repository>
      <id>orbit-dependencies-repository</id>
      <layout>p2</layout>
      <url>http://download.eclipse.org/tools/orbit/downloads/drops/R20140114142710/repository</url>
    </repository>
  </repositories>

  <artifactId>org.eclipse.rap.fileupload.build</artifactId>
  <packaging>pom</packaging>

  <modules>
    <module>../../bundles/org.eclipse.rap.addons.filedialog</module>
    <module>../../bundles/org.eclipse.rap.addons.fileupload</module>
    <!-- disabled due to bug with 
         SecurityException: class org.eclipse.swt.widgets...s signer information 
         does not match signer information of other classes in the same package
    <module>../../tests/org.eclipse.rap.addons.filedialog.test</module>
    <module>../../tests/org.eclipse.rap.addons.fileupload.test</module>
    -->
    <module>../../features/org.eclipse.rap.fileupload.feature</module>
    <module>repository</module>
  </modules>

</project>
