<?xml version="1.0" encoding="UTF-8"?><!--
 * 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/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <parent>
    <groupId>org.apache.shindig</groupId>
    <artifactId>shindig-project</artifactId>
    <version>2.5.0</version>
    <relativePath>../../pom.xml</relativePath>
  </parent>

  <artifactId>shindig-social-api</artifactId>
  <version>2.5.0</version>
  <packaging>jar</packaging>

  <name>Apache Shindig Social API</name>
  <description>Serves OpenSocial Data and the RESTful APIs.</description>

  <scm>
    <connection>scm:svn:http://svn.apache.org/repos/asf/shindig/tags/shindig-project-2.5.0/java/social-api</connection>
    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/shindig/tags/shindig-project-2.5.0/java/social-api</developerConnection>
    <url>http://svn.apache.org/viewvc/shindig/tags/shindig-project-2.5.0/java/social-api</url>
  </scm>

  <build>
    <resources>
      <resource>
        <directory>conf</directory>
      </resource>
      <resource>
        <directory>${basedir}/../../content/sampledata/</directory>
        <targetPath>sampledata</targetPath>
        <includes>
          <include>**/*.*</include>
        </includes>
      </resource>
    </resources>
  </build>

  <profiles>
    <profile>
      <id>reporting</id>
      <reporting>
        <plugins>
          <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>clirr-maven-plugin</artifactId>
            <configuration>
              <comparisonVersion>${shindig.api.previous}</comparisonVersion>
            </configuration>
          </plugin>
        </plugins>
      </reporting>
    </profile>
  </profiles>

  <dependencies>
    <!-- project dependencies -->
    <dependency>
      <groupId>org.apache.shindig</groupId>
      <artifactId>shindig-common</artifactId>
      <classifier>${shindig.jdk.classifier}</classifier>
    </dependency>

    <dependency>
      <groupId>org.apache.shindig</groupId>
      <artifactId>shindig-common</artifactId>
      <type>test-jar</type>
      <scope>test</scope>
    </dependency>

    <!-- external depenencies -->
    <dependency>
      <groupId>org.json</groupId>
      <artifactId>json</artifactId>
    </dependency>
    <dependency>
      <groupId>com.google.inject</groupId>
      <artifactId>guice</artifactId>
    </dependency>
    <dependency>
      <groupId>com.google.inject.extensions</groupId>
      <artifactId>guice-multibindings</artifactId>
    </dependency>
    <dependency>
      <groupId>commons-codec</groupId>
      <artifactId>commons-codec</artifactId>
    </dependency>
    <dependency>
      <groupId>com.google.guava</groupId>
      <artifactId>guava</artifactId>
    </dependency>
    <dependency>
      <artifactId>commons-lang3</artifactId>
      <groupId>org.apache.commons</groupId>
    </dependency>
    <dependency>
      <groupId>net.oauth.core</groupId>
      <artifactId>oauth-provider</artifactId>
    </dependency>
    <dependency>
      <groupId>net.oauth.core</groupId>
      <artifactId>oauth-httpclient4</artifactId>
    </dependency>

    <!-- may only be needed for JDK < 1.6 -->
    <dependency>
      <groupId>org.apache.geronimo.specs</groupId>
      <artifactId>geronimo-stax-api_1.0_spec</artifactId>
    </dependency>
    <dependency>
      <groupId>com.thoughtworks.xstream</groupId>
      <artifactId>xstream</artifactId>
    </dependency>
    <dependency>
      <groupId>xpp3</groupId>
      <artifactId>xpp3_min</artifactId>
    </dependency>
    <dependency>
      <groupId>commons-io</groupId>
      <artifactId>commons-io</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.httpcomponents</groupId>
      <artifactId>httpclient</artifactId>
    </dependency>
    <dependency>
      <groupId>xml-apis</groupId>
      <artifactId>xml-apis</artifactId>
    </dependency>

    <!-- test -->
    <dependency>
      <groupId>rhino</groupId>
      <artifactId>js</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>log4j</groupId>
      <artifactId>log4j</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.mortbay.jetty</groupId>
      <artifactId>jetty</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.tomcat</groupId>
      <artifactId>el-api</artifactId>
      <scope>test</scope>
    </dependency>
  </dependencies>
</project>
