<!--
  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.wookie" module="wookie" revision="1.0.0"/>
    
    <configurations>
      <conf name="deploy" description="Provide the necessary files and libraries to deploy in a production environment"/>
      <conf name="database" description="Provide the libraries to run the wookie database in standalone mode"/>
	  <conf name="runtime" extends="database" description="Provide the libraries to run in standalone without the deploy libraries"/>
	  <conf name="dev" extends="deploy, database, runtime" description="Provide the necessary files and libraries to run in standalone (development) mode"/>
	  <conf name="test" extends="dev" visibility="private" description="for our testing framework"/>
	  <conf name="ddlutils" visibility="private" description="Provide the necessary libraries to invoke DDLUtils schema generation"/>
  	  <conf name="deploy-with-src-and-docs" extends="deploy" description="Used for publishing maven artifacts to the snapshot repo"/>
	  <conf name="deploy-signed" extends="deploy-with-src-and-docs" description="Used for publishing maven artifacts to the staging area repo"/>	  
	</configurations>
	
	<publications xmlns:e="urn:ant.apache.org:ivy-extras">
	  <artifact name="wookie" conf="deploy" type="pom" ext="pom" />
      <artifact name="wookie" conf="deploy" type="war" />
      <artifact name="wookie" conf="deploy-with-src-and-docs" type="sources" ext="jar" e:classifier="sources"/>
      <artifact name="wookie" conf="deploy-with-src-and-docs" type="javadoc" ext="jar" e:classifier="javadoc"/>
      <artifact name="wookie" conf="deploy-signed" type="war.asc" ext="war.asc" />
      <artifact name="wookie" conf="deploy-signed" type="pom.asc" ext="pom.asc"/>      
      <artifact name="wookie" conf="deploy-signed" type="sources.asc" ext="jar.asc" e:classifier="sources"/>
	  <artifact name="wookie" conf="deploy-signed" type="javadoc.asc" ext="jar.asc" e:classifier="javadoc"/>
	</publications>	
	    
    <dependencies>
        <dependency org="org.apache.wookie" name="wookie-java-connector" rev="1.0.0" conf="deploy->default">
        </dependency>
        <dependency org="org.apache.wookie" name="wookie-parser" rev="1.0.0" conf="deploy->default">
        </dependency>
        
        <!--  Uncomment to include JCR persistence manager -->
 		<!--  
        <dependency org="org.apache.incubator" name="wookie-jcr" rev="latest.integration" conf="deploy->default">  
		</dependency>    --> 

        <dependency org="com.ibm.icu" name="icu4j" rev="4.6.1" conf="deploy->default">
        </dependency>
        <dependency org="org.apache.commons" name="commons-email" rev="1.1" conf="deploy->default">
        </dependency> 
        <dependency org="commons-codec" name="commons-codec" rev="1.3" conf="deploy->default">
        </dependency>
        <dependency org="commons-collections" name="commons-collections" rev="3.2" conf="deploy->default">
        </dependency>
        <dependency org="org.apache.commons" name="commons-compress" rev="1.0" conf="deploy->default">
        </dependency>
        <dependency org="commons-configuration" name="commons-configuration" rev="1.7" conf="deploy->default">
        </dependency>
        <dependency org="commons-fileupload" name="commons-fileupload" rev="1.2.1" conf="deploy->default">
        </dependency>
        <dependency org="commons-httpclient" name="commons-httpclient" rev="3.1" conf="deploy->default">
        </dependency>
        <dependency org="commons-lang" name="commons-lang" rev="2.4" conf="deploy->default">
        </dependency>
        <dependency org="commons-logging" name="commons-logging" rev="1.1.1" conf="deploy->default">
        </dependency>
        <dependency org="commons-io" name="commons-io" rev="2.1" conf="deploy->default">
        </dependency>
        <dependency org="dom4j" name="dom4j" rev="1.6.1" conf="deploy->default">
        </dependency>
        <dependency org="net.sourceforge.htmlcleaner" name="htmlcleaner" rev="2.10" conf="deploy->default">
        </dependency>
        <dependency org="org.directwebremoting" name="dwr" rev="2.0.10" conf="deploy->default">
		</dependency>
        <dependency org="org.slf4j" name="slf4j-log4j12" rev="1.6.4" conf="deploy->default">
        </dependency> 
        
      	<!-- Note that we only require the "BlobCrypterToken" part of Shindig in order to create valid tokens, so
      		 we don't need to include the whole of Shindig common's dependencies as well, hence transitive is 
      		 marked "false" and we include the two modules that the token creation depends on.
      		 
      		 While it may be simpler to just include the whole of Shindig, not only does it bloat the application, it
      		 also can cause deployment conflicts with servlet containers.
      	-->  
        <dependency  org="org.apache.shindig" name="shindig-common" transitive="false" rev="2.0.0" conf="deploy->default">
        </dependency>
        <dependency  org="com.google.collections" name="google-collections" rev="1.0-rc2" conf="deploy->default">
        </dependency>
         <dependency org="commons-codec" name="commons-codec" rev="1.5" conf="deploy->default">
        </dependency>
        
        
        <dependency org="org.jdom" name="jdom" rev="1.1" conf="deploy->default">
        </dependency>
        <dependency org="org.json" name="json" rev="20080701" conf="deploy->default">
        </dependency>
        <dependency org="org.apache.openjpa" name="openjpa-all" rev="2.0.0" conf="deploy->default">
        </dependency>
        <dependency org="commons-pool" name="commons-pool" rev="1.3" conf="deploy->default">
        </dependency>
        <dependency org="org.apache.santuario" name="xmlsec" rev="1.5.2" conf="deploy->default">
        </dependency>

        <!-- Libraries used in a development/test environment but not in deployment -->
        <dependency org="javax.servlet" name="servlet-api" rev="2.5" conf="runtime->default">
        </dependency>
        <dependency org="org.mortbay.jetty" name="jetty" rev="6.1.3" conf="runtime->default">
        </dependency>
        <dependency org="org.mortbay.jetty" name="jetty-util" rev="6.1.3" conf="runtime->default">
        </dependency>
        <dependency org="org.mortbay.jetty" name="jetty-plus" rev="6.1.3" conf="runtime->default">
        </dependency>
        <dependency org="org.mortbay.jetty" name="jetty-naming" rev="6.1.3" conf="runtime->default">
        </dependency>
        <dependency org="org.mortbay.jetty" name="jsp-2.1" rev="6.1.3" conf="runtime->default">
        </dependency>
        <dependency org="org.mortbay.jetty" name="jsp-api-2.1" rev="6.1.3" conf="runtime->default">
        </dependency>
		<dependency org="commons-dbcp" name="commons-dbcp" rev="1.2.2" conf="runtime->default">
		</dependency>

        <dependency org="org.apache.derby" name="derby" rev="10.4.2.0" conf="database->default">
		</dependency>
		
		<!-- Libraries used in testing -->
        <dependency org="junit" name="junit" rev="4.7" conf="test->default">
        </dependency>
        <dependency org="directory-naming" name="naming-java" rev="0.8" conf="test->default">
		</dependency>
        
		<!-- DDLUtils Library -->
        <dependency org="org.apache.ddlutils" name="ddlutils" rev="1.0" conf="ddlutils->default">
            <exclude module="xerces" />
            <exclude module="xml-apis" />
        </dependency>
        <!-- 
        The two dependencies below are what are shipped with apache santuario.
        Older versions of xerces seem to break the digsig client hence
        why they are excluded in the ddlutil dependency above
        -->
        <!-- <dependency org="xerces" name="xercesImpl" rev="2.9.1" />-->
        <!-- jar below is always replaced by 2.0.2 when ddlutils includes xerces --> 
        <!-- <dependency org="xml-apis" name="xml-apis" rev="1.3.04" /> -->
        
        <dependency org="log4j" name="log4j" rev="1.2.16" conf="ddlutils->default">
        </dependency>
        
        <exclude module="juel-api"/>
        <exclude module="juel-impl"/>
        <exclude module="spring"/>
        <exclude module="struts"/>
        <exclude module="webwork"/>
        <exclude module="jms"/>
        <exclude module="jmxri"/>
        <exclude module="jmxtools"/>
        <exclude module="xom"/>
        <exclude module="commons-jxpath"/>
        <exclude module="maven-cobertura-plugin"/>
        <exclude module="maven-findbugs-plugin"/>
    </dependencies>
</ivy-module>
