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™ 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> > <a href="http://avro.apache.org/">Avro</a> > <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">
+ <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">
+
+
+ </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™ 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">
+<dependency>
+ <groupId>org.apache.avro</groupId>
+ <artifactId>avro</artifactId>
+ <version>1.8.2
+</version>
+</dependency>
+<dependency>
+ <groupId>org.apache.avro</groupId>
+ <artifactId>avro-mapred</artifactId>
+ <version>1.8.2
+</version>
+</dependency>
+<dependency>
+ <groupId>org.apache.hadoop</groupId>
+ <artifactId>hadoop-core</artifactId>
+ <version>1.1.0</version>
+</dependency>
+ </pre>
+<p>
+ And the following plugin:
+ </p>
+<pre class="code">
+<plugin>
+ <groupId>org.apache.avro</groupId>
+ <artifactId>avro-maven-plugin</artifactId>
+ <version>1.8.2
+</version>
+ <executions>
+ <execution>
+ <phase>generate-sources</phase>
+ <goals>
+ <goal>schema</goal>
+ </goals>
+ <configuration>
+ <sourceDirectory>${project.basedir}/../</sourceDirectory>
+ <outputDirectory>${project.basedir}/target/generated-sources/</outputDirectory>
+ </configuration>
+ </execution>
+ </executions>
+</plugin>
+ </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™
+ 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<User, Pair<CharSequence, Integer>> {
+ @Override
+ public void map(User user, AvroCollector<Pair<CharSequence, Integer>> 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<CharSequence, Integer>(color, 1));
+ }
+ }
+
+ public static class ColorCountReducer extends AvroReducer<CharSequence, Integer,
+ Pair<CharSequence, Integer>> {
+ @Override
+ public void reduce(CharSequence key, Iterable<Integer> values,
+ AvroCollector<Pair<CharSequence, Integer>> collector,
+ Reporter reporter)
+ throws IOException {
+ int sum = 0;
+ for (Integer value : values) {
+ sum += value;
+ }
+ collector.collect(new Pair<CharSequence, Integer>(key, sum));
+ }
+ }
+
+ public int run(String[] args) throws Exception {
+ if (args.length != 2) {
+ System.err.println("Usage: MapredColorCount <input path> <output path>");
+ 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<AvroKey<User>, NullWritable, Text, IntWritable> {
+
+ @Override
+ public void map(AvroKey<User> 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<Text, IntWritable, AvroKey<CharSequence>, AvroValue<Integer>> {
+
+ @Override
+ public void reduce(Text key, Iterable<IntWritable> values,
+ Context context) throws IOException, InterruptedException {
+
+ int sum = 0;
+ for (IntWritable value : values) {
+ sum += value.get();
+ }
+ context.write(new AvroKey<CharSequence>(key.toString()), new AvroValue<Integer>(sum));
+ }
+ }
+
+ public int run(String[] args) throws Exception {
+ if (args.length != 2) {
+ System.err.println("Usage: MapReduceColorCount <input path> <output path>");
+ 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"><</span><em>favoriteColor</em><span class="codefrag">, 1></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<CharSequence, Integer>></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<User, Pair<CharSequence, Integer>> {
+ @Override
+ public void map(User user, AvroCollector<Pair<CharSequence, Integer>> 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<CharSequence, Integer>(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<AvroKey<User>, NullWritable, Text, IntWritable> {
+
+ @Override
+ public void map(AvroKey<User> 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<Integer></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<CharSequence, Integer,
+ Pair<CharSequence, Integer>> {
+ @Override
+ public void reduce(CharSequence key, Iterable<Integer> values,
+ AvroCollector<Pair<CharSequence, Integer>> collector,
+ Reporter reporter)
+ throws IOException {
+ int sum = 0;
+ for (Integer value : values) {
+ sum += value;
+ }
+ collector.collect(new Pair<CharSequence, Integer>(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<Text, IntWritable, AvroKey<CharSequence>, AvroValue<Integer>> {
+
+ @Override
+ public void reduce(Text key, Iterable<IntWritable> values,
+ Context context) throws IOException, InterruptedException {
+
+ int sum = 0;
+ for (IntWritable value : values) {
+ sum += value.get();
+ }
+ context.write(new AvroKey<CharSequence>(key.toString()), new AvroValue<Integer>(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"> </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 ©
+ 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™ 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> > <a href="http://avro.apache.org/">Avro</a> > <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">
+ <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">
+
+
+ </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™ 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"> </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 ©
+ 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=" > ";
+var DISPLAY_PREPREND=" > ";
+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 = " > ";
+/**
+ * String to include at the beginning of the trail
+ */
+var DISPLAY_PREPREND = " > ";
+/**
+ * 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