blob: 6ed411e90e6c04fac49385b5b8d2c83e1276f6d6 [file] [log] [blame]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (1.8.0_40) on Thu Jul 20 13:17:30 PDT 2017 -->
<title>AbstractHttpWriter (gobblin-core 0.11.0 API)</title>
<meta name="date" content="2017-07-20">
<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
<script type="text/javascript" src="../../../script.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="AbstractHttpWriter (gobblin-core 0.11.0 API)";
}
}
catch(err) {
}
//-->
var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar.top">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.top.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../index-all.html">Index</a></li>
<li><a href="../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li>Prev&nbsp;Class</li>
<li><a href="../../../gobblin/writer/http/AbstractHttpWriterBuilder.html" title="class in gobblin.writer.http"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../index.html?gobblin/writer/http/AbstractHttpWriter.html" target="_top">Frames</a></li>
<li><a href="AbstractHttpWriter.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_top");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.top">
<!-- -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="subTitle">gobblin.writer.http</div>
<h2 title="Class AbstractHttpWriter" class="title">Class AbstractHttpWriter&lt;D&gt;</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li><a href="https://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
<li>
<ul class="inheritance">
<li><a href="http://linkedin.github.io/gobblin/javadoc/0.11.0/gobblin-core-base/gobblin/instrumented/writer/InstrumentedDataWriter.html?is-external=true" title="class or interface in gobblin.instrumented.writer">gobblin.instrumented.writer.InstrumentedDataWriter</a>&lt;D&gt;</li>
<li>
<ul class="inheritance">
<li>gobblin.writer.http.AbstractHttpWriter&lt;D&gt;</li>
</ul>
</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>All Implemented Interfaces:</dt>
<dd><a href="http://linkedin.github.io/gobblin/javadoc/0.11.0/gobblin-core-base/gobblin/instrumented/Instrumentable.html?is-external=true" title="class or interface in gobblin.instrumented">Instrumentable</a>, <a href="http://linkedin.github.io/gobblin/javadoc/0.11.0/gobblin-api/gobblin/util/FinalState.html?is-external=true" title="class or interface in gobblin.util">FinalState</a>, <a href="http://linkedin.github.io/gobblin/javadoc/0.11.0/gobblin-api/gobblin/writer/DataWriter.html?is-external=true" title="class or interface in gobblin.writer">DataWriter</a>&lt;D&gt;, <a href="../../../gobblin/writer/http/HttpWriterDecoration.html" title="interface in gobblin.writer.http">HttpWriterDecoration</a>&lt;D&gt;, <a href="https://docs.oracle.com/javase/7/docs/api/java/io/Closeable.html?is-external=true" title="class or interface in java.io">Closeable</a>, <a href="https://docs.oracle.com/javase/7/docs/api/java/lang/AutoCloseable.html?is-external=true" title="class or interface in java.lang">AutoCloseable</a></dd>
</dl>
<dl>
<dt>Direct Known Subclasses:</dt>
<dd><a href="../../../gobblin/writer/http/HttpWriter.html" title="class in gobblin.writer.http">HttpWriter</a></dd>
</dl>
<hr>
<br>
<pre>public abstract class <span class="typeNameLabel">AbstractHttpWriter&lt;D&gt;</span>
extends <a href="http://linkedin.github.io/gobblin/javadoc/0.11.0/gobblin-core-base/gobblin/instrumented/writer/InstrumentedDataWriter.html?is-external=true" title="class or interface in gobblin.instrumented.writer">InstrumentedDataWriter</a>&lt;D&gt;
implements <a href="../../../gobblin/writer/http/HttpWriterDecoration.html" title="interface in gobblin.writer.http">HttpWriterDecoration</a>&lt;D&gt;</pre>
<div class="block">Base class for HTTP writers. Defines the main extension points for different implementations.</div>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- =========== FIELD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="field.summary">
<!-- -->
</a>
<h3>Field Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Field Summary table, listing fields, and an explanation">
<caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Field and Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>protected org.apache.http.impl.client.CloseableHttpClient</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../gobblin/writer/http/AbstractHttpWriter.html#client">client</a></span></code>&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>protected <a href="http://google.github.io/guava/releases/15.0/api/docs/com/google/common/io/Closer.html?is-external=true" title="class or interface in com.google.common.io">Closer</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../gobblin/writer/http/AbstractHttpWriter.html#closer">closer</a></span></code>&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>protected boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../gobblin/writer/http/AbstractHttpWriter.html#debugLogEnabled">debugLogEnabled</a></span></code>&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static long</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../gobblin/writer/http/AbstractHttpWriter.html#DEFAULT_WRITER_METRICS_UPDATER_INTERVAL">DEFAULT_WRITER_METRICS_UPDATER_INTERVAL</a></span></code>&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>protected org.slf4j.Logger</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../gobblin/writer/http/AbstractHttpWriter.html#log">log</a></span></code>&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static <a href="https://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../gobblin/writer/http/AbstractHttpWriter.html#WRITER_METRICS_UPDATER_INTERVAL">WRITER_METRICS_UPDATER_INTERVAL</a></span></code>&nbsp;</td>
</tr>
</table>
</li>
</ul>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor.summary">
<!-- -->
</a>
<h3>Constructor Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colOne" scope="col">Constructor and Description</th>
</tr>
<tr class="altColor">
<td class="colOne"><code><span class="memberNameLink"><a href="../../../gobblin/writer/http/AbstractHttpWriter.html#AbstractHttpWriter-gobblin.writer.http.AbstractHttpWriterBuilder-">AbstractHttpWriter</a></span>(<a href="../../../gobblin/writer/http/AbstractHttpWriterBuilder.html" title="class in gobblin.writer.http">AbstractHttpWriterBuilder</a>&nbsp;builder)</code>&nbsp;</td>
</tr>
</table>
</li>
</ul>
<!-- ========== METHOD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="method.summary">
<!-- -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Method and Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code>long</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../gobblin/writer/http/AbstractHttpWriter.html#bytesWritten--">bytesWritten</a></span>()</code></td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../gobblin/writer/http/AbstractHttpWriter.html#cleanup--">cleanup</a></span>()</code></td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../gobblin/writer/http/AbstractHttpWriter.html#close--">close</a></span>()</code></td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../gobblin/writer/http/AbstractHttpWriter.html#commit--">commit</a></span>()</code>
<div class="block">Prior to commit, it will invoke flush method to flush any remaining item if writer uses batch
</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../gobblin/writer/http/AbstractHttpWriter.html#flush--">flush</a></span>()</code>
<div class="block">If writer supports batch, override this method.</div>
</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code><a href="https://docs.oracle.com/javase/7/docs/api/java/net/URI.html?is-external=true" title="class or interface in java.net">URI</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../gobblin/writer/http/AbstractHttpWriter.html#getCurServerHost--">getCurServerHost</a></span>()</code>&nbsp;</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code>org.slf4j.Logger</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../gobblin/writer/http/AbstractHttpWriter.html#getLog--">getLog</a></span>()</code>&nbsp;</td>
</tr>
<tr id="i7" class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../gobblin/writer/http/AbstractHttpWriter.html#isRetry--">isRetry</a></span>()</code>
<div class="block">Checks if it's retry request.</div>
</td>
</tr>
<tr id="i8" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../gobblin/writer/http/AbstractHttpWriter.html#processResponse-org.apache.http.client.methods.CloseableHttpResponse-">processResponse</a></span>(org.apache.http.client.methods.CloseableHttpResponse&nbsp;response)</code>
<div class="block">Default implementation where any status code equal to or greater than 400 is regarded as a failure.</div>
</td>
</tr>
<tr id="i9" class="rowColor">
<td class="colFirst"><code>long</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../gobblin/writer/http/AbstractHttpWriter.html#recordsWritten--">recordsWritten</a></span>()</code></td>
</tr>
<tr id="i10" class="altColor">
<td class="colFirst"><code>protected void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../gobblin/writer/http/AbstractHttpWriter.html#regenerateMetrics--">regenerateMetrics</a></span>()</code>&nbsp;</td>
</tr>
<tr id="i11" class="rowColor">
<td class="colFirst"><code><a href="http://google.github.io/guava/releases/15.0/api/docs/com/google/common/util/concurrent/ListenableFuture.html?is-external=true" title="class or interface in com.google.common.util.concurrent">ListenableFuture</a>&lt;org.apache.http.client.methods.CloseableHttpResponse&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../gobblin/writer/http/AbstractHttpWriter.html#sendRequest-org.apache.http.client.methods.HttpUriRequest-">sendRequest</a></span>(org.apache.http.client.methods.HttpUriRequest&nbsp;request)</code>
<div class="block">Sends request using single thread pool so that it can be easily terminated(use case: time out)
An extension point to send the actual request to the remote server.</div>
</td>
</tr>
<tr id="i12" class="altColor">
<td class="colFirst"><code>org.apache.http.client.methods.CloseableHttpResponse</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../gobblin/writer/http/AbstractHttpWriter.html#waitForResponse-com.google.common.util.concurrent.ListenableFuture-">waitForResponse</a></span>(<a href="http://google.github.io/guava/releases/15.0/api/docs/com/google/common/util/concurrent/ListenableFuture.html?is-external=true" title="class or interface in com.google.common.util.concurrent">ListenableFuture</a>&lt;org.apache.http.client.methods.CloseableHttpResponse&gt;&nbsp;responseFuture)</code>
<div class="block">Default implementation is to use HttpClients socket timeout which is waiting based on elapsed time between
last packet sent from client till receive it from server.</div>
</td>
</tr>
<tr id="i13" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../gobblin/writer/http/AbstractHttpWriter.html#writeImpl-D-">writeImpl</a></span>(<a href="../../../gobblin/writer/http/AbstractHttpWriter.html" title="type parameter in AbstractHttpWriter">D</a>&nbsp;record)</code>
<div class="block">Send and process the request.</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.gobblin.instrumented.writer.InstrumentedDataWriter">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;gobblin.instrumented.writer.<a href="http://linkedin.github.io/gobblin/javadoc/0.11.0/gobblin-core-base/gobblin/instrumented/writer/InstrumentedDataWriter.html?is-external=true" title="class or interface in gobblin.instrumented.writer">InstrumentedDataWriter</a></h3>
<code><a href="http://linkedin.github.io/gobblin/javadoc/0.11.0/gobblin-core-base/gobblin/instrumented/writer/InstrumentedDataWriter.html?is-external=true#write-D-" title="class or interface in gobblin.instrumented.writer">write</a></code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
<code><a href="https://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#clone--" title="class or interface in java.lang">clone</a>, <a href="https://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a>, <a href="https://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#finalize--" title="class or interface in java.lang">finalize</a>, <a href="https://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#getClass--" title="class or interface in java.lang">getClass</a>, <a href="https://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#hashCode--" title="class or interface in java.lang">hashCode</a>, <a href="https://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#notify--" title="class or interface in java.lang">notify</a>, <a href="https://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#notifyAll--" title="class or interface in java.lang">notifyAll</a>, <a href="https://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang">toString</a>, <a href="https://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#wait--" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#wait-long-" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#wait-long-int-" title="class or interface in java.lang">wait</a></code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.gobblin.writer.http.HttpWriterDecoration">
<!-- -->
</a>
<h3>Methods inherited from interface&nbsp;gobblin.writer.http.<a href="../../../gobblin/writer/http/HttpWriterDecoration.html" title="interface in gobblin.writer.http">HttpWriterDecoration</a></h3>
<code><a href="../../../gobblin/writer/http/HttpWriterDecoration.html#chooseServerHost--">chooseServerHost</a>, <a href="../../../gobblin/writer/http/HttpWriterDecoration.html#onConnect-java.net.URI-">onConnect</a>, <a href="../../../gobblin/writer/http/HttpWriterDecoration.html#onNewRecord-D-">onNewRecord</a></code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.gobblin.writer.DataWriter">
<!-- -->
</a>
<h3>Methods inherited from interface&nbsp;gobblin.writer.<a href="http://linkedin.github.io/gobblin/javadoc/0.11.0/gobblin-api/gobblin/writer/DataWriter.html?is-external=true" title="class or interface in gobblin.writer">DataWriter</a></h3>
<code><a href="http://linkedin.github.io/gobblin/javadoc/0.11.0/gobblin-api/gobblin/writer/DataWriter.html?is-external=true#getMessageHandler--" title="class or interface in gobblin.writer">getMessageHandler</a>, <a href="http://linkedin.github.io/gobblin/javadoc/0.11.0/gobblin-api/gobblin/writer/DataWriter.html?is-external=true#writeEnvelope-gobblin.stream.RecordEnvelope-" title="class or interface in gobblin.writer">writeEnvelope</a></code></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ============ FIELD DETAIL =========== -->
<ul class="blockList">
<li class="blockList"><a name="field.detail">
<!-- -->
</a>
<h3>Field Detail</h3>
<a name="log">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>log</h4>
<pre>protected final&nbsp;org.slf4j.Logger log</pre>
</li>
</ul>
<a name="debugLogEnabled">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>debugLogEnabled</h4>
<pre>protected final&nbsp;boolean debugLogEnabled</pre>
</li>
</ul>
<a name="client">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>client</h4>
<pre>protected final&nbsp;org.apache.http.impl.client.CloseableHttpClient client</pre>
</li>
</ul>
<a name="closer">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>closer</h4>
<pre>protected final&nbsp;<a href="http://google.github.io/guava/releases/15.0/api/docs/com/google/common/io/Closer.html?is-external=true" title="class or interface in com.google.common.io">Closer</a> closer</pre>
</li>
</ul>
<a name="WRITER_METRICS_UPDATER_INTERVAL">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>WRITER_METRICS_UPDATER_INTERVAL</h4>
<pre>public static final&nbsp;<a href="https://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> WRITER_METRICS_UPDATER_INTERVAL</pre>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../constant-values.html#gobblin.writer.http.AbstractHttpWriter.WRITER_METRICS_UPDATER_INTERVAL">Constant Field Values</a></dd>
</dl>
</li>
</ul>
<a name="DEFAULT_WRITER_METRICS_UPDATER_INTERVAL">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>DEFAULT_WRITER_METRICS_UPDATER_INTERVAL</h4>
<pre>public static final&nbsp;long DEFAULT_WRITER_METRICS_UPDATER_INTERVAL</pre>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../constant-values.html#gobblin.writer.http.AbstractHttpWriter.DEFAULT_WRITER_METRICS_UPDATER_INTERVAL">Constant Field Values</a></dd>
</dl>
</li>
</ul>
</li>
</ul>
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor.detail">
<!-- -->
</a>
<h3>Constructor Detail</h3>
<a name="AbstractHttpWriter-gobblin.writer.http.AbstractHttpWriterBuilder-">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>AbstractHttpWriter</h4>
<pre>public&nbsp;AbstractHttpWriter(<a href="../../../gobblin/writer/http/AbstractHttpWriterBuilder.html" title="class in gobblin.writer.http">AbstractHttpWriterBuilder</a>&nbsp;builder)</pre>
</li>
</ul>
</li>
</ul>
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method.detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a name="cleanup--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>cleanup</h4>
<pre>public&nbsp;void&nbsp;cleanup()
throws <a href="https://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="http://linkedin.github.io/gobblin/javadoc/0.11.0/gobblin-api/gobblin/writer/DataWriter.html?is-external=true#cleanup--" title="class or interface in gobblin.writer">cleanup</a></code>&nbsp;in interface&nbsp;<code><a href="http://linkedin.github.io/gobblin/javadoc/0.11.0/gobblin-api/gobblin/writer/DataWriter.html?is-external=true" title="class or interface in gobblin.writer">DataWriter</a>&lt;<a href="../../../gobblin/writer/http/AbstractHttpWriter.html" title="type parameter in AbstractHttpWriter">D</a>&gt;</code></dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
</dl>
</li>
</ul>
<a name="close--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>close</h4>
<pre>public&nbsp;void&nbsp;close()
throws <a href="https://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/7/docs/api/java/io/Closeable.html?is-external=true#close--" title="class or interface in java.io">close</a></code>&nbsp;in interface&nbsp;<code><a href="https://docs.oracle.com/javase/7/docs/api/java/io/Closeable.html?is-external=true" title="class or interface in java.io">Closeable</a></code></dd>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/7/docs/api/java/lang/AutoCloseable.html?is-external=true#close--" title="class or interface in java.lang">close</a></code>&nbsp;in interface&nbsp;<code><a href="https://docs.oracle.com/javase/7/docs/api/java/lang/AutoCloseable.html?is-external=true" title="class or interface in java.lang">AutoCloseable</a></code></dd>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="http://linkedin.github.io/gobblin/javadoc/0.11.0/gobblin-core-base/gobblin/instrumented/writer/InstrumentedDataWriter.html?is-external=true#close--" title="class or interface in gobblin.instrumented.writer">close</a></code>&nbsp;in class&nbsp;<code><a href="http://linkedin.github.io/gobblin/javadoc/0.11.0/gobblin-core-base/gobblin/instrumented/writer/InstrumentedDataWriter.html?is-external=true" title="class or interface in gobblin.instrumented.writer">InstrumentedDataWriter</a>&lt;<a href="../../../gobblin/writer/http/AbstractHttpWriter.html" title="type parameter in AbstractHttpWriter">D</a>&gt;</code></dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
</dl>
</li>
</ul>
<a name="recordsWritten--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>recordsWritten</h4>
<pre>public&nbsp;long&nbsp;recordsWritten()</pre>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="http://linkedin.github.io/gobblin/javadoc/0.11.0/gobblin-api/gobblin/writer/DataWriter.html?is-external=true#recordsWritten--" title="class or interface in gobblin.writer">recordsWritten</a></code>&nbsp;in interface&nbsp;<code><a href="http://linkedin.github.io/gobblin/javadoc/0.11.0/gobblin-api/gobblin/writer/DataWriter.html?is-external=true" title="class or interface in gobblin.writer">DataWriter</a>&lt;<a href="../../../gobblin/writer/http/AbstractHttpWriter.html" title="type parameter in AbstractHttpWriter">D</a>&gt;</code></dd>
</dl>
</li>
</ul>
<a name="bytesWritten--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>bytesWritten</h4>
<pre>public&nbsp;long&nbsp;bytesWritten()
throws <a href="https://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="http://linkedin.github.io/gobblin/javadoc/0.11.0/gobblin-api/gobblin/writer/DataWriter.html?is-external=true#bytesWritten--" title="class or interface in gobblin.writer">bytesWritten</a></code>&nbsp;in interface&nbsp;<code><a href="http://linkedin.github.io/gobblin/javadoc/0.11.0/gobblin-api/gobblin/writer/DataWriter.html?is-external=true" title="class or interface in gobblin.writer">DataWriter</a>&lt;<a href="../../../gobblin/writer/http/AbstractHttpWriter.html" title="type parameter in AbstractHttpWriter">D</a>&gt;</code></dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
</dl>
</li>
</ul>
<a name="writeImpl-java.lang.Object-">
<!-- -->
</a><a name="writeImpl-D-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>writeImpl</h4>
<pre>public&nbsp;void&nbsp;writeImpl(<a href="../../../gobblin/writer/http/AbstractHttpWriter.html" title="type parameter in AbstractHttpWriter">D</a>&nbsp;record)
throws <a href="https://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
<div class="block">Send and process the request. If it's a retry request, skip onNewRecord method call and go straight sending request.
</div>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
</dl>
</li>
</ul>
<a name="commit--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>commit</h4>
<pre>public&nbsp;void&nbsp;commit()
throws <a href="https://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
<div class="block">Prior to commit, it will invoke flush method to flush any remaining item if writer uses batch
</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="http://linkedin.github.io/gobblin/javadoc/0.11.0/gobblin-api/gobblin/writer/DataWriter.html?is-external=true#commit--" title="class or interface in gobblin.writer">commit</a></code>&nbsp;in interface&nbsp;<code><a href="http://linkedin.github.io/gobblin/javadoc/0.11.0/gobblin-api/gobblin/writer/DataWriter.html?is-external=true" title="class or interface in gobblin.writer">DataWriter</a>&lt;<a href="../../../gobblin/writer/http/AbstractHttpWriter.html" title="type parameter in AbstractHttpWriter">D</a>&gt;</code></dd>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="http://linkedin.github.io/gobblin/javadoc/0.11.0/gobblin-core-base/gobblin/instrumented/writer/InstrumentedDataWriter.html?is-external=true#commit--" title="class or interface in gobblin.instrumented.writer">commit</a></code>&nbsp;in class&nbsp;<code><a href="http://linkedin.github.io/gobblin/javadoc/0.11.0/gobblin-core-base/gobblin/instrumented/writer/InstrumentedDataWriter.html?is-external=true" title="class or interface in gobblin.instrumented.writer">InstrumentedDataWriter</a>&lt;<a href="../../../gobblin/writer/http/AbstractHttpWriter.html" title="type parameter in AbstractHttpWriter">D</a>&gt;</code></dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><code>InstrumentedDataWriterBase.commit()</code></dd>
</dl>
</li>
</ul>
<a name="flush--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>flush</h4>
<pre>public&nbsp;void&nbsp;flush()</pre>
<div class="block">If writer supports batch, override this method.
(Be aware of failure and retry as flush can be called multiple times in case of failure @see SalesforceRestWriter )</div>
</li>
</ul>
<a name="sendRequest-org.apache.http.client.methods.HttpUriRequest-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>sendRequest</h4>
<pre>public&nbsp;<a href="http://google.github.io/guava/releases/15.0/api/docs/com/google/common/util/concurrent/ListenableFuture.html?is-external=true" title="class or interface in com.google.common.util.concurrent">ListenableFuture</a>&lt;org.apache.http.client.methods.CloseableHttpResponse&gt;&nbsp;sendRequest(org.apache.http.client.methods.HttpUriRequest&nbsp;request)
throws <a href="https://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
<div class="block">Sends request using single thread pool so that it can be easily terminated(use case: time out)
An extension point to send the actual request to the remote server.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../gobblin/writer/http/HttpWriterDecoration.html#sendRequest-org.apache.http.client.methods.HttpUriRequest-">sendRequest</a></code>&nbsp;in interface&nbsp;<code><a href="../../../gobblin/writer/http/HttpWriterDecoration.html" title="interface in gobblin.writer.http">HttpWriterDecoration</a>&lt;<a href="../../../gobblin/writer/http/AbstractHttpWriter.html" title="type parameter in AbstractHttpWriter">D</a>&gt;</code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>request</code> - the request to be sent</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>a future that allows access to the response. Response may be retrieved synchronously or
asynchronously.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../gobblin/writer/http/HttpWriterDecoration.html#sendRequest-org.apache.http.client.methods.HttpUriRequest-"><code>HttpWriterDecoration.sendRequest(org.apache.http.client.methods.HttpUriRequest)</code></a></dd>
</dl>
</li>
</ul>
<a name="isRetry--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isRetry</h4>
<pre>public&nbsp;boolean&nbsp;isRetry()</pre>
<div class="block">Checks if it's retry request.
All successful request should make currentRequest absent. If currentRequest still exists, it means there was a failure.
There's couple of methods need this indicator such as onNewRecord, since it is not a new record.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>true if current request it holds is retry.</dd>
</dl>
</li>
</ul>
<a name="waitForResponse-com.google.common.util.concurrent.ListenableFuture-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>waitForResponse</h4>
<pre>public&nbsp;org.apache.http.client.methods.CloseableHttpResponse&nbsp;waitForResponse(<a href="http://google.github.io/guava/releases/15.0/api/docs/com/google/common/util/concurrent/ListenableFuture.html?is-external=true" title="class or interface in com.google.common.util.concurrent">ListenableFuture</a>&lt;org.apache.http.client.methods.CloseableHttpResponse&gt;&nbsp;responseFuture)</pre>
<div class="block">Default implementation is to use HttpClients socket timeout which is waiting based on elapsed time between
last packet sent from client till receive it from server.
Customize the waiting for an HTTP response. Can add timeout logic.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../gobblin/writer/http/HttpWriterDecoration.html#waitForResponse-com.google.common.util.concurrent.ListenableFuture-">waitForResponse</a></code>&nbsp;in interface&nbsp;<code><a href="../../../gobblin/writer/http/HttpWriterDecoration.html" title="interface in gobblin.writer.http">HttpWriterDecoration</a>&lt;<a href="../../../gobblin/writer/http/AbstractHttpWriter.html" title="type parameter in AbstractHttpWriter">D</a>&gt;</code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>responseFuture</code> - the future object of the last sent request</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../gobblin/writer/http/HttpWriterDecoration.html#waitForResponse-com.google.common.util.concurrent.ListenableFuture-"><code>HttpWriterDecoration.waitForResponse(com.google.common.util.concurrent.ListenableFuture)</code></a></dd>
</dl>
</li>
</ul>
<a name="processResponse-org.apache.http.client.methods.CloseableHttpResponse-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>processResponse</h4>
<pre>public&nbsp;void&nbsp;processResponse(org.apache.http.client.methods.CloseableHttpResponse&nbsp;response)
throws <a href="https://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>,
<a href="../../../gobblin/writer/http/UnexpectedResponseException.html" title="class in gobblin.writer.http">UnexpectedResponseException</a></pre>
<div class="block">Default implementation where any status code equal to or greater than 400 is regarded as a failure.
Processes the response</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../gobblin/writer/http/HttpWriterDecoration.html#processResponse-org.apache.http.client.methods.CloseableHttpResponse-">processResponse</a></code>&nbsp;in interface&nbsp;<code><a href="../../../gobblin/writer/http/HttpWriterDecoration.html" title="interface in gobblin.writer.http">HttpWriterDecoration</a>&lt;<a href="../../../gobblin/writer/http/AbstractHttpWriter.html" title="type parameter in AbstractHttpWriter">D</a>&gt;</code></dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code> - if there was a problem reading the response</dd>
<dd><code><a href="../../../gobblin/writer/http/UnexpectedResponseException.html" title="class in gobblin.writer.http">UnexpectedResponseException</a></code> - if the response was unexpected</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><code>gobblin.writer.http.HttpWriterDecoration#processResponse(org.apache.http.HttpResponse)</code></dd>
</dl>
</li>
</ul>
<a name="getLog--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getLog</h4>
<pre>public&nbsp;org.slf4j.Logger&nbsp;getLog()</pre>
</li>
</ul>
<a name="getCurServerHost--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getCurServerHost</h4>
<pre>public&nbsp;<a href="https://docs.oracle.com/javase/7/docs/api/java/net/URI.html?is-external=true" title="class or interface in java.net">URI</a>&nbsp;getCurServerHost()</pre>
</li>
</ul>
<a name="regenerateMetrics--">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>regenerateMetrics</h4>
<pre>protected&nbsp;void&nbsp;regenerateMetrics()</pre>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
<!-- ========= END OF CLASS DATA ========= -->
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar.bottom">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.bottom.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../index-all.html">Index</a></li>
<li><a href="../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li>Prev&nbsp;Class</li>
<li><a href="../../../gobblin/writer/http/AbstractHttpWriterBuilder.html" title="class in gobblin.writer.http"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../index.html?gobblin/writer/http/AbstractHttpWriter.html" target="_top">Frames</a></li>
<li><a href="AbstractHttpWriter.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_bottom");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</body>
</html>