<!--
   Licensed to the Apache Software Foundation (ASF) under one
   or more contributor license agreements.  See the NOTICE file
   distributed with this work for additional information
   regarding copyright ownership.  The ASF licenses this file
   to you 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.
-->
<ivy-module version="2.0">
    <info organisation="org.apache" module="fortress-core-realm"/>
    <dependencies>
        <dependency org="org.apache.directory" name="fortress-core" rev="1.0-RC40"  conf="default->master"/>
<!--        <dependency org="org.openldap" name="fortress" rev="1.0-RC39"  conf="default->master"/>-->
        <dependency org="commons-lang" name="commons-lang" rev="2.4" conf="default->master"/>
        <dependency org="commons-configuration" name="commons-configuration" rev="1.6" conf="default->master"/>
        <dependency org="commons-lang" name="commons-lang" rev="2.4" conf="default->master"/>
        <dependency org="commons-collections" name="commons-collections" rev="3.2.1" conf="default->master"/>
        <dependency org="commons-logging" name="commons-logging" rev="1.1.1" conf="default->master"/>
        <dependency org="com.unboundid" name="unboundid-ldapsdk" rev="2.1.0" conf="default->master"/>
        <dependency org="junit" name="junit" rev="4.9" conf="default->master"/>
        <dependency org="log4j" name="log4j" rev="1.2.17" conf="default->master"/>
        <dependency org="org.jasypt" name="jasypt" rev="1.8" conf="default->master"/>
        <dependency org="org.jgrapht" name="jgrapht-jdk1.5" rev="0.7.3" conf="default->master"/>
        <dependency org="net.sf.ehcache" name="ehcache-core" rev="2.6.9" conf="default->master"/>
        <dependency org="org.slf4j" name="slf4j-api" rev="1.7.5" conf="default->master"/>
        <dependency org="org.slf4j" name="slf4j-jcl" rev="1.7.5" conf="default->master"/>
        <dependency org="org.apache.directory.server" name="apacheds-all" rev="2.0.0-M16" conf="default->master"/>

        <dependency org="org.apache.tomcat" name="tomcat-catalina" rev="7.0.22" conf="default->master">
            <artifact name="tomcat-catalina" type="jar" />
        </dependency>
        <dependency org="org.apache.tomcat" name="catalina" rev="6.0.33" conf="default->master">
            <artifact name="catalina" type="jar" />
        </dependency>
    </dependencies>
</ivy-module>
