<?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.
-->
<!--
Forrest site.xml

This file contains an outline of the site's information content.  It is used to:
- Generate the website menus (though these can be overridden - see docs)
- Provide semantic, location-independent aliases for internal 'site:' URIs, eg
<link href="site:changes"> links to changes.html (or ../changes.html if in
  subdir).
- Provide aliases for external URLs in the external-refs section.  Eg, <link
  href="ext:cocoon"> links to http://cocoon.apache.org/ 

See http://forrest.apache.org/docs/linking.html for more info
-->
<!-- The label attribute of the outer "site" element will only show
  in the linkmap (linkmap.html).
  Use elements project-name and group-name in skinconfig to change name of 
  your site or project that is usually shown at the top of page.
  No matter what you configure for the href attribute, Forrest will
  always use index.html when you request http://yourHost/
  See FAQ: "How can I use a start-up-page other than index.html?"
-->
<site label="Gora Core" href="" xmlns="http://apache.org/forrest/linkmap/1.0" tab=""
  xmlns:xi="http://www.w3.org/2001/XInclude">

  <docs label="Documentation">
    <overview   label="Overview"           href="index.html" />
    <quickstart label="Quick Start"        href="quickstart.html" />
    <tutorial   label="Gora Tutorial"      href="tutorial.html" />
    <gora-conf  label="Gora Configuration" href="gora-conf.html" />
    <gora-core  label="gora-core"          href="gora-core.html" />
    <gora-cassandra  label="gora-cassandra" href="gora-cassandra.html" />
    <gora-hbase label="gora-hbase"         href="gora-hbase.html" />
    <gora-sql   label="gora-sql"           href="gora-sql.html" />
    <api        label="API docs"           href="ext:api/index" />
  </docs>

  <external-refs>

    <wiki     href="https://cwiki.apache.org/confluence/display/GORA/Index" />
    <releases href="http://gora.apache.org/releases.html"/>
    <issues   href="http://issues.apache.org/jira/browse/GORA"/>
    <vcs      href="http://gora.apache.org/version_control.html" />
    <devmail  href="http://gora.apache.org/mailing_lists.html"/>

    <gora     href="http://gora.apache.org/"/>
    <avro     href="http://avro.apache.org/"/>
    <avrospec href="http://avro.apache.org/docs/current/spec.html"/>
    <hadoop   href="http://hadoop.apache.org/mapreduce/"/>
    <hdfs     href="http://hadoop.apache.org/hdfs/"/>
    <mapreduce      href="http://hadoop.apache.org/mapreduce/"/>
    <hbase    href="http://hbase.apache.org/"/>
    <hector   href="http://hector-client.org/" />
    <cassandra    href="http://cassandra.apache.org/"/>
    <nutch     href="http://nutch.apache.org/"/>
    <sponsors href="http://www.apache.org/foundation/thanks.html"/>

    <api href="api/">
      <index href="index.html" />
      <org href="org/">
        <apache href="apache/">
          <gora href="gora/">
            <mapreduce href="mapreduce/">
              <gorainputformat href="GoraInputFormat.html">
              </gorainputformat>
              <goraoutputformat href="GoraOutputFormat.html">
              </goraoutputformat>
              <goramapper href="GoraMapper.html">
                <initmapperjob href="#initMapperJob(org.apache.hadoop.mapreduce.Job,%20org.gora.store.DataStore,%20java.lang.Class,%20java.lang.Class,%20java.lang.Class,%20boolean)"/>
              </goramapper>
              <gorareducer href="GoraReducer.html">
                <initreducerjob href="#initReducerJob(org.apache.hadoop.mapreduce.Job,%20org.apache.gora.store.DataStore,%20java.lang.Class)"/>
              </gorareducer>
              <persistentserialization href="PersistentSerialization.html"/>
              <stringserialization href="StringSerialization.html"/>
            </mapreduce>
            <persistency href="persistency/">
              <persistent href="Persistent.html"/>
            </persistency>
            <query href="query/">
              <query href="Query.html">
                <execute href="#execute()"/>
              </query>
              <result href="Result.html">
                <getkey href="#getKey()"/>
                <get href="#get()"/>
                <next href="#next()"/>
              </result>
            </query>
            <store href="store/">
              <datastore href="DataStore.html">
                <close href="#close()"/>
                <delete href="#delete(K)"/>
                <deletebyquery href="#deleteByQuery(org.gora.query.Query)"/>
                <flush href="#flush()"/>
                <put href="#put(K,T)"/>
                <get href="#get(K)"/>
                <newquery href="#newQuery()"/>
              </datastore>
              <datastorefactory href="DataStoreFactory.html"/>
            </store>
          </gora>
        </apache>
      </org>
    </api>

  </external-refs>
</site>
