<?xml version="1.0" encoding="ISO-8859-1"?>

<!--
/*
 * 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>Axis2.0</name>
	<pomVersion>3</pomVersion>
	<!-- a unique name for this project -->
	<name>Apache Axis 2.0</name>
	<id>axis2</id>
	<groupId>axis2</groupId>
	<package>org.apache.axis2</package>
	<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>2004</inceptionYear>
	<package>org.apache.axis2</package>
	<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>Axis 2.0</shortDescription>
	<!-- the project home page -->
	<url>http://ws.apache.org/axis2/</url>
	<issueTrackingUrl>http://issues.apache.org/jira/browse/AXIS2</issueTrackingUrl>
	<siteAddress>ws.apache.org/axis2</siteAddress>
	<siteDirectory>/www/ws.apache.org/axis2/</siteDirectory>
	<distributionDirectory>/www/ws.apache.org/builds/</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 Developer List</name>
			<subscribe>axis-dev-subscribe@ws.apache.org</subscribe>
			<unsubscribe>axis-dev-unsubscribe@ws.apache.org</unsubscribe>
			<archive>http://marc.theaimsgroup.com/?l=axis-dev&amp;r=1&amp;w=2</archive>
		</mailingList>
		<mailingList>
			<name>Axis User List</name>
			<subscribe>axis-user-subscribe@ws.apache.org</subscribe>
			<unsubscribe>axis-user-unsubscribe@ws.apache.org</unsubscribe>
			<archive>http://marc.theaimsgroup.com/?l=axis-user&amp;r=1&amp;w=2</archive>
		</mailingList>
	</mailingLists>
	<!-- ========== -->
	<!-- Developers -->
	<!-- ========== -->
	<developers>
		<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>Glen Daniels</name>
			<id>gdaniels</id>
			<email>gdaniels AT apache.org</email>
			<organization>Sonic Software</organization>
		</developer>
		<developer>
			<name>Aleksander Slominski</name>
			<id>alek</id>
			<email>aslom AT cs.indiana.edu</email>
			<organization>Indiana University Extreme! Computing Lab</organization>
		</developer>
		<developer>
			<name>Srinath Perera</name>
			<id>hemapani</id>
			<email>hemapani AT apache.org</email>
			<organization>Lanka Software Foundation</organization>
			<url>http://www.apache.org/~hemapani</url>
		</developer>
		<developer>
			<name>Eran Chinthaka</name>
			<id>chinthaka</id>
			<email>chinthaka AT wso2.com</email>
			<organization>WSO2</organization>
			<url>http://www.apache.org/~chinthaka</url>
		</developer>
		<developer>
			<name>Dasarath Weerathunga</name>
			<id>dasarath</id>
			<email>dasarath AT opensource.lk</email>
			<organization>Lanka Software Foundation</organization>
		</developer>
		<developer>
			<name>Jaliya Ekanayake</name>
			<id>jaliya</id>
			<email>jaliya AT opensource.lk</email>
			<organization>Virtusa / Lanka Software Foundation</organization>
			<url>http://www.apache.org/~jaliya</url>
		</developer>
		<developer>
			<name>Chathura Herath</name>
			<id>chathura</id>
			<email>chathura AT opensource.lk</email>
			<organization>LSF/MIT</organization>
			<url>www.apache.org/~chathura</url>
		</developer>
		<developer>
			<name>Deepal Jayasinghe</name>
			<id>deepal</id>
			<email>deepal AT wso2.com</email>
			<organization>WSO2</organization>
			<url>http://www.apache.org/~deepal</url>
		</developer>
		<developer>
			<name>Ajith Ranabahu</name>
			<id>ajith</id>
			<email>ajith AT wso2.com</email>
			<organization>WSO2</organization>
			<url>http://www.apache.org/~ajith</url>
		</developer>
		<developer>
			<name>Venkat Reddy</name>
			<id>venkat</id>
			<email>vreddyp AT gmail.com</email>
			<organization>Computer Associates</organization>
		</developer>
		<developer>
			<name>Ashutosh Shahi</name>
			<id>ashu</id>
			<email>Ashutosh.Shahi AT ca.com</email>
			<organization>Computer Associates</organization>
		</developer>
		<developer>
			<name>Jayachandra Sekhara Rao Sunkara</name>
			<id>jaya</id>
			<email>jayachandra AT gmail.com</email>
			<organization>Computer Associates</organization>
		</developer>
		<developer>
			<name>Thilina Gunarathne</name>
			<id>thilina</id>
			<email>thilina AT opensource.lk</email>
			<organization>Lanka Software Foundation</organization>
		</developer>
		<developer>
			<name>Ruchith Fernando</name>
			<id>ruchith</id>
			<email>ruchith AT wso2.com</email>
			<organization>WSO2</organization>
		</developer>
		<developer>
			<name>Saminda Abeyruwan</name>
			<id>saminda</id>
			<email>saminda AT wso2.com</email>
			<organization>WSO2</organization>
		</developer>
		<developer>
			<name>Chamil Thanthrimudalige</name>
			<id>chamil</id>
			<email>chamil AT wso2.com</email>
			<organization>WSO2</organization>
		</developer>
		<developer>
			<name>Sanka Samaranayake</name>
			<id>sanka</id>
			<email>sanka AT wso2.com</email>
			<organization>WSO2</organization>
		</developer>
	</developers>
	<contributors>
		<contributor>
			<name>Farhaan Mohideen</name>
			<email>fmohideen AT valista.com</email>
			<organization>Lanka Software Foundation</organization>
		</contributor>
		<contributor>
			<name>Changshin Lee</name>
			<email>iasandcb AT hotmail.com</email>
			<organization>Tmax Soft, Korea</organization>
		</contributor>
		<contributor>
			<name>Afkham Azeez</name>
			<email>azeez AT wso2.com</email>
			<organization>WSO2</organization>
		</contributor>
		<contributor>
			<name>Nadana Gunarathna</name>
			<email>nadana AT opensource.lk</email>
			<organization>Lanka Software Foundation</organization>
		</contributor>
		<contributor>
			<name>Gayan Asanka</name>
			<email>gayan AT opensource.lk</email>
			<organization>Lanka Software Foundation</organization>
		</contributor>
		<contributor>
			<name>Anushka Kumara</name>
			<email>anushkakumar AT gmail.com</email>
			<organization>Lanka Software Foundation / University of Moratuwa</organization>
		</contributor>
		<contributor>
			<name>Chinthaka Thilakarathne</name>
			<email/>
			<organization>Lanka Software Foundation / University of Moratuwa</organization>
		</contributor>
		<contributor>
			<name>Dharshana Dias</name>
			<email/>
			<organization>Lanka Software Foundation / University of Moratuwa</organization>
		</contributor>
		<contributor>
			<name>Chatra Nakkawita</name>
			<email>chatra AT WSO2.com</email>
			<organization>WSO2</organization>
		</contributor>
		<contributor>
			<name>Thilini Gunawardhana</name>
			<email>thilini AT WSO2.com</email>
			<organization>WSO2</organization>
		</contributor>
	</contributors>
	<!-- build information for the project -->
	<build>
		<nagEmailAddress>axis-dev@ws.apache.org</nagEmailAddress>
		<sourceDirectory>src</sourceDirectory>
		<unitTestSourceDirectory>test</unitTestSourceDirectory>
		<!--
            <sourceModifications>
                <sourceModification>
                    <className>fakeClass</className>
                    <excludes>
                        <exclude>org/apache/axis2</exclude>
                        <exclude>**/_*.java</exclude>
                    </excludes>
                </sourceModification>
            </sourceModifications
        -->
		<unitTest>
			<excludes>
				<exclude>**/*Abstract*.java</exclude>
				<exclude>**/*Util*.java</exclude>
				<exclude>**/*PhaseResolvingTest.java</exclude>
			</excludes>
			<includes>
				<include>**/*Test.java</include>
			</includes>
			<resources>
				<resource>
					<directory>${basedir}/test-resources</directory>
				</resource>
				<resource>
					<directory>conf</directory>
					<includes>
						<include>**/*.properties</include>
					</includes>
				</resource>
				<resource>
					<directory>src</directory>
					<includes>
						<include>**/*.properties</include>
						<include>**/*.xml</include>
						<include>**/*.xsl</include>
					</includes>
				</resource>
				<resource>
					<directory>test</directory>
					<includes>
						<include>**/*.properties</include>
						<include>**/*.xml</include>
					</includes>
				</resource>
			</resources>
		</unitTest>
		<resources>
			<resource>
				<directory>conf</directory>
				<includes>
					<include>**/*.properties</include>
				</includes>
			</resource>
			<resource>
				<directory>src</directory>
				<includes>
					<include>**/*.properties</include>
					<include>**/*.xml</include>
					<include>**/*.xsl</include>
				</includes>
			</resource>
		</resources>
	</build>
	<!-- ======= -->
	<!-- Reports -->
	<!-- ======= -->
	<reports>
		<!-- report>maven-license-plugin</report>
        
        <report>maven-pmd-plugin</report>
        <report>maven-jdepend-plugin</report>
        <report>maven-jxr-plugin</report>
        <report>maven-javadoc-plugin</report>
        <report>maven-clover-plugin</report>
        <report>maven-junit-report-plugin</report -->
		<report>maven-changes-plugin</report>
	</reports>
</project>
