<?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 security 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>
