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

#
# This file used in cayenne.rdf file generation,
# to form Documentation, and in Downloads sections (filtered by docs and downloadable flags respectively).
# Versions are rendered on Download page in the same order as in this file.
#
releases:
  - version: "4.2"
    latestRevision: "4.2.RC1"
    type: "Release Candidate"
    description: "Latest development release"
    date: "2022-06-10"
    docs: true
    downloadable: true
    jdk: 1.8
    newRepoLayout: true

  - version: "4.1"                            # major version
    latestRevision: "4.1.1"                   # exact latest version
    type: "Stable"                            # arbitrary type (Alpha for milestones, Beta, Stable and Legacy)
    description: "Latest stable release"      # some general comment
    date: "2021-12-24"                        # release date
    docs: true                                # this version is visible in Docs section
    downloadable: true                        # this version is visible in Download section, also see "customLink" attribute
    jdk: 1.8                                  # min supported Java version
    newRepoLayout: true

  - version: "4.0"
    latestRevision: "4.0.2"
    type: "Stable"
    description: "Previous stable release"
    date: "2019-10-14"
    docs: true
    downloadable: true
    jdk: 1.7
    newRepoLayout: true

  - version: "3.1"
    latestRevision: "3.1.3"
    description: "Aging stable release"
    type: "Aging"
    date: "2018-07-23"
    docs: true
    downloadable: true
    jdk: 1.5

  - version: "3.0"
    latestRevision: "3.0.2"
    description: "Legacy release"
    type: "Legacy"
    date: "2011-06-21"
    docs: true
    downloadable: false
    customLink: "cayenne-3.0.2" # custom download link, full link will be like:
                                # http://www.apache.org/dyn/closer.lua/cayenne/{{ customLink }}-src.tar.gz
    jdk: 1.5

  - version: "2.0"
    latestRevision: "2.0.4"
    description: "Legacy release"
    type: "Legacy"
    date: "2007-10-12"
    docs: true
    downloadable: false
    jdk: 1.5

  - version: "1.2"
    latestRevision: "1.2.4"
    description: "Legacy release"
    type: "Legacy"
    date: "2007-10-12"
    docs: true
    downloadable: false
    jdk: 1.5