<?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>Axis2C</name>
  <pomVersion>3</pomVersion>

  <!-- a unique name for this project -->
  <name>Apache Axis2/C</name>
  <id>axis2c</id>
  <groupId>axis2c</groupId>
  <currentVersion>${axis2_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/axis2/images/axis.jpg</logo>
  <description> Axis2 is an effort to re-design and totally re-implement both Axis/Java and (eventually) Axis/C++ on a new architecture. Evolving from the now standard "handler chain" model which Axis1 pioneered, Axis2 is developing a more flexible pipeline architecture which can yet be managed and packaged in a more organized manner. This new design acknowledges the maturing of the Web services space in terms of new protocols such as WS-ReliableMessaging, WS-Security and WS-Addressing that are built on top of the base SOAP system. At the time Axis1 was designed, while it was fully expected that other protocols such as WS-ReliableMessaging would be built on top of it, there was not a proper extension architecture defined to enable clean composition of such layers. Thus, one of the key motivations for Axis2 is to provide a clean and simple environment for like Apache Sandesha and Apache WSS4J to layer on top of the base SOAP system. Another driving force for Axis2 as well as the move away from RPC oriented Web services towards more document-oriented, message style asynchronous service interactions. The Axis2 project is centered on a new representation for SOAP messages called AXIOM (AXIs Object Model). AXIOM consists of two parts: a complete XML Infoset representation and a SOAP Infoset representation on top of that. The XML Infoset representation provides a JDOM-like simple API but is built on a deferred model via a StAX-based (Streaming API for XML) pull parsing API. A key feature of AXIOM is that it allows one to stop building the XML tree and just access the pull stream directly; thus enabling both maximum flexibility and maximum performance. This approach allows us to support multiple levels of abstraction for consuming and offering Web services: using plain AXIOM, using generated code and statically data-bound data types and so on. At the time of Axis1's design, RPC-style, synchronous, request-response interactions were the order of the day for Web services. Today service interactions are much more message
  -oriented and exploit many different message exchange patterns. The Axis2 engine architecture is careful to not build in any assumptions of request-response patterns to ensure that it can be used easily to support arbitrary message exchange patterns.</description>
  <shortDescription>Axis2 C</shortDescription>
  <!-- the project home page -->
  <url>http://ws.apache.org/axis2/c</url>
  <issueTrackingUrl>http://issues.apache.org/jira/browse/AXIS2C</issueTrackingUrl>
  <siteAddress>ws.apache.org/axis2/c</siteAddress>
  <siteDirectory>/www/ws.apache.org/axis2/c</siteDirectory>
  <distributionDirectory>/www/ws.apache.org/builds/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>Axis C Developer List</name>
      <subscribe>axis-c-dev-subscribe@ws.apache.org?subject=subscribe</subscribe>
      <unsubscribe>axis-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>Axis 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>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>Chris Darroch</name>
      <id>chrisd</id>
      <email>chrisd AT pearsoncmg.com</email>
      <organization>Pearson Education Core Technology Group</organization>
    </developer>
    <developer>
      <name>Paul Fremantle</name>
      <id>pzf</id>
      <email>paul AT wso2.com</email>
      <organization>WSO2</organization>
    </developer>
    <developer>
      <name>Dimuthu Gamage</name>
      <id>dimuthucg</id>
      <email>dimuthuc AT gmail.com</email>
      <organization>Univerisity of Moratuwa</organization>
    </developer>
    <developer>
      <name>Sahan Gamage</name>
      <id>sahan</id>
      <email>sahans AT gmail.com</email>
      <organization>Purdue University</organization>
    </developer>
    <developer>
      <name>Nandika Jayawardana</name>
      <id>nandika</id>
      <email>nandika AT wso2.com</email>
      <organization>WSO2</organization>
    </developer>
    <developer>
      <name>Supun Kamburugamuva</name>
      <id>supun</id>
      <email>supun06 AT gmail.com</email>
      <organization>Univerisity of Moratuwa</organization>
    </developer>
    <developer>
      <name>Kaushalye Kapuruge</name>
      <id>kaushalye</id>
      <email>kaushalye AT wso2.com</email>
      <organization>WSO2</organization>
    </developer>
    <developer>
      <name>Damitha Kumarage</name>
      <id>damitha</id>
      <email>damitha 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>Milinda Pathirage</name>
      <id>milinda</id>
      <email>milinda.pathirage AT gmail.com</email>
      <organization>Univerisity of Moratuwa</organization>
    </developer>
    <developer>
      <name>Manjula Peiris</name>
      <id>manjula</id>
      <email>manjula AT wso2.com</email>
      <organization>WSO2</organization>
    </developer>
    <developer>
      <name>Dinesh Premalal</name>
      <id>dinesh</id>
      <email>dinesh 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>Davanum Srinivas</name>
      <id>dims</id>
      <email>dims AT wso2.com</email>
      <organization>WSO2</organization>
    </developer>
    <developer>
      <name>Sanjiva Weerawarana</name>
      <id>sanjiva</id>
      <email>sanjiva AT wso2.com</email>
      <organization>WSO2</organization>
    </developer>
    <developer>
      <name>Nabeel Yoosuf</name>
      <id>nabeel</id>
      <email>nabeel.yoosuf AT gmail.com</email>
      <organization>Purdue University</organization>
    </developer>    
  </developers>
  <contributors>
    <contributor>
      <name>James Clark</name>
      <email>jjc AT public.jclark.com</email>
      <roles>
	<role>Technical Adviser on Building a Portable/Re-usable C library</role>
      </roles>
    </contributor>
    <contributor>
      <name>Buddhika Semashinghe</name>
      <email>buddhika@wso2.com</email>
      <roles>
	<role>Helps to improve overall quality of the code base</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>
