<?xml version="1.0" encoding="UTF-8"?>

<!--
 * 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.
-->

<ui:composition template="/main.xhtml"
                xmlns="http://www.w3.org/1999/xhtml"
                xmlns:f="http://java.sun.com/jsf/core"
                xmlns:tc="http://myfaces.apache.org/tobago/component"
                xmlns:ui="http://java.sun.com/jsf/facelets">

  <tc:section id="download" label="Download Tobago source- and binary packages">

    <p>
      Most commen Tobago will be used in a Maven project, so an explicit download is not needed.
      Nevertheless here are the artifacts to download.
    </p>

    <p>
      Use the links below to download a distribution of MyFaces Tobago from
      one of our mirrors. It is good practice to verify the integrity of the
      distribution files.
    </p>

    <p>
      You will be prompted for a mirror - if the file is not found on yours, please be patient, as it may take 24
      hours to reach all mirrors.
    </p>

    <p>
      Apache MyFaces Tobago is distributed as a <i>zip</i> archive and
      as a <i>tar.gz</i> archive. The content is the same. Please note
      that the <i>tar.gz</i> archives contain file names longer than 100 characters and have been
      created using GNU tar extensions. Thus they must be untarred with a GNU compatible
      version of tar.
    </p>

    <tc:selectBooleanCheckbox value="#{apiController.onlyCurrent}" label="Show current only">
      <f:ajax render="download" listener="#{apiController.init}"/>
    </tc:selectBooleanCheckbox>

    <ui:repeat value="#{apiController.releases}" var="release">

      <tc:section label="MyFaces Tobago #{release.version} Distribution">

        <tc:panel rendered="#{release.jira ne null}">
          Release notes can be found in
          <tc:link label="Jira" image="fa-external-link"
                   link="https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310273&amp;version=#{release.jira}"/>.
        </tc:panel>

        <table class="table">
          <tbody>
          <tr>
            <th>#{release.version}</th>
            <th>Type</th>
            <th>Mirrors</th>
            <th>Checksum</th>
            <th>Signature</th>
          </tr>
          <tr>
            <td>MyFaces Tobago</td>
            <td>tar.gz</td>
            <td><tc:link
                link="http://www.apache.org/dyn/closer.lua/myfaces/binaries/myfaces-tobago-#{release.version}-dist.tar.gz"
                label="myfaces-tobago-#{release.version}-dist.tar.gz" image="fa-external-link"/></td>
            <td><tc:link
                link="https://www.apache.org/dist/myfaces/binaries/myfaces-tobago-#{release.version}-dist.tar.gz.sha256"
                label="myfaces-tobago-#{release.version}-dist.tar.gz.sha256" image="fa-external-link"/></td>
            <td><tc:link
                link="https://www.apache.org/dist/myfaces/binaries/myfaces-tobago-#{release.version}-dist.tar.gz.asc"
                label="myfaces-tobago-#{release.version}-dist.tar.gz.asc" image="fa-external-link"/></td>
          </tr>
          <tr>
            <td>MyFaces Tobago</td>
            <td>zip</td>
            <td><tc:link
                link="http://www.apache.org/dyn/closer.lua/myfaces/binaries/myfaces-tobago-#{release.version}-dist.zip"
                label="myfaces-tobago-#{release.version}-dist.zip" image="fa-external-link"/></td>
            <td><tc:link
                link="https://www.apache.org/dist/myfaces/binaries/myfaces-tobago-#{release.version}-dist.zip.sha256"
                label="myfaces-tobago-#{release.version}-dist.zip.sha256" image="fa-external-link"/></td>
            <td><tc:link
                link="https://www.apache.org/dist/myfaces/binaries/myfaces-tobago-#{release.version}-dist.zip.asc"
                label="myfaces-tobago-#{release.version}-dist.zip.asc" image="fa-external-link"/></td>
          </tr>
          <tr>
            <td>MyFaces Tobago Source</td>
            <td>zip</td>
            <td><tc:link
                link="http://www.apache.org/dyn/closer.lua/myfaces/binaries/myfaces-tobago-#{release.version}-source-release.zip"
                label="myfaces-tobago-#{release.version}-source-release.zip" image="fa-external-link"/></td>
            <td><tc:link
                link="https://www.apache.org/source-release/myfaces/binaries/myfaces-tobago-#{release.version}-source-release.zip.sha256"
                label="myfaces-tobago-#{release.version}-source-release.zip.sha256" image="fa-external-link"/></td>
            <td><tc:link
                link="https://www.apache.org/source-release/myfaces/binaries/myfaces-tobago-#{release.version}-source-release.zip.asc"
                label="myfaces-tobago-#{release.version}-source-release.zip.asc" image="fa-external-link"/></td>
          </tr>
          <tr>
            <td>MyFaces Tobago Example</td>
            <td>tar.gz</td>
            <td><tc:link
                link="http://www.apache.org/dyn/closer.lua/myfaces/binaries/myfaces-tobago-#{release.version}-example.tar.gz"
                label="myfaces-tobago-#{release.version}-example.tar.gz" image="fa-external-link"/></td>
            <td><tc:link
                link="https://www.apache.org/example/myfaces/binaries/myfaces-tobago-#{release.version}-example.tar.gz.sha256"
                label="myfaces-tobago-#{release.version}-example.tar.gz.sha256" image="fa-external-link"/></td>
            <td><tc:link
                link="https://www.apache.org/example/myfaces/binaries/myfaces-tobago-#{release.version}-example.tar.gz.asc"
                label="myfaces-tobago-#{release.version}-example.tar.gz.asc" image="fa-external-link"/></td>
          </tr>
          <tr>
            <td>MyFaces Tobago Example</td>
            <td>zip</td>
            <td><tc:link
                link="http://www.apache.org/dyn/closer.lua/myfaces/binaries/myfaces-tobago-#{release.version}-example.zip"
                label="myfaces-tobago-#{release.version}-example.zip" image="fa-external-link"/></td>
            <td><tc:link
                link="https://www.apache.org/example/myfaces/binaries/myfaces-tobago-#{release.version}-example.zip.sha256"
                label="myfaces-tobago-#{release.version}-example.zip.sha256" image="fa-external-link"/></td>
            <td><tc:link
                link="https://www.apache.org/example/myfaces/binaries/myfaces-tobago-#{release.version}-example.zip.asc"
                label="myfaces-tobago-#{release.version}-example.zip.asc" image="fa-external-link"/></td>
          </tr>
          </tbody>
        </table>

      </tc:section>

    </ui:repeat>

    <tc:section label="Latest source code from GIT repository">
      <p>
        If you want to use the latest Apache MyFaces Tobago features, the source code is under
        version control with GIT. In the
        <tc:link label="Getting Started" link="http://tobago-vm.apache.org/getting-started.html"
                 image="fa-external-link"/>
        <!--XXX internal vs. external link -->
        section you will find information how to use the ASF MyFaces Tobago GIT Repository.
      </p>
    </tc:section>

    <tc:section label="Archive of old releases">
      <p>
        Older releases are available in the
        <tc:link label="archive" link="https://archive.apache.org/dist/myfaces/" image="fa-external-link"/>.
        Those releases are only provided as historical artifacts. We strongly
        recommend not to use those releases, but upgrade to the most recent release.
      </p>
    </tc:section>

    <tc:section label="Verifying checksums">
      <p>
        It is essential that you verify the integrity of the downloaded
        files using the SHA 256.
        This verification ensures the
        file was not corrupted during the download or mirroring process.
      </p>
      <p>
        To verify the hash signature on the files, you need to use a program
        called e. g. <i>sha</i>, <i>shasum</i>, which is
        included in many UNIX distributions and MacOS.
        It is also available for Windows.
      </p>
    </tc:section>

    <tc:section label="Verifying signatures">
      <p>
        PGP verification ensures that the file came from a certain person.
        We recommend you verify your downloads with PGP.
      </p>
      <p>
        First download the Apache MyFaces
        <tc:link label="KEYS" link="https://www.apache.org/dist/myfaces/KEYS" image="fa-external-link"/>
        as well as the <i>asc</i> signature file
        for the particular distribution. It is important that you get these files from the ultimate
        trusted source - the main ASF distribution site, rather than from a mirror.
      </p>
      <p>
        You need an installation of e. g. OpenPGP or GPG to check the files. More information you'll find on the
        <tc:link label="Apache verification" link="https://www.apache.org/info/verification.html#CheckingSignatures"
                 image="fa-external-link"/>
        site.
      </p>
      <p>
        Then verify the signatures for all downloaded files. With gpg for the dist.tar.gz it looks like
      </p>
      <pre><code class="language-bash">$ TOBAGO_VERSION=#{apiController.releases[0].version} 
$ gpg --import KEYS
$ gpg --verify myfaces-tobago-$TOBAGO_VERSION-dist.tar.gz.asc myfaces-tobago-$TOBAGO_VERSION-dist.tar.gz
  </code></pre>
    </tc:section>

  </tc:section>

</ui:composition>
