<?xml version="1.0"?>
<!--
/*
* Copyright 2001-2004 The Apache Software Foundation.
*
* Licensed 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>
  
  <name>Sandesha2C</name>
  <pomVersion>3</pomVersion>

  <!-- a unique name for this project -->
  <name>Apache Sandesha2/C</name>
  <id>sandesha2c</id>
  <groupId>sandesha2c</groupId>
  <currentVersion>${sandesha2c_version}</currentVersion>

  <!-- details about the organization that 'owns' the project -->
  <organization>
    <name>Apache Software Foundation</name>
    <url>http://www.apache.org/</url>
    <logo>http://www.apache.org/images/asf-logo.gif</logo>
  </organization>

  <inceptionYear>2005</inceptionYear>
  <logo>http://ws.apache.org/sandesha2/c/images/sandesha2c_logo.jpg</logo>
  <description> 
    Apache Sandesha2/C is the Reliable-messaging module of the Apache Axis2/C
  </description>
  <shortDescription>Sandesha2 C</shortDescription>
  <!-- the project home page -->
  <url>http://ws.apache.org/sandesha2/c</url>
  <issueTrackingUrl>http://issues.apache.org/jira/browse/SANDESHA2C</issueTrackingUrl>
  <siteAddress>ws.apache.org/sandesha2/c</siteAddress>
  <siteDirectory>/www/ws.apache.org/sandesha2/c</siteDirectory>
  <distributionDirectory>/www/ws.apache.org/sandesha2/c</distributionDirectory>
  <!-- repository>
       <connection>scm|svn|http://svn.apache.org/repos/asf/webservices/axis/trunk</connection>
       <developerConnection>scm|svn|https://svn.apache.org/repos/asf/webservices/axis/trunk</developerConnection>
       <url>http://svn.apache.org/viewcvs.cgi/webservices/axis/trunk/?root=Apache-SVN</url>
       </repository -->
  <mailingLists>
    <mailingList>
      <name>Sandesha2 C Developer List</name>
      <subscribe>sandesha-dev-subscribe@ws.apache.org?subject=subscribe</subscribe>
      <unsubscribe>sandesha-dev-unsubscribe@ws.apache.org?subject=unsubscribe</unsubscribe>
      <archive>http://marc.theaimsgroup.com/?l=sandesha-dev&amp;r=1&amp;w=2</archive>
    </mailingList>
    <mailingList>
      <name>Sandesha2 C User List</name>
      <subscribe>sandesha_user-subscribe@ws.apache.org?subject=subscribe</subscribe>
      <unsubscribe>sandesha_user-unsubscribe@ws.apache.org?subject=unsubscribe</unsubscribe>
      <archive>http://marc.theaimsgroup.com/?l=sandesha_user&amp;r=1&amp;w=2</archive>
    </mailingList>
  </mailingLists>
  
  <!-- ========== -->
  <!-- Developers -->
  <!-- ========== -->
  <developers>
    <developer>
      <name>Samisa Abeysinghe</name>
      <id>samisa</id>
      <email>samisa AT wso2.com</email>
      <organization>WSO2</organization>
    </developer>
    <developer>
      <name>Dushshantha Chandradasa</name>
      <id>dushshantha</id>
      <email>dushshantha AT wso2.com</email>
      <organization>WSO2</organization>
    </developer>
    <developer>
      <name>Sahan Gamage</name>
      <id>sahan</id>
      <email>sahans AT gmail.com</email>
      <organization>Purdue University</organization>
    </developer>
    <developer>
      <name>Damitha Kumarage</name>
      <id>damitha</id>
      <email>damitha AT wso2.com</email>
      <organization>WSO2</organization>
    </developer>
    <developer>
      <name>Nandika Jayawardana</name>
      <id>nandika</id>
      <email>nandika AT wso2.com</email>
      <organization>WSO2</organization>
    </developer>
    <developer>
      <name>Sanjaya Rathnaweera</name>
      <id>pini</id>
      <email>sanjaya AT wso2.com</email>
      <organization>WSO2</organization>
    </developer>
    <developer>
      <name>Manjula Peiris</name>
      <id>pini</id>
      <email>manjula AT wso2.com</email>
      <organization>WSO2</organization>
    </developer>


  </developers>
  <contributors>
    <contributor>
      <name>Paul Fremantle</name>
      <email>pzfreo AT gmail.com</email>
      <roles>
    <role>Technical Adviser</role>
      </roles>
    </contributor>
  </contributors>
  <!-- ################################################################ -->
  <!--        Project dependency section                                -->
  <!-- ################################################################ -->

  <dependencies/>


  <!-- ################################################################ -->
  <!--        Project build and reports section                         -->
  <!-- ################################################################ -->

  <build>
    <nagEmailAddress>sandesha-dev@apache.org</nagEmailAddress>
    <sourceDirectory>${basedir}/src</sourceDirectory>
    <unitTestSourceDirectory>${basedir}/src/test</unitTestSourceDirectory>

    <unitTest>
      <includes>
	<include>**/_test*.c</include>
      </includes>
      <excludes>
	<exclude>**/*Test*All.c</exclude>
      </excludes>
    </unitTest>

    <resources/>  <!-- (OPTIONAL) Resources packaged inside the JAR file. -->
  </build>

  <reports>
    <report>maven-changes-plugin</report>
  </reports>

</project>
