<?xml version="1.0"?>
<!--
   Copyright 2003-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>
  <extend>../commons-build/sandbox-project.xml</extend>
  <name>Commons Functor</name>
  <id>commons-functor</id>
  
  <logo>/images/functor-logo-white.png</logo>
  
  <currentVersion>1.0-dev</currentVersion>
  <inceptionYear>2003</inceptionYear>
  <shortDescription>Commons Functor</shortDescription>
  <description>
    A "functor" is an entity that serves the role of a function
    but can be operated upon like an object.  Commons Functor
    defines common functor and functor-related iterfaces, 
    implementations, and utilities.
  </description>

  <developers>
    <developer>
      <name>Rodney Waldhoff</name>
      <id>rwaldhoff</id>
      <email>rwaldhoff AT apache DOT org</email>
    </developer>
  </developers>

  <contributors>
   <contributor>
     <name>Jason Horman</name>
     <email>jason AT jhorman DOT org</email>
   </contributor>
   <contributor>
     <name>Herve Quiroz</name>
     <email>herve DOT quiroz AT esil DOT univ DASH mrs DOT fr</email>
   </contributor>
  </contributors>

  <dependencies>
    <dependency>
      <id>junit</id>
      <version>3.8.1</version>
    </dependency>

    <!-- these two aren't really required by functor, but by maven -->
    <dependency><id>xml-apis</id><version>2.0.2</version></dependency>
    <dependency><id>xerces</id><version>2.0.2</version></dependency>
    <!-- /these two aren't really required by functor, but by maven -->

  </dependencies>

  <build>
    <unitTest>
      <includes>
        <include>org/apache/commons/functor/TestAll.java</include>
      </includes>
      <resources>
        <resource>
          <directory>src/test</directory>
          <include>**/*.txt</include>
        </resource>
      </resources>
    </unitTest>
  </build>
</project>

