Author: dongjoon
Date: Wed Dec 30 21:09:32 2015
New Revision: 1722413

URL: http://svn.apache.org/viewvc?rev=1722413&view=rev
Log:
Fix typos

Modified:
    reef/site/dependency-convergence.html
    reef/site/dependency-info.html
    reef/site/dependency-management.html
    reef/site/distribution-management.html
    reef/site/downloads.html
    reef/site/faq.html
    reef/site/glossary.html
    reef/site/index.html
    reef/site/introduction.html
    reef/site/issue-tracking.html
    reef/site/license.html
    reef/site/mail-lists.html
    reef/site/mailing-list.html
    reef/site/plugin-management.html
    reef/site/plugins.html
    reef/site/privacy-policy.html
    reef/site/project-info.html
    reef/site/project-summary.html
    reef/site/source-repository.html
    reef/site/talks.html
    reef/site/tang.html
    reef/site/team.html
    reef/site/wake.html

Modified: reef/site/dependency-convergence.html
URL: 
http://svn.apache.org/viewvc/reef/site/dependency-convergence.html?rev=1722413&r1=1722412&r2=1722413&view=diff
==============================================================================
--- reef/site/dependency-convergence.html (original)
+++ reef/site/dependency-convergence.html Wed Dec 30 21:09:32 2015
@@ -1,13 +1,13 @@
 <!DOCTYPE html>
 <!--
- | Generated by Apache Maven Doxia at 2015-12-04 
+ | Generated by Apache Maven Doxia at 2015-12-30 
  | Rendered using Apache Maven Fluido Skin 1.4
 -->
 <html xmlns="http://www.w3.org/1999/xhtml"; xml:lang="en" lang="en">
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20151204" />
+    <meta name="Date-Revision-yyyymmdd" content="20151230" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache REEF - Dependency Convergence</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4.min.css" />

Modified: reef/site/dependency-info.html
URL: 
http://svn.apache.org/viewvc/reef/site/dependency-info.html?rev=1722413&r1=1722412&r2=1722413&view=diff
==============================================================================
--- reef/site/dependency-info.html (original)
+++ reef/site/dependency-info.html Wed Dec 30 21:09:32 2015
@@ -1,13 +1,13 @@
 <!DOCTYPE html>
 <!--
- | Generated by Apache Maven Doxia at 2015-12-04 
+ | Generated by Apache Maven Doxia at 2015-12-30 
  | Rendered using Apache Maven Fluido Skin 1.4
 -->
 <html xmlns="http://www.w3.org/1999/xhtml"; xml:lang="en" lang="en">
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20151204" />
+    <meta name="Date-Revision-yyyymmdd" content="20151230" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache REEF - Dependency Information</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4.min.css" />

Modified: reef/site/dependency-management.html
URL: 
http://svn.apache.org/viewvc/reef/site/dependency-management.html?rev=1722413&r1=1722412&r2=1722413&view=diff
==============================================================================
--- reef/site/dependency-management.html (original)
+++ reef/site/dependency-management.html Wed Dec 30 21:09:32 2015
@@ -1,13 +1,13 @@
 <!DOCTYPE html>
 <!--
- | Generated by Apache Maven Doxia at 2015-12-04 
+ | Generated by Apache Maven Doxia at 2015-12-30 
  | Rendered using Apache Maven Fluido Skin 1.4
 -->
 <html xmlns="http://www.w3.org/1999/xhtml"; xml:lang="en" lang="en">
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20151204" />
+    <meta name="Date-Revision-yyyymmdd" content="20151230" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache REEF - Project Dependency Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4.min.css" />

Modified: reef/site/distribution-management.html
URL: 
http://svn.apache.org/viewvc/reef/site/distribution-management.html?rev=1722413&r1=1722412&r2=1722413&view=diff
==============================================================================
--- reef/site/distribution-management.html (original)
+++ reef/site/distribution-management.html Wed Dec 30 21:09:32 2015
@@ -1,13 +1,13 @@
 <!DOCTYPE html>
 <!--
- | Generated by Apache Maven Doxia at 2015-12-04 
+ | Generated by Apache Maven Doxia at 2015-12-30 
  | Rendered using Apache Maven Fluido Skin 1.4
 -->
 <html xmlns="http://www.w3.org/1999/xhtml"; xml:lang="en" lang="en">
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20151204" />
+    <meta name="Date-Revision-yyyymmdd" content="20151230" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache REEF - Project Distribution Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4.min.css" />

Modified: reef/site/downloads.html
URL: 
http://svn.apache.org/viewvc/reef/site/downloads.html?rev=1722413&r1=1722412&r2=1722413&view=diff
==============================================================================
--- reef/site/downloads.html (original)
+++ reef/site/downloads.html Wed Dec 30 21:09:32 2015
@@ -1,13 +1,13 @@
 <!DOCTYPE html>
 <!--
- | Generated by Apache Maven Doxia at 2015-12-04 
+ | Generated by Apache Maven Doxia at 2015-12-30 
  | Rendered using Apache Maven Fluido Skin 1.4
 -->
 <html xmlns="http://www.w3.org/1999/xhtml"; xml:lang="en" lang="en">
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20151204" />
+    <meta name="Date-Revision-yyyymmdd" content="20151230" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache REEF - Downloads</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4.min.css" />

Modified: reef/site/faq.html
URL: 
http://svn.apache.org/viewvc/reef/site/faq.html?rev=1722413&r1=1722412&r2=1722413&view=diff
==============================================================================
--- reef/site/faq.html (original)
+++ reef/site/faq.html Wed Dec 30 21:09:32 2015
@@ -1,13 +1,13 @@
 <!DOCTYPE html>
 <!--
- | Generated by Apache Maven Doxia at 2015-12-04 
+ | Generated by Apache Maven Doxia at 2015-12-30 
  | Rendered using Apache Maven Fluido Skin 1.4
 -->
 <html xmlns="http://www.w3.org/1999/xhtml"; xml:lang="en" lang="en">
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20151204" />
+    <meta name="Date-Revision-yyyymmdd" content="20151230" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache REEF - FAQ</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4.min.css" />

Modified: reef/site/glossary.html
URL: 
http://svn.apache.org/viewvc/reef/site/glossary.html?rev=1722413&r1=1722412&r2=1722413&view=diff
==============================================================================
--- reef/site/glossary.html (original)
+++ reef/site/glossary.html Wed Dec 30 21:09:32 2015
@@ -1,13 +1,13 @@
 <!DOCTYPE html>
 <!--
- | Generated by Apache Maven Doxia at 2015-12-04 
+ | Generated by Apache Maven Doxia at 2015-12-30 
  | Rendered using Apache Maven Fluido Skin 1.4
 -->
 <html xmlns="http://www.w3.org/1999/xhtml"; xml:lang="en" lang="en">
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20151204" />
+    <meta name="Date-Revision-yyyymmdd" content="20151230" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache REEF - Glossary</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4.min.css" />
@@ -456,21 +456,21 @@ under the License. --><h1>Glossary</h1>
 <div class="section">
 <div class="section">
 <h3><a name="context"></a>Context<a name="Context"></a></h3>
-<p>Contexts are a way to structure the state and Configuration of an 
Evaluator. A Context exists on one and only one individual Evaluator. Each 
Evaluator has at least one Context, which we refer to as the <i>root</i> 
Context. This root context is special, as it is <i>required</i> on all 
Evaluators and because closing it is synonymous to releasing the Evaluator. In 
many simple REEF programs, this is the only Context used and it is therefore 
convenient to think of it as synonymous to &#x201c;the Evaluator&#x201d;: The 
Driver can submit Tasks to it, is notifified when they are done and can close 
the root context when it wants to dispose of the Evaluator. </p>
-<p>Contexts are formed by calls to <tt>submitContext()</tt> to the event types 
that allow this (<tt>AllocatedEvaluator</tt> and <tt>ActiveContext</tt>) 
Contexts are the main way for an Evaluator to be exposed and accessed. For 
instance, Tasks are submitted to an <tt>ActiveContext</tt> which represents the 
top Context on the Evaluator.</p>
-<p>Beyond this, a Driver can submit a Context to the root, or in fact any, 
Context, as long as the resulting structure is that of a stack: The root 
Context forms the bottom of the stack, the top-most Context is called 
<i>active</i>, hence the <tt>ActiveContext</tt> event. The two can be one and 
the same, and often are: The root Context is the subject of the first 
<tt>ActiveContext</tt> event on an Evaluator.</p>
-<p>Nomenclature: When Context B is submitted to an already existing Context A, 
we say that Context A is the parent Context of Context B. Also, Context B is 
the child of Context A.</p>
+<p>Contexts are a way to structure the state and Configuration of an 
Evaluator. A Context exists on one and only one individual Evaluator. Each 
Evaluator has at least one Context, which we refer to as the <i>root</i> 
Context. This root context is special, as it is <i>required</i> on all 
Evaluators and because closing it is synonymous to releasing the Evaluator. In 
many simple REEF programs, this is the only Context used and it is therefore 
convenient to think of it as synonymous to &#x201c;the Evaluator&#x201d;: The 
Driver can submit Tasks to it, is notified when they are done and can close the 
root context when it wants to dispose of the Evaluator.</p>
+<p>Contexts are formed by calls to <tt>submitContext()</tt> to the event types 
that allow this (<tt>AllocatedEvaluator</tt> and <tt>ActiveContext</tt>). 
Contexts are the main way for an Evaluator to be exposed and accessed. For 
instance, Tasks are submitted to an <tt>ActiveContext</tt> which represents the 
top Context on the Evaluator.</p>
+<p>Beyond this, a Driver can submit a Context to the root, or in fact any, 
Context, as long as the resulting structure is that of a stack: the root 
Context forms the bottom of the stack, the top-most Context is called 
<i>active</i>, hence the <tt>ActiveContext</tt> event. The two can be one and 
the same, and often are: the root Context is the subject of the first 
<tt>ActiveContext</tt> event on an Evaluator.</p>
+<p>Nomenclature: when Context B is submitted to an already existing Context A, 
we say that Context A is the parent Context of Context B. Also, Context B is 
the child of Context A.</p>
 <p>It is only the <tt>ActiveContext</tt> that allows the submission of Tasks 
or child Contexts. Hence, one can think of the whole Evaluator structure as 
that of a stack: the root Context at the bottom, layers of Contexts in the 
middle and either the current <tt>ActiveContext</tt> or the current Task at the 
top.</p>
 <div class="section">
 <h4>Objects and Configuration: What&#x2019;s in a Context?<a 
name="Objects_and_Configuration:_Whats_in_a_Context"></a></h4>
 <p>It is convenient to think of a Context as a <tt>Configuration</tt> that 
gets merged with the <tt>Configuration</tt> supplied for Tasks and child 
Contexts. While not entirely true (see below), this view allows us to show just 
<i>why</i> Contexts are a convenient construct.</p>
-<p>It is often the case that subsequent tasks that get executed on an 
Evaluator want access to the same Configuration variables and / or the same 
objects. Consider a simple <tt>LinkedList</tt> bound to a named parameter. If 
that linked list is part of the subsequent Task <tt>Configurations</tt> 
submited, each Task will get its very <i>own</i> <tt>LinkedList</tt>. If the 
named parameter is bound in the Context <tt>Configuration</tt>, all Tasks 
subsequently submitted to the Context will get the very <i>same</i> 
<tt>LinkedList</tt> instance.</p></div>
+<p>It is often the case that subsequent tasks that get executed on an 
Evaluator want access to the same Configuration variables and / or the same 
objects. Consider a simple <tt>LinkedList</tt> bound to a named parameter. If 
that linked list is part of the subsequent Task <tt>Configurations</tt> 
submitted, each Task will get its very <i>own</i> <tt>LinkedList</tt>. If the 
named parameter is bound in the Context <tt>Configuration</tt>, all Tasks 
subsequently submitted to the Context will get the very <i>same</i> 
<tt>LinkedList</tt> instance.</p></div>
 <div class="section">
 <h4>Contexts are (Tang) Injectors<a 
name="Contexts_are_Tang_Injectors"></a></h4>
-<p>This mechanism is implemented by using Tang&#x2019;s <tt>Injector</tt>s. On 
the Evaluator, a Task is launched by first <i>forking</i> the Context&#x2019;s 
<tt>Injector</tt> with the Task<tt>Configuration</tt> and then requesting an 
instance of the <tt>Task</tt> interface from that forked <tt>Injector</tt>. By 
this mechanism and the fact that objects are singletons with respect to an 
<tt>Injector</tt> in Tang, object sharing can be implemented. All objects 
already instantiated on the Context <tt>Injector</tt> will also be referenced 
by the Task<tt>Injector</tt>. Hence, the <tt>LinkedList</tt> in the example 
above would be shared amongst subsequent Task <tt>Injectors</tt> in the 
construction of the <tt>Task</tt> instance.</p></div></div>
+<p>This mechanism is implemented by using Tang&#x2019;s <tt>Injector</tt>s. On 
the Evaluator, a Task is launched by first <i>forking</i> the Context&#x2019;s 
<tt>Injector</tt> with the Task <tt>Configuration</tt> and then requesting an 
instance of the <tt>Task</tt> interface from that forked <tt>Injector</tt>. By 
this mechanism and the fact that objects are singletons with respect to an 
<tt>Injector</tt> in Tang, object sharing can be implemented. All objects 
already instantiated on the Context <tt>Injector</tt> will also be referenced 
by the Task <tt>Injector</tt>. Hence, the <tt>LinkedList</tt> in the example 
above would be shared amongst subsequent Task <tt>Injectors</tt> in the 
construction of the <tt>Task</tt> instance.</p></div></div>
 <div class="section">
 <h3><a name="driver"></a>Driver<a name="Driver"></a></h3>
-<p>REEF imposes a centralized control flow design on applications: All events 
are routed to the master node, called the Driver. REEF also prescribes 
event-driven programming for the Driver. In that sense, the application 
provided Driver is a collection of event handlers for the various events 
exposed in <tt>DriverConfiguration</tt>. While most of these deal with 
occurrences during the computation (Evaluator allocation, Task launch, 
&#x2026;), several stand out as life-cycle events of the Driver, and therefore 
the application:</p>
+<p>REEF imposes a centralized control flow design on applications: all events 
are routed to the master node, called the Driver. REEF also prescribes 
event-driven programming for the Driver. In that sense, the 
application-provided Driver is a collection of event handlers for the various 
events exposed in <tt>DriverConfiguration</tt>. While most of these deal with 
occurrences during the computation (Evaluator allocation, Task launch, 
&#x2026;), several stand out as life-cycle events of the Driver, and therefore 
the application:</p>
 <div class="section">
 <h4>ON_START<a name="ON_START"></a></h4>
 <p>This event is triggered by REEF when the Driver is ready to start 
executing. At this point communication with the Resource Manager has been 
established, all event handlers have been instantiated and the event graph in 
the Driver was deemed to be complete enough to start. In a typical application, 
this is when the Driver requests the first set of Evaluators.</p></div>
@@ -491,14 +491,14 @@ under the License. --><h1>Glossary</h1>
 <h3><a name="evaluator"></a>Evaluator<a name="Evaluator"></a></h3>
 <div class="section">
 <h4>Evaluators and Tasks<a name="Evaluators_and_Tasks"></a></h4>
-<p>The Evaluator is the runtime environment for Tasks. On one Evaluator, there 
is either no or one Task executing at any given point in time. Different or 
multiple executions of the same Tasks can be executed in sequence on an 
Evaluator. The Evaluator and Task lifecycle are decoupled: Whenever a Task 
finishes, the Driver receives the CompletedTask event, which contains a 
reference to the Evaluator the Task executed on. It is then up to the Driver to 
decide whether to return the Evaluator to the resource manager or to make other 
use of it, e.g. by submitting another task.</p></div>
+<p>The Evaluator is the runtime environment for Tasks. On one Evaluator, there 
is either no or one Task executing at any given point in time. Different or 
multiple executions of the same Tasks can be executed in sequence on an 
Evaluator. The Evaluator and Task lifecycle are decoupled: whenever a Task 
finishes, the Driver receives the CompletedTask event, which contains a 
reference to the Evaluator the Task executed on. It is then up to the Driver to 
decide whether to return the Evaluator to the resource manager or to make other 
use of it, e.g. by submitting another task.</p></div>
 <div class="section">
 <h4>Evaluators and Contexts<a name="Evaluators_and_Contexts"></a></h4>
 <p>Contexts are REEF&#x2019;s form of state management inside of the 
Evaluator. See the <a href="#context">Context</a> section for more 
information.</p></div>
 <div class="section">
 <h4>Evaluators and the Resource Manager<a 
name="Evaluators_and_the_Resource_Manager"></a></h4>
 <p>On typical resource managers, an Evaluator is a process executing inside a 
container. Depending on the resource manager, that process may or may not be 
guarded by a resource or security isolation layer.</p>
-<p>This also means that the Evaluator, not the Task, is the unit of resource 
consumption: while an Evaluator is occupying a Container, that Container is 
&#x201c;used&#x201d; from the perspective of the Resource Manager.That is true 
even if the Evaluator is idle from the perspective of the Driver, i.e. when no 
Task is running on it.</p></div></div>
+<p>This also means that the Evaluator, not the Task, is the unit of resource 
consumption: while an Evaluator is occupying a Container, that Container is 
&#x201c;used&#x201d; from the perspective of the Resource Manager. That is true 
even if the Evaluator is idle from the perspective of the Driver, i.e. when no 
Task is running on it.</p></div></div>
 <div class="section">
 <h3><a name="task"></a>Task<a name="Task"></a></h3>
 <div class="section">
@@ -507,18 +507,18 @@ under the License. --><h1>Glossary</h1>
 
 <div class="source"><pre class="prettyprint">public byte[] call(byte[] input);
 </pre></div>
-<p>From REEF&#x2019;s perspective, a Task is therefore a single threaded 
method call. It starts when entering the call method. It is a 
<tt>RunningTask</tt> while it hasn&#x2019;t returned from it and is a 
<tt>CompletedTask</tt> when it has. Should there be an Exception thrown by 
<tt>call()</tt>, we call it a <tt>FailedTask</tt>.</p>
+<p>From REEF&#x2019;s perspective, a Task is therefore a single-threaded 
method call. It starts when entering the call method. It is a 
<tt>RunningTask</tt> while it hasn&#x2019;t returned from it and is a 
<tt>CompletedTask</tt> when it has. Should there be an Exception thrown by 
<tt>call()</tt>, we call it a <tt>FailedTask</tt>.</p>
 <p>Task identity is established by a user-defined string set in 
<tt>TaskConfiguration.IDENTIFIER</tt>. All subsequent task-related events in 
the Driver will carry that ID. Note that REEF doesn&#x2019;t take any 
particular precautions to ensure unique Task identifiers. It is up to the 
application to do so. While technically feasible to assign the same identifier 
to multiple Tasks, this isn&#x2019;t advised as it makes error handling, 
debugging and logging unnecessarily hard.</p></div>
 <div class="section">
 <h4>Inputs and outputs of a Task<a 
name="Inputs_and_outputs_of_a_Task"></a></h4>
 <p>The return value of the <tt>call</tt> method will be made available to the 
Driver as part of the <tt>CompletedTask</tt> event. Note that it isn&#x2019;t 
advised to return large values in this fashion, but merely small control flow 
or status information. Sending large data on this channel creates the risk of 
overloading the Driver at scale. The networking APIs provided by REEF IO are 
much better suited for data transmissions than this channel.</p>
-<p>The parameter given to the call method is also to be used in a similar 
fashion: The Driver passes its value as part of the Task submission. It is 
meant e.g. to convey a restart point for the task. Note that the same 
functionality can now be better provided by Tang and a constructor 
parameter.</p></div>
+<p>The parameter given to the call method is also to be used in a similar 
fashion: the Driver passes its value as part of the Task submission. It is 
meant e.g. to convey a restart point for the task. Note that the same 
functionality can now be better provided by Tang and a constructor 
parameter.</p></div>
 <div class="section">
 <h4>Communicating between a Task and a Driver<a 
name="Communicating_between_a_Task_and_a_Driver"></a></h4>
 <p>REEF provides some facilities to communicate between a Driver and a Task. 
These mostly stem from allowing application code to &#x201c;free-ride&#x201d; 
on REEF&#x2019;s control flow channels such as the heartbeat between the 
Evaluator and the Task.</p>
 <div class="section">
 <h5>Sending a message from the Driver to a Task<a 
name="Sending_a_message_from_the_Driver_to_a_Task"></a></h5>
-<p>REEF maintains a heartbeat between any Evaluator and the Driver. There are 
two ways by which a heartbeat can be triggered.</p>
+<p>REEF maintains a heartbeat between any Evaluator and the Driver. There are 
two ways by which a heartbeat can be triggered:</p>
 
 <ul>
   
@@ -531,7 +531,7 @@ under the License. --><h1>Glossary</h1>
 <p>Whenever the Evaluator performs a heartbeat, it will ask the Task whether 
it has any message to share with the Driver by inquiring the class registered 
in <tt>TaskConfiguration.ON_SEND_MESSAGE</tt>. It is wise for that message to 
be small, as we otherwise run the risk of overwhelming the Driver with 
heartbeat traffic at scale.</p></div></div>
 <div class="section">
 <h4>Multithreaded Tasks<a name="Multithreaded_Tasks"></a></h4>
-<p>Just because REEF views a Task as a method call doesn&#x2019;t restrict the 
Task to be single threaded. A Task is free to spawn threads in the course of 
its execution. However, a Task that does so needs to take care of a few 
considerations:</p>
+<p>Just because REEF views a Task as a method call doesn&#x2019;t restrict the 
Task to be single-threaded. A Task is free to spawn threads in the course of 
its execution. However, a Task that does so needs to take care of a few 
considerations:</p>
 
 <ul>
   
@@ -539,7 +539,7 @@ under the License. --><h1>Glossary</h1>
 <p>All Threads spawned need to exit before the <tt>Task.call()</tt> method 
returns. Otherwise, you run the risk of resource leakage.</p></li>
   
 <li>
-<p>Exceptions on spawned Threads need to be caught and re-thrown by the 
<tt>Thread.call()</tt> method. Before that, all spawned threads need to be shut 
down, just like during a normal exit of <tt>Task.call()</tt>. If an exception 
from an another thread isn&#x2019;t caught, REEF&#x2019;s JVM level exception 
handler will catch it and declare a FailedEvaluator. This is inefficient, but 
not technically wrong: The Driver will then have to allocate another Evaluator 
and try again.</p></li>
+<p>Exceptions on spawned Threads need to be caught and re-thrown by the 
<tt>Thread.call()</tt> method. Before that, all spawned threads need to be shut 
down, just like during a normal exit of <tt>Task.call()</tt>. If an exception 
from an another thread isn&#x2019;t caught, REEF&#x2019;s JVM level exception 
handler will catch it and declare a FailedEvaluator. This is inefficient, but 
not technically wrong: the Driver will then have to allocate another Evaluator 
and try again.</p></li>
 </ul></div></div></div>
                   </div>
             </div>

Modified: reef/site/index.html
URL: 
http://svn.apache.org/viewvc/reef/site/index.html?rev=1722413&r1=1722412&r2=1722413&view=diff
==============================================================================
--- reef/site/index.html (original)
+++ reef/site/index.html Wed Dec 30 21:09:32 2015
@@ -1,13 +1,13 @@
 <!DOCTYPE html>
 <!--
- | Generated by Apache Maven Doxia at 2015-12-04 
+ | Generated by Apache Maven Doxia at 2015-12-30 
  | Rendered using Apache Maven Fluido Skin 1.4
 -->
 <html xmlns="http://www.w3.org/1999/xhtml"; xml:lang="en" lang="en">
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20151204" />
+    <meta name="Date-Revision-yyyymmdd" content="20151230" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache REEF - Apache REEF&trade;</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4.min.css" />

Modified: reef/site/introduction.html
URL: 
http://svn.apache.org/viewvc/reef/site/introduction.html?rev=1722413&r1=1722412&r2=1722413&view=diff
==============================================================================
--- reef/site/introduction.html (original)
+++ reef/site/introduction.html Wed Dec 30 21:09:32 2015
@@ -1,13 +1,13 @@
 <!DOCTYPE html>
 <!--
- | Generated by Apache Maven Doxia at 2015-12-04 
+ | Generated by Apache Maven Doxia at 2015-12-30 
  | Rendered using Apache Maven Fluido Skin 1.4
 -->
 <html xmlns="http://www.w3.org/1999/xhtml"; xml:lang="en" lang="en">
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20151204" />
+    <meta name="Date-Revision-yyyymmdd" content="20151230" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache REEF - Introduction to REEF</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4.min.css" />
@@ -444,7 +444,7 @@ specific language governing permissions
 under the License. --><h1>Introduction to REEF</h1>
 <p>It is instructive to first remind us of how MapReduce works: Hadoop 
Map-Reduce schedules compute tasks on containers for executing map and reduce 
functions on record data. The basic structure of a Map-Reduce job is as 
follows. For each input block, schedule a map task that passes each internal 
record to a user-defined map function and materializes the output in key-sorted 
order. Further, assign a user-defined number of reduce tasks to non-overlapping 
portions of the key-space from the map output, then shuffle it across the 
network to where the respective reduce task is scheduled. For each reduce task, 
perform a global key-based sort on the shuffled data, group it by key and call 
the reduce function on each record group; storing the output in a durable 
fashion (i.e., HDFS).</p>
 <p>From the perspective of the scheduler, a number of issues arise that must 
be appropriately handled in order to scale-out to massive datasets. First, each 
map task should be scheduled close to where the input block resides; ideally on 
the same machine or rack. Second, failures can occur at the task level at any 
step; requiring backup tasks to be scheduled or the job being aborted. Third, 
performance bottlenecks can cause an imbalance in the task-level progress. The 
scheduler must react to these stragglers by scheduling clones and incorporating 
the logical task that crosses the finish line first.</p>
-<p>Anyone of these issues can limit the scale-out degree of a Map-Reduce job. 
In what follows, we perscribe a scheduler framework that provides task 
life-cycle management mechanisms. Using this framework, we developed a complete 
version of the Map-Reduce runtime that addresses the above issues. Our 
framework is designed around three components.</p>
+<p>Anyone of these issues can limit the scale-out degree of a Map-Reduce job. 
In what follows, we prescribe a scheduler framework that provides task 
life-cycle management mechanisms. Using this framework, we developed a complete 
version of the Map-Reduce runtime that addresses the above issues. Our 
framework is designed around three components.</p>
 
 <ol style="list-style-type: decimal">
   
@@ -471,11 +471,11 @@ under the License. --><h1>Introduction t
 
 <p><i>States of <tt>Evaluator</tt>, <tt>Contexts</tt>, and 
<tt>Tasks</tt></i></p>
 <p><br /></br></p>
-<p>The Figure above describes the state transitions for (a) <tt>Evaluator</tt> 
and <tt>Context</tt> and (b) <tt>Task</tt> components. Each state transition is 
associated with an object reference that is surfaced to the <tt>Driver</tt> in 
an Rx-style interface. For instance, when the YARN-RM notifies the REEF-AM of 
an allocated container, the <tt>Driver</tt> is given an 
<tt>AllocatedEvaluator</tt> object; containing methods for adding 
configurations (i.e., for data services, see below) and file resources, and 
submit methods that bootstraps the <tt>Evaluator</tt> runtime on the YARN-NM. 
When an <tt>Evaluator</tt> bootstrap successfully completes, the 
<tt>Driver</tt> is given an <tt>ActiveContext</tt> object, which can be used to 
launch <tt>Tasks</tt> or to initiate a close, which triggers a shutdown event 
at the <tt>Evaluator</tt> runtime and a subsequent container release at the 
YARN-RM. If at any point a failure occurs, the <tt>Driver</tt> is passed a 
<tt>FailedEvaluator</tt> object
 ; containing an exception trace when possible.</p>
-<p>Recall that the <tt>Driver</tt> launches a <tt>Task</tt> on a submit method 
call from the <tt>ActiveContext</tt> reference. This state transition is 
denoted in the Figure above by the edge labeled submit; spanning the two state 
machines. The REEF-AM passes a <tt>RunningTask</tt> object to the 
<tt>Driver</tt> after receiving confirmation of a successful <tt>Task</tt> 
start or resume. The <tt>Driver</tt> may use the <tt>RunningTask</tt> reference 
to close or suspend the execution; triggering a <tt>CompletedTask</tt> or 
<tt>SuspendedTask</tt> object reference to the <tt>Driver</tt>. The 
<tt>SuspendedTask</tt> object contains a memento used to resume the execution 
on some (possibly alternative) <tt>ActiveContext</tt>. Exceptions during the 
<tt>Task</tt> execution are surfaced to the <tt>Driver</tt> in the form of a 
<tt>FailedTask</tt>, which contains the actual exception object.</p></div>
+<p>The Figure above describes the state transitions for (a) <tt>Evaluator</tt> 
and <tt>Context</tt> and (b) <tt>Task</tt> components. Each state transition is 
associated with an object reference that is surfaced to the <tt>Driver</tt> in 
an Rx-style interface. For instance, when the YARN-RM notifies the REEF-AM of 
an allocated container, the <tt>Driver</tt> is given an 
<tt>AllocatedEvaluator</tt> object; containing methods for adding 
configurations (i.e., for data services, see below) and file resources, and 
submit methods that bootstraps the <tt>Evaluator</tt> runtime on the YARN-NM. 
When an <tt>Evaluator</tt> bootstrap successfully completes, the 
<tt>Driver</tt> is given an <tt>ActiveContext</tt> object, which can be used to 
launch <tt>Tasks</tt> or to initiate a close, which triggers a shutdown event 
at the <tt>Evaluator</tt> runtime and a subsequent container release at the 
YARN-RM. If at any point a failure occurs, the <tt>Driver</tt> is passed a 
<tt>FailedEvaluator</tt> object
 , containing an exception trace when possible.</p>
+<p>Recall that the <tt>Driver</tt> launches a <tt>Task</tt> on a submit method 
call from the <tt>ActiveContext</tt> reference. This state transition is 
denoted in the Figure above by the edge labeled submit, spanning the two state 
machines. The REEF-AM passes a <tt>RunningTask</tt> object to the 
<tt>Driver</tt> after receiving confirmation of a successful <tt>Task</tt> 
start or resume. The <tt>Driver</tt> may use the <tt>RunningTask</tt> reference 
to close or suspend the execution, triggering a <tt>CompletedTask</tt> or 
<tt>SuspendedTask</tt> object reference to the <tt>Driver</tt>. The 
<tt>SuspendedTask</tt> object contains a memento used to resume the execution 
on some (possibly alternative) <tt>ActiveContext</tt>. Exceptions during the 
<tt>Task</tt> execution are surfaced to the <tt>Driver</tt> in the form of a 
<tt>FailedTask</tt>, which contains the actual exception object.</p></div>
 <div class="section">
 <h3>Task Component<a name="Task_Component"></a></h3>
-<p>A <tt>Task</tt> encapsulates the task work of a job. The client interface 
contains a single synchronous call method that takes an optional memento 
argument and returns a byte array, which will be packaged with the 
<tt>CompletedTask</tt> object surfaced to the <tt>Driver</tt>. An exception may 
be thrown at any point during the call method; returning control back to the 
<tt>Evaluator</tt>, which packages the exception and sends it to the 
<tt>Driver</tt> where it is surfaced as a <tt>FailedTask</tt>. The 
<tt>Evaluator</tt> periodically performs a heartbeat with the REEF-AM to convey 
its status information. A <tt>Task</tt> can optionally implement a method 
interface that, when called, returns a (bounded) byte array, which the 
<tt>Evaluator</tt> includes in its heartbeat to the REEF-AM and surfaced to the 
<tt>Driver</tt>.</p></div></div>
+<p>A <tt>Task</tt> encapsulates the task work of a job. The client interface 
contains a single synchronous call method that takes an optional memento 
argument and returns a byte array, which will be packaged with the 
<tt>CompletedTask</tt> object surfaced to the <tt>Driver</tt>. An exception may 
be thrown at any point during the call method, returning control back to the 
<tt>Evaluator</tt>, which packages the exception and sends it to the 
<tt>Driver</tt> where it is surfaced as a <tt>FailedTask</tt>. The 
<tt>Evaluator</tt> periodically performs a heartbeat with the REEF-AM to convey 
its status information. A <tt>Task</tt> can optionally implement a method 
interface that, when called, returns a (bounded) byte array, which the 
<tt>Evaluator</tt> includes in its heartbeat to the REEF-AM and surfaced to the 
<tt>Driver</tt>.</p></div></div>
                   </div>
             </div>
           </div>

Modified: reef/site/issue-tracking.html
URL: 
http://svn.apache.org/viewvc/reef/site/issue-tracking.html?rev=1722413&r1=1722412&r2=1722413&view=diff
==============================================================================
--- reef/site/issue-tracking.html (original)
+++ reef/site/issue-tracking.html Wed Dec 30 21:09:32 2015
@@ -1,13 +1,13 @@
 <!DOCTYPE html>
 <!--
- | Generated by Apache Maven Doxia at 2015-12-04 
+ | Generated by Apache Maven Doxia at 2015-12-30 
  | Rendered using Apache Maven Fluido Skin 1.4
 -->
 <html xmlns="http://www.w3.org/1999/xhtml"; xml:lang="en" lang="en">
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20151204" />
+    <meta name="Date-Revision-yyyymmdd" content="20151230" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache REEF - Issue Tracking</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4.min.css" />

Modified: reef/site/license.html
URL: 
http://svn.apache.org/viewvc/reef/site/license.html?rev=1722413&r1=1722412&r2=1722413&view=diff
==============================================================================
--- reef/site/license.html (original)
+++ reef/site/license.html Wed Dec 30 21:09:32 2015
@@ -1,13 +1,13 @@
 <!DOCTYPE html>
 <!--
- | Generated by Apache Maven Doxia at 2015-12-04 
+ | Generated by Apache Maven Doxia at 2015-12-30 
  | Rendered using Apache Maven Fluido Skin 1.4
 -->
 <html xmlns="http://www.w3.org/1999/xhtml"; xml:lang="en" lang="en">
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20151204" />
+    <meta name="Date-Revision-yyyymmdd" content="20151230" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache REEF - Project License</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4.min.css" />

Modified: reef/site/mail-lists.html
URL: 
http://svn.apache.org/viewvc/reef/site/mail-lists.html?rev=1722413&r1=1722412&r2=1722413&view=diff
==============================================================================
--- reef/site/mail-lists.html (original)
+++ reef/site/mail-lists.html Wed Dec 30 21:09:32 2015
@@ -1,13 +1,13 @@
 <!DOCTYPE html>
 <!--
- | Generated by Apache Maven Doxia at 2015-12-04 
+ | Generated by Apache Maven Doxia at 2015-12-30 
  | Rendered using Apache Maven Fluido Skin 1.4
 -->
 <html xmlns="http://www.w3.org/1999/xhtml"; xml:lang="en" lang="en">
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20151204" />
+    <meta name="Date-Revision-yyyymmdd" content="20151230" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache REEF - Project Mailing Lists</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4.min.css" />
@@ -440,10 +440,10 @@
 <th>Archive</th></tr>
 <tr class="b">
 <td>Dev Mailing List</td>
-<td><a class="externalLink" 
href="mailto:[email protected]";>Subscribe</a></td>
-<td><a class="externalLink" 
href="mailto:[email protected]";>Unsubscribe</a></td>
-<td><a class="externalLink" 
href="mailto:[email protected]";>Post</a></td>
-<td><a class="externalLink" 
href="http://mail-archives.apache.org/mod_mbox/incubator-reef-dev/";>mail-archives.apache.org</a></td></tr></table></div>
+<td><a class="externalLink" 
href="mailto:[email protected]";>Subscribe</a></td>
+<td><a class="externalLink" 
href="mailto:[email protected]";>Unsubscribe</a></td>
+<td><a class="externalLink" href="mailto:[email protected]";>Post</a></td>
+<td><a class="externalLink" 
href="http://mail-archives.apache.org/mod_mbox/reef-dev/";>mail-archives.apache.org</a></td></tr></table></div>
                   </div>
             </div>
           </div>

Modified: reef/site/mailing-list.html
URL: 
http://svn.apache.org/viewvc/reef/site/mailing-list.html?rev=1722413&r1=1722412&r2=1722413&view=diff
==============================================================================
--- reef/site/mailing-list.html (original)
+++ reef/site/mailing-list.html Wed Dec 30 21:09:32 2015
@@ -1,13 +1,13 @@
 <!DOCTYPE html>
 <!--
- | Generated by Apache Maven Doxia at 2015-12-04 
+ | Generated by Apache Maven Doxia at 2015-12-30 
  | Rendered using Apache Maven Fluido Skin 1.4
 -->
 <html xmlns="http://www.w3.org/1999/xhtml"; xml:lang="en" lang="en">
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20151204" />
+    <meta name="Date-Revision-yyyymmdd" content="20151230" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache REEF - Mailing List</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4.min.css" />
@@ -449,7 +449,7 @@ under the License. --><h1>Mailing List</
   
 <li><a href="#commits">Commits</a></li>
 </ul>
-<p><b>Note:</b> These email addresses are automated. Just writing 
&#x201c;Subscribe&#x201d; or &#x201c;Unsusbscribe&#x201d; in both the subject 
line and the body will suffice and a confirmation email with further 
instructions will be sent as a reply to your email after some delay.</p>
+<p><b>Note:</b> These email addresses are automated. Just writing 
&#x201c;Subscribe&#x201d; or &#x201c;Unsubscribe&#x201d; in both the subject 
line and the body will suffice and a confirmation email with further 
instructions will be sent as a reply to your email after some delay.</p>
 <div class="section">
 <div class="section">
 <h3><a name="reef-dev"></a>REEF Dev Mailing List<a 
name="REEF_Dev_Mailing_List"></a></h3>
@@ -459,7 +459,7 @@ under the License. --><h1>Mailing List</
   
 <li><a class="externalLink" 
href="mailto:[email protected]";>Subscribe</a> (<a 
class="externalLink" 
href="mailto:[email protected]";>[email protected]</a>)</li>
   
-<li><a class="externalLink" 
href="mailto:[email protected]";>Unsusbscribe</a> (<a 
class="externalLink" 
href="mailto:[email protected]";>[email protected]</a>)</li>
+<li><a class="externalLink" 
href="mailto:[email protected]";>Unsubscribe</a> (<a 
class="externalLink" 
href="mailto:[email protected]";>[email protected]</a>)</li>
   
 <li><a class="externalLink" 
href="http://mail-archives.apache.org/mod_mbox/reef-dev/";>Archive</a></li>
 </ul></div>
@@ -471,7 +471,7 @@ under the License. --><h1>Mailing List</
   
 <li><a class="externalLink" 
href="mailto:[email protected]";>Subscribe</a> (<a 
class="externalLink" 
href="mailto:[email protected]";>[email protected]</a>)</li>
   
-<li><a class="externalLink" 
href="mailto:[email protected]";>Unsusbscribe</a> (<a 
class="externalLink" 
href="mailto:[email protected]";>[email protected]</a>)</li>
+<li><a class="externalLink" 
href="mailto:[email protected]";>Unsubscribe</a> (<a 
class="externalLink" 
href="mailto:[email protected]";>[email protected]</a>)</li>
   
 <li><a class="externalLink" 
href="http://mail-archives.apache.org/mod_mbox/reef-commits/";>Archive</a></li>
 </ul></div></div>

Modified: reef/site/plugin-management.html
URL: 
http://svn.apache.org/viewvc/reef/site/plugin-management.html?rev=1722413&r1=1722412&r2=1722413&view=diff
==============================================================================
--- reef/site/plugin-management.html (original)
+++ reef/site/plugin-management.html Wed Dec 30 21:09:32 2015
@@ -1,13 +1,13 @@
 <!DOCTYPE html>
 <!--
- | Generated by Apache Maven Doxia at 2015-12-04 
+ | Generated by Apache Maven Doxia at 2015-12-30 
  | Rendered using Apache Maven Fluido Skin 1.4
 -->
 <html xmlns="http://www.w3.org/1999/xhtml"; xml:lang="en" lang="en">
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20151204" />
+    <meta name="Date-Revision-yyyymmdd" content="20151230" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache REEF - Project Plugin Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4.min.css" />

Modified: reef/site/plugins.html
URL: 
http://svn.apache.org/viewvc/reef/site/plugins.html?rev=1722413&r1=1722412&r2=1722413&view=diff
==============================================================================
--- reef/site/plugins.html (original)
+++ reef/site/plugins.html Wed Dec 30 21:09:32 2015
@@ -1,13 +1,13 @@
 <!DOCTYPE html>
 <!--
- | Generated by Apache Maven Doxia at 2015-12-04 
+ | Generated by Apache Maven Doxia at 2015-12-30 
  | Rendered using Apache Maven Fluido Skin 1.4
 -->
 <html xmlns="http://www.w3.org/1999/xhtml"; xml:lang="en" lang="en">
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20151204" />
+    <meta name="Date-Revision-yyyymmdd" content="20151230" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache REEF - Project Build Plugins</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4.min.css" />

Modified: reef/site/privacy-policy.html
URL: 
http://svn.apache.org/viewvc/reef/site/privacy-policy.html?rev=1722413&r1=1722412&r2=1722413&view=diff
==============================================================================
--- reef/site/privacy-policy.html (original)
+++ reef/site/privacy-policy.html Wed Dec 30 21:09:32 2015
@@ -1,13 +1,13 @@
 <!DOCTYPE html>
 <!--
- | Generated by Apache Maven Doxia at 2015-12-04 
+ | Generated by Apache Maven Doxia at 2015-12-30 
  | Rendered using Apache Maven Fluido Skin 1.4
 -->
 <html xmlns="http://www.w3.org/1999/xhtml"; xml:lang="en" lang="en">
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20151204" />
+    <meta name="Date-Revision-yyyymmdd" content="20151230" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache REEF - Privacy Policy</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4.min.css" />

Modified: reef/site/project-info.html
URL: 
http://svn.apache.org/viewvc/reef/site/project-info.html?rev=1722413&r1=1722412&r2=1722413&view=diff
==============================================================================
--- reef/site/project-info.html (original)
+++ reef/site/project-info.html Wed Dec 30 21:09:32 2015
@@ -1,13 +1,13 @@
 <!DOCTYPE html>
 <!--
- | Generated by Apache Maven Doxia at 2015-12-04 
+ | Generated by Apache Maven Doxia at 2015-12-30 
  | Rendered using Apache Maven Fluido Skin 1.4
 -->
 <html xmlns="http://www.w3.org/1999/xhtml"; xml:lang="en" lang="en">
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20151204" />
+    <meta name="Date-Revision-yyyymmdd" content="20151230" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache REEF - Project Information</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4.min.css" />

Modified: reef/site/project-summary.html
URL: 
http://svn.apache.org/viewvc/reef/site/project-summary.html?rev=1722413&r1=1722412&r2=1722413&view=diff
==============================================================================
--- reef/site/project-summary.html (original)
+++ reef/site/project-summary.html Wed Dec 30 21:09:32 2015
@@ -1,13 +1,13 @@
 <!DOCTYPE html>
 <!--
- | Generated by Apache Maven Doxia at 2015-12-04 
+ | Generated by Apache Maven Doxia at 2015-12-30 
  | Rendered using Apache Maven Fluido Skin 1.4
 -->
 <html xmlns="http://www.w3.org/1999/xhtml"; xml:lang="en" lang="en">
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20151204" />
+    <meta name="Date-Revision-yyyymmdd" content="20151230" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache REEF - Project Summary</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4.min.css" />
@@ -444,7 +444,7 @@
 <td>Retainable Evaluator Execution Framework</td></tr>
 <tr class="b">
 <td>Homepage</td>
-<td><a class="externalLink" 
href="http://reef.incubator.apache.org/website";>http://reef.incubator.apache.org/website</a></td></tr></table></div>
+<td><a class="externalLink" 
href="http://reef.apache.org/website";>http://reef.apache.org/website</a></td></tr></table></div>
 <div class="section">
 <h3>Project Organization<a name="Project_Organization"></a></h3><a 
name="Project_Organization"></a>
 <table border="0" class="table table-striped">

Modified: reef/site/source-repository.html
URL: 
http://svn.apache.org/viewvc/reef/site/source-repository.html?rev=1722413&r1=1722412&r2=1722413&view=diff
==============================================================================
--- reef/site/source-repository.html (original)
+++ reef/site/source-repository.html Wed Dec 30 21:09:32 2015
@@ -1,13 +1,13 @@
 <!DOCTYPE html>
 <!--
- | Generated by Apache Maven Doxia at 2015-12-04 
+ | Generated by Apache Maven Doxia at 2015-12-30 
  | Rendered using Apache Maven Fluido Skin 1.4
 -->
 <html xmlns="http://www.w3.org/1999/xhtml"; xml:lang="en" lang="en">
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20151204" />
+    <meta name="Date-Revision-yyyymmdd" content="20151230" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache REEF - Source Repository</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4.min.css" />
@@ -434,15 +434,15 @@
 <div class="section">
 <h2>Web Browser Access<a name="Web_Browser_Access"></a></h2><a 
name="Web_Browser_Access"></a>
 <p>The following is a link to a browsable version of the source repository:</p>
-<div class="source"><pre class="prettyprint"><a 
href="scm:git:[email protected]:apache/incubator-reef/website">scm:git:[email protected]:apache/incubator-reef/website</a></pre></div></div>
+<div class="source"><pre class="prettyprint"><a 
href="scm:git:[email protected]:apache/reef/website">scm:git:[email protected]:apache/reef/website</a></pre></div></div>
 <div class="section">
 <h2>Anonymous Access<a name="Anonymous_Access"></a></h2><a 
name="Anonymous_Access"></a>
 <p>The source can be checked out anonymously from Git with this command (See 
<a class="externalLink" 
href="http://git-scm.com/docs/git-clone";>http://git-scm.com/docs/git-clone</a>):</p>
-<div class="source"><pre class="prettyprint">$ git clone 
[email protected]:apache/incubator-reef/website</pre></div></div>
+<div class="source"><pre class="prettyprint">$ git clone 
[email protected]:apache/reef/website</pre></div></div>
 <div class="section">
 <h2>Developer Access<a name="Developer_Access"></a></h2><a 
name="Developer_Access"></a>
 <p>Only project developers can access the Git tree via this method (See <a 
class="externalLink" 
href="http://git-scm.com/docs/git-clone";>http://git-scm.com/docs/git-clone</a>).</p>
-<div class="source"><pre class="prettyprint">$ git clone 
https://git-wip-us.apache.org/repos/asf/incubator-reef/website</pre></div></div>
+<div class="source"><pre class="prettyprint">$ git clone 
https://git-wip-us.apache.org/repos/asf/reef/website</pre></div></div>
 <div class="section">
 <h2>Access from Behind a Firewall<a 
name="Access_from_Behind_a_Firewall"></a></h2><a 
name="Access_from_Behind_a_Firewall"></a>
 <p>Refer to the documentation of the SCM used for more information about 
access behind a firewall.</p></div>

Modified: reef/site/talks.html
URL: 
http://svn.apache.org/viewvc/reef/site/talks.html?rev=1722413&r1=1722412&r2=1722413&view=diff
==============================================================================
--- reef/site/talks.html (original)
+++ reef/site/talks.html Wed Dec 30 21:09:32 2015
@@ -1,13 +1,13 @@
 <!DOCTYPE html>
 <!--
- | Generated by Apache Maven Doxia at 2015-12-04 
+ | Generated by Apache Maven Doxia at 2015-12-30 
  | Rendered using Apache Maven Fluido Skin 1.4
 -->
 <html xmlns="http://www.w3.org/1999/xhtml"; xml:lang="en" lang="en">
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20151204" />
+    <meta name="Date-Revision-yyyymmdd" content="20151230" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache REEF - Talks</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4.min.css" />

Modified: reef/site/tang.html
URL: 
http://svn.apache.org/viewvc/reef/site/tang.html?rev=1722413&r1=1722412&r2=1722413&view=diff
==============================================================================
--- reef/site/tang.html (original)
+++ reef/site/tang.html Wed Dec 30 21:09:32 2015
@@ -1,13 +1,13 @@
 <!DOCTYPE html>
 <!--
- | Generated by Apache Maven Doxia at 2015-12-04 
+ | Generated by Apache Maven Doxia at 2015-12-30 
  | Rendered using Apache Maven Fluido Skin 1.4
 -->
 <html xmlns="http://www.w3.org/1999/xhtml"; xml:lang="en" lang="en">
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20151204" />
+    <meta name="Date-Revision-yyyymmdd" content="20151230" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache REEF - Tang</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4.min.css" />
@@ -442,8 +442,8 @@ software distributed under the License i
 KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License. --><h1>Tang</h1>
-<p>Tang is a configuration managment and checking framework that emphasizes 
explicit documentation and automatic checkability of configurations and 
applications instead of ad-hoc, application-specific configuration and 
bootstrapping logic. It supports distributed, multi-language applications, but 
gracefully handles simpler use cases as well.</p>
-<p>Tang makes use of dependency injection to automatically instantiate 
applications. Dependency injectors can be thought of as &#x201c;make for 
objects&#x201d; &#x2013; given a request for some type of object, and 
information that explains how dependencies between objects should be resolved, 
dependency injectors automatically instantiate the requested object and all of 
the objects it dependes upon. Tang makes use of a few simple wire formats to 
support remote and even cross-language dependency injection.</p>
+<p>Tang is a configuration management and checking framework that emphasizes 
explicit documentation and automatic checkability of configurations and 
applications instead of ad-hoc, application-specific configuration and 
bootstrapping logic. It supports distributed, multi-language applications, but 
gracefully handles simpler use cases as well.</p>
+<p>Tang makes use of dependency injection to automatically instantiate 
applications. Dependency injectors can be thought of as &#x201c;make for 
objects&#x201d; &#x2013; given a request for some type of object, and 
information that explains how dependencies between objects should be resolved, 
dependency injectors automatically instantiate the requested object and all of 
the objects it depends upon. Tang makes use of a few simple wire formats to 
support remote and even cross-language dependency injection.</p>
 <div class="section">
 <h2>Outline<a name="Outline"></a></h2>
 
@@ -486,24 +486,24 @@ under the License. --><h1>Tang</h1>
 <p>Distributed systems suffer from problems that arise due to complex 
compositions of software modules and configuration errors. These problems 
compound over time: best-practice object oriented design dictates that code be 
factored into independent reusable modules, and today&#x2019;s distributed 
applications are increasingly expected to run atop multiple runtime 
environments. This leads application developers to push complexity into 
configuration settings, to the point where misconfiguration is now a primary 
cause of unavailability in fault tolerant systems.</p>
 <p>Tang is our attempt to address these problems. It consists of a dependency 
injection framework and a set of configuration and debugging tools that 
automatically and transparently bootstrap applications. We have focused on 
providing a narrow set of primitives that support the full range of design 
patterns that arise in distributed system development, and that encourage 
application developers to build their systems in a maintainable and debuggable 
way.</p>
 <p>Tang leverages existing language type systems, allowing unmodified IDEs 
such as Eclipse or NetBeans to surface configuration information in tooltips, 
provide auto-complete of configuration parameters, and to detect a wide range 
of configuration problems as you edit your code. Since such functionality is 
surfaced in the tools you are already familiar with, there is no need to 
install (or learn) additional development software to get started with Tang. 
Furthermore, we provide a set of sophisticated build time and runtime tools 
that detect a wide range of common architectural problems and configuration 
errors.</p>
-<p>This documentation consists of tutorials that present prefered Tang design 
patterns. By structuring your application according to the patterns we suggest 
throughout the tutorials, you will allow our static analysis framework, Tint 
(&#x201c;Tang Lint&#x201d;), to detect problematic design patterns and 
high-level configuration problems as part of your build. These patterns provide 
the cornerstone for a number of more advanced features, such as interacting 
with legacy configuration systems, designing for cross-language applications, 
and multi-tenancy issues, such as secure injections of untrusted application 
code. To the best of our knowledge, implementing such tools and addressing 
these real-world implementation constraints would be difficult, or even 
impossible, atop competing frameworks.</p>
+<p>This documentation consists of tutorials that present preferred Tang design 
patterns. By structuring your application according to the patterns we suggest 
throughout the tutorials, you will allow our static analysis framework, Tint 
(&#x201c;Tang Lint&#x201d;), to detect problematic design patterns and 
high-level configuration problems as part of your build. These patterns provide 
the cornerstone for a number of more advanced features, such as interacting 
with legacy configuration systems, designing for cross-language applications, 
and multi-tenancy issues, such as secure injections of untrusted application 
code. To the best of our knowledge, implementing such tools and addressing 
these real-world implementation constraints would be difficult, or even 
impossible, atop competing frameworks.</p>
 <h1><a name="design-principles"></a>Design principles</h1>
 <p>Tang encourages application developers to specify default implementations 
and constructor parameters in terms of code annotations and configuration 
modules. This avoids the need for a number of subtle (and often confusing) 
dependency injection software patterns, though it does lead to a different 
approach to dependency injection than other frameworks encourage.</p>
 <p>In the process of building complicated systems built atop Tang, we found 
that, as the length of configurations that are passed around at runtime 
increased, it rapidly became impossible to debug or maintain our higher-level 
applications. In an attempt to address this problem, traditional dependency 
injection systems actually compound this issue. They encourage the developers 
of each application-level component to implement hand-written 
&#x201c;Modules&#x201d; that are executed at runtime. Hand-written modules 
introspect on the current runtime configuration, augment and modify it, and 
then return a new configuration that takes the new application component into 
account.</p>
-<p>In other systems, developers interact with modules by invoking ad-hoc 
builder methods, and passing configurations (in the correct order) from module 
to module. Modules frequently delgate to each other, either via inheritance or 
wrappers. This makes it difficult for developers and end-users to figure out 
which value of a given parameter will be used, or even to figure out why it was 
(or was not) set.</p>
+<p>In other systems, developers interact with modules by invoking ad-hoc 
builder methods, and passing configurations (in the correct order) from module 
to module. Modules frequently delegate to each other, either via inheritance or 
wrappers. This makes it difficult for developers and end-users to figure out 
which value of a given parameter will be used, or even to figure out why it was 
(or was not) set.</p>
 <p>Tang provides an alternative called <tt>ConfigurationModule</tt>s:</p>
 
 <ul>
   
-<li><tt>Configurations</tt> and <tt>ConfigurationModules</tt> are &#x201c;just 
data,&#x201d; and can be read and written in human readable formats.</li>
+<li><tt>Configurations</tt> and <tt>ConfigurationModules</tt> are &#x201c;just 
data&#x201d;, and can be read and written in human readable formats.</li>
   
 <li>Interfaces and configuration parameters are encouraged to specify 
defaults, significantly shortening the configurations generated at runtime, and 
making it easy to see what was &#x201c;strange&#x201d; about a given run of the 
application.</li>
   
 <li>Tang&#x2019;s static analysis and documentation tools sanity check 
<tt>ConfigurationModule</tt>s, and document their behavior and any extra 
parameters they export.</li>
   
-<li>Configuration options can be set at most once. This avoids (or at least 
detects) situations in which users and application-level code inadvertantly 
&#x201c;fight&#x201d; over the setting of a particular option.</li>
+<li>Configuration options can be set at most once. This avoids (or at least 
detects) situations in which users and application-level code inadvertently 
&#x201c;fight&#x201d; over the setting of a particular option.</li>
 </ul>
-<p>The last property comes from Tang&#x2019;s use of <i>monotonic</i> set 
oriented primitives. This allows us to leverage recent theoretical results in 
commtative data types; particularly CRDTs, and the CALM theorem. Concretely:</p>
+<p>The last property comes from Tang&#x2019;s use of <i>monotonic</i> set 
oriented primitives. This allows us to leverage recent theoretical results in 
commutative data types, particularly CRDTs, and the CALM theorem. 
Concretely:</p>
 
 <ul>
   
@@ -511,10 +511,10 @@ under the License. --><h1>Tang</h1>
   
 <li>Tang can detect configuration and injection problems much earlier than is 
possible with other approaches. Also, upon detecting a conflict, Tang lists the 
configuration sources that contributed to the problem.</li>
 </ul>
-<p>Finally, Tang is divided into a set of &#x201c;core&#x201d; primtives, and 
higher-level configuration &#x201c;formats&#x201d;. Tang&#x2019;s core focuses 
on dependency injection and static checking of configurations. The formats 
provide higher-level configuration languages primitives, such as distributed, 
cross-language injection, configuration files, and 
<tt>ConfigurationModule</tt>. Each Tang format imports and/or exports standard 
Tang <tt>Configuration</tt> objects, which can then be composed with other 
configuration data at runtime.</p>
+<p>Finally, Tang is divided into a set of &#x201c;core&#x201d; primitives, and 
higher-level configuration &#x201c;formats&#x201d;. Tang&#x2019;s core focuses 
on dependency injection and static checking of configurations. The formats 
provide higher-level configuration languages primitives, such as distributed, 
cross-language injection, configuration files, and 
<tt>ConfigurationModule</tt>. Each Tang format imports and/or exports standard 
Tang <tt>Configuration</tt> objects, which can then be composed with other 
configuration data at runtime.</p>
 <p>Improvements to these formats are planned, such as command-line tab 
completion, and improved APIs for extremely complex applications that are built 
by composing multiple Tang configurations to inject arbitrary object graphs. 
Furthermore, Tang formats include documentation facilities, and automatic 
command line and configuration file parsing. From an end-user perspective, this 
takes a lot of the guesswork out of configuration file formats.</p>
 <p>Although Tang surfaces a text-based interface for end-users of the 
applications built atop it, all configuration options and their types are 
specified in terms of Java classes and annotations. As with the core Tang 
primitives, this allows the Java compiler to statically check Tang formats for 
problems such as inconsistent usage of configuration parameters, naming 
conflicts and so on. This eliminates broad classes of runtime errors. These 
checks can be run independently of the application&#x2019;s runtime 
environment, and can find problems both in the Java-level implementation of the 
system, and with user-provided configuration files. The tools that perform 
these checks are designed to run as a post-processing step of projects built 
atop Tang. Like the Java compiler checks, this prevents such errors from making 
it to production environments. It also prevents such errors from being exposed 
to application logic or end-users, greatly simplifying applications built atop 
Tang.</p>
-<p>Taken together, these properties greatly simplify dependency injection in 
distributed environments. We expect Tang to be used in environments that are 
dominated by &#x201c;plugin&#x201d;-style APIs with many alternative 
implementations. Tang cleanly separates concerns over configuration management, 
dependency injection and object implementations, which hides most of the 
complexity of dependency injection from plugin implementers. It also prevents 
plugin implementations from inadvertently conflicting with each other or their 
runtime environements. Such clean semantics are crucial in distributed, 
heterogeneous environments.</p>
+<p>Taken together, these properties greatly simplify dependency injection in 
distributed environments. We expect Tang to be used in environments that are 
dominated by &#x201c;plugin&#x201d;-style APIs with many alternative 
implementations. Tang cleanly separates concerns over configuration management, 
dependency injection and object implementations, which hides most of the 
complexity of dependency injection from plugin implementers. It also prevents 
plugin implementations from inadvertently conflicting with each other or their 
runtime environments. Such clean semantics are crucial in distributed, 
heterogeneous environments.</p>
 <h1><a name="tutorial-getting-started"></a>Tutorial: Getting started</h1>
 <p>This tutorial is geared toward people that would like to quickly get 
started with Tang, or that are modifying an existing Tang application.</p></div>
 <div class="section">
@@ -609,7 +609,7 @@ public class Timer {
 <h2><a name="configuration-modules"></a>Configuration modules<a 
name="Configuration_modules"></a></h2>
 <p>Configuration modules allow applications to perform most configuration 
generation and verification tasks at build time. This allows Tang to 
automatically generate rich configuration-related documentation, to detect 
problematic design patterns, and to report errors before the application even 
begins to run.</p>
 <p>In the example below, we extend the Timer API to include a second 
implementation that simply outputs the amount of time a real timer would have 
slept to stderr. In a real unit testing example, it would likely interact with 
a scheduler based on logical time. Of course, in isolation, having the ability 
to specify configuration parameters is not particularly useful; this example 
also adds a <tt>main()</tt> method that invokes Tang, and instantiates an 
object.</p>
-<p>The process of instantiting an object with Tang is called <i>injection</i>. 
As with configurations, Tang&#x2019;s injection process is designed to catch as 
many potential runtime errors as possible before application code begins to 
run. This simplifies debugging and eliminates many types of runtime error 
handling code, since many configurations can be caught before running (or 
examining) application-specific initialization code. </p>
+<p>The process of instantiating an object with Tang is called 
<i>injection</i>. As with configurations, Tang&#x2019;s injection process is 
designed to catch as many potential runtime errors as possible before 
application code begins to run. This simplifies debugging and eliminates many 
types of runtime error handling code, since many configurations can be caught 
before running (or examining) application-specific initialization code. </p>
 
 <div class="source"><pre class="prettyprint">package 
org.apache.reef.tang.examples.timer;
 
@@ -700,7 +700,7 @@ public class TimerMock implements Timer
   
 <li>The <tt>TimerMock</tt> class includes a dummy implementation of Timer, 
along with a <tt>ConfigurationModule</tt> final static field called 
<tt>CONF</tt>.</li>
   
-<li>The main method uses <tt>CONF</tt> to generate a configuration. Rather 
than set <tt>Timer.Sleep</tt> directly, it sets <tt>MOCK_SLEEP_TIME</tt>. In a 
more complicated example, this would allow <tt>CONF</tt> to route the sleep 
time to testing infrastructure, or other classes that are specific to the 
testing environment or implemenation of <tt>TimerMock</tt>.</li>
+<li>The main method uses <tt>CONF</tt> to generate a configuration. Rather 
than set <tt>Timer.Sleep</tt> directly, it sets <tt>MOCK_SLEEP_TIME</tt>. In a 
more complicated example, this would allow <tt>CONF</tt> to route the sleep 
time to testing infrastructure, or other classes that are specific to the 
testing environment or implementation of <tt>TimerMock</tt>.</li>
 </ul>
 <p><tt>ConfigurationModule</tt>s serve a number of purposes:</p>
 
@@ -739,7 +739,7 @@ Named parameter org.apache.reef.tang.imp
 Field org.apache.reef.tang.formats.MyMissingBindConfigurationModule.BAD_CONF: 
Found declared options that were not used in binds: { FOO_NESS }
 </pre></div></div>
 <div class="section">
-<h2><a name="injnecting-objects-with-getInstance"></a>Injecting objects with 
getInstance()<a name="Injecting_objects_with_getInstance"></a></h2>
+<h2><a name="injecting-objects-with-getinstance"></a>Injecting objects with 
getInstance()<a name="Injecting_objects_with_getInstance"></a></h2>
 <p>Above, we explain how to register constructors with Tang, and how to 
configure Tang to inject the desired objects at runtime. This section explains 
how Tang actually instantiates objects, and how the primitives it provides can 
be combined to support sophisticated application architectures.</p>
 <p>In order to instantiate objects with Tang, one must invoke 
Tang.Factory.getTang().newInjector(Configuration&#x2026;). This returns a new 
&#x201c;empty&#x201d; injector that will honor the configuration options that 
were set in the provided configurations, and that will have access to a merged 
version of the classpath they refer to.</p>
 <p>In a given Tang injector, all classes are treated as singletons: at most 
one instance of each class may exist. Furthermore, Tang Configuration objects 
are designed to be built up from trees of related (but non-conflicting) 
configuration files, command line parameters, and so on. At first, this may 
seem to be overly restrictive, since it prevents applications from creating 
multiple instances of the same class (or even two classes that require 
different values of the same named parameter).</p>
@@ -776,13 +776,13 @@ B(InjectionFuture&lt;A&gt; a) {...}
 </pre></div>
 <p>In order to inject an instance of <tt>A</tt>, Tang first injects an 
instance of <tt>B</tt> by passing it an <tt>InjectionFuture&lt;A&gt;</tt>. Tang 
then invoke&#x2019;s <tt>A</tt>&#x2019;s constructor, passing in the instance 
of <tt>B</tt>. Once the constructor returns, the new instance of <tt>A</tt> is 
passed into <tt>B</tt>&#x2019;s <tt>InjectionFuture&lt;A&gt;</tt>. At this 
point, it becomes safe for <tt>B</tt> to invoke <tt>get()</tt>, which 
establishes the circular reference.</p>
 <p>Therefore, along with <tt>forkInjector()</tt> and <tt>bindVolatile()</tt>, 
this allows Tang to inject arbitrary graphs of objects. This pattern avoids 
non-final fields (once set, all fields of all objects are constant), and it 
also avoids boiler plate error handling code that checks to see if 
<tt>B</tt>&#x2019;s instance of <tt>A</tt> has been set.</p>
-<p>When <tt>get()</tt> is called after the application-level call to 
<tt>getInstance()</tt> returns, it is guranteed to return a non-null reference 
to an injected instance of the object. However, if <tt>get()</tt> is called 
<i>before</i> the constructor it was passed to returns, then it is guaranteed 
to throw an exception. In between these two points in time, 
<tt>get()</tt>&#x2019;s behavior is undefined, but, for the sake of 
race-detection and forward compatibility it makes a best-effort attempt to 
throw an exception.</p>
+<p>When <tt>get()</tt> is called after the application-level call to 
<tt>getInstance()</tt> returns, it is guaranteed to return a non-null reference 
to an injected instance of the object. However, if <tt>get()</tt> is called 
<i>before</i> the constructor it was passed to returns, then it is guaranteed 
to throw an exception. In between these two points in time, 
<tt>get()</tt>&#x2019;s behavior is undefined, but, for the sake of 
race-detection and forward compatibility it makes a best-effort attempt to 
throw an exception.</p>
 <p>Following Tang&#x2019;s singleton semantics, the instance returned by 
<tt>get()</tt> will be the same instance the injector would pass into other 
constructors or return from <tt>getInstance()</tt>.</p>
 <h1><a name="alternative-configuration-sources"></a>Alternative configuration 
sources</h1>
 <p>Tang provides a number of so-called <i>formats</i> that interface with 
external configuration data. <tt>ConfigurationModule</tt> is one such example 
(see above). These formats transform configuration data to and from 
Tang&#x2019;s raw configuration API. The raw API provides an implementation of 
ConfigurationBuilder, which implements most of Tang&#x2019;s configuration 
checks. It also provides a <tt>JavaConfigurationBuilder</tt> interface provides 
convenience methods that take Java Classes, and leverage Java&#x2019;s generic 
type system to push a range of static type checks to Java compilation 
time.</p></div></div>
 <div class="section">
 <h2><a name="raw-configuration-api"></a>Raw configuration API<a 
name="Raw_configuration_API"></a></h2>
-<p>Tang also provides a lower level configurtion API for applications that 
need more dynamic control over their configurations:</p>
+<p>Tang also provides a lower level configuration API for applications that 
need more dynamic control over their configurations:</p>
 
 <div class="source"><pre class="prettyprint">...
 import org.apache.reef.tang.Tang;
@@ -817,9 +817,9 @@ import org.apache.reef.tang.exceptions.I
 
 <ul>
   
-<li>We use <tt>ConfigurationBuilder</tt> objects to tell Tang about the class 
hierarchy that it will be using to inject objects and (in later examples) to 
register the contents of configuration files, override default configuration 
values, and to set default implementations of classes. 
<tt>ConfigurationBuilder</tt> and <tt>ConfigurationModuleBuider</tt> export 
similar API&#x2019;s. The difference is that <tt>ConfigurationBuilder</tt> 
produces <tt>Configuration</tt> objects directly, and is designed to be used at 
runtime. <tt>ConfigurationModuleBuilder</tt> is desgined to produce data 
structures that will be generated and analyzed during the build, and at class 
load time.</li>
+<li>We use <tt>ConfigurationBuilder</tt> objects to tell Tang about the class 
hierarchy that it will be using to inject objects and (in later examples) to 
register the contents of configuration files, override default configuration 
values, and to set default implementations of classes. 
<tt>ConfigurationBuilder</tt> and <tt>ConfigurationModuleBuilder</tt> export 
similar API&#x2019;s. The difference is that <tt>ConfigurationBuilder</tt> 
produces <tt>Configuration</tt> objects directly, and is designed to be used at 
runtime. <tt>ConfigurationModuleBuilder</tt> is designed to produce data 
structures that will be generated and analyzed during the build, and at class 
load time.</li>
   
-<li><tt>bindNamedParameter()</tt> overrides the default value of Timer.Sleep, 
setting it to 5. Tang inteprets the 5 as a string, but allows instances of 
Number to be passed in as syntactic sugar.</li>
+<li><tt>bindNamedParameter()</tt> overrides the default value of Timer.Sleep, 
setting it to 5. Tang interprets the 5 as a string, but allows instances of 
Number to be passed in as syntactic sugar.</li>
   
 <li>We call <tt>.build()</tt> on the <tt>ConfigurationBuilder</tt>, creating 
an immutable <tt>Configuration</tt> object. At this point, Tang ensures that 
all of the classes it has encountered so far are consistent with each other, 
and that they are suitable for injection. When Tang encounters conflicting 
classes or configuration files, it throws a <tt>BindException</tt> to indicate 
that the problem is due to configuration issues. Note that 
<tt>ConfigurationBuilder</tt> and <tt>Configuration</tt> do not determine 
whether or not a particular injection will succeed; that is the business of the 
<i>Injector</i>.</li>
   
@@ -832,7 +832,7 @@ import org.apache.reef.tang.exceptions.I
 <p>Tang configuration information can be divided into two categories. The 
first type, <i>parameters</i>, pass values such as strings and integers into 
constructors. Users of Tang encode configuration parameters as strings, 
allowing them to be stored in configuration files, and passed in on the command 
line.</p>
 <p>The second type of configuration option, <i>implementation bindings</i>, 
are used to tell Tang which implementation should be used when an instance of 
an interface is requested. Like configuration parameters, implementation 
bindings are expressible as strings: Tang configuration files simply contain 
the raw (without the generic parameters) name of the Java Classes to be bound 
together.</p>
 <p>New parameters are created and passed into constructors as in the examples 
above, by creating implementations of <tt>Name&lt;T&gt;</tt>, and adding 
<tt>@NamedParameter</tt>, <tt>@Parameter</tt> and <tt>@Inject</tt> annotations 
as necessary. Specifying implementations for interfaces is a bit more involved, 
as a number of subtle use cases arise.</p>
-<p>However, all configuration settings in Tang can be unambiguously 
represented as a <tt>key=value</tt> pair that can be interpreted either asan 
<tt>interface=implementation</tt> pair or a 
<tt>configuration_parameter=value</tt> pair. This maps well to Java-style 
properties files. For example:</p>
+<p>However, all configuration settings in Tang can be unambiguously 
represented as a <tt>key=value</tt> pair that can be interpreted either as an 
<tt>interface=implementation</tt> pair or a 
<tt>configuration_parameter=value</tt> pair. This maps well to Java-style 
properties files. For example:</p>
 
 <div class="source"><pre 
class="prettyprint">com.examples.Interface=com.examples.Implementation
 </pre></div>
@@ -842,7 +842,7 @@ import org.apache.reef.tang.exceptions.I
 <h2><a name="looking-under-the-hood"></a>Looking under the hood<a 
name="Looking_under_the_hood"></a></h2>
 <div class="section">
 <h3><a name="injectionPlan"></a>InjectionPlan<a name="InjectionPlan"></a></h3>
-<p>InjectionPlan objects explain what Tang would do to instantiate a new 
object, but don&#x2019;t actually instantiate anything. Add the following lines 
to the Timer example;</p>
+<p>InjectionPlan objects explain what Tang would do to instantiate a new 
object, but don&#x2019;t actually instantiate anything. Add the following lines 
to the Timer example:</p>
 
 <div class="source"><pre class="prettyprint">import 
org.apache.reef.tang.implementation.InjectionPlan;
 import org.apache.reef.tang.implementation.InjectorImpl;

Modified: reef/site/team.html
URL: 
http://svn.apache.org/viewvc/reef/site/team.html?rev=1722413&r1=1722412&r2=1722413&view=diff
==============================================================================
--- reef/site/team.html (original)
+++ reef/site/team.html Wed Dec 30 21:09:32 2015
@@ -1,13 +1,13 @@
 <!DOCTYPE html>
 <!--
- | Generated by Apache Maven Doxia at 2015-12-04 
+ | Generated by Apache Maven Doxia at 2015-12-30 
  | Rendered using Apache Maven Fluido Skin 1.4
 -->
 <html xmlns="http://www.w3.org/1999/xhtml"; xml:lang="en" lang="en">
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20151204" />
+    <meta name="Date-Revision-yyyymmdd" content="20151230" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache REEF - Team</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4.min.css" />


Reply via email to