#######################################################################################
# A dependency is identied by:
# groupId: a simple component name that adheres to java 
#           variable naming conventions. e.g. wtp
# url:  Url to a remote repository that can be used by a 
#       http GET request to download the library 
#       to a local cache repository. URL should not include the file.
#       See the next description for the file
# file: Name of the library that is used.  If the library is platform dependent
#       it must have suffixes such as: file.linux.gtk.x86
#       These suffixes are the same as those used by releng baseos,basews,basearch
#            baseos= linux or win32
#            basews= gtk or win32
#            basearch=x86
# name:  A short user readable name for the library.
# description:  One line description for the library.
# autodownload: [optional] default true.  Set this to false if the file cannot be
#                downloaded automatically (i.e. requires license accept click through).
#                If autodownload is false, and the library is not avaialbe in the local
#                repository (cache).  User must download the library and copy it into
#                the local repository. 
# releng.url: [optional] Copies the original to a releng repository.  Useful for libraries
#                        that can get deleted from their original URLs.  Releng will use
#                        the local cache, original url, releng.url in that order to get the
#                        the dependency.  If a releng.url is not provided, the library will
#                        always be requested from its original site.
# 
# Example:
# wtp.url  = http://download.eclipse.org/webtools/downloads/drops/R-0.7-200507290654
# wtp.file = wtp-sdk-0.7.zip
# wtp.name = WTP 0.7 SDK
# wtp.description = WTP 0.7 SDK distribution
#######################################################################################


#######################################################################################

orbitthirdpartyzip.build.dir = R200706192011
orbitthirdpartyzip.build.id = R200706192011

orbitthirdpartyzip.mirror.prefixuri = /tools/orbit/downloads/drops/${orbitthirdpartyzip.build.dir}
orbitthirdpartyzip.url  = http://download.eclipse.org${orbitthirdpartyzip.mirror.prefixuri}
orbitthirdpartyzip.file = orbit-${orbitthirdpartyzip.build.id}.zip
orbitthirdpartyzip.name = Orbit thirdparty zip
orbitthirdpartyzip.description = Orbit thirdparty zip
orbitthirdpartyzip.build.home = http://download.eclipse.org/tools/orbit/


orbitthirdpartymap.url  = http://download.eclipse.org${orbitthirdpartyzip.mirror.prefixuri}
orbitthirdpartymap.file = orbitBundles-${orbitthirdpartyzip.build.id}.map
orbitthirdpartymap.name = orbit thirdparty map
orbitthirdpartymap.description = orbit thirdparty map


#######################################################################################
# SourceForge DITA-OT
# DITA zip to be downloaded
# DITA will be used for Eclipse Help
# groupID : dita
dita.url = http://umn.dl.sourceforge.net/sourceforge/dita-ot/
dita.file = DITA-OT1.2.1_bin-ASL.zip
dita.name = SourceForge DITA-OT 1.2.1
dita.description = DITA-OT 1.2.1 Binary ASL Distribution
#######################################################################################

wtp.eclipse.build.id=3.3.1
wtp.eclipse.build.dir=R-3.3.1-200709211145
eclipse.name = Eclipse SDK v3.3.1
eclipse.description = Eclipse SDK v3.3.1

#######################################################################################
# Eclipse SDK Dependency
# Eclipse zip to be downloaded
# Eclipse SDK will be used for building the distribution
# groupID : eclipse
eclipse.mirror.prefixuri=/eclipse/downloads/drops/${wtp.eclipse.build.dir}
eclipse.url  = http://download.eclipse.org${eclipse.mirror.prefixuri}
eclipse.file.linux-gtk-x86=eclipse-SDK-${wtp.eclipse.build.id}-linux-gtk.tar.gz
eclipse.file.linux-gtk-ppc=eclipse-SDK-${wtp.eclipse.build.id}-linux-gtk-ppc.tar.gz
eclipse.file.win32-win32-x86=eclipse-SDK-${wtp.eclipse.build.id}-win32.zip
eclipse.file.macosx-carbon-ppc=eclipse-SDK-${wtp.eclipse.build.id}-macosx-carbon.tar.gz
eclipse.build.home = http://download.eclipse.org/eclipse/downloads/

#######################################################################################

#######################################################################################
# Eclipse Test Framework
# Eclipse Test Framework support zip to be downloaded
# Eclipse Test Framework will be used for testing and building the tests
# groupID : eclipseTestFramework

eclipseTestFramework.url  = http://download.eclipse.org${eclipse.mirror.prefixuri}
eclipseTestFramework.file = eclipse-test-framework-${wtp.eclipse.build.id}.zip

eclipseTestFramework.name = Eclipse test framework v3.3.1 Stream
eclipseTestFramework.description = Eclipse test framework v3.3.1 Stream

#######################################################################################

#######################################################################################
# Eclipse releng tool 
# purely a handy link for committers

eclipsereleng.url  = http://download.eclipse.org${eclipse.mirror.prefixuri}
eclipsereleng.file = org.eclipse.releng.tools-${wtp.eclipse.build.id}.zip
eclipsereleng.name = Eclipse releng tool v3.4 Stream
eclipsereleng.description = ${eclipsereleng.name}
}
#######################################################################################

#######################################################################################
# Eclipse Modeling Framework (EMF) Dependency
# EMF zip to be downloaded
# EMF SDO XSD SDK will be used for building the distribution
# groupID : emf

emf.mirror.prefixuri = /modeling/emf/emf/downloads/drops/2.3.1/R200709252135
emf.file = emf-sdo-xsd-SDK-2.3.1.zip
emf.name = EMF SDO XSD sdk v2.3.1

emf.url  = http://download.eclipse.org${emf.mirror.prefixuri}
emf.description = ${emf.name}
emf.build.home = http://www.eclipse.org/modeling/emf/downloads/

#######################################################################################

#######################################################################################
# Eclipse Graphical Editing Framework (GEF) Dependency
# GEF zip to be downloaded
# GEF SDK will be used for building the distribution
# groupID : gef

gef.mirror.prefixuri= /tools/gef/downloads/drops/R-3.3.1-200709241000
gef.file = GEF-SDK-3.3.1.zip
gef.name = GEF-SDK-3.3.1.zip

gef.url  = http://download.eclipse.org${gef.mirror.prefixuri}
gef.description = ${gef.name}
gef.build.home = http://download.eclipse.org/tools/gef/downloads/

#######################################################################################

#######################################################################################
# Eclipse Data Tools Platform (DTP) Dependency
# DTP zip to be downloaded
# DTP SDK will be used for building the distribution
# groupID : dtp

dtp.mirror.prefixuri = /datatools/downloads/1.5
dtp.file = dtp-sdk_1.5.1.zip
dtp.name = DTP sdk v1.5.1

dtp.url  = http://download.eclipse.org${dtp.mirror.prefixuri}
dtp.description = ${dtp.name}
dtp.build.home = http://www.eclipse.org/datatools/downloads.html

#######################################################################################

#######################################################################################
# Jakarta Tomcat Dependency
# tomcat zip to be downloaded
# Tomcat will be used for testing the distribution
# groupID : tomcat.5
tomcat.5.url  = http://www.apache.org/dist/tomcat/tomcat-5/v5.0.28/bin/
tomcat.5.file = jakarta-tomcat-5.0.28.zip
tomcat.5.name = Jakarta Tomcat v5.0.28
tomcat.5.description = Jakarta Tomcat v5.0.28
#######################################################################################

#######################################################################################
# Apache Tomcat Dependency
# tomcat zip to be downloaded
# Tomcat will be used for testing the distribution
# groupID : tomcat.4
tomcat.4.url  = http://www.apache.org/dist/tomcat/tomcat-4/v4.1.36/bin/
tomcat.4.file = apache-tomcat-4.1.36.zip
tomcat.4.name = Apache Tomcat v4.1.36
tomcat.4.description = ${tomcat.4.name}
#######################################################################################

#######################################################################################
# ObjectWeb JOnAS Dependency
# jonas zip to be downloaded
# JOnAS will be used for testing the distribution
# groupID : jonas.4
jonas.4.url  = http://download.forge.objectweb.org/jonas/
jonas.4.file = jonas4.3.2-tomcat5.0.30.tgz
jonas.4.name = ObjectWeb JOnAS Tomcat v4.3.2
jonas.4.description = ObjectWeb JOnAS Tomcat v4.3.2
#######################################################################################

#######################################################################################
# OAGIS Dependency
# oagis_release zip to be downloaded (CANNOT BE DOWNLOADED AUTOMATICALLY)
# oagis_release will be used for testing the distribution
# groupID : oagis.release
oagis.release.url  = http://www.openapplications.org/downloads/oagis/rls80/
oagis.release.file = oagis_release_8.0_GA-withSP3.zip
oagis.release.autodownload=true
oagis.release.name = OAGIS Release v8.0 SP3
oagis.release.description = OAGIS Release v8.0 SP3
#######################################################################################

#######################################################################################
# OAGIS WSDL
# oagis_wsdl_8.0.zip to be downloaded (CANNOT BE DOWNLOADED AUTOMATICALLY)
# oagis_wdl will be used for testing the distribution
# groupID : oagis.wsdl
oagis.wsdl.url  = http://www.openapplications.org/downloads/oagis/rls80
oagis.wsdl.file = WSDL_1.1_for%20OAGIS_8.0.zip
oagis.wsdl.autodownload=true
oagis.wsdl.name = OAGIS WSDL v8.0 SP3
oagis.wsdl.description = OAGIS WSDL v8.0 SP3
#######################################################################################

#######################################################################################
# Apache Derby
# Derby zip to be downloaded
# Derby will be used for performance testing
# groupID : derby
derby.url = http://cvs.apache.org/dist/incubator/derby/10.0.2.1
derby.file = incubating-derby-10.0.2.1-bin.zip
derby.name = Apache Derby 10.0.2.1
derby.description = Apache Derby 10.0.2.1
#######################################################################################

#URL to Web Tools downloads
# non-mirrored site: webtoolsDownloadURL=http://download.eclipse.org/webtools/downloads/drops
# use mirrored site as follows:
webtoolsDownloadURL=http://www.eclipse.org/downloads/download.php?file=/webtools/downloads/drops

#URL to Internal Reference Tool
internalRefToolURL=http://dev.eclipse.org/viewcvs/index.cgi/~checkout~/jdt-core-home/tools/internal/internal-200302241157.zip
internalRefToolFile=internal-200302241157.zip
