<?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>RampartC</name>
  <pomVersion>3</pomVersion>

  <!-- a unique name for this project -->
  <name>Apache Rampart/C</name>
  <id>rampartc</id>
  <groupId>rampartc</groupId>
  <currentVersion>${rampartc_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/rampart/c/images/rampartc_logo.jpg</logo>
  <description> 
    Apache Rampart/C is the security module of the Apache Axis2/C
  </description>
  <shortDescription>Rampart C</shortDescription>
  <!-- the project home page -->
  <url>http://ws.apache.org/rampart/c</url>
  <issueTrackingUrl>http://issues.apache.org/jira/browse/RAMPARTC</issueTrackingUrl>
  <siteAddress>ws.apache.org/rampart/c</siteAddress>
  <siteDirectory>/www/ws.apache.org/rampart/c</siteDirectory>
  <distributionDirectory>/www/ws.apache.org/rampart/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>Rampart C Developer List</name>
      <subscribe>rampart-c-dev-subscribe@ws.apache.org?subject=subscribe</subscribe>
      <unsubscribe>rampart-c-dev-unsubscribe@ws.apache.org?subject=unsubscribe</unsubscribe>
      <archive>http://marc.theaimsgroup.com/?l=axis-c-dev&amp;r=1&amp;w=2</archive>
    </mailingList>
    <mailingList>
      <name>Rampart C User List</name>
      <subscribe>axis-c-user-subscribe@ws.apache.org?subject=subscribe</subscribe>
      <unsubscribe>axis-c-user-unsubscribe@ws.apache.org?subject=unsubscribe</unsubscribe>
      <archive>http://marc.theaimsgroup.com/?l=axis-c-user&amp;r=1&amp;w=2</archive>
    </mailingList>
  </mailingLists>
  
  <!-- ========== -->
  <!-- Developers -->
  <!-- ========== -->
  <developers>
    <developer>
      <name>Malinda Kaushalye Kapuruge</name>
      <id>kaushalye</id>
      <email>kaushalye AT wso2.com</email>
      <organization>WSO2</organization>
    </developer>
    <developer>
      <name>Dumindu Pallewela</name>
      <id>dumindu</id>
      <email>dumindu AT wso2.com</email>
      <organization>WSO2</organization>
    </developer>
    <developer>
      <name>Manjula Peiris</name>
      <id>manjula</id>
      <email>manjula AT wso2.com</email>
      <organization>WSO2</organization>
    </developer>
    <developer>
      <name>Samisa Abeysinghe</name>
      <id>samisa</id>
      <email>samisa AT wso2.com</email>
      <organization>WSO2</organization>
    </developer>
    <developer>
      <name>Sanjaya Ratnaweera</name>
      <id>pini</id>
      <email>sanjaya 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>Selvaratnam Uthaiyashankar</name>
      <id>shankar</id>
      <email>shankar AT wso2.com</email>
      <organization>WSO2</organization>
    </developer>
    <developer>
      <name>Milinda Pathirage</name>
      <id>milinda</id>
      <email>milinda DOT pathirage AT gmail DOT com</email>
      <organization>University of Moratuwa, Sri Lanka</organization>
    </developer>
    <developer>
      <name>Supun Kamburugamuwa</name>
      <id>supun</id>
      <email>supun06 AT gmail DOT com</email>
      <organization>University of Moratuwa, Sri Lanka</organization>
    </developer>
  </developers>
  <contributors>
    <contributor>
      <name>James Clark</name>
      <email>jjc AT public DOT jclark DOT com</email>
      <roles>
    <role>Technical Adviser</role>
      </roles>
    </contributor>
    <contributor>
      <name>Sanjiva Weerawarne</name>
      <email>sanjiva AT wso2 DOT com</email>
      <roles>
    <role>Technical Adviser</role>
      </roles>
    </contributor>
    <contributor>
      <name>Kasun Indrasiri</name>
      <email>kasun147 AT gmail DOT com</email>
      <roles>
    <role>Contributor : WS-Trust Implementation</role>
      </roles>
    </contributor>
    <contributor>
      <name>Prasad Perera</name>
      <email>prasadcse0 AT gmail DOT com</email>
      <roles>
    <role>Contributor : WS-Trust Implementation</role>
      </roles>
    </contributor>
  </contributors>
  <!-- ################################################################ -->
  <!--        Project dependency section                                -->
  <!-- ################################################################ -->

  <dependencies/>


  <!-- ################################################################ -->
  <!--        Project build and reports section                         -->
  <!-- ################################################################ -->

  <build>
    <nagEmailAddress>axis-c-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>
	<report>maven-jdepend-plugin</report>
	<report>maven-checkstyle-plugin</report>
	<report>maven-pmd-plugin</report>
	<report>maven-junit-report-plugin</report>
	<report>maven-clover-plugin</report>
	<report>maven-changelog-plugin</report>
	<report>maven-file-activity-plugin</report>
	<report>maven-developer-activity-plugin</report>
	<report>maven-file-activity-plugin</report>
	<report>maven-license-plugin</report>
	<report>maven-linkcheck-plugin</report>
	<report>maven-jxr-plugin</report-->
    <report>maven-changes-plugin</report>
  </reports>

</project>
