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

title:    Java Driver
summary:  Java Driver for Apache Cassandra®
homepage: http://docs.datastax.com/en/developer/java-driver
theme: datastax
sections:
  - title:     Manual
    prefix:    /manual
    sources:
      - type:  markdown
        files: 'manual/**/*.md'
  - title:     Reference configuration
    prefix:    /manual/core/configuration/reference
    sources:
      - type: rst
        files: 'manual/core/configuration/reference/*.rst'
  - title:     Changelog
    prefix:    /changelog
    sources:
      - type:  markdown
        files: 'changelog/**/*.md'
  - title:     Upgrading
    prefix:    /upgrade_guide
    sources:
      - type:  markdown
        files: 'upgrade_guide/**/*.md'
  - title:     FAQ
    prefix:    /faq
    sources:
      - type:  markdown
        files: 'faq/**/*.md'
links:
  - title: Code
    href:  https://github.com/datastax/java-driver/
  - title: Docs
    href:  http://docs.datastax.com/en/developer/java-driver
  - title: Issues
    href:  https://datastax-oss.atlassian.net/browse/JAVA/
  - title: Mailing List
    href:  https://groups.google.com/a/lists.datastax.com/forum/#!forum/java-driver-user
  - title: Releases
    href:  https://github.com/datastax/java-driver/releases
api_docs:
  4.0: http://docs.datastax.com/en/drivers/java/4.0
