You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@avro.apache.org by su...@apache.org on 2017/05/31 15:48:44 UTC

svn commit: r1797063 [3/5] - in /avro/site/publish/docs/1.8.2: ./ examples/ examples/java-example/ examples/java-example/src/ examples/java-example/src/main/ examples/java-example/src/main/java/ examples/java-example/src/main/java/example/ examples/mr-...

Added: avro/site/publish/docs/1.8.2/mr.html
URL: http://svn.apache.org/viewvc/avro/site/publish/docs/1.8.2/mr.html?rev=1797063&view=auto
==============================================================================
--- avro/site/publish/docs/1.8.2/mr.html (added)
+++ avro/site/publish/docs/1.8.2/mr.html Wed May 31 15:48:43 2017
@@ -0,0 +1,795 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta content="Apache Forrest" name="Generator">
+<meta name="Forrest-version" content="0.9">
+<meta name="Forrest-skin-name" content="pelt">
+<title>Apache Avro&#153; 1.8.2
+ Hadoop MapReduce guide</title>
+<link type="text/css" href="skin/basic.css" rel="stylesheet">
+<link media="screen" type="text/css" href="skin/screen.css" rel="stylesheet">
+<link media="print" type="text/css" href="skin/print.css" rel="stylesheet">
+<link type="text/css" href="skin/profile.css" rel="stylesheet">
+<script src="skin/getBlank.js" language="javascript" type="text/javascript"></script><script src="skin/getMenu.js" language="javascript" type="text/javascript"></script><script src="skin/fontsize.js" language="javascript" type="text/javascript"></script>
+<link rel="shortcut icon" href="images/favicon.ico">
+</head>
+<body onload="init()">
+<script type="text/javascript">ndeSetTextSize();</script>
+<div id="top">
+<!--+
+    |breadtrail
+    +-->
+<div class="breadtrail">
+<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://avro.apache.org/">Avro</a> &gt; <a href="http://avro.apache.org/">Avro</a><script src="skin/breadcrumbs.js" language="JavaScript" type="text/javascript"></script>
+</div>
+<!--+
+    |header
+    +-->
+<div class="header">
+<!--+
+    |start group logo
+    +-->
+<div class="grouplogo">
+<a href="http://www.apache.org/"><img class="logoImage" alt="Apache" src="images/apache_feather.gif" title="The Apache Software Foundation"></a>
+</div>
+<!--+
+    |end group logo
+    +-->
+<!--+
+    |start Project Logo
+    +-->
+<div class="projectlogo">
+<a href="http://avro.apache.org/"><img class="logoImage" alt="Avro" src="images/avro-logo.png" title="Serialization System"></a>
+</div>
+<!--+
+    |end Project Logo
+    +-->
+<!--+
+    |start Search
+    +-->
+<div class="searchbox">
+<form action="http://www.google.com/search" method="get" class="roundtopsmall">
+<input value="avro.apache.org" name="sitesearch" type="hidden"><input onFocus="getBlank (this, 'Search the site with google');" size="25" name="q" id="query" type="text" value="Search the site with google">&nbsp; 
+                    <input name="Search" value="Search" type="submit">
+</form>
+</div>
+<!--+
+    |end search
+    +-->
+<!--+
+    |start Tabs
+    +-->
+<ul id="tabs">
+<li>
+<a class="unselected" href="http://avro.apache.org/">Project</a>
+</li>
+<li>
+<a class="unselected" href="http://wiki.apache.org/hadoop/Avro/">Wiki</a>
+</li>
+<li class="current">
+<a class="selected" href="index.html">Avro 1.8.2  Documentation</a>
+</li>
+</ul>
+<!--+
+    |end Tabs
+    +-->
+</div>
+</div>
+<div id="main">
+<div id="publishedStrip">
+<!--+
+    |start Subtabs
+    +-->
+<div id="level2tabs"></div>
+<!--+
+    |end Endtabs
+    +-->
+<script type="text/javascript"><!--
+document.write("Last Published: " + document.lastModified);
+//  --></script>
+</div>
+<!--+
+    |breadtrail
+    +-->
+<div class="breadtrail">
+
+             &nbsp;
+           </div>
+<!--+
+    |start Menu, mainarea
+    +-->
+<!--+
+    |start Menu
+    +-->
+<div id="menu">
+<div onclick="SwitchMenu('menu_selected_1.1', 'skin/')" id="menu_selected_1.1Title" class="menutitle" style="background-image: url('skin/images/chapter_open.gif');">Documentation</div>
+<div id="menu_selected_1.1" class="selectedmenuitemgroup" style="display: block;">
+<div class="menuitem">
+<a href="index.html">Overview</a>
+</div>
+<div class="menuitem">
+<a href="gettingstartedjava.html">Getting started (Java)</a>
+</div>
+<div class="menuitem">
+<a href="gettingstartedpython.html">Getting started (Python)</a>
+</div>
+<div class="menuitem">
+<a href="spec.html">Specification</a>
+</div>
+<div class="menuitem">
+<a href="trevni/spec.html">Trevni</a>
+</div>
+<div class="menuitem">
+<a href="api/java/index.html">Java API</a>
+</div>
+<div class="menuitem">
+<a href="api/c/index.html">C API</a>
+</div>
+<div class="menuitem">
+<a href="api/cpp/html/index.html">C++ API</a>
+</div>
+<div class="menuitem">
+<a href="api/csharp/index.html">C# API</a>
+</div>
+<div class="menupage">
+<div class="menupagetitle">MapReduce guide</div>
+</div>
+<div class="menuitem">
+<a href="idl.html">IDL language</a>
+</div>
+<div class="menuitem">
+<a href="sasl.html">SASL profile</a>
+</div>
+<div class="menuitem">
+<a href="http://wiki.apache.org/hadoop/Avro/">Wiki</a>
+</div>
+<div class="menuitem">
+<a href="http://wiki.apache.org/hadoop/Avro/FAQ">FAQ</a>
+</div>
+</div>
+<div id="credit"></div>
+<div id="roundbottom">
+<img style="display: none" class="corner" height="15" width="15" alt="" src="skin/images/rc-b-l-15-1body-2menu-3menu.png"></div>
+<!--+
+  |alternative credits
+  +-->
+<div id="credit2"></div>
+</div>
+<!--+
+    |end Menu
+    +-->
+<!--+
+    |start content
+    +-->
+<div id="content">
+<div title="Portable Document Format" class="pdflink">
+<a class="dida" href="mr.pdf"><img alt="PDF -icon" src="skin/images/pdfdoc.gif" class="skin"><br>
+        PDF</a>
+</div>
+<h1>Apache Avro&#153; 1.8.2
+ Hadoop MapReduce guide</h1>
+<div id="front-matter">
+<div id="minitoc-area">
+<ul class="minitoc">
+<li>
+<a href="#Setup">Setup</a>
+</li>
+<li>
+<a href="#Example%3A+ColorCount">Example: ColorCount</a>
+<ul class="minitoc">
+<li>
+<a href="#Running+ColorCount">Running ColorCount</a>
+</li>
+</ul>
+</li>
+<li>
+<a href="#Mapper+-+org.apache.hadoop.mapred+API">Mapper - org.apache.hadoop.mapred API</a>
+</li>
+<li>
+<a href="#Mapper+-+org.apache.hadoop.mapreduce+API">Mapper - org.apache.hadoop.mapreduce API</a>
+</li>
+<li>
+<a href="#Reducer+-+org.apache.hadoop.mapred+API">Reducer - org.apache.hadoop.mapred API</a>
+</li>
+<li>
+<a href="#Reduce+-+org.apache.hadoop.mapreduce+API">Reduce - org.apache.hadoop.mapreduce API</a>
+</li>
+<li>
+<a href="#Learning+more">Learning more</a>
+</li>
+</ul>
+</div>
+</div>
+    
+<p>
+      Avro provides a convenient way to represent complex data structures within
+      a Hadoop MapReduce job.  Avro data can be used as both input to and output
+      from a MapReduce job, as well as the intermediate format.  The example in
+      this guide uses Avro data for all three, but it's possible to mix and
+      match; for instance, MapReduce can be used to aggregate a particular field
+      in an Avro record.
+    </p>
+    
+<p>
+      This guide assumes basic familiarity with both Hadoop MapReduce and Avro.
+      See the <a href="http://hadoop.apache.org/docs/current/">Hadoop
+      documentation</a> and the <a href="gettingstartedjava.html">Avro getting
+      started guide</a> for introductions to these projects.  This guide uses
+      the old MapReduce API (<span class="codefrag">org.apache.hadoop.mapred</span>) and the new
+      MapReduce API (<span class="codefrag">org.apache.hadoop.mapreduce</span>).
+    </p>
+    
+<a name="Setup"></a>
+<h2 class="h3">Setup</h2>
+<div class="section">
+<p>
+        The code from this guide is included in the Avro docs under
+        <em>examples/mr-example</em>.  The example is set up as a Maven project
+        that includes the necessary Avro and MapReduce dependencies and the Avro
+        Maven plugin for code generation, so no external jars are needed to run
+        the example.  In particular, the POM includes the following dependencies:
+      </p>
+<pre class="code">
+&lt;dependency&gt;
+  &lt;groupId&gt;org.apache.avro&lt;/groupId&gt;
+  &lt;artifactId&gt;avro&lt;/artifactId&gt;
+  &lt;version&gt;1.8.2
+&lt;/version&gt;
+&lt;/dependency&gt;
+&lt;dependency&gt;
+  &lt;groupId&gt;org.apache.avro&lt;/groupId&gt;
+  &lt;artifactId&gt;avro-mapred&lt;/artifactId&gt;
+  &lt;version&gt;1.8.2
+&lt;/version&gt;
+&lt;/dependency&gt;
+&lt;dependency&gt;
+  &lt;groupId&gt;org.apache.hadoop&lt;/groupId&gt;
+  &lt;artifactId&gt;hadoop-core&lt;/artifactId&gt;
+  &lt;version&gt;1.1.0&lt;/version&gt;
+&lt;/dependency&gt;
+      </pre>
+<p>
+        And the following plugin:
+      </p>
+<pre class="code">
+&lt;plugin&gt;
+  &lt;groupId&gt;org.apache.avro&lt;/groupId&gt;
+  &lt;artifactId&gt;avro-maven-plugin&lt;/artifactId&gt;
+  &lt;version&gt;1.8.2
+&lt;/version&gt;
+  &lt;executions&gt;
+    &lt;execution&gt;
+      &lt;phase&gt;generate-sources&lt;/phase&gt;
+      &lt;goals&gt;
+        &lt;goal&gt;schema&lt;/goal&gt;
+      &lt;/goals&gt;
+      &lt;configuration&gt;
+        &lt;sourceDirectory&gt;${project.basedir}/../&lt;/sourceDirectory&gt;
+        &lt;outputDirectory&gt;${project.basedir}/target/generated-sources/&lt;/outputDirectory&gt;
+      &lt;/configuration&gt;
+    &lt;/execution&gt;
+  &lt;/executions&gt;
+&lt;/plugin&gt;
+      </pre>
+<p>
+        If you do not configure the <em>sourceDirectory</em> and <em>outputDirectory</em>
+        properties, the defaults will be used. The <em>sourceDirectory</em> property
+        defaults to <em>src/main/avro</em>. The <em>outputDirectory</em> property
+        defaults to <em>target/generated-sources</em>. You can change the paths to
+        match your project layout.
+      </p>
+<p>
+        Alternatively, Avro jars can be downloaded directly from the <a href="http://avro.apache.org/releases.html">Apache Avro&#153;
+        Releases</a> page.  The relevant Avro jars for this guide are
+        <em>avro-1.8.2
+.jar</em> and
+        <em>avro-mapred-1.8.2
+.jar</em>, as well as
+        <em>avro-tools-1.8.2
+.jar</em> for code generation and viewing
+        Avro data files as JSON.  In addition, you will need to install Hadoop
+        in order to use MapReduce.
+      </p>
+</div>
+
+    
+<a name="Example%3A+ColorCount"></a>
+<h2 class="h3">Example: ColorCount</h2>
+<div class="section">
+<p>
+        Below is a simple example of a MapReduce that uses Avro. There is an example
+        for both the old (<em>org.apache.hadoop.mapred</em>) and new
+        (<em>org.apache.hadoop.mapreduce</em>) APIs under
+        <em>examples/mr-example/src/main/java/example/</em>. <em>MapredColorCount</em>
+        is the example for the older mapred API while <em>MapReduceColorCount</em> is
+        the example for the newer mapreduce API. Both examples are below, but
+        we will detail the mapred API in our subsequent examples.
+      </p>
+<p>MapredColorCount:</p>
+<pre class="code">
+package example;
+
+import java.io.IOException;
+
+import org.apache.avro.*;
+import org.apache.avro.Schema.Type;
+import org.apache.avro.mapred.*;
+import org.apache.hadoop.conf.*;
+import org.apache.hadoop.fs.Path;
+import org.apache.hadoop.mapred.*;
+import org.apache.hadoop.util.*;
+
+import example.avro.User;
+
+public class MapredColorCount extends Configured implements Tool {
+
+  public static class ColorCountMapper extends AvroMapper&lt;User, Pair&lt;CharSequence, Integer&gt;&gt; {
+    @Override
+    public void map(User user, AvroCollector&lt;Pair&lt;CharSequence, Integer&gt;&gt; collector, Reporter reporter)
+        throws IOException {
+      CharSequence color = user.getFavoriteColor();
+      // We need this check because the User.favorite_color field has type ["string", "null"]
+      if (color == null) {
+        color = "none";
+      }
+      collector.collect(new Pair&lt;CharSequence, Integer&gt;(color, 1));
+    }
+  }
+
+  public static class ColorCountReducer extends AvroReducer&lt;CharSequence, Integer,
+                                                            Pair&lt;CharSequence, Integer&gt;&gt; {
+    @Override
+    public void reduce(CharSequence key, Iterable&lt;Integer&gt; values,
+                       AvroCollector&lt;Pair&lt;CharSequence, Integer&gt;&gt; collector,
+                       Reporter reporter)
+        throws IOException {
+      int sum = 0;
+      for (Integer value : values) {
+        sum += value;
+      }
+      collector.collect(new Pair&lt;CharSequence, Integer&gt;(key, sum));
+    }
+  }
+
+  public int run(String[] args) throws Exception {
+    if (args.length != 2) {
+      System.err.println("Usage: MapredColorCount &lt;input path&gt; &lt;output path&gt;");
+      return -1;
+    }
+
+    JobConf conf = new JobConf(getConf(), MapredColorCount.class);
+    conf.setJobName("colorcount");
+
+    FileInputFormat.setInputPaths(conf, new Path(args[0]));
+    FileOutputFormat.setOutputPath(conf, new Path(args[1]));
+
+    AvroJob.setMapperClass(conf, ColorCountMapper.class);
+    AvroJob.setReducerClass(conf, ColorCountReducer.class);
+
+    // Note that AvroJob.setInputSchema and AvroJob.setOutputSchema set
+    // relevant config options such as input/output format, map output
+    // classes, and output key class.
+    AvroJob.setInputSchema(conf, User.getClassSchema());
+    AvroJob.setOutputSchema(conf, Pair.getPairSchema(Schema.create(Type.STRING),
+        Schema.create(Type.INT)));
+
+    JobClient.runJob(conf);
+    return 0;
+  }
+
+  public static void main(String[] args) throws Exception {
+    int res = ToolRunner.run(new Configuration(), new MapredColorCount(), args);
+    System.exit(res);
+  }
+}
+      </pre>
+<p>MapReduceColorCount:</p>
+<pre class="code">
+package example;
+
+import java.io.IOException;
+
+import org.apache.avro.Schema;
+import org.apache.avro.mapred.AvroKey;
+import org.apache.avro.mapred.AvroValue;
+import org.apache.avro.mapreduce.AvroJob;
+import org.apache.avro.mapreduce.AvroKeyInputFormat;
+import org.apache.avro.mapreduce.AvroKeyValueOutputFormat;
+import org.apache.hadoop.conf.Configured;
+import org.apache.hadoop.fs.Path;
+import org.apache.hadoop.io.IntWritable;
+import org.apache.hadoop.io.NullWritable;
+import org.apache.hadoop.io.Text;
+import org.apache.hadoop.mapreduce.Job;
+import org.apache.hadoop.mapreduce.Mapper;
+import org.apache.hadoop.mapreduce.Reducer;
+import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
+import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
+import org.apache.hadoop.util.Tool;
+import org.apache.hadoop.util.ToolRunner;
+
+import example.avro.User;
+
+public class MapReduceColorCount extends Configured implements Tool {
+
+  public static class ColorCountMapper extends
+      Mapper&lt;AvroKey&lt;User&gt;, NullWritable, Text, IntWritable&gt; {
+
+    @Override
+    public void map(AvroKey&lt;User&gt; key, NullWritable value, Context context)
+        throws IOException, InterruptedException {
+
+      CharSequence color = key.datum().getFavoriteColor();
+      if (color == null) {
+        color = "none";
+      }
+      context.write(new Text(color.toString()), new IntWritable(1));
+    }
+  }
+
+  public static class ColorCountReducer extends
+      Reducer&lt;Text, IntWritable, AvroKey&lt;CharSequence&gt;, AvroValue&lt;Integer&gt;&gt; {
+
+    @Override
+    public void reduce(Text key, Iterable&lt;IntWritable&gt; values,
+        Context context) throws IOException, InterruptedException {
+
+      int sum = 0;
+      for (IntWritable value : values) {
+        sum += value.get();
+      }
+      context.write(new AvroKey&lt;CharSequence&gt;(key.toString()), new AvroValue&lt;Integer&gt;(sum));
+    }
+  }
+
+  public int run(String[] args) throws Exception {
+    if (args.length != 2) {
+      System.err.println("Usage: MapReduceColorCount &lt;input path&gt; &lt;output path&gt;");
+      return -1;
+    }
+
+    Job job = new Job(getConf());
+    job.setJarByClass(MapReduceColorCount.class);
+    job.setJobName("Color Count");
+
+    FileInputFormat.setInputPaths(job, new Path(args[0]));
+    FileOutputFormat.setOutputPath(job, new Path(args[1]));
+
+    job.setInputFormatClass(AvroKeyInputFormat.class);
+    job.setMapperClass(ColorCountMapper.class);
+    AvroJob.setInputKeySchema(job, User.getClassSchema());
+    job.setMapOutputKeyClass(Text.class);
+    job.setMapOutputValueClass(IntWritable.class);
+
+    job.setOutputFormatClass(AvroKeyValueOutputFormat.class);
+    job.setReducerClass(ColorCountReducer.class);
+    AvroJob.setOutputKeySchema(job, Schema.create(Schema.Type.STRING));
+    AvroJob.setOutputValueSchema(job, Schema.create(Schema.Type.INT));
+
+    return (job.waitForCompletion(true) ? 0 : 1);
+  }
+
+  public static void main(String[] args) throws Exception {
+    int res = ToolRunner.run(new MapReduceColorCount(), args);
+    System.exit(res);
+  }
+}
+      </pre>
+<p>
+        ColorCount reads in data files containing <span class="codefrag">User</span> records,
+        defined in <em>examples/user.avsc</em>, and counts the number of
+        instances of each favorite color.  (This example draws inspiration from
+        the canonical WordCount MapReduce application.)  This example uses the
+        old MapReduce API.  See MapReduceAvroWordCount, found under
+        <em>doc/examples/mr-example/src/main/java/example/</em> to see the new MapReduce
+        API example.  The <span class="codefrag">User</span>
+        schema is defined as follows:
+      </p>
+<pre class="code">
+{"namespace": "example.avro",
+ "type": "record",
+ "name": "User",
+ "fields": [
+     {"name": "name", "type": "string"},
+     {"name": "favorite_number",  "type": ["int", "null"]},
+     {"name": "favorite_color", "type": ["string", "null"]}
+ ]
+}
+      </pre>
+<p>
+        This schema is compiled into the <span class="codefrag">User</span> class used by
+        ColorCount via the Avro Maven plugin (see
+        <em>examples/mr-example/pom.xml</em> for how this is set up).
+      </p>
+<p>
+        ColorCountMapper essentially takes a <span class="codefrag">User</span> as input and
+        extracts the <span class="codefrag">User</span>'s favorite color, emitting the key-value
+        pair <span class="codefrag">&lt;</span><em>favoriteColor</em><span class="codefrag">, 1&gt;</span>.
+        ColorCountReducer then adds up how many occurrences of a particular
+        favorite color were emitted, and outputs the result as a
+        <span class="codefrag">Pair</span> record.  These <span class="codefrag">Pair</span>s are serialized to an
+        Avro data file.
+      </p>
+<a name="Running+ColorCount"></a>
+<h3 class="h4">Running ColorCount</h3>
+<p>
+          The ColorCount application is provided as a Maven project in the Avro
+          docs under <em>examples/mr-example</em>.  To build the project,
+          including the code generation of the User schema, run:
+        </p>
+<pre class="code">
+mvn compile
+        </pre>
+<p>
+          Next, run GenerateData from examples/mr-examples to create an Avro data
+          file, <em>input/users.avro</em>, containing 20 <span class="codefrag">User</span>s with
+          favorite colors chosen randomly from a list:
+        </p>
+<pre class="code">
+mvn exec:java -q -Dexec.mainClass=example.GenerateData
+        </pre>
+<p>
+          Besides creating the data file, GenerateData prints the JSON
+          representations of the Users generated to stdout, for example:
+        </p>
+<pre class="code">
+{"name": "user", "favorite_number": null, "favorite_color": "red"}
+{"name": "user", "favorite_number": null, "favorite_color": "green"}
+{"name": "user", "favorite_number": null, "favorite_color": "purple"}
+{"name": "user", "favorite_number": null, "favorite_color": null}
+...
+        </pre>
+<p>
+          Now we're ready to run ColorCount.  We specify our freshly-generated
+          <em>input</em> folder as the input path and <em>output</em> as our
+          output folder (note that MapReduce will not start a job if the output
+          folder already exists):
+        </p>
+<pre class="code">
+mvn exec:java -q -Dexec.mainClass=example.MapredColorCount -Dexec.args="input output"
+        </pre>
+<p>
+          Once ColorCount completes, checking the contents of the new
+          <em>output</em> directory should yield the following:
+        </p>
+<pre class="code">
+$ ls output/
+part-00000.avro  _SUCCESS
+        </pre>
+<p>
+          You can check the contents of the generated Avro file using the avro-tools jar:
+        </p>
+<pre class="code">
+$ java -jar /path/to/avro-tools-1.8.2
+.jar tojson output/part-00000.avro
+{"value": 3, "key": "blue"}
+{"value": 7, "key": "green"}
+{"value": 1, "key": "none"}
+{"value": 2, "key": "orange"}
+{"value": 3, "key": "purple"}
+{"value": 2, "key": "red"}
+{"value": 2, "key": "yellow"}
+        </pre>
+</div>
+    
+<p>Now let's go over the ColorCount example in detail.</p>
+    
+<a name="Mapper+-+org.apache.hadoop.mapred+API"></a>
+<h2 class="h3">Mapper - org.apache.hadoop.mapred API</h2>
+<div class="section">
+<p>
+        The easiest way to use Avro data files as input to a MapReduce job is to
+        subclass <span class="codefrag">AvroMapper</span>.  An <span class="codefrag">AvroMapper</span> defines a
+        map function that takes an Avro datum as input and outputs a key/value
+        pair represented as a <span class="codefrag">Pair</span> record.  In the ColorCount
+        example, <span class="codefrag">ColorCountMapper</span> is an <span class="codefrag">AvroMapper</span>
+        that takes a <span class="codefrag">User</span> as input and outputs a
+        <span class="codefrag">Pair&lt;CharSequence, Integer&gt;&gt;</span>, where the
+        <span class="codefrag">CharSequence</span> key is the user's favorite color and the
+        <span class="codefrag">Integer</span> value is 1.
+      </p>
+<pre class="code">
+public static class ColorCountMapper extends AvroMapper&lt;User, Pair&lt;CharSequence, Integer&gt;&gt; {
+  @Override
+  public void map(User user, AvroCollector&lt;Pair&lt;CharSequence, Integer&gt;&gt; collector, Reporter reporter)
+      throws IOException {
+    CharSequence color = user.getFavoriteColor();
+    // We need this check because the User.favorite_color field has type ["string", "null"]
+    if (color == null) {
+      color = "none";
+    }
+    collector.collect(new Pair&lt;CharSequence, Integer&gt;(color, 1));
+  }
+}
+      </pre>
+<p>
+        In order to use our <span class="codefrag">AvroMapper</span>, we must call
+        <span class="codefrag">AvroJob.setMapperClass</span> and
+        <span class="codefrag">AvroJob.setInputSchema</span>.
+      </p>
+<pre class="code">
+AvroJob.setMapperClass(conf, ColorCountMapper.class);
+AvroJob.setInputSchema(conf, User.getClassSchema());
+      </pre>
+<p>
+        Note that <span class="codefrag">AvroMapper</span> does not implement the
+        <span class="codefrag">Mapper</span> interface.  Under the hood, the specified Avro data
+        files are deserialized into <span class="codefrag">AvroWrapper</span>s containing the
+        actual data, which are processed by a <span class="codefrag">Mapper</span> that calls the
+        configured <span class="codefrag">AvroMapper</span>'s map function.
+        <span class="codefrag">AvroJob.setInputSchema</span> sets up the relevant configuration
+        parameters needed to make this happen, thus you should not need to call
+        <span class="codefrag">JobConf.setMapperClass</span>,
+        <span class="codefrag">JobConf.setInputFormat</span>,
+        <span class="codefrag">JobConf.setMapOutputKeyClass</span>,
+        <span class="codefrag">JobConf.setMapOutputValueClass</span>, or
+        <span class="codefrag">JobConf.setOutputKeyComparatorClass</span>.
+      </p>
+</div>
+    
+<a name="Mapper+-+org.apache.hadoop.mapreduce+API"></a>
+<h2 class="h3">Mapper - org.apache.hadoop.mapreduce API</h2>
+<div class="section">
+<p>
+        This document will not go into all the differences between the mapred and mapreduce APIs,
+        however will describe the main differences. As you can see, ColorCountMapper is now a
+        subclass of the Hadoop Mapper class and is passed an AvroKey as it's key.
+
+        Additionally, the AvroJob method calls were slightly changed.
+      </p>
+<pre class="code">
+  public static class ColorCountMapper extends
+      Mapper&lt;AvroKey&lt;User&gt;, NullWritable, Text, IntWritable&gt; {
+
+    @Override
+    public void map(AvroKey&lt;User&gt; key, NullWritable value, Context context)
+        throws IOException, InterruptedException {
+
+      CharSequence color = key.datum().getFavoriteColor();
+      if (color == null) {
+        color = "none";
+      }
+      context.write(new Text(color.toString()), new IntWritable(1));
+    }
+  }
+      </pre>
+</div>
+    
+<a name="Reducer+-+org.apache.hadoop.mapred+API"></a>
+<h2 class="h3">Reducer - org.apache.hadoop.mapred API</h2>
+<div class="section">
+<p>
+        Analogously to <span class="codefrag">AvroMapper</span>, an <span class="codefrag">AvroReducer</span>
+        defines a reducer function that takes the key/value types output by an
+        <span class="codefrag">AvroMapper</span> (or any mapper that outputs <span class="codefrag">Pair</span>s)
+        and outputs a key/value pair represented a <span class="codefrag">Pair</span> record.  In
+        the ColorCount example, <span class="codefrag">ColorCountReducer</span> is an
+        <span class="codefrag">AvroReducer</span> that takes the <span class="codefrag">CharSequence</span> key
+        representing a favorite color and the <span class="codefrag">Iterable&lt;Integer&gt;</span>
+        representing the counts for that color (they should all be 1 in this
+        example) and adds up the counts.
+      </p>
+<pre class="code">
+public static class ColorCountReducer extends AvroReducer&lt;CharSequence, Integer,
+                                                          Pair&lt;CharSequence, Integer&gt;&gt; {
+  @Override
+  public void reduce(CharSequence key, Iterable&lt;Integer&gt; values,
+                     AvroCollector&lt;Pair&lt;CharSequence, Integer&gt;&gt; collector,
+                     Reporter reporter)
+      throws IOException {
+    int sum = 0;
+    for (Integer value : values) {
+      sum += value;
+    }
+    collector.collect(new Pair&lt;CharSequence, Integer&gt;(key, sum));
+  }
+}
+      </pre>
+<p>
+        In order to use our <span class="codefrag">AvroReducer</span>, we must call
+        <span class="codefrag">AvroJob.setReducerClass</span> and
+        <span class="codefrag">AvroJob.setOutputSchema</span>.
+      </p>
+<pre class="code">
+AvroJob.setReducerClass(conf, ColorCountReducer.class);
+AvroJob.setOutputSchema(conf, Pair.getPairSchema(Schema.create(Type.STRING),
+                                                 Schema.create(Type.INT)));
+      </pre>
+<p>
+        Note that <span class="codefrag">AvroReducer</span> does not implement the
+        <span class="codefrag">Reducer</span> interface.  The intermediate <span class="codefrag">Pair</span>s
+        output by the mapper are split into <span class="codefrag">AvroKey</span>s and
+        <span class="codefrag">AvroValue</span>s, which are processed by a <span class="codefrag">Reducer</span>
+        that calls the configured <span class="codefrag">AvroReducer</span>'s reduce function.
+        <span class="codefrag">AvroJob.setOutputSchema</span> sets up the relevant configuration
+        parameters needed to make this happen, thus you should not need to call
+        <span class="codefrag">JobConf.setReducerClass</span>,
+        <span class="codefrag">JobConf.setOutputFormat</span>,
+        <span class="codefrag">JobConf.setOutputKeyClass</span>,
+        <span class="codefrag">JobConf.setMapOutputKeyClass</span>,
+        <span class="codefrag">JobConf.setMapOutputValueClass</span>, or
+        <span class="codefrag">JobConf.setOutputKeyComparatorClass</span>.
+      </p>
+</div>
+    
+<a name="Reduce+-+org.apache.hadoop.mapreduce+API"></a>
+<h2 class="h3">Reduce - org.apache.hadoop.mapreduce API</h2>
+<div class="section">
+<p>
+        As before we not detail every difference between the APIs. As with the Mapper
+        change ColorCountReducer is now a subclass of Reducer and AvroKey and AvroValue
+        are emitted.
+
+        Additionally, the AvroJob method calls were slightly changed.
+      </p>
+<pre class="code">
+  public static class ColorCountReducer extends
+      Reducer&lt;Text, IntWritable, AvroKey&lt;CharSequence&gt;, AvroValue&lt;Integer&gt;&gt; {
+
+    @Override
+    public void reduce(Text key, Iterable&lt;IntWritable&gt; values,
+        Context context) throws IOException, InterruptedException {
+
+      int sum = 0;
+      for (IntWritable value : values) {
+        sum += value.get();
+      }
+      context.write(new AvroKey&lt;CharSequence&gt;(key.toString()), new AvroValue&lt;Integer&gt;(sum));
+    }
+  }
+      </pre>
+</div>
+    
+<a name="Learning+more"></a>
+<h2 class="h3">Learning more</h2>
+<div class="section">
+<p>
+        The mapred API allows users to mix Avro <span class="codefrag">AvroMapper</span>s and
+        <span class="codefrag">AvroReducer</span>s with non-Avro <span class="codefrag">Mapper</span>s and
+        <span class="codefrag">Reducer</span>s and the mapreduce API allows users input Avro
+        and output non-Avro or vice versa.
+      </p>
+<p>
+        The mapred package has API <a href="http://avro.apache.org/docs/current/api/java/org/apache/avro/mapred/package-summary.html">
+        <span class="codefrag">org.apache.avro.mapred</span> documentation</a> as does the <a href="http://avro.apache.org/docs/current/api/java/org/apache/avro/mapreduce/package-summary.html">
+        <span class="codefrag">org.apache.avro.mapreduce</span> package</a>.
+        MapReduce API (<span class="codefrag">org.apache.hadoop.mapreduce</span>). Similarily to the mapreduce package,
+        it's possible with the mapred API to implement your own <span class="codefrag">Mapper</span>s and
+        <span class="codefrag">Reducer</span>s directly using the public classes provided in
+        these libraries.  See the AvroWordCount application, found under
+        <em>examples/mr-example/src/main/java/example/AvroWordCount.java</em> in
+        the Avro documentation, for an example of implementing a
+        <span class="codefrag">Reducer</span> that outputs Avro data using the old MapReduce API.
+        See the MapReduceAvroWordCount application, found under
+        <em>examples/mr-example/src/main/java/example/MapReduceAvroWordCount.java</em> in
+        the Avro documentation, for an example of implementing a
+        <span class="codefrag">Reducer</span> that outputs Avro data using the new MapReduce API.
+      </p>
+</div>
+  
+</div>
+<!--+
+    |end content
+    +-->
+<div class="clearboth">&nbsp;</div>
+</div>
+<div id="footer">
+<!--+
+    |start bottomstrip
+    +-->
+<div class="lastmodified">
+<script type="text/javascript"><!--
+document.write("Last Published: " + document.lastModified);
+//  --></script>
+</div>
+<div class="copyright">
+        Copyright &copy;
+         2012 <a href="http://www.apache.org/licenses/">The Apache Software Foundation.</a>
+</div>
+<!--+
+    |end bottomstrip
+    +-->
+</div>
+</body>
+</html>

Added: avro/site/publish/docs/1.8.2/mr.pdf
URL: http://svn.apache.org/viewvc/avro/site/publish/docs/1.8.2/mr.pdf?rev=1797063&view=auto
==============================================================================
Binary file - no diff available.

Propchange: avro/site/publish/docs/1.8.2/mr.pdf
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: avro/site/publish/docs/1.8.2/sasl.html
URL: http://svn.apache.org/viewvc/avro/site/publish/docs/1.8.2/sasl.html?rev=1797063&view=auto
==============================================================================
--- avro/site/publish/docs/1.8.2/sasl.html (added)
+++ avro/site/publish/docs/1.8.2/sasl.html Wed May 31 15:48:43 2017
@@ -0,0 +1,359 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta content="Apache Forrest" name="Generator">
+<meta name="Forrest-version" content="0.9">
+<meta name="Forrest-skin-name" content="pelt">
+<title>Apache Avro&#153; 1.8.2
+ SASL Profile</title>
+<link type="text/css" href="skin/basic.css" rel="stylesheet">
+<link media="screen" type="text/css" href="skin/screen.css" rel="stylesheet">
+<link media="print" type="text/css" href="skin/print.css" rel="stylesheet">
+<link type="text/css" href="skin/profile.css" rel="stylesheet">
+<script src="skin/getBlank.js" language="javascript" type="text/javascript"></script><script src="skin/getMenu.js" language="javascript" type="text/javascript"></script><script src="skin/fontsize.js" language="javascript" type="text/javascript"></script>
+<link rel="shortcut icon" href="images/favicon.ico">
+</head>
+<body onload="init()">
+<script type="text/javascript">ndeSetTextSize();</script>
+<div id="top">
+<!--+
+    |breadtrail
+    +-->
+<div class="breadtrail">
+<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://avro.apache.org/">Avro</a> &gt; <a href="http://avro.apache.org/">Avro</a><script src="skin/breadcrumbs.js" language="JavaScript" type="text/javascript"></script>
+</div>
+<!--+
+    |header
+    +-->
+<div class="header">
+<!--+
+    |start group logo
+    +-->
+<div class="grouplogo">
+<a href="http://www.apache.org/"><img class="logoImage" alt="Apache" src="images/apache_feather.gif" title="The Apache Software Foundation"></a>
+</div>
+<!--+
+    |end group logo
+    +-->
+<!--+
+    |start Project Logo
+    +-->
+<div class="projectlogo">
+<a href="http://avro.apache.org/"><img class="logoImage" alt="Avro" src="images/avro-logo.png" title="Serialization System"></a>
+</div>
+<!--+
+    |end Project Logo
+    +-->
+<!--+
+    |start Search
+    +-->
+<div class="searchbox">
+<form action="http://www.google.com/search" method="get" class="roundtopsmall">
+<input value="avro.apache.org" name="sitesearch" type="hidden"><input onFocus="getBlank (this, 'Search the site with google');" size="25" name="q" id="query" type="text" value="Search the site with google">&nbsp; 
+                    <input name="Search" value="Search" type="submit">
+</form>
+</div>
+<!--+
+    |end search
+    +-->
+<!--+
+    |start Tabs
+    +-->
+<ul id="tabs">
+<li>
+<a class="unselected" href="http://avro.apache.org/">Project</a>
+</li>
+<li>
+<a class="unselected" href="http://wiki.apache.org/hadoop/Avro/">Wiki</a>
+</li>
+<li class="current">
+<a class="selected" href="index.html">Avro 1.8.2  Documentation</a>
+</li>
+</ul>
+<!--+
+    |end Tabs
+    +-->
+</div>
+</div>
+<div id="main">
+<div id="publishedStrip">
+<!--+
+    |start Subtabs
+    +-->
+<div id="level2tabs"></div>
+<!--+
+    |end Endtabs
+    +-->
+<script type="text/javascript"><!--
+document.write("Last Published: " + document.lastModified);
+//  --></script>
+</div>
+<!--+
+    |breadtrail
+    +-->
+<div class="breadtrail">
+
+             &nbsp;
+           </div>
+<!--+
+    |start Menu, mainarea
+    +-->
+<!--+
+    |start Menu
+    +-->
+<div id="menu">
+<div onclick="SwitchMenu('menu_selected_1.1', 'skin/')" id="menu_selected_1.1Title" class="menutitle" style="background-image: url('skin/images/chapter_open.gif');">Documentation</div>
+<div id="menu_selected_1.1" class="selectedmenuitemgroup" style="display: block;">
+<div class="menuitem">
+<a href="index.html">Overview</a>
+</div>
+<div class="menuitem">
+<a href="gettingstartedjava.html">Getting started (Java)</a>
+</div>
+<div class="menuitem">
+<a href="gettingstartedpython.html">Getting started (Python)</a>
+</div>
+<div class="menuitem">
+<a href="spec.html">Specification</a>
+</div>
+<div class="menuitem">
+<a href="trevni/spec.html">Trevni</a>
+</div>
+<div class="menuitem">
+<a href="api/java/index.html">Java API</a>
+</div>
+<div class="menuitem">
+<a href="api/c/index.html">C API</a>
+</div>
+<div class="menuitem">
+<a href="api/cpp/html/index.html">C++ API</a>
+</div>
+<div class="menuitem">
+<a href="api/csharp/index.html">C# API</a>
+</div>
+<div class="menuitem">
+<a href="mr.html">MapReduce guide</a>
+</div>
+<div class="menuitem">
+<a href="idl.html">IDL language</a>
+</div>
+<div class="menupage">
+<div class="menupagetitle">SASL profile</div>
+</div>
+<div class="menuitem">
+<a href="http://wiki.apache.org/hadoop/Avro/">Wiki</a>
+</div>
+<div class="menuitem">
+<a href="http://wiki.apache.org/hadoop/Avro/FAQ">FAQ</a>
+</div>
+</div>
+<div id="credit"></div>
+<div id="roundbottom">
+<img style="display: none" class="corner" height="15" width="15" alt="" src="skin/images/rc-b-l-15-1body-2menu-3menu.png"></div>
+<!--+
+  |alternative credits
+  +-->
+<div id="credit2"></div>
+</div>
+<!--+
+    |end Menu
+    +-->
+<!--+
+    |start content
+    +-->
+<div id="content">
+<div title="Portable Document Format" class="pdflink">
+<a class="dida" href="sasl.pdf"><img alt="PDF -icon" src="skin/images/pdfdoc.gif" class="skin"><br>
+        PDF</a>
+</div>
+<h1>Apache Avro&#153; 1.8.2
+ SASL Profile</h1>
+<div id="front-matter">
+<div id="minitoc-area">
+<ul class="minitoc">
+<li>
+<a href="#intro">Introduction</a>
+</li>
+<li>
+<a href="#overview">Overview</a>
+</li>
+<li>
+<a href="#negotiation">Negotiation</a>
+<ul class="minitoc">
+<li>
+<a href="#commands">Commands</a>
+</li>
+<li>
+<a href="#process">Process</a>
+</li>
+</ul>
+</li>
+<li>
+<a href="#session">Session Data</a>
+</li>
+<li>
+<a href="#anonymous">Anonymous Mechanism</a>
+</li>
+</ul>
+</div>
+</div>
+    
+<a name="intro"></a>
+<h2 class="h3">Introduction</h2>
+<div class="section">
+<p>SASL (<a href="http://www.ietf.org/rfc/rfc2222.txt">RFC 2222</a>)
+      provides a framework for authentication and security of network
+      protocols.  Each protocol that uses SASL is meant to define a
+      SASL <em>profile</em>.  This document provides a SASL profile
+      for connection-based Avro RPC.</p>
+</div>
+
+    
+<a name="overview"></a>
+<h2 class="h3">Overview</h2>
+<div class="section">
+<p>SASL negotiation proceeds as a series of message interactions
+      over a connection between a client and server using a selected
+      SASL <em>mechanism</em>.  The client starts this negotiation by
+      sending its chosen mechanism name with an initial (possibly
+      empty) message.  Negotiation proceeds with the exchange of
+      messages until either side indicates success or failure.  The
+      content of the messages is mechanism-specific.  If the
+      negotiation succeeds, then the session can proceed over the
+      connection, otherwise it must be abandoned.</p>
+<p>Some mechanisms continue to process session data after
+      negotiation (e.g., encrypting it), while some specify that
+      further session data is transmitted unmodifed.</p>
+</div>
+
+    
+<a name="negotiation"></a>
+<h2 class="h3">Negotiation</h2>
+<div class="section">
+<a name="commands"></a>
+<h3 class="h4">Commands</h3>
+<p>Avro SASL negotiation uses four one-byte commands.</p>
+<ul>
+	  
+<li>
+<span class="codefrag">0: START</span>  Used in a client's initial message.</li>
+	  
+<li>
+<span class="codefrag">1: CONTINUE</span> Used while negotiation is ongoing.</li>
+	  
+<li>
+<span class="codefrag">2: FAIL</span> Terminates negotiation unsuccessfully.</li>
+	  
+<li>
+<span class="codefrag">3: COMPLETE</span> Terminates negotiation sucessfully.</li>
+	
+</ul>
+<p>The format of a START message is:</p>
+<pre class="code">| 0 | 4-byte mechanism name length | mechanism name | 4-byte payload length | payload data |</pre>
+<p>The format of a CONTINUE message is:</p>
+<pre class="code">| 1 | 4-byte payload length | payload data |</pre>
+<p>The format of a FAIL message is:</p>
+<pre class="code">| 2 | 4-byte message length | UTF-8 message |</pre>
+<p>The format of a COMPLETE message is:</p>
+<pre class="code">| 3 | 4-byte payload length | payload data |</pre>
+<a name="process"></a>
+<h3 class="h4">Process</h3>
+<p>Negotiation is initiated by a client sending a START command
+	  containing the client's chosen mechanism name and any
+	  mechanism-specific payload data.</p>
+<p>The server and client then interchange some number
+	  (possibly zero) of CONTINUE messages.  Each message contains
+	  payload data that is processed by the security mechanism to
+	  generate the next message.</p>
+<p>Once either the client or server send a FAIL message then
+	  negotiation has failed.  UTF-8-encoded text is included in
+	  the failure message.  Once either a FAIL message has been
+	  sent or recieved, or any other error occurs in the
+	  negotiation, further communication on this connection must
+	  cease.</p>
+<p>Once either the client or server send a COMPLETE message
+	  then negotiation has completed successfully.  Session data
+	  may now be transmitted over the connection until it is
+	  closed by either side.</p>
+</div>
+
+    
+<a name="session"></a>
+<h2 class="h3">Session Data</h2>
+<div class="section">
+<p>If no SASL QOP (quality of protection) is negotiated, then
+	all subsequent writes to/reads over this connection are
+	written/read unmodified.  In particular, messages use
+	Avro <a href="spec.html#Message+Framing">framing</a>, and are
+	of the form:</p>
+<pre class="code">| 4-byte frame length | frame data | ... | 4 zero bytes |</pre>
+<p>If a SASL QOP is negotiated, then it must be used by the
+	connection for all subsequent messages. This is done by
+	wrapping each non-empty frame written using the security
+	mechanism and unwrapping each non-empty frame read.  The
+	length written in each non-empty frame is the length of the
+	wrapped data. Complete frames must be passed to the security
+	mechanism for unwrapping.  Unwrapped data is then passed to
+	the application as the content of the frame.</p>
+<p>If at any point processing fails due to wrapping, unwrapping
+	or framing errors, then all further communication on this
+	connection must cease.</p>
+</div>
+
+    
+<a name="anonymous"></a>
+<h2 class="h3">Anonymous Mechanism</h2>
+<div class="section">
+<p>The SASL anonymous mechanism
+      (<a href="http://www.ietf.org/rfc/rfc2222.txt">RFC 2245</a>) is
+      quite simple to implement.  In particular, an initial anonymous
+      request may be prefixed by the following static sequence:</p>
+<pre class="code">| 0 | 0009 | ANONYMOUS | 0000 |</pre>
+<p>If a server uses the anonymous mechanism, it should check
+      that the mechanism name in the start message prefixing the first
+      request recieved is 'ANONYMOUS', then simply prefix its initial
+      response with a COMPLETE message of:</p>
+<pre class="code">| 3 | 0000 |</pre>
+<p>If an anonymous server recieves some other mechanism name,
+      then it may respond with a FAIL message as simple as:</p>
+<pre class="code">| 2 | 0000 |</pre>
+<p>Note that the anonymous mechanism need add no additional
+      round-trip messages between client and server.  The START
+      message can be piggybacked on the initial request and the
+      COMPLETE or FAIL message can be piggybacked on the initial
+      response.</p>
+</div>
+
+  
+<p>
+<em>Apache Avro, Avro, Apache, and the Avro and Apache logos are
+   trademarks of The Apache Software Foundation.</em>
+</p>
+
+  
+</div>
+<!--+
+    |end content
+    +-->
+<div class="clearboth">&nbsp;</div>
+</div>
+<div id="footer">
+<!--+
+    |start bottomstrip
+    +-->
+<div class="lastmodified">
+<script type="text/javascript"><!--
+document.write("Last Published: " + document.lastModified);
+//  --></script>
+</div>
+<div class="copyright">
+        Copyright &copy;
+         2012 <a href="http://www.apache.org/licenses/">The Apache Software Foundation.</a>
+</div>
+<!--+
+    |end bottomstrip
+    +-->
+</div>
+</body>
+</html>

Added: avro/site/publish/docs/1.8.2/sasl.pdf
URL: http://svn.apache.org/viewvc/avro/site/publish/docs/1.8.2/sasl.pdf?rev=1797063&view=auto
==============================================================================
Binary file - no diff available.

Propchange: avro/site/publish/docs/1.8.2/sasl.pdf
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: avro/site/publish/docs/1.8.2/skin/CommonMessages_de.xml
URL: http://svn.apache.org/viewvc/avro/site/publish/docs/1.8.2/skin/CommonMessages_de.xml?rev=1797063&view=auto
==============================================================================
--- avro/site/publish/docs/1.8.2/skin/CommonMessages_de.xml (added)
+++ avro/site/publish/docs/1.8.2/skin/CommonMessages_de.xml Wed May 31 15:48:43 2017
@@ -0,0 +1,23 @@
+<?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.
+-->
+<catalogue>
+  <message key="Font size:">Schriftgrösse:</message>
+  <message key="Last Published:">Zuletzt veröffentlicht:</message>
+  <message key="Search">Suche:</message>
+  <message key="Search the site with">Suche auf der Seite mit</message>
+</catalogue>

Added: avro/site/publish/docs/1.8.2/skin/CommonMessages_en_US.xml
URL: http://svn.apache.org/viewvc/avro/site/publish/docs/1.8.2/skin/CommonMessages_en_US.xml?rev=1797063&view=auto
==============================================================================
--- avro/site/publish/docs/1.8.2/skin/CommonMessages_en_US.xml (added)
+++ avro/site/publish/docs/1.8.2/skin/CommonMessages_en_US.xml Wed May 31 15:48:43 2017
@@ -0,0 +1,23 @@
+<?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.
+-->
+<catalogue>
+  <message  key="Font size:">Font size:</message>
+  <message key="Last Published:">Last Published:</message>
+  <message key="Search">Search</message>
+  <message key="Search the site with">Search site with</message>
+</catalogue>

Added: avro/site/publish/docs/1.8.2/skin/CommonMessages_es.xml
URL: http://svn.apache.org/viewvc/avro/site/publish/docs/1.8.2/skin/CommonMessages_es.xml?rev=1797063&view=auto
==============================================================================
--- avro/site/publish/docs/1.8.2/skin/CommonMessages_es.xml (added)
+++ avro/site/publish/docs/1.8.2/skin/CommonMessages_es.xml Wed May 31 15:48:43 2017
@@ -0,0 +1,23 @@
+<?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.
+-->
+<catalogue>
+  <message key="Font size:">Tamaño del texto:</message>
+  <message key="Last Published:">Fecha de publicación:</message>
+  <message key="Search">Buscar</message>
+  <message key="Search the site with">Buscar en</message>
+</catalogue>

Added: avro/site/publish/docs/1.8.2/skin/CommonMessages_fr.xml
URL: http://svn.apache.org/viewvc/avro/site/publish/docs/1.8.2/skin/CommonMessages_fr.xml?rev=1797063&view=auto
==============================================================================
--- avro/site/publish/docs/1.8.2/skin/CommonMessages_fr.xml (added)
+++ avro/site/publish/docs/1.8.2/skin/CommonMessages_fr.xml Wed May 31 15:48:43 2017
@@ -0,0 +1,23 @@
+<?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.
+-->
+<catalogue>
+  <message key="Font size:">Taille :</message>
+  <message key="Last Published:">Dernière publication :</message>
+  <message key="Search">Rechercher</message>
+  <message key="Search the site with">Rechercher sur le site avec</message>
+</catalogue>

Added: avro/site/publish/docs/1.8.2/skin/basic.css
URL: http://svn.apache.org/viewvc/avro/site/publish/docs/1.8.2/skin/basic.css?rev=1797063&view=auto
==============================================================================
--- avro/site/publish/docs/1.8.2/skin/basic.css (added)
+++ avro/site/publish/docs/1.8.2/skin/basic.css Wed May 31 15:48:43 2017
@@ -0,0 +1,167 @@
+/*
+* 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.
+*/
+/**
+ * General
+ */
+
+img { border: 0; }
+
+#content table {
+  border: 0;
+  width: 100%;
+}
+/*Hack to get IE to render the table at 100%*/
+* html #content table { margin-left: -3px; }
+
+#content th,
+#content td {
+  margin: 0;
+  padding: 0;
+  vertical-align: top;
+}
+
+.clearboth {
+  clear: both;
+}
+
+.note, .warning, .fixme {
+  clear:right;
+  border: solid black 1px;
+  margin: 1em 3em;
+}
+
+.note .label {
+  background: #369;
+  color: white;
+  font-weight: bold;
+  padding: 5px 10px;
+}
+.note .content {
+  background: #F0F0FF;
+  color: black;
+  line-height: 120%;
+  font-size: 90%;
+  padding: 5px 10px;
+}
+.warning .label {
+  background: #C00;
+  color: white;
+  font-weight: bold;
+  padding: 5px 10px;
+}
+.warning .content {
+  background: #FFF0F0;
+  color: black;
+  line-height: 120%;
+  font-size: 90%;
+  padding: 5px 10px;
+}
+.fixme .label {
+  background: #C6C600;
+  color: black;
+  font-weight: bold;
+  padding: 5px 10px;
+}
+.fixme .content {
+  padding: 5px 10px;
+}
+
+/**
+ * Typography
+ */
+
+body {
+  font-family: verdana, "Trebuchet MS", arial, helvetica, sans-serif;
+  font-size: 100%;
+}
+
+#content {
+  font-family: Georgia, Palatino, Times, serif;
+  font-size: 95%;
+}
+#tabs {
+  font-size: 70%;
+}
+#menu {
+  font-size: 80%;
+}
+#footer {
+  font-size: 70%;
+}
+
+h1, h2, h3, h4, h5, h6 {
+  font-family: "Trebuchet MS", verdana, arial, helvetica, sans-serif;
+  font-weight: bold;
+  margin-top: 1em;
+  margin-bottom: .5em;
+}
+
+h1 {
+    margin-top: 0;
+    margin-bottom: 1em;
+  font-size: 1.4em;
+}
+#content h1 {
+  font-size: 160%;
+  margin-bottom: .5em;
+}
+#menu h1 {
+  margin: 0;
+  padding: 10px;
+  background: #336699;
+  color: white;
+}
+h2 { font-size: 120%; }
+h3 { font-size: 100%; }
+h4 { font-size: 90%; }
+h5 { font-size: 80%; }
+h6 { font-size: 75%; }
+
+p {
+  line-height: 120%;
+  text-align: left;
+  margin-top: .5em;
+  margin-bottom: 1em;
+}
+
+#content li,
+#content th,
+#content td,
+#content li ul,
+#content li ol{
+  margin-top: .5em;
+  margin-bottom: .5em;
+}
+
+
+#content li li,
+#minitoc-area li{
+  margin-top: 0em;
+  margin-bottom: 0em;
+}
+
+#content .attribution {
+  text-align: right;
+  font-style: italic;
+  font-size: 85%;
+  margin-top: 1em;
+}
+
+.codefrag {
+  font-family: "Courier New", Courier, monospace;
+  font-size: 110%;
+}
\ No newline at end of file

Added: avro/site/publish/docs/1.8.2/skin/breadcrumbs-optimized.js
URL: http://svn.apache.org/viewvc/avro/site/publish/docs/1.8.2/skin/breadcrumbs-optimized.js?rev=1797063&view=auto
==============================================================================
--- avro/site/publish/docs/1.8.2/skin/breadcrumbs-optimized.js (added)
+++ avro/site/publish/docs/1.8.2/skin/breadcrumbs-optimized.js Wed May 31 15:48:43 2017
@@ -0,0 +1,90 @@
+/*
+* 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.
+*/
+var PREPREND_CRUMBS=new Array();
+var link1="@skinconfig.trail.link1.name@";
+var link2="@skinconfig.trail.link2.name@";
+var link3="@skinconfig.trail.link3.name@";
+if(!(link1=="")&&!link1.indexOf( "@" ) == 0){
+  PREPREND_CRUMBS.push( new Array( link1, @skinconfig.trail.link1.href@ ) ); }
+if(!(link2=="")&&!link2.indexOf( "@" ) == 0){
+  PREPREND_CRUMBS.push( new Array( link2, @skinconfig.trail.link2.href@ ) ); }
+if(!(link3=="")&&!link3.indexOf( "@" ) == 0){
+  PREPREND_CRUMBS.push( new Array( link3, @skinconfig.trail.link3.href@ ) ); }
+var DISPLAY_SEPARATOR=" &gt; ";
+var DISPLAY_PREPREND=" &gt; ";
+var DISPLAY_POSTPREND=":";
+var CSS_CLASS_CRUMB="breadcrumb";
+var CSS_CLASS_TRAIL="breadcrumbTrail";
+var CSS_CLASS_SEPARATOR="crumbSeparator";
+var FILE_EXTENSIONS=new Array( ".html", ".htm", ".jsp", ".php", ".php3", ".php4" );
+var PATH_SEPARATOR="/";
+
+function sc(s) {
+	var l=s.toLowerCase();
+	return l.substr(0,1).toUpperCase()+l.substr(1);
+}
+function getdirs() {
+	var t=document.location.pathname.split(PATH_SEPARATOR);
+	var lc=t[t.length-1];
+	for(var i=0;i < FILE_EXTENSIONS.length;i++)
+	{
+		if(lc.indexOf(FILE_EXTENSIONS[i]))
+			return t.slice(1,t.length-1); }
+	return t.slice(1,t.length);
+}
+function getcrumbs( d )
+{
+	var pre = "/";
+	var post = "/";
+	var c = new Array();
+	if( d != null )
+	{
+		for(var i=0;i < d.length;i++) {
+			pre+=d[i]+postfix;
+			c.push(new Array(d[i],pre)); }
+	}
+	if(PREPREND_CRUMBS.length > 0 )
+		return PREPREND_CRUMBS.concat( c );
+	return c;
+}
+function gettrail( c )
+{
+	var h=DISPLAY_PREPREND;
+	for(var i=0;i < c.length;i++)
+	{
+		h+='<a href="'+c[i][1]+'" >'+sc(c[i][0])+'</a>';
+		if(i!=(c.length-1))
+			h+=DISPLAY_SEPARATOR; }
+	return h+DISPLAY_POSTPREND;
+}
+
+function gettrailXHTML( c )
+{
+	var h='<span class="'+CSS_CLASS_TRAIL+'">'+DISPLAY_PREPREND;
+	for(var i=0;i < c.length;i++)
+	{
+		h+='<a href="'+c[i][1]+'" class="'+CSS_CLASS_CRUMB+'">'+sc(c[i][0])+'</a>';
+		if(i!=(c.length-1))
+			h+='<span class="'+CSS_CLASS_SEPARATOR+'">'+DISPLAY_SEPARATOR+'</span>'; }
+	return h+DISPLAY_POSTPREND+'</span>';
+}
+
+if(document.location.href.toLowerCase().indexOf("http://")==-1)
+	document.write(gettrail(getcrumbs()));
+else
+	document.write(gettrail(getcrumbs(getdirs())));
+

Added: avro/site/publish/docs/1.8.2/skin/breadcrumbs.js
URL: http://svn.apache.org/viewvc/avro/site/publish/docs/1.8.2/skin/breadcrumbs.js?rev=1797063&view=auto
==============================================================================
--- avro/site/publish/docs/1.8.2/skin/breadcrumbs.js (added)
+++ avro/site/publish/docs/1.8.2/skin/breadcrumbs.js Wed May 31 15:48:43 2017
@@ -0,0 +1,237 @@
+/*
+* 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 script, when included in a html file, builds a neat breadcrumb trail
+ * based on its url. That is, if it doesn't contains bugs (I'm relatively
+ * sure it does).
+ *
+ * Typical usage:
+ * <script type="text/javascript" language="JavaScript" src="breadcrumbs.js"></script>
+ */
+
+/**
+ * IE 5 on Mac doesn't know Array.push.
+ *
+ * Implement it - courtesy to fritz.
+ */
+var abc	= new Array();
+if (!abc.push) {
+  Array.prototype.push	= function(what){this[this.length]=what}
+}
+
+/* ========================================================================
+	CONSTANTS
+   ======================================================================== */
+
+/**
+ * Two-dimensional array containing extra crumbs to place at the front of
+ * the trail. Specify first the name of the crumb, then the URI that belongs
+ * to it. You'll need to modify this for every domain or subdomain where
+ * you use this script (you can leave it as an empty array if you wish)
+ */
+var PREPREND_CRUMBS = new Array();
+
+var link1 = "@skinconfig.trail.link1.name@";
+var link2 = "@skinconfig.trail.link2.name@";
+var link3 = "@skinconfig.trail.link3.name@";
+
+var href1 = "@skinconfig.trail.link1.href@";
+var href2 = "@skinconfig.trail.link2.href@";
+var href3 = "@skinconfig.trail.link3.href@";
+
+   if(!(link1=="")&&!link1.indexOf( "@" ) == 0){
+     PREPREND_CRUMBS.push( new Array( link1, href1 ) );
+   }
+   if(!(link2=="")&&!link2.indexOf( "@" ) == 0){
+     PREPREND_CRUMBS.push( new Array( link2, href2 ) );
+   }
+   if(!(link3=="")&&!link3.indexOf( "@" ) == 0){
+     PREPREND_CRUMBS.push( new Array( link3, href3 ) );
+   }
+
+/**
+ * String to include between crumbs:
+ */
+var DISPLAY_SEPARATOR = " &gt; ";
+/**
+ * String to include at the beginning of the trail
+ */
+var DISPLAY_PREPREND = " &gt; ";
+/**
+ * String to include at the end of the trail
+ */
+var DISPLAY_POSTPREND = "";
+
+/**
+ * CSS Class to use for a single crumb:
+ */
+var CSS_CLASS_CRUMB = "breadcrumb";
+
+/**
+ * CSS Class to use for the complete trail:
+ */
+var CSS_CLASS_TRAIL = "breadcrumbTrail";
+
+/**
+ * CSS Class to use for crumb separator:
+ */
+var CSS_CLASS_SEPARATOR = "crumbSeparator";
+
+/**
+ * Array of strings containing common file extensions. We use this to
+ * determine what part of the url to ignore (if it contains one of the
+ * string specified here, we ignore it).
+ */
+var FILE_EXTENSIONS = new Array( ".html", ".htm", ".jsp", ".php", ".php3", ".php4" );
+
+/**
+ * String that separates parts of the breadcrumb trail from each other.
+ * When this is no longer a slash, I'm sure I'll be old and grey.
+ */
+var PATH_SEPARATOR = "/";
+
+/* ========================================================================
+	UTILITY FUNCTIONS
+   ======================================================================== */
+/**
+ * Capitalize first letter of the provided string and return the modified
+ * string.
+ */
+function sentenceCase( string )
+{        return string;
+	//var lower = string.toLowerCase();
+	//return lower.substr(0,1).toUpperCase() + lower.substr(1);
+}
+
+/**
+ * Returns an array containing the names of all the directories in the
+ * current document URL
+ */
+function getDirectoriesInURL()
+{
+	var trail = document.location.pathname.split( PATH_SEPARATOR );
+
+	// check whether last section is a file or a directory
+	var lastcrumb = trail[trail.length-1];
+	for( var i = 0; i < FILE_EXTENSIONS.length; i++ )
+	{
+		if( lastcrumb.indexOf( FILE_EXTENSIONS[i] ) )
+		{
+			// it is, remove it and send results
+			return trail.slice( 1, trail.length-1 );
+		}
+	}
+
+	// it's not; send the trail unmodified
+	return trail.slice( 1, trail.length );
+}
+
+/* ========================================================================
+	BREADCRUMB FUNCTIONALITY
+   ======================================================================== */
+/**
+ * Return a two-dimensional array describing the breadcrumbs based on the
+ * array of directories passed in.
+ */
+function getBreadcrumbs( dirs )
+{
+	var prefix = "/";
+	var postfix = "/";
+
+	// the array we will return
+	var crumbs = new Array();
+
+	if( dirs != null )
+	{
+		for( var i = 0; i < dirs.length; i++ )
+		{
+			prefix += dirs[i] + postfix;
+			crumbs.push( new Array( dirs[i], prefix ) );
+		}
+	}
+
+	// preprend the PREPREND_CRUMBS
+	if(PREPREND_CRUMBS.length > 0 )
+	{
+		return PREPREND_CRUMBS.concat( crumbs );
+	}
+
+	return crumbs;
+}
+
+/**
+ * Return a string containing a simple text breadcrumb trail based on the
+ * two-dimensional array passed in.
+ */
+function getCrumbTrail( crumbs )
+{
+	var xhtml = DISPLAY_PREPREND;
+
+	for( var i = 0; i < crumbs.length; i++ )
+	{
+		xhtml += '<a href="' + crumbs[i][1] + '" >';
+		xhtml += unescape( crumbs[i][0] ) + '</a>';
+		if( i != (crumbs.length-1) )
+		{
+			xhtml += DISPLAY_SEPARATOR;
+		}
+	}
+
+	xhtml += DISPLAY_POSTPREND;
+
+	return xhtml;
+}
+
+/**
+ * Return a string containing an XHTML breadcrumb trail based on the
+ * two-dimensional array passed in.
+ */
+function getCrumbTrailXHTML( crumbs )
+{
+	var xhtml = '<span class="' + CSS_CLASS_TRAIL  + '">';
+	xhtml += DISPLAY_PREPREND;
+
+	for( var i = 0; i < crumbs.length; i++ )
+	{
+		xhtml += '<a href="' + crumbs[i][1] + '" class="' + CSS_CLASS_CRUMB + '">';
+		xhtml += unescape( crumbs[i][0] ) + '</a>';
+		if( i != (crumbs.length-1) )
+		{
+			xhtml += '<span class="' + CSS_CLASS_SEPARATOR + '">' + DISPLAY_SEPARATOR + '</span>';
+		}
+	}
+
+	xhtml += DISPLAY_POSTPREND;
+	xhtml += '</span>';
+
+	return xhtml;
+}
+
+/* ========================================================================
+	PRINT BREADCRUMB TRAIL
+   ======================================================================== */
+
+// check if we're local; if so, only print the PREPREND_CRUMBS
+if( document.location.href.toLowerCase().indexOf( "http://" ) == -1 )
+{
+	document.write( getCrumbTrail( getBreadcrumbs() ) );
+}
+else
+{
+	document.write( getCrumbTrail( getBreadcrumbs( getDirectoriesInURL() ) ) );
+}
+

Added: avro/site/publish/docs/1.8.2/skin/fontsize.js
URL: http://svn.apache.org/viewvc/avro/site/publish/docs/1.8.2/skin/fontsize.js?rev=1797063&view=auto
==============================================================================
--- avro/site/publish/docs/1.8.2/skin/fontsize.js (added)
+++ avro/site/publish/docs/1.8.2/skin/fontsize.js Wed May 31 15:48:43 2017
@@ -0,0 +1,166 @@
+/*
+* 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.
+*/
+function init() 
+{ //embedded in the doc
+  //ndeSetTextSize();
+}
+
+function checkBrowser(){
+  if (!document.getElementsByTagName){
+    return true;
+  }
+  else{
+    return false;
+  }
+}
+
+
+function ndeSetTextSize(chgsize,rs) 
+{
+  var startSize;
+  var newSize;
+
+  if (!checkBrowser)
+  {
+    return;
+  }
+
+  startSize = parseInt(ndeGetDocTextSize());
+
+  if (!startSize)
+  {
+    startSize = 16;
+  }
+
+  switch (chgsize)
+  {
+  case 'incr':
+    newSize = startSize + 2;
+    break;
+
+  case 'decr':
+    newSize = startSize - 2;
+    break;
+
+  case 'reset':
+    if (rs) {newSize = rs;} else {newSize = 16;}
+    break;
+
+  default:
+    try{
+      newSize = parseInt(ndeReadCookie("nde-textsize"));
+    }
+    catch(e){
+      alert(e);
+    }
+    
+    if (!newSize || newSize == 'NaN')
+    {
+      newSize = startSize;
+    }
+    break;
+
+  }
+
+  if (newSize < 10) 
+  {
+    newSize = 10;
+  }
+
+  newSize += 'px';
+
+  document.getElementsByTagName('html')[0].style.fontSize = newSize;
+  document.getElementsByTagName('body')[0].style.fontSize = newSize;
+
+  ndeCreateCookie("nde-textsize", newSize, 365);
+}
+
+function ndeGetDocTextSize() 
+{
+  if (!checkBrowser)
+  {
+    return 0;
+  }
+
+  var size = 0;
+  var body = document.getElementsByTagName('body')[0];
+
+  if (body.style && body.style.fontSize)
+  {
+    size = body.style.fontSize;
+  }
+  else if (typeof(getComputedStyle) != 'undefined')
+  {
+    size = getComputedStyle(body,'').getPropertyValue('font-size');
+  }
+  else if (body.currentStyle)
+  {
+   size = body.currentStyle.fontSize;
+  }
+
+  //fix IE bug
+  if( isNaN(size)){
+    if(size.substring(size.length-1)=="%"){
+      return
+    }
+
+  }
+
+  return size;
+
+}
+
+
+
+function ndeCreateCookie(name,value,days) 
+{
+  var cookie = name + "=" + value + ";";
+
+  if (days) 
+  {
+    var date = new Date();
+    date.setTime(date.getTime()+(days*24*60*60*1000));
+    cookie += " expires=" + date.toGMTString() + ";";
+  }
+  cookie += " path=/";
+
+  document.cookie = cookie;
+
+}
+
+function ndeReadCookie(name) 
+{
+  var nameEQ = name + "=";
+  var ca = document.cookie.split(';');
+
+ 
+  for(var i = 0; i < ca.length; i++) 
+  {
+    var c = ca[i];
+    while (c.charAt(0) == ' ') 
+    {
+      c = c.substring(1, c.length);
+    }
+
+    ctest = c.substring(0,name.length);
+ 
+    if(ctest == name){
+      return c.substring(nameEQ.length,c.length);
+    }
+  }
+  return null;
+}

Added: avro/site/publish/docs/1.8.2/skin/getBlank.js
URL: http://svn.apache.org/viewvc/avro/site/publish/docs/1.8.2/skin/getBlank.js?rev=1797063&view=auto
==============================================================================
--- avro/site/publish/docs/1.8.2/skin/getBlank.js (added)
+++ avro/site/publish/docs/1.8.2/skin/getBlank.js Wed May 31 15:48:43 2017
@@ -0,0 +1,40 @@
+/*
+* 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.
+*/
+/**
+ * getBlank script - when included in a html file and called from a form text field, will set the value of this field to ""
+ * if the text value is still the standard value.
+ * getPrompt script - when included in a html file and called from a form text field, will set the value of this field to the prompt
+ * if the text value is empty.
+ *
+ * Typical usage:
+ * <script type="text/javascript" language="JavaScript" src="getBlank.js"></script>
+ * <input type="text" id="query" value="Search the site:" onFocus="getBlank (this, 'Search the site:');" onBlur="getBlank (this, 'Search the site:');"/>
+ */
+<!--
+function getBlank (form, stdValue){
+if (form.value == stdValue){
+	form.value = '';
+	}
+return true;
+}
+function getPrompt (form, stdValue){
+if (form.value == ''){
+	form.value = stdValue;
+	}
+return true;
+}
+//-->

Added: avro/site/publish/docs/1.8.2/skin/getMenu.js
URL: http://svn.apache.org/viewvc/avro/site/publish/docs/1.8.2/skin/getMenu.js?rev=1797063&view=auto
==============================================================================
--- avro/site/publish/docs/1.8.2/skin/getMenu.js (added)
+++ avro/site/publish/docs/1.8.2/skin/getMenu.js Wed May 31 15:48:43 2017
@@ -0,0 +1,45 @@
+/*
+* 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 script, when included in a html file, can be used to make collapsible menus
+ *
+ * Typical usage:
+ * <script type="text/javascript" language="JavaScript" src="menu.js"></script>
+ */
+
+if (document.getElementById){ 
+  document.write('<style type="text/css">.menuitemgroup{display: none;}</style>')
+}
+
+
+function SwitchMenu(obj, thePath)
+{
+var open = 'url("'+thePath + 'images/chapter_open.gif")';
+var close = 'url("'+thePath + 'images/chapter.gif")';
+  if(document.getElementById)  {
+    var el = document.getElementById(obj);
+    var title = document.getElementById(obj+'Title');
+
+    if(el.style.display != "block"){ 
+      title.style.backgroundImage = open;
+      el.style.display = "block";
+    }else{
+      title.style.backgroundImage = close;
+      el.style.display = "none";
+    }
+  }// end -  if(document.getElementById) 
+}//end - function SwitchMenu(obj)

Added: avro/site/publish/docs/1.8.2/skin/images/README.txt
URL: http://svn.apache.org/viewvc/avro/site/publish/docs/1.8.2/skin/images/README.txt?rev=1797063&view=auto
==============================================================================
--- avro/site/publish/docs/1.8.2/skin/images/README.txt (added)
+++ avro/site/publish/docs/1.8.2/skin/images/README.txt Wed May 31 15:48:43 2017
@@ -0,0 +1 @@
+The images in this directory are used if the current skin lacks them.

Added: avro/site/publish/docs/1.8.2/skin/images/add.jpg
URL: http://svn.apache.org/viewvc/avro/site/publish/docs/1.8.2/skin/images/add.jpg?rev=1797063&view=auto
==============================================================================
Binary file - no diff available.

Propchange: avro/site/publish/docs/1.8.2/skin/images/add.jpg
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: avro/site/publish/docs/1.8.2/skin/images/apache-thanks.png
URL: http://svn.apache.org/viewvc/avro/site/publish/docs/1.8.2/skin/images/apache-thanks.png?rev=1797063&view=auto
==============================================================================
Binary file - no diff available.

Propchange: avro/site/publish/docs/1.8.2/skin/images/apache-thanks.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: avro/site/publish/docs/1.8.2/skin/images/built-with-cocoon.gif
URL: http://svn.apache.org/viewvc/avro/site/publish/docs/1.8.2/skin/images/built-with-cocoon.gif?rev=1797063&view=auto
==============================================================================
Binary file - no diff available.

Propchange: avro/site/publish/docs/1.8.2/skin/images/built-with-cocoon.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: avro/site/publish/docs/1.8.2/skin/images/built-with-forrest-button.png
URL: http://svn.apache.org/viewvc/avro/site/publish/docs/1.8.2/skin/images/built-with-forrest-button.png?rev=1797063&view=auto
==============================================================================
Binary file - no diff available.

Propchange: avro/site/publish/docs/1.8.2/skin/images/built-with-forrest-button.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: avro/site/publish/docs/1.8.2/skin/images/chapter.gif
URL: http://svn.apache.org/viewvc/avro/site/publish/docs/1.8.2/skin/images/chapter.gif?rev=1797063&view=auto
==============================================================================
Binary file - no diff available.

Propchange: avro/site/publish/docs/1.8.2/skin/images/chapter.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: avro/site/publish/docs/1.8.2/skin/images/chapter_open.gif
URL: http://svn.apache.org/viewvc/avro/site/publish/docs/1.8.2/skin/images/chapter_open.gif?rev=1797063&view=auto
==============================================================================
Binary file - no diff available.

Propchange: avro/site/publish/docs/1.8.2/skin/images/chapter_open.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: avro/site/publish/docs/1.8.2/skin/images/current.gif
URL: http://svn.apache.org/viewvc/avro/site/publish/docs/1.8.2/skin/images/current.gif?rev=1797063&view=auto
==============================================================================
Binary file - no diff available.

Propchange: avro/site/publish/docs/1.8.2/skin/images/current.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: avro/site/publish/docs/1.8.2/skin/images/error.png
URL: http://svn.apache.org/viewvc/avro/site/publish/docs/1.8.2/skin/images/error.png?rev=1797063&view=auto
==============================================================================
Binary file - no diff available.

Propchange: avro/site/publish/docs/1.8.2/skin/images/error.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: avro/site/publish/docs/1.8.2/skin/images/external-link.gif
URL: http://svn.apache.org/viewvc/avro/site/publish/docs/1.8.2/skin/images/external-link.gif?rev=1797063&view=auto
==============================================================================
Binary file - no diff available.

Propchange: avro/site/publish/docs/1.8.2/skin/images/external-link.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: avro/site/publish/docs/1.8.2/skin/images/fix.jpg
URL: http://svn.apache.org/viewvc/avro/site/publish/docs/1.8.2/skin/images/fix.jpg?rev=1797063&view=auto
==============================================================================
Binary file - no diff available.

Propchange: avro/site/publish/docs/1.8.2/skin/images/fix.jpg
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: avro/site/publish/docs/1.8.2/skin/images/forrest-credit-logo.png
URL: http://svn.apache.org/viewvc/avro/site/publish/docs/1.8.2/skin/images/forrest-credit-logo.png?rev=1797063&view=auto
==============================================================================
Binary file - no diff available.

Propchange: avro/site/publish/docs/1.8.2/skin/images/forrest-credit-logo.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: avro/site/publish/docs/1.8.2/skin/images/hack.jpg
URL: http://svn.apache.org/viewvc/avro/site/publish/docs/1.8.2/skin/images/hack.jpg?rev=1797063&view=auto
==============================================================================
Binary file - no diff available.

Propchange: avro/site/publish/docs/1.8.2/skin/images/hack.jpg
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: avro/site/publish/docs/1.8.2/skin/images/header_white_line.gif
URL: http://svn.apache.org/viewvc/avro/site/publish/docs/1.8.2/skin/images/header_white_line.gif?rev=1797063&view=auto
==============================================================================
Binary file - no diff available.

Propchange: avro/site/publish/docs/1.8.2/skin/images/header_white_line.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: avro/site/publish/docs/1.8.2/skin/images/info.png
URL: http://svn.apache.org/viewvc/avro/site/publish/docs/1.8.2/skin/images/info.png?rev=1797063&view=auto
==============================================================================
Binary file - no diff available.

Propchange: avro/site/publish/docs/1.8.2/skin/images/info.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: avro/site/publish/docs/1.8.2/skin/images/instruction_arrow.png
URL: http://svn.apache.org/viewvc/avro/site/publish/docs/1.8.2/skin/images/instruction_arrow.png?rev=1797063&view=auto
==============================================================================
Binary file - no diff available.

Propchange: avro/site/publish/docs/1.8.2/skin/images/instruction_arrow.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: avro/site/publish/docs/1.8.2/skin/images/label.gif
URL: http://svn.apache.org/viewvc/avro/site/publish/docs/1.8.2/skin/images/label.gif?rev=1797063&view=auto
==============================================================================
Binary file - no diff available.

Propchange: avro/site/publish/docs/1.8.2/skin/images/label.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: avro/site/publish/docs/1.8.2/skin/images/page.gif
URL: http://svn.apache.org/viewvc/avro/site/publish/docs/1.8.2/skin/images/page.gif?rev=1797063&view=auto
==============================================================================
Binary file - no diff available.

Propchange: avro/site/publish/docs/1.8.2/skin/images/page.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: avro/site/publish/docs/1.8.2/skin/images/pdfdoc.gif
URL: http://svn.apache.org/viewvc/avro/site/publish/docs/1.8.2/skin/images/pdfdoc.gif?rev=1797063&view=auto
==============================================================================
Binary file - no diff available.

Propchange: avro/site/publish/docs/1.8.2/skin/images/pdfdoc.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: avro/site/publish/docs/1.8.2/skin/images/poddoc.png
URL: http://svn.apache.org/viewvc/avro/site/publish/docs/1.8.2/skin/images/poddoc.png?rev=1797063&view=auto
==============================================================================
Binary file - no diff available.

Propchange: avro/site/publish/docs/1.8.2/skin/images/poddoc.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: avro/site/publish/docs/1.8.2/skin/images/printer.gif
URL: http://svn.apache.org/viewvc/avro/site/publish/docs/1.8.2/skin/images/printer.gif?rev=1797063&view=auto
==============================================================================
Binary file - no diff available.

Propchange: avro/site/publish/docs/1.8.2/skin/images/printer.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: avro/site/publish/docs/1.8.2/skin/images/rc-b-l-15-1body-2menu-3menu.png
URL: http://svn.apache.org/viewvc/avro/site/publish/docs/1.8.2/skin/images/rc-b-l-15-1body-2menu-3menu.png?rev=1797063&view=auto
==============================================================================
Binary file - no diff available.

Propchange: avro/site/publish/docs/1.8.2/skin/images/rc-b-l-15-1body-2menu-3menu.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: avro/site/publish/docs/1.8.2/skin/images/rc-b-r-15-1body-2menu-3menu.png
URL: http://svn.apache.org/viewvc/avro/site/publish/docs/1.8.2/skin/images/rc-b-r-15-1body-2menu-3menu.png?rev=1797063&view=auto
==============================================================================
Binary file - no diff available.

Propchange: avro/site/publish/docs/1.8.2/skin/images/rc-b-r-15-1body-2menu-3menu.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: avro/site/publish/docs/1.8.2/skin/images/rc-b-r-5-1header-2tab-selected-3tab-selected.png
URL: http://svn.apache.org/viewvc/avro/site/publish/docs/1.8.2/skin/images/rc-b-r-5-1header-2tab-selected-3tab-selected.png?rev=1797063&view=auto
==============================================================================
Binary file - no diff available.

Propchange: avro/site/publish/docs/1.8.2/skin/images/rc-b-r-5-1header-2tab-selected-3tab-selected.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: avro/site/publish/docs/1.8.2/skin/images/rc-t-l-5-1header-2searchbox-3searchbox.png
URL: http://svn.apache.org/viewvc/avro/site/publish/docs/1.8.2/skin/images/rc-t-l-5-1header-2searchbox-3searchbox.png?rev=1797063&view=auto
==============================================================================
Binary file - no diff available.

Propchange: avro/site/publish/docs/1.8.2/skin/images/rc-t-l-5-1header-2searchbox-3searchbox.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: avro/site/publish/docs/1.8.2/skin/images/rc-t-l-5-1header-2tab-selected-3tab-selected.png
URL: http://svn.apache.org/viewvc/avro/site/publish/docs/1.8.2/skin/images/rc-t-l-5-1header-2tab-selected-3tab-selected.png?rev=1797063&view=auto
==============================================================================
Binary file - no diff available.

Propchange: avro/site/publish/docs/1.8.2/skin/images/rc-t-l-5-1header-2tab-selected-3tab-selected.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: avro/site/publish/docs/1.8.2/skin/images/rc-t-l-5-1header-2tab-unselected-3tab-unselected.png
URL: http://svn.apache.org/viewvc/avro/site/publish/docs/1.8.2/skin/images/rc-t-l-5-1header-2tab-unselected-3tab-unselected.png?rev=1797063&view=auto
==============================================================================
Binary file - no diff available.

Propchange: avro/site/publish/docs/1.8.2/skin/images/rc-t-l-5-1header-2tab-unselected-3tab-unselected.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: avro/site/publish/docs/1.8.2/skin/images/rc-t-r-15-1body-2menu-3menu.png
URL: http://svn.apache.org/viewvc/avro/site/publish/docs/1.8.2/skin/images/rc-t-r-15-1body-2menu-3menu.png?rev=1797063&view=auto
==============================================================================
Binary file - no diff available.

Propchange: avro/site/publish/docs/1.8.2/skin/images/rc-t-r-15-1body-2menu-3menu.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: avro/site/publish/docs/1.8.2/skin/images/rc-t-r-5-1header-2searchbox-3searchbox.png
URL: http://svn.apache.org/viewvc/avro/site/publish/docs/1.8.2/skin/images/rc-t-r-5-1header-2searchbox-3searchbox.png?rev=1797063&view=auto
==============================================================================
Binary file - no diff available.

Propchange: avro/site/publish/docs/1.8.2/skin/images/rc-t-r-5-1header-2searchbox-3searchbox.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: avro/site/publish/docs/1.8.2/skin/images/rc-t-r-5-1header-2tab-selected-3tab-selected.png
URL: http://svn.apache.org/viewvc/avro/site/publish/docs/1.8.2/skin/images/rc-t-r-5-1header-2tab-selected-3tab-selected.png?rev=1797063&view=auto
==============================================================================
Binary file - no diff available.

Propchange: avro/site/publish/docs/1.8.2/skin/images/rc-t-r-5-1header-2tab-selected-3tab-selected.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: avro/site/publish/docs/1.8.2/skin/images/rc-t-r-5-1header-2tab-unselected-3tab-unselected.png
URL: http://svn.apache.org/viewvc/avro/site/publish/docs/1.8.2/skin/images/rc-t-r-5-1header-2tab-unselected-3tab-unselected.png?rev=1797063&view=auto
==============================================================================
Binary file - no diff available.

Propchange: avro/site/publish/docs/1.8.2/skin/images/rc-t-r-5-1header-2tab-unselected-3tab-unselected.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: avro/site/publish/docs/1.8.2/skin/images/remove.jpg
URL: http://svn.apache.org/viewvc/avro/site/publish/docs/1.8.2/skin/images/remove.jpg?rev=1797063&view=auto
==============================================================================
Binary file - no diff available.

Propchange: avro/site/publish/docs/1.8.2/skin/images/remove.jpg
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: avro/site/publish/docs/1.8.2/skin/images/rss.png
URL: http://svn.apache.org/viewvc/avro/site/publish/docs/1.8.2/skin/images/rss.png?rev=1797063&view=auto
==============================================================================
Binary file - no diff available.

Propchange: avro/site/publish/docs/1.8.2/skin/images/rss.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: avro/site/publish/docs/1.8.2/skin/images/spacer.gif
URL: http://svn.apache.org/viewvc/avro/site/publish/docs/1.8.2/skin/images/spacer.gif?rev=1797063&view=auto
==============================================================================
Binary file - no diff available.

Propchange: avro/site/publish/docs/1.8.2/skin/images/spacer.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream