#
# 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.
#

commons-beanutils-core=lib/required/commons-beanutils-core-1.8.3.jar
commons-cli=lib/required/commons-cli-1.2.jar
commons-codec=lib/required/commons-codec-1.6.jar
commons-collections=lib/required/commons-collections-3.2.1.jar
commons-configuration=lib/required/commons-configuration-1.8.jar
commons-digester=lib/required/commons-digester-1.8.1.jar
commons-lang=lib/required/commons-lang-2.6.jar
commons-logging=lib/required/commons-logging-1.1.1.jar

derby-db=lib/required/derby-10.8.2.2.jar

geronimo-jms=lib/required/geronimo-jms_1.1_spec-1.0.jar
geronimo-j2ee=lib/required/geronimo-j2ee-connector_1.5_spec-2.0.0.jar
geronimo-jta=lib/required/geronimo-jta_1.1_spec-1.1.1.jar
geronimo-kernel=lib/required/geronimo-kernel-2.2.1.jar
geronimo-openejb=lib/required/geronimo-ejb_3.0_spec-1.0.1.jar
geronimo-servlet=lib/required/geronimo-servlet_2.5_spec-1.2.jar

junit=lib/required/junit-3.8.1.jar
mockito-all=lib/required/mockito-all-1.9.0.jar

gson-all=lib/required/gson-2.0.jar

log4j=lib/required/log4j-1.2.16.jar

slf4j-api=lib/required/slf4j-api-1.6.4.jar
slf4j-log4j=lib/required/slf4j-log4j12-1.6.4.jar

xalan=lib/required/xalan-2.7.0.jar

jetty=lib/required/jetty-server-7.6.3.v20120416.jar
jetty-continuation=lib/required/jetty-continuation-7.6.3.v20120416.jar
jetty-security=lib/required/jetty-security-7.6.3.v20120416.jar
jetty-util=lib/required/jetty-util-7.6.3.v20120416.jar
jetty-io=lib/required/jetty-io-7.6.3.v20120416.jar
jetty-http=lib/required/jetty-http-7.6.3.v20120416.jar
jetty-servlet=lib/required/jetty-servlet-7.6.3.v20120416.jar
jetty-websocket=lib/required/jetty-websocket-7.6.3.v20120416.jar
servlet-api=${geronimo-servlet}

dojo=lib/required/dojo-war-1.7.2.war

jackson-core=lib/required/jackson-core-asl-1.9.0.jar
jackson-mapper=lib/required/jackson-mapper-asl-1.9.0.jar

commons-configuration.libs = ${commons-beanutils-core} ${commons-digester} \
  ${commons-codec} ${commons-lang} ${commons-collections} ${commons-configuration}

common.libs=${slf4j-api}
client.libs=${geronimo-jms}
amqp-1-0-common.libs=
amqp-1-0-client.libs=
amqp-1-0-client-example.libs=${commons-cli}
amqp-1-0-client-jms.libs=${geronimo-jms}
tools.libs=${commons-configuration.libs} ${log4j}
broker.libs=${commons-cli} ${commons-logging} ${log4j} ${slf4j-log4j} \
    ${xalan} ${derby-db} ${commons-configuration.libs} \
    ${jackson-core} ${jackson-mapper} ${jetty} ${jetty-continuation} ${jetty-security} ${jetty-http} ${jetty-io} ${jetty-servlet} ${jetty-util} ${servlet-api} ${jetty-websocket}

broker-plugins-management-http.libs=${jetty} ${jetty-continuation} ${jetty-security} ${jetty-http} ${jetty-io} ${jetty-servlet} ${jetty-util} ${servlet-api}  ${jackson-core} ${jackson-mapper}
broker-plugins.libs=${log4j} ${commons-configuration.libs}

test.libs=${slf4j-log4j} ${log4j} ${junit} ${slf4j-api} ${mockito-all}

perftests.libs=${geronimo-jms} ${slf4j-api} ${log4j} ${slf4j-log4j} ${commons-logging} ${commons-collections} ${commons-beanutils-core} ${commons-lang} ${gson-all} ${derby-db}

management-common.libs=

common.test.libs=${test.libs}
broker.test.libs=${test.libs}
client.test.libs=${test.libs}
client-example.test.libs=${test.libs}
tools.test.libs=
systests.libs=${test.libs}
perftests.test.libs=${test.libs}

broker-plugins-access-control.test.libs=${test.libs}
broker-plugins-management-http.test.libs=${test.libs}
broker-plugins-management-jmx.test.libs=${test.libs}

management-common.test.libs=${test.libs}

# JCA Resource adapter
jca.libs=${geronimo-j2ee} ${geronimo-jta} ${geronimo-jms} ${test.libs} ${geronimo-kernel} ${geronimo-openejb} ${geronimo-servlet}
jca.test.libs=${test.libs}

# optional bdbstore module deps
bdb-je=lib/bdbstore/je-5.0.58.jar
bdbstore.libs=${bdb-je}
bdbstore.test.libs=${test.libs}

bdbstore-jmx.libs=${bdb-je}
bdbstore-jmx.test.libs=${test.libs}

# optional perftests-visualisation-jfc module deps
jfreechart.jar=lib/jfree/jfreechart-1.0.13.jar
jcommon.jar=lib/jfree/jcommon-1.0.16.jar
csvjdbc.jar=lib/csvjdbc/csvjdbc-1.0.8.jar
perftests-visualisation-jfc.libs=${jfreechart.jar} ${jcommon.jar} ${csvjdbc.jar} ${derby-db}
perftests-visualisation-jfc.test.libs=${test.libs}

# Libraries used only within the build
bnd=lib/required/bnd-0.0.384.jar
jython=lib/required/jython-standalone-2.5.2.jar
maven-ant-tasks=lib/required/maven-ant-tasks-2.1.1.jar
velocity.jar=lib/required/velocity-1.4.jar
velocity-dep.jar=lib/required/velocity-dep-1.4.jar
