<?xml version="1.0" encoding="ISO-8859-1"?>
<!--
  ~  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.
  -->

<project name="Apache Synapse">
    <skin>
        <groupId>org.apache.maven.skins</groupId>
        <artifactId>maven-default-skin</artifactId>
        <version>1.0</version>
    </skin>
    <body>
        <menu name="Main Menu">
            <item name="Home" href="index.html"/>
            <item name="Download" href="download.html"/>
            <item name="History" href="history.html"/>
            <item name="License" href="http://www.apache.org/licenses/LICENSE-2.0"/>
            <item name="Thanks" href="http://www.apache.org/foundation/thanks.html"/>
            <item name="Sponsorship" href="http://www.apache.org/foundation/sponsorship.html"/>
            <item name="Security" href="http://www.apache.org/security/"/>
        </menu>
        <menu name="Documentation">
            <item name="Installation Guide" href="userguide/installation.html"/>
            <item name="Quick Start Guide" href="userguide/quick_start.html"/>
            <item name="Samples Setup Guide" href="userguide/samples/setup/index.html"/>
            <item name="Samples Catalog" href="userguide/samples.html"/>
            <item name="Configuration Language" href="userguide/config.html"/>
            <item name="Mediators Catalog" href="userguide/mediators.html"/>
            <item name="Transports Catalog" href="userguide/transports.html"/>
            <item name="Extending Synapse" href="userguide/extending.html"/>
            <item name="Upgrading" href="userguide/upgrading.html"/>
            <item name="Deployment" href="userguide/deployment.html"/>
            <item name="Javadocs" href="apidocs/"/>
            <item name="FAQ" href="userguide/faq.html"/>
        </menu>
        <menu name="Developer Resources">
            <item name="Developer Guide " href="dev/developer-guide.html"/>
            <item name="Development Best Practices" href="dev/best-practices.html"/>
            <item name="Release Process" href="dev/release-process.html"/>
        </menu>
        <menu name="Project Details">
            <item name="Overview" href="project-info.html"/>
            <item name="Mailing Lists" href="mail-lists.html"/>
            <item name="Source Repository" href="source-repository.html"/>
            <item name="Issue Tracking" href="issue-tracking.html"/>
            <item name="Dependencies" href="dependencies.html"/>
            <item name="Project Team" href="team-list.html"/>
            <item name="Project Summary" href="project-summary.html"/>
        </menu>
        <menu name="Previous Releases">
            <item name="Version 1.2" href="1_2/docs_index.html"/>
            <item name="Version 1.1.1" href="1_1_1/content.html"/>
            <item name="Version 1.1" href="1_1/content.html"/>
            <item name="Version 1.0" href="1_0/content.html"/>
        </menu>
    </body>
</project>
