You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@thrift.apache.org by bu...@apache.org on 2014/03/22 19:57:04 UTC
svn commit: r902914 [8/14] - in /websites/staging/thrift/trunk/content: ./
tutorial/
Modified: websites/staging/thrift/trunk/content/tutorial/java.html
==============================================================================
--- websites/staging/thrift/trunk/content/tutorial/java.html (original)
+++ websites/staging/thrift/trunk/content/tutorial/java.html Sat Mar 22 18:57:03 2014
@@ -87,192 +87,189 @@
</ol>
<h3 id="prerequisites">Prerequisites</h3>
<h3 id="client">Client</h3>
-<div class="codehilite"><pre> <span class="p">:::</span><span class="n">java</span>
-<span class="n">import</span> <span class="n">tutorial</span><span class="o">.*</span><span class="p">;</span>
-<span class="n">import</span> <span class="n">shared</span><span class="o">.*</span><span class="p">;</span>
-
-<span class="n">import</span> <span class="n">org</span><span class="p">.</span><span class="n">apache</span><span class="p">.</span><span class="n">thrift</span><span class="p">.</span><span class="n">TException</span><span class="p">;</span>
-<span class="n">import</span> <span class="n">org</span><span class="p">.</span><span class="n">apache</span><span class="p">.</span><span class="n">thrift</span><span class="p">.</span><span class="n">transport</span><span class="p">.</span><span class="n">TSSLTransportFactory</span><span class="p">;</span>
-<span class="n">import</span> <span class="n">org</span><span class="p">.</span><span class="n">apache</span><span class="p">.</span><span class="n">thrift</span><span class="p">.</span><span class="n">transport</span><span class="p">.</span><span class="n">TTransport</span><span class="p">;</span>
-<span class="n">import</span> <span class="n">org</span><span class="p">.</span><span class="n">apache</span><span class="p">.</span><span class="n">thrift</span><span class="p">.</span><span class="n">transport</span><span class="p">.</span><span class="n">TSocket</span><span class="p">;</span>
-<span class="n">import</span> <span class="n">org</span><span class="p">.</span><span class="n">apache</span><span class="p">.</span><span class="n">thrift</span><span class="p">.</span><span class="n">transport</span><span class="p">.</span><span class="n">TSSLTransportFactory</span><span class="p">.</span><span class="n">TSSLTransportParameters</span><span class="p">;</span>
-<span class="n">import</span> <span class="n">org</span><span class="p">.</span><span class="n">apache</span><span class="p">.</span><span class="n">thrift</span><span class="p">.</span><span class="n">protocol</span><span class="p">.</span><span class="n">TBinaryProtocol</span><span class="p">;</span>
-<span class="n">import</span> <span class="n">org</span><span class="p">.</span><span class="n">apache</span><span class="p">.</span><span class="n">thrift</span><span class="p">.</span><span class="n">protocol</span><span class="p">.</span><span class="n">TProtocol</span><span class="p">;</span>
-
-<span class="n">public</span> <span class="n">class</span> <span class="n">JavaClient</span> <span class="p">{</span>
- <span class="n">public</span> <span class="n">static</span> <span class="n">void</span> <span class="n">main</span><span class="p">(</span><span class="n">String</span> <span class="p">[]</span> <span class="n">args</span><span class="p">)</span> <span class="p">{</span>
-
- <span class="k">if</span> <span class="p">(</span><span class="n">args</span><span class="p">.</span><span class="nb">length</span> !<span class="p">=</span> 1<span class="p">)</span> <span class="p">{</span>
- <span class="n">System</span><span class="p">.</span><span class="n">out</span><span class="p">.</span><span class="n">println</span><span class="p">(</span><span class="o">&</span><span class="n">quot</span><span class="p">;</span><span class="n">Please</span> <span class="n">enter</span> <span class="o">&</span>#39<span class="p">;</span><span class="n">simple</span><span class="o">&</span>#39<span class="p">;</span> <span class="n">or</span> <span class="o">&</span>#39<span class="p">;</span><span class="n">secure</span><span class="o">&</span>#39<span class="p">;</span><span class="o">&</span><span class="n">quot</span><span class="p">;);</span>
- <span class="n">System</span><span class="p">.</span><span class="n">exit</span><span class="p">(</span>0<span class="p">);</span>
- <span class="p">}</span>
-
- <span class="k">try</span> <span class="p">{</span>
- <span class="n">TTransport</span> <span class="n">transport</span><span class="p">;</span>
- <span class="k">if</span> <span class="p">(</span><span class="n">args</span><span class="p">[</span>0<span class="p">].</span><span class="n">contains</span><span class="p">(</span><span class="o">&</span><span class="n">quot</span><span class="p">;</span><span class="n">simple</span><span class="o">&</span><span class="n">quot</span><span class="p">;))</span> <span class="p">{</span>
- <span class="n">transport</span> <span class="p">=</span> <span class="n">new</span> <span class="n">TSocket</span><span class="p">(</span><span class="o">&</span><span class="n">quot</span><span class="p">;</span><span class="n">localhost</span><span class="o">&</span><span class="n">quot</span><span class="p">;,</span> 9090<span class="p">);</span>
- <span class="n">transport</span><span class="p">.</span><span class="n">open</span><span class="p">();</span>
- <span class="p">}</span>
- <span class="k">else</span> <span class="p">{</span>
- <span class="o">/*</span>
- <span class="o">*</span> <span class="n">Similar</span> <span class="n">to</span> <span class="n">the</span> <span class="n">server</span><span class="p">,</span> <span class="n">you</span> <span class="n">can</span> <span class="n">use</span> <span class="n">the</span> <span class="n">parameters</span> <span class="n">to</span> <span class="n">setup</span> <span class="n">client</span> <span class="n">parameters</span> <span class="n">or</span>
- <span class="o">*</span> <span class="n">use</span> <span class="n">the</span> <span class="n">default</span> <span class="n">settings</span><span class="p">.</span> <span class="n">On</span> <span class="n">the</span> <span class="n">client</span> <span class="n">side</span><span class="p">,</span> <span class="n">you</span> <span class="n">will</span> <span class="n">need</span> <span class="n">a</span> <span class="n">TrustStore</span> <span class="n">which</span>
- <span class="o">*</span> <span class="n">contains</span> <span class="n">the</span> <span class="n">trusted</span> <span class="n">certificate</span> <span class="n">along</span> <span class="n">with</span> <span class="n">the</span> <span class="n">public</span> <span class="n">key</span><span class="p">.</span>
- <span class="o">*</span> <span class="n">For</span> <span class="n">this</span> <span class="n">example</span> <span class="n">it</span><span class="o">&</span>#39<span class="p">;</span><span class="n">s</span> <span class="n">a</span> <span class="n">self</span><span class="o">-</span><span class="n">signed</span> <span class="n">cert</span><span class="p">.</span>
- <span class="o">*/</span>
- <span class="n">TSSLTransportParameters</span> <span class="n">params</span> <span class="p">=</span> <span class="n">new</span> <span class="n">TSSLTransportParameters</span><span class="p">();</span>
- <span class="n">params</span><span class="p">.</span><span class="n">setTrustStore</span><span class="p">(</span><span class="o">&</span><span class="n">quot</span><span class="p">;.</span><span class="o">./</span><span class="p">.</span><span class="o">./</span><span class="n">lib</span><span class="o">/</span><span class="n">java</span><span class="o">/</span><span class="n">test</span><span class="o">/</span><span class="p">.</span><span class="n">truststore</span><span class="o">&</span><span class="n">quot</span><span class="p">;,</span> <span class="o">&</span><span class="n">quot</span><span class="p">;</span><span class="n">thrift</span><span class="o">&</span><span class="n">quot</span><span class="p">;,</span> <span class="o">&</span><span class="n">quot</span><span class="p">;</span><span class="n">SunX509</span><span class="o">&</span><span class="n">quot</span><span class="p">;,</span> <span class="o">&</span><span class="n">quot</spa
n><span class="p">;</span><span class="n">JKS</span><span class="o">&</span><span class="n">quot</span><span class="p">;);</span>
- <span class="o">/*</span>
- <span class="o">*</span> <span class="n">Get</span> <span class="n">a</span> <span class="n">client</span> <span class="n">transport</span> <span class="n">instead</span> <span class="n">of</span> <span class="n">a</span> <span class="n">server</span> <span class="n">transport</span><span class="p">.</span> <span class="n">The</span> <span class="n">connection</span> <span class="n">is</span> <span class="n">opened</span> <span class="n">on</span>
- <span class="o">*</span> <span class="n">invocation</span> <span class="n">of</span> <span class="n">the</span> <span class="n">factory</span> <span class="n">method</span><span class="p">,</span> <span class="n">no</span> <span class="n">need</span> <span class="n">to</span> <span class="n">specifically</span> <span class="n">call</span> <span class="n">open</span><span class="p">()</span>
- <span class="o">*/</span>
- <span class="n">transport</span> <span class="p">=</span> <span class="n">TSSLTransportFactory</span><span class="p">.</span><span class="n">getClientSocket</span><span class="p">(</span><span class="o">&</span><span class="n">quot</span><span class="p">;</span><span class="n">localhost</span><span class="o">&</span><span class="n">quot</span><span class="p">;,</span> 9091<span class="p">,</span> 0<span class="p">,</span> <span class="n">params</span><span class="p">);</span>
- <span class="p">}</span>
-
- <span class="n">TProtocol</span> <span class="n">protocol</span> <span class="p">=</span> <span class="n">new</span> <span class="n">TBinaryProtocol</span><span class="p">(</span><span class="n">transport</span><span class="p">);</span>
- <span class="n">Calculator</span><span class="p">.</span><span class="n">Client</span> <span class="n">client</span> <span class="p">=</span> <span class="n">new</span> <span class="n">Calculator</span><span class="p">.</span><span class="n">Client</span><span class="p">(</span><span class="n">protocol</span><span class="p">);</span>
-
- <span class="n">perform</span><span class="p">(</span><span class="n">client</span><span class="p">);</span>
-
- <span class="n">transport</span><span class="p">.</span><span class="n">close</span><span class="p">();</span>
- <span class="p">}</span> <span class="k">catch</span> <span class="p">(</span><span class="n">TException</span> <span class="n">x</span><span class="p">)</span> <span class="p">{</span>
- <span class="n">x</span><span class="p">.</span><span class="n">printStackTrace</span><span class="p">();</span>
- <span class="p">}</span>
- <span class="p">}</span>
-
- <span class="n">private</span> <span class="n">static</span> <span class="n">void</span> <span class="n">perform</span><span class="p">(</span><span class="n">Calculator</span><span class="p">.</span><span class="n">Client</span> <span class="n">client</span><span class="p">)</span> <span class="n">throws</span> <span class="n">TException</span>
- <span class="p">{</span>
- <span class="n">client</span><span class="p">.</span><span class="n">ping</span><span class="p">();</span>
- <span class="n">System</span><span class="p">.</span><span class="n">out</span><span class="p">.</span><span class="n">println</span><span class="p">(</span><span class="o">&</span><span class="n">quot</span><span class="p">;</span><span class="n">ping</span><span class="p">()</span><span class="o">&</span><span class="n">quot</span><span class="p">;);</span>
-
- <span class="n">int</span> <span class="n">sum</span> <span class="p">=</span> <span class="n">client</span><span class="p">.</span><span class="n">add</span><span class="p">(</span>1<span class="p">,</span>1<span class="p">);</span>
- <span class="n">System</span><span class="p">.</span><span class="n">out</span><span class="p">.</span><span class="n">println</span><span class="p">(</span><span class="o">&</span><span class="n">quot</span><span class="p">;</span>1<span class="o">+</span>1<span class="p">=</span><span class="o">&</span><span class="n">quot</span><span class="p">;</span> <span class="o">+</span> <span class="n">sum</span><span class="p">);</span>
-
- <span class="n">Work</span> <span class="n">work</span> <span class="p">=</span> <span class="n">new</span> <span class="n">Work</span><span class="p">();</span>
-
- <span class="n">work</span><span class="p">.</span><span class="n">op</span> <span class="p">=</span> <span class="n">Operation</span><span class="p">.</span><span class="n">DIVIDE</span><span class="p">;</span>
- <span class="n">work</span><span class="p">.</span><span class="n">num1</span> <span class="p">=</span> 1<span class="p">;</span>
- <span class="n">work</span><span class="p">.</span><span class="n">num2</span> <span class="p">=</span> 0<span class="p">;</span>
- <span class="k">try</span> <span class="p">{</span>
- <span class="n">int</span> <span class="n">quotient</span> <span class="p">=</span> <span class="n">client</span><span class="p">.</span><span class="n">calculate</span><span class="p">(</span>1<span class="p">,</span> <span class="n">work</span><span class="p">);</span>
- <span class="n">System</span><span class="p">.</span><span class="n">out</span><span class="p">.</span><span class="n">println</span><span class="p">(</span><span class="o">&</span><span class="n">quot</span><span class="p">;</span><span class="n">Whoa</span> <span class="n">we</span> <span class="n">can</span> <span class="n">divide</span> <span class="n">by</span> 0<span class="o">&</span><span class="n">quot</span><span class="p">;);</span>
- <span class="p">}</span> <span class="k">catch</span> <span class="p">(</span><span class="n">InvalidOperation</span> <span class="n">io</span><span class="p">)</span> <span class="p">{</span>
- <span class="n">System</span><span class="p">.</span><span class="n">out</span><span class="p">.</span><span class="n">println</span><span class="p">(</span><span class="o">&</span><span class="n">quot</span><span class="p">;</span><span class="n">Invalid</span> <span class="n">operation</span><span class="p">:</span> <span class="o">&</span><span class="n">quot</span><span class="p">;</span> <span class="o">+</span> <span class="n">io</span><span class="p">.</span><span class="nb">why</span><span class="p">);</span>
- <span class="p">}</span>
-
- <span class="n">work</span><span class="p">.</span><span class="n">op</span> <span class="p">=</span> <span class="n">Operation</span><span class="p">.</span><span class="n">SUBTRACT</span><span class="p">;</span>
- <span class="n">work</span><span class="p">.</span><span class="n">num1</span> <span class="p">=</span> 15<span class="p">;</span>
- <span class="n">work</span><span class="p">.</span><span class="n">num2</span> <span class="p">=</span> 10<span class="p">;</span>
- <span class="k">try</span> <span class="p">{</span>
- <span class="n">int</span> <span class="n">diff</span> <span class="p">=</span> <span class="n">client</span><span class="p">.</span><span class="n">calculate</span><span class="p">(</span>1<span class="p">,</span> <span class="n">work</span><span class="p">);</span>
- <span class="n">System</span><span class="p">.</span><span class="n">out</span><span class="p">.</span><span class="n">println</span><span class="p">(</span><span class="o">&</span><span class="n">quot</span><span class="p">;</span>15<span class="o">-</span>10<span class="p">=</span><span class="o">&</span><span class="n">quot</span><span class="p">;</span> <span class="o">+</span> <span class="n">diff</span><span class="p">);</span>
- <span class="p">}</span> <span class="k">catch</span> <span class="p">(</span><span class="n">InvalidOperation</span> <span class="n">io</span><span class="p">)</span> <span class="p">{</span>
- <span class="n">System</span><span class="p">.</span><span class="n">out</span><span class="p">.</span><span class="n">println</span><span class="p">(</span><span class="o">&</span><span class="n">quot</span><span class="p">;</span><span class="n">Invalid</span> <span class="n">operation</span><span class="p">:</span> <span class="o">&</span><span class="n">quot</span><span class="p">;</span> <span class="o">+</span> <span class="n">io</span><span class="p">.</span><span class="nb">why</span><span class="p">);</span>
- <span class="p">}</span>
-
- <span class="n">SharedStruct</span> <span class="nb">log</span> <span class="p">=</span> <span class="n">client</span><span class="p">.</span><span class="n">getStruct</span><span class="p">(</span>1<span class="p">);</span>
- <span class="n">System</span><span class="p">.</span><span class="n">out</span><span class="p">.</span><span class="n">println</span><span class="p">(</span><span class="o">&</span><span class="n">quot</span><span class="p">;</span><span class="n">Check</span> <span class="nb">log</span><span class="p">:</span> <span class="o">&</span><span class="n">quot</span><span class="p">;</span> <span class="o">+</span> <span class="nb">log</span><span class="p">.</span><span class="n">value</span><span class="p">);</span>
- <span class="p">}</span>
-<span class="p">}</span>
+<p><div class="codehilite"><pre><span class="kn">import</span> <span class="nn">tutorial.<em></span><span class="o">;</span>
+<span class="kn">import</span> <span class="nn">shared.</em></span><span class="o">;</span></p>
+<p><span class="kn">import</span> <span class="nn">org.apache.thrift.TException</span><span class="o">;</span>
+<span class="kn">import</span> <span class="nn">org.apache.thrift.transport.TSSLTransportFactory</span><span class="o">;</span>
+<span class="kn">import</span> <span class="nn">org.apache.thrift.transport.TTransport</span><span class="o">;</span>
+<span class="kn">import</span> <span class="nn">org.apache.thrift.transport.TSocket</span><span class="o">;</span>
+<span class="kn">import</span> <span class="nn">org.apache.thrift.transport.TSSLTransportFactory.TSSLTransportParameters</span><span class="o">;</span>
+<span class="kn">import</span> <span class="nn">org.apache.thrift.protocol.TBinaryProtocol</span><span class="o">;</span>
+<span class="kn">import</span> <span class="nn">org.apache.thrift.protocol.TProtocol</span><span class="o">;</span></p>
+<p><span class="kd">public</span> <span class="kd">class</span> <span class="nc">JavaClient</span> <span class="o">{</span>
+ <span class="kd">public</span> <span class="kd">static</span> <span class="kt">void</span> <span class="nf">main</span><span class="o">(</span><span class="n">String</span> <span class="o">[]</span> <span class="n">args</span><span class="o">)</span> <span class="o">{</span></p>
+<div class="codehilite"><pre><span class="nt"><span</span> <span class="na">class=</span><span class="s">"k"</span><span class="nt">></span>if<span class="nt"></span></span> <span class="nt"><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>(<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"n"</span><span class="nt">></span>args<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>.<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"na"</span><span class="nt">></span>length<span class="nt"></span></span> <span class="nt"><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>!=<span class="nt"></span></span> <span class="nt"><span</span> <sp
an class="na">class=</span><span class="s">"mi"</span><span class="nt">></span>1<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>)<span class="nt"></span></span> <span class="nt"><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>{<span class="nt"></span></span>
+ <span class="nt"><span</span> <span class="na">class=</span><span class="s">"n"</span><span class="nt">></span>System<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>.<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"na"</span><span class="nt">></span>out<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>.<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"na"</span><span class="nt">></span>println<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>(<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"s"</span><span class="nt">></span><span c
lass="ni">&quot;</span>Please enter <span class="ni">&#39;</span>simple<span class="ni">&#39;</span> or <span class="ni">&#39;</span>secure<span class="ni">&#39;&quot;</span><span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>);<span class="nt"></span></span>
+ <span class="nt"><span</span> <span class="na">class=</span><span class="s">"n"</span><span class="nt">></span>System<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>.<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"na"</span><span class="nt">></span>exit<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>(<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"mi"</span><span class="nt">></span>0<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>);<span class="nt"></span></span>
+<span class="nt"><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>}<span class="nt"></span></span>
+
+<span class="nt"><span</span> <span class="na">class=</span><span class="s">"k"</span><span class="nt">></span>try<span class="nt"></span></span> <span class="nt"><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>{<span class="nt"></span></span>
+ <span class="nt"><span</span> <span class="na">class=</span><span class="s">"n"</span><span class="nt">></span>TTransport<span class="nt"></span></span> <span class="nt"><span</span> <span class="na">class=</span><span class="s">"n"</span><span class="nt">></span>transport<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>;<span class="nt"></span></span>
+ <span class="nt"><span</span> <span class="na">class=</span><span class="s">"k"</span><span class="nt">></span>if<span class="nt"></span></span> <span class="nt"><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>(<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"n"</span><span class="nt">></span>args<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>[<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"mi"</span><span class="nt">></span>0<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>].<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"na"</span><span class="nt">&
gt;</span>contains<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>(<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"s"</span><span class="nt">></span><span class="ni">&quot;</span>simple<span class="ni">&quot;</span><span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>))<span class="nt"></span></span> <span class="nt"><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>{<span class="nt"></span></span>
+ <span class="nt"><span</span> <span class="na">class=</span><span class="s">"n"</span><span class="nt">></span>transport<span class="nt"></span></span> <span class="nt"><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>=<span class="nt"></span></span> <span class="nt"><span</span> <span class="na">class=</span><span class="s">"k"</span><span class="nt">></span>new<span class="nt"></span></span> <span class="nt"><span</span> <span class="na">class=</span><span class="s">"n"</span><span class="nt">></span>TSocket<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>(<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"s"</span><span class="nt">></span><span class="ni">&quot;</span>localhost<span class="ni">&quot;
</span><span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>,<span class="nt"></span></span> <span class="nt"><span</span> <span class="na">class=</span><span class="s">"mi"</span><span class="nt">></span>9090<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>);<span class="nt"></span></span>
+ <span class="nt"><span</span> <span class="na">class=</span><span class="s">"n"</span><span class="nt">></span>transport<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>.<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"na"</span><span class="nt">></span>open<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>();<span class="nt"></span></span>
+ <span class="nt"><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>}<span class="nt"></span></span>
+ <span class="nt"><span</span> <span class="na">class=</span><span class="s">"k"</span><span class="nt">></span>else<span class="nt"></span></span> <span class="nt"><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>{<span class="nt"></span></span>
+ <span class="nt"><span</span> <span class="na">class=</span><span class="s">"cm"</span><span class="nt">></span>/*<span class="nt"></span></span>
</pre></div>
+<p><span class="cm"> * Similar to the server, you can use the parameters to setup client parameters or</span>
+<span class="cm"> * use the default settings. On the client side, you will need a TrustStore which</span>
+<span class="cm"> * contains the trusted certificate along with the public key. </span>
+<span class="cm"> * For this example it's a self-signed cert. </span>
+<span class="cm"> <em>/</span>
+ <span class="n">TSSLTransportParameters</span> <span class="n">params</span> <span class="o">=</span> <span class="k">new</span> <span class="n">TSSLTransportParameters</span><span class="o">();</span>
+ <span class="n">params</span><span class="o">.</span><span class="na">setTrustStore</span><span class="o">(</span><span class="s">"../../lib/java/test/.truststore"</span><span class="o">,</span> <span class="s">"thrift"</span><span class="o">,</span> <span class="s">"SunX509"</span><span class="o">,</span> <span class="s">"JKS"</span><span class="o">);</span>
+ <span class="cm">/</em></span>
+<span class="cm"> * Get a client transport instead of a server transport. The connection is opened on</span>
+<span class="cm"> * invocation of the factory method, no need to specifically call open()</span>
+<span class="cm"> */</span>
+ <span class="n">transport</span> <span class="o">=</span> <span class="n">TSSLTransportFactory</span><span class="o">.</span><span class="na">getClientSocket</span><span class="o">(</span><span class="s">"localhost"</span><span class="o">,</span> <span class="mi">9091</span><span class="o">,</span> <span class="mi">0</span><span class="o">,</span> <span class="n">params</span><span class="o">);</span>
+ <span class="o">}</span></p>
+<div class="codehilite"><pre> <span class="nt"><span</span> <span class="na">class=</span><span class="s">"n"</span><span class="nt">></span>TProtocol<span class="nt"></span></span> <span class="nt"><span</span> <span class="na">class=</span><span class="s">"n"</span><span class="nt">></span>protocol<span class="nt"></span></span> <span class="nt"><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>=<span class="nt"></span></span> <span class="nt"><span</span> <span class="na">class=</span><span class="s">"k"</span><span class="nt">></span>new<span class="nt"></span></span> <span class="nt"><span</span> <span class="na">class=</span><span class="s">"n"</span><span class="nt">></span>TBinaryProtocol<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>(<
span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"n"</span><span class="nt">></span>transport<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>);<span class="nt"></span></span>
+ <span class="nt"><span</span> <span class="na">class=</span><span class="s">"n"</span><span class="nt">></span>Calculator<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>.<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"na"</span><span class="nt">></span>Client<span class="nt"></span></span> <span class="nt"><span</span> <span class="na">class=</span><span class="s">"n"</span><span class="nt">></span>client<span class="nt"></span></span> <span class="nt"><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>=<span class="nt"></span></span> <span class="nt"><span</span> <span class="na">class=</span><span class="s">"k"</span><span class="nt">></span>new<span class="nt"></span></span> <span class="nt"><span</
span> <span class="na">class=</span><span class="s">"n"</span><span class="nt">></span>Calculator<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>.<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"na"</span><span class="nt">></span>Client<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>(<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"n"</span><span class="nt">></span>protocol<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>);<span class="nt"></span></span>
+
+ <span class="nt"><span</span> <span class="na">class=</span><span class="s">"n"</span><span class="nt">></span>perform<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>(<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"n"</span><span class="nt">></span>client<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>);<span class="nt"></span></span>
+
+ <span class="nt"><span</span> <span class="na">class=</span><span class="s">"n"</span><span class="nt">></span>transport<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>.<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"na"</span><span class="nt">></span>close<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>();<span class="nt"></span></span>
+<span class="nt"><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>}<span class="nt"></span></span> <span class="nt"><span</span> <span class="na">class=</span><span class="s">"k"</span><span class="nt">></span>catch<span class="nt"></span></span> <span class="nt"><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>(<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"n"</span><span class="nt">></span>TException<span class="nt"></span></span> <span class="nt"><span</span> <span class="na">class=</span><span class="s">"n"</span><span class="nt">></span>x<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>)<span class="nt"></span></span> <span class="nt"><span</span> <span
class="na">class=</span><span class="s">"o"</span><span class="nt">></span>{<span class="nt"></span></span>
+ <span class="nt"><span</span> <span class="na">class=</span><span class="s">"n"</span><span class="nt">></span>x<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>.<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"na"</span><span class="nt">></span>printStackTrace<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>();<span class="nt"></span></span>
+<span class="nt"><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>}<span class="nt"></span></span>
+</pre></div>
+
+
+<p><span class="o">}</span></p>
+<p><span class="kd">private</span> <span class="kd">static</span> <span class="kt">void</span> <span class="nf">perform</span><span class="o">(</span><span class="n">Calculator</span><span class="o">.</span><span class="na">Client</span> <span class="n">client</span><span class="o">)</span> <span class="kd">throws</span> <span class="n">TException</span>
+ <span class="o">{</span>
+ <span class="n">client</span><span class="o">.</span><span class="na">ping</span><span class="o">();</span>
+ <span class="n">System</span><span class="o">.</span><span class="na">out</span><span class="o">.</span><span class="na">println</span><span class="o">(</span><span class="s">"ping()"</span><span class="o">);</span></p>
+<div class="codehilite"><pre><span class="nt"><span</span> <span class="na">class=</span><span class="s">"kt"</span><span class="nt">></span>int<span class="nt"></span></span> <span class="nt"><span</span> <span class="na">class=</span><span class="s">"n"</span><span class="nt">></span>sum<span class="nt"></span></span> <span class="nt"><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>=<span class="nt"></span></span> <span class="nt"><span</span> <span class="na">class=</span><span class="s">"n"</span><span class="nt">></span>client<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>.<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"na"</span><span class="nt">></span>add<span class="nt"></span><span</span> <
span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>(<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"mi"</span><span class="nt">></span>1<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>,<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"mi"</span><span class="nt">></span>1<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>);<span class="nt"></span></span>
+<span class="nt"><span</span> <span class="na">class=</span><span class="s">"n"</span><span class="nt">></span>System<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>.<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"na"</span><span class="nt">></span>out<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>.<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"na"</span><span class="nt">></span>println<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>(<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"s"</span><span class="nt">></span><span cla
ss="ni">&quot;</span>1+1=<span class="ni">&quot;</span><span class="nt"></span></span> <span class="nt"><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>+<span class="nt"></span></span> <span class="nt"><span</span> <span class="na">class=</span><span class="s">"n"</span><span class="nt">></span>sum<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>);<span class="nt"></span></span>
+
+<span class="nt"><span</span> <span class="na">class=</span><span class="s">"n"</span><span class="nt">></span>Work<span class="nt"></span></span> <span class="nt"><span</span> <span class="na">class=</span><span class="s">"n"</span><span class="nt">></span>work<span class="nt"></span></span> <span class="nt"><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>=<span class="nt"></span></span> <span class="nt"><span</span> <span class="na">class=</span><span class="s">"k"</span><span class="nt">></span>new<span class="nt"></span></span> <span class="nt"><span</span> <span class="na">class=</span><span class="s">"n"</span><span class="nt">></span>Work<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>();<span class="nt"></span></span>
+
+<span class="nt"><span</span> <span class="na">class=</span><span class="s">"n"</span><span class="nt">></span>work<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>.<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"na"</span><span class="nt">></span>op<span class="nt"></span></span> <span class="nt"><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>=<span class="nt"></span></span> <span class="nt"><span</span> <span class="na">class=</span><span class="s">"n"</span><span class="nt">></span>Operation<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>.<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"na&
quot;</span><span class="nt">></span>DIVIDE<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>;<span class="nt"></span></span>
+<span class="nt"><span</span> <span class="na">class=</span><span class="s">"n"</span><span class="nt">></span>work<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>.<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"na"</span><span class="nt">></span>num1<span class="nt"></span></span> <span class="nt"><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>=<span class="nt"></span></span> <span class="nt"><span</span> <span class="na">class=</span><span class="s">"mi"</span><span class="nt">></span>1<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>;<span class="nt"></span></span>
+<span class="nt"><span</span> <span class="na">class=</span><span class="s">"n"</span><span class="nt">></span>work<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>.<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"na"</span><span class="nt">></span>num2<span class="nt"></span></span> <span class="nt"><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>=<span class="nt"></span></span> <span class="nt"><span</span> <span class="na">class=</span><span class="s">"mi"</span><span class="nt">></span>0<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>;<span class="nt"></span></span>
+<span class="nt"><span</span> <span class="na">class=</span><span class="s">"k"</span><span class="nt">></span>try<span class="nt"></span></span> <span class="nt"><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>{<span class="nt"></span></span>
+ <span class="nt"><span</span> <span class="na">class=</span><span class="s">"kt"</span><span class="nt">></span>int<span class="nt"></span></span> <span class="nt"><span</span> <span class="na">class=</span><span class="s">"n"</span><span class="nt">></span>quotient<span class="nt"></span></span> <span class="nt"><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>=<span class="nt"></span></span> <span class="nt"><span</span> <span class="na">class=</span><span class="s">"n"</span><span class="nt">></span>client<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>.<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"na"</span><span class="nt">></span>calculate<span class="nt"></span><span</span> <span class="na">
class=</span><span class="s">"o"</span><span class="nt">></span>(<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"mi"</span><span class="nt">></span>1<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>,<span class="nt"></span></span> <span class="nt"><span</span> <span class="na">class=</span><span class="s">"n"</span><span class="nt">></span>work<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>);<span class="nt"></span></span>
+ <span class="nt"><span</span> <span class="na">class=</span><span class="s">"n"</span><span class="nt">></span>System<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>.<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"na"</span><span class="nt">></span>out<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>.<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"na"</span><span class="nt">></span>println<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>(<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"s"</span><span class="nt">></span><span c
lass="ni">&quot;</span>Whoa we can divide by 0<span class="ni">&quot;</span><span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>);<span class="nt"></span></span>
+<span class="nt"><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>}<span class="nt"></span></span> <span class="nt"><span</span> <span class="na">class=</span><span class="s">"k"</span><span class="nt">></span>catch<span class="nt"></span></span> <span class="nt"><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>(<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"n"</span><span class="nt">></span>InvalidOperation<span class="nt"></span></span> <span class="nt"><span</span> <span class="na">class=</span><span class="s">"n"</span><span class="nt">></span>io<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>)<span class="nt"></span></span> <span class="nt"><span</span
> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>{<span class="nt"></span></span>
+ <span class="nt"><span</span> <span class="na">class=</span><span class="s">"n"</span><span class="nt">></span>System<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>.<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"na"</span><span class="nt">></span>out<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>.<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"na"</span><span class="nt">></span>println<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>(<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"s"</span><span class="nt">></span><span c
lass="ni">&quot;</span>Invalid operation: <span class="ni">&quot;</span><span class="nt"></span></span> <span class="nt"><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>+<span class="nt"></span></span> <span class="nt"><span</span> <span class="na">class=</span><span class="s">"n"</span><span class="nt">></span>io<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>.<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"na"</span><span class="nt">></span>why<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>);<span class="nt"></span></span>
+<span class="nt"><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>}<span class="nt"></span></span>
+
+<span class="nt"><span</span> <span class="na">class=</span><span class="s">"n"</span><span class="nt">></span>work<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>.<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"na"</span><span class="nt">></span>op<span class="nt"></span></span> <span class="nt"><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>=<span class="nt"></span></span> <span class="nt"><span</span> <span class="na">class=</span><span class="s">"n"</span><span class="nt">></span>Operation<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>.<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"na&
quot;</span><span class="nt">></span>SUBTRACT<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>;<span class="nt"></span></span>
+<span class="nt"><span</span> <span class="na">class=</span><span class="s">"n"</span><span class="nt">></span>work<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>.<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"na"</span><span class="nt">></span>num1<span class="nt"></span></span> <span class="nt"><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>=<span class="nt"></span></span> <span class="nt"><span</span> <span class="na">class=</span><span class="s">"mi"</span><span class="nt">></span>15<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>;<span class="nt"></span></span>
+<span class="nt"><span</span> <span class="na">class=</span><span class="s">"n"</span><span class="nt">></span>work<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>.<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"na"</span><span class="nt">></span>num2<span class="nt"></span></span> <span class="nt"><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>=<span class="nt"></span></span> <span class="nt"><span</span> <span class="na">class=</span><span class="s">"mi"</span><span class="nt">></span>10<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>;<span class="nt"></span></span>
+<span class="nt"><span</span> <span class="na">class=</span><span class="s">"k"</span><span class="nt">></span>try<span class="nt"></span></span> <span class="nt"><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>{<span class="nt"></span></span>
+ <span class="nt"><span</span> <span class="na">class=</span><span class="s">"kt"</span><span class="nt">></span>int<span class="nt"></span></span> <span class="nt"><span</span> <span class="na">class=</span><span class="s">"n"</span><span class="nt">></span>diff<span class="nt"></span></span> <span class="nt"><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>=<span class="nt"></span></span> <span class="nt"><span</span> <span class="na">class=</span><span class="s">"n"</span><span class="nt">></span>client<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>.<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"na"</span><span class="nt">></span>calculate<span class="nt"></span><span</span> <span class="na">clas
s=</span><span class="s">"o"</span><span class="nt">></span>(<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"mi"</span><span class="nt">></span>1<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>,<span class="nt"></span></span> <span class="nt"><span</span> <span class="na">class=</span><span class="s">"n"</span><span class="nt">></span>work<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>);<span class="nt"></span></span>
+ <span class="nt"><span</span> <span class="na">class=</span><span class="s">"n"</span><span class="nt">></span>System<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>.<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"na"</span><span class="nt">></span>out<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>.<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"na"</span><span class="nt">></span>println<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>(<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"s"</span><span class="nt">></span><span c
lass="ni">&quot;</span>15-10=<span class="ni">&quot;</span><span class="nt"></span></span> <span class="nt"><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>+<span class="nt"></span></span> <span class="nt"><span</span> <span class="na">class=</span><span class="s">"n"</span><span class="nt">></span>diff<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>);<span class="nt"></span></span>
+<span class="nt"><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>}<span class="nt"></span></span> <span class="nt"><span</span> <span class="na">class=</span><span class="s">"k"</span><span class="nt">></span>catch<span class="nt"></span></span> <span class="nt"><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>(<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"n"</span><span class="nt">></span>InvalidOperation<span class="nt"></span></span> <span class="nt"><span</span> <span class="na">class=</span><span class="s">"n"</span><span class="nt">></span>io<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>)<span class="nt"></span></span> <span class="nt"><span</span
> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>{<span class="nt"></span></span>
+ <span class="nt"><span</span> <span class="na">class=</span><span class="s">"n"</span><span class="nt">></span>System<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>.<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"na"</span><span class="nt">></span>out<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>.<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"na"</span><span class="nt">></span>println<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>(<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"s"</span><span class="nt">></span><span c
lass="ni">&quot;</span>Invalid operation: <span class="ni">&quot;</span><span class="nt"></span></span> <span class="nt"><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>+<span class="nt"></span></span> <span class="nt"><span</span> <span class="na">class=</span><span class="s">"n"</span><span class="nt">></span>io<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>.<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"na"</span><span class="nt">></span>why<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>);<span class="nt"></span></span>
+<span class="nt"><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>}<span class="nt"></span></span>
+
+<span class="nt"><span</span> <span class="na">class=</span><span class="s">"n"</span><span class="nt">></span>SharedStruct<span class="nt"></span></span> <span class="nt"><span</span> <span class="na">class=</span><span class="s">"n"</span><span class="nt">></span>log<span class="nt"></span></span> <span class="nt"><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>=<span class="nt"></span></span> <span class="nt"><span</span> <span class="na">class=</span><span class="s">"n"</span><span class="nt">></span>client<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>.<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"na"</span><span class="nt">></span>getStruct<span class="nt"></span><span</span> <span class="na"
>class=</span><span class="s">"o"</span><span class="nt">></span>(<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"mi"</span><span class="nt">></span>1<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>);<span class="nt"></span></span>
+<span class="nt"><span</span> <span class="na">class=</span><span class="s">"n"</span><span class="nt">></span>System<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>.<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"na"</span><span class="nt">></span>out<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>.<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"na"</span><span class="nt">></span>println<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>(<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"s"</span><span class="nt">></span><span cla
ss="ni">&quot;</span>Check log: <span class="ni">&quot;</span><span class="nt"></span></span> <span class="nt"><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>+<span class="nt"></span></span> <span class="nt"><span</span> <span class="na">class=</span><span class="s">"n"</span><span class="nt">></span>log<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>.<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"na"</span><span class="nt">></span>value<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>);<span class="nt"></span></span>
+</pre></div>
+
+
+<p><span class="o">}</span>
+<span class="o">}</span>
+</pre></div></p>
<h3 id="server">Server</h3>
-<div class="codehilite"><pre> <span class="p">:::</span><span class="n">java</span>
-<span class="n">import</span> <span class="n">org</span><span class="p">.</span><span class="n">apache</span><span class="p">.</span><span class="n">thrift</span><span class="p">.</span><span class="n">server</span><span class="p">.</span><span class="n">TServer</span><span class="p">;</span>
-<span class="n">import</span> <span class="n">org</span><span class="p">.</span><span class="n">apache</span><span class="p">.</span><span class="n">thrift</span><span class="p">.</span><span class="n">server</span><span class="p">.</span><span class="n">TServer</span><span class="p">.</span><span class="n">Args</span><span class="p">;</span>
-<span class="n">import</span> <span class="n">org</span><span class="p">.</span><span class="n">apache</span><span class="p">.</span><span class="n">thrift</span><span class="p">.</span><span class="n">server</span><span class="p">.</span><span class="n">TSimpleServer</span><span class="p">;</span>
-<span class="n">import</span> <span class="n">org</span><span class="p">.</span><span class="n">apache</span><span class="p">.</span><span class="n">thrift</span><span class="p">.</span><span class="n">server</span><span class="p">.</span><span class="n">TThreadPoolServer</span><span class="p">;</span>
-<span class="n">import</span> <span class="n">org</span><span class="p">.</span><span class="n">apache</span><span class="p">.</span><span class="n">thrift</span><span class="p">.</span><span class="n">transport</span><span class="p">.</span><span class="n">TSSLTransportFactory</span><span class="p">;</span>
-<span class="n">import</span> <span class="n">org</span><span class="p">.</span><span class="n">apache</span><span class="p">.</span><span class="n">thrift</span><span class="p">.</span><span class="n">transport</span><span class="p">.</span><span class="n">TServerSocket</span><span class="p">;</span>
-<span class="n">import</span> <span class="n">org</span><span class="p">.</span><span class="n">apache</span><span class="p">.</span><span class="n">thrift</span><span class="p">.</span><span class="n">transport</span><span class="p">.</span><span class="n">TServerTransport</span><span class="p">;</span>
-<span class="n">import</span> <span class="n">org</span><span class="p">.</span><span class="n">apache</span><span class="p">.</span><span class="n">thrift</span><span class="p">.</span><span class="n">transport</span><span class="p">.</span><span class="n">TSSLTransportFactory</span><span class="p">.</span><span class="n">TSSLTransportParameters</span><span class="p">;</span>
-
-<span class="o">//</span> <span class="n">Generated</span> <span class="n">code</span>
-<span class="n">import</span> <span class="n">tutorial</span><span class="o">.*</span><span class="p">;</span>
-<span class="n">import</span> <span class="n">shared</span><span class="o">.*</span><span class="p">;</span>
-
-<span class="n">import</span> <span class="n">java</span><span class="p">.</span><span class="n">util</span><span class="p">.</span><span class="n">HashMap</span><span class="p">;</span>
-
-<span class="n">public</span> <span class="n">class</span> <span class="n">JavaServer</span> <span class="p">{</span>
-
- <span class="n">public</span> <span class="n">static</span> <span class="n">CalculatorHandler</span> <span class="n">handler</span><span class="p">;</span>
-
- <span class="n">public</span> <span class="n">static</span> <span class="n">Calculator</span><span class="p">.</span><span class="n">Processor</span> <span class="n">processor</span><span class="p">;</span>
-
- <span class="n">public</span> <span class="n">static</span> <span class="n">void</span> <span class="n">main</span><span class="p">(</span><span class="n">String</span> <span class="p">[]</span> <span class="n">args</span><span class="p">)</span> <span class="p">{</span>
- <span class="k">try</span> <span class="p">{</span>
- <span class="n">handler</span> <span class="p">=</span> <span class="n">new</span> <span class="n">CalculatorHandler</span><span class="p">();</span>
- <span class="n">processor</span> <span class="p">=</span> <span class="n">new</span> <span class="n">Calculator</span><span class="p">.</span><span class="n">Processor</span><span class="p">(</span><span class="n">handler</span><span class="p">);</span>
-
- <span class="n">Runnable</span> <span class="n">simple</span> <span class="p">=</span> <span class="n">new</span> <span class="n">Runnable</span><span class="p">()</span> <span class="p">{</span>
- <span class="n">public</span> <span class="n">void</span> <span class="n">run</span><span class="p">()</span> <span class="p">{</span>
- <span class="n">simple</span><span class="p">(</span><span class="n">processor</span><span class="p">);</span>
- <span class="p">}</span>
- <span class="p">};</span>
- <span class="n">Runnable</span> <span class="n">secure</span> <span class="p">=</span> <span class="n">new</span> <span class="n">Runnable</span><span class="p">()</span> <span class="p">{</span>
- <span class="n">public</span> <span class="n">void</span> <span class="n">run</span><span class="p">()</span> <span class="p">{</span>
- <span class="n">secure</span><span class="p">(</span><span class="n">processor</span><span class="p">);</span>
- <span class="p">}</span>
- <span class="p">};</span>
-
- <span class="n">new</span> <span class="n">Thread</span><span class="p">(</span><span class="n">simple</span><span class="p">).</span><span class="n">start</span><span class="p">();</span>
- <span class="n">new</span> <span class="n">Thread</span><span class="p">(</span><span class="n">secure</span><span class="p">).</span><span class="n">start</span><span class="p">();</span>
- <span class="p">}</span> <span class="k">catch</span> <span class="p">(</span><span class="n">Exception</span> <span class="n">x</span><span class="p">)</span> <span class="p">{</span>
- <span class="n">x</span><span class="p">.</span><span class="n">printStackTrace</span><span class="p">();</span>
- <span class="p">}</span>
- <span class="p">}</span>
-
- <span class="n">public</span> <span class="n">static</span> <span class="n">void</span> <span class="n">simple</span><span class="p">(</span><span class="n">Calculator</span><span class="p">.</span><span class="n">Processor</span> <span class="n">processor</span><span class="p">)</span> <span class="p">{</span>
- <span class="k">try</span> <span class="p">{</span>
- <span class="n">TServerTransport</span> <span class="n">serverTransport</span> <span class="p">=</span> <span class="n">new</span> <span class="n">TServerSocket</span><span class="p">(</span>9090<span class="p">);</span>
- <span class="n">TServer</span> <span class="n">server</span> <span class="p">=</span> <span class="n">new</span> <span class="n">TSimpleServer</span><span class="p">(</span><span class="n">new</span> <span class="n">Args</span><span class="p">(</span><span class="n">serverTransport</span><span class="p">).</span><span class="n">processor</span><span class="p">(</span><span class="n">processor</span><span class="p">));</span>
-
- <span class="o">//</span> <span class="n">Use</span> <span class="n">this</span> <span class="k">for</span> <span class="n">a</span> <span class="n">multithreaded</span> <span class="n">server</span>
- <span class="o">//</span> <span class="n">TServer</span> <span class="n">server</span> <span class="p">=</span> <span class="n">new</span> <span class="n">TThreadPoolServer</span><span class="p">(</span><span class="n">new</span> <span class="n">TThreadPoolServer</span><span class="p">.</span><span class="n">Args</span><span class="p">(</span><span class="n">serverTransport</span><span class="p">).</span><span class="n">processor</span><span class="p">(</span><span class="n">processor</span><span class="p">));</span>
-
- <span class="n">System</span><span class="p">.</span><span class="n">out</span><span class="p">.</span><span class="n">println</span><span class="p">(</span><span class="o">&</span><span class="n">quot</span><span class="p">;</span><span class="n">Starting</span> <span class="n">the</span> <span class="n">simple</span> <span class="n">server</span><span class="p">...</span><span class="o">&</span><span class="n">quot</span><span class="p">;);</span>
- <span class="n">server</span><span class="p">.</span><span class="n">serve</span><span class="p">();</span>
- <span class="p">}</span> <span class="k">catch</span> <span class="p">(</span><span class="n">Exception</span> <span class="n">e</span><span class="p">)</span> <span class="p">{</span>
- <span class="n">e</span><span class="p">.</span><span class="n">printStackTrace</span><span class="p">();</span>
- <span class="p">}</span>
- <span class="p">}</span>
-
- <span class="n">public</span> <span class="n">static</span> <span class="n">void</span> <span class="n">secure</span><span class="p">(</span><span class="n">Calculator</span><span class="p">.</span><span class="n">Processor</span> <span class="n">processor</span><span class="p">)</span> <span class="p">{</span>
- <span class="k">try</span> <span class="p">{</span>
- <span class="o">/*</span>
- <span class="o">*</span> <span class="n">Use</span> <span class="n">TSSLTransportParameters</span> <span class="n">to</span> <span class="n">setup</span> <span class="n">the</span> <span class="n">required</span> <span class="n">SSL</span> <span class="n">parameters</span><span class="p">.</span> <span class="n">In</span> <span class="n">this</span> <span class="n">example</span>
- <span class="o">*</span> <span class="n">we</span> <span class="n">are</span> <span class="n">setting</span> <span class="n">the</span> <span class="n">keystore</span> <span class="n">and</span> <span class="n">the</span> <span class="n">keystore</span> <span class="n">password</span><span class="p">.</span> <span class="n">Other</span> <span class="n">things</span> <span class="n">like</span> <span class="n">algorithms</span><span class="p">,</span>
- <span class="o">*</span> <span class="n">cipher</span> <span class="n">suites</span><span class="p">,</span> <span class="n">client</span> <span class="n">auth</span> <span class="n">etc</span> <span class="n">can</span> <span class="n">be</span> <span class="n">set</span><span class="p">.</span>
- <span class="o">*/</span>
- <span class="n">TSSLTransportParameters</span> <span class="n">params</span> <span class="p">=</span> <span class="n">new</span> <span class="n">TSSLTransportParameters</span><span class="p">();</span>
- <span class="o">//</span> <span class="n">The</span> <span class="n">Keystore</span> <span class="n">contains</span> <span class="n">the</span> <span class="n">private</span> <span class="n">key</span>
- <span class="n">params</span><span class="p">.</span><span class="n">setKeyStore</span><span class="p">(</span><span class="o">&</span><span class="n">quot</span><span class="p">;.</span><span class="o">./</span><span class="p">.</span><span class="o">./</span><span class="n">lib</span><span class="o">/</span><span class="n">java</span><span class="o">/</span><span class="n">test</span><span class="o">/</span><span class="p">.</span><span class="n">keystore</span><span class="o">&</span><span class="n">quot</span><span class="p">;,</span> <span class="o">&</span><span class="n">quot</span><span class="p">;</span><span class="n">thrift</span><span class="o">&</span><span class="n">quot</span><span class="p">;,</span> <span class="n">null</span><span class="p">,</span> <span class="n">null</span><span class="p">);</span>
-
- <span class="o">/*</span>
- <span class="o">*</span> <span class="n">Use</span> <span class="n">any</span> <span class="n">of</span> <span class="n">the</span> <span class="n">TSSLTransportFactory</span> <span class="n">to</span> <span class="n">get</span> <span class="n">a</span> <span class="n">server</span> <span class="n">transport</span> <span class="n">with</span> <span class="n">the</span> <span class="n">appropriate</span>
- <span class="o">*</span> <span class="n">SSL</span> <span class="n">configuration</span><span class="p">.</span> <span class="n">You</span> <span class="n">can</span> <span class="n">use</span> <span class="n">the</span> <span class="n">default</span> <span class="n">settings</span> <span class="k">if</span> <span class="k">properties</span> <span class="n">are</span> <span class="n">set</span> <span class="n">in</span> <span class="n">the</span> <span class="n">command</span> <span class="n">line</span><span class="p">.</span>
- <span class="o">*</span> <span class="n">Ex</span><span class="p">:</span> <span class="o">-</span><span class="n">Djavax</span><span class="p">.</span><span class="n">net</span><span class="p">.</span><span class="n">ssl</span><span class="p">.</span><span class="n">keyStore</span><span class="p">=.</span><span class="n">keystore</span> <span class="n">and</span> <span class="o">-</span><span class="n">Djavax</span><span class="p">.</span><span class="n">net</span><span class="p">.</span><span class="n">ssl</span><span class="p">.</span><span class="n">keyStorePassword</span><span class="p">=</span><span class="n">thrift</span>
- <span class="o">*</span>
- <span class="o">*</span> <span class="n">Note</span><span class="p">:</span> <span class="n">You</span> <span class="n">need</span> <span class="n">not</span> <span class="n">explicitly</span> <span class="n">call</span> <span class="n">open</span><span class="p">().</span> <span class="n">The</span> <span class="n">underlying</span> <span class="n">server</span> <span class="n">socket</span> <span class="n">is</span> <span class="n">bound</span> <span class="n">on</span> <span class="k">return</span>
- <span class="o">*</span> <span class="n">from</span> <span class="n">the</span> <span class="n">factory</span> <span class="n">class</span><span class="p">.</span>
- <span class="o">*/</span>
- <span class="n">TServerTransport</span> <span class="n">serverTransport</span> <span class="p">=</span> <span class="n">TSSLTransportFactory</span><span class="p">.</span><span class="n">getServerSocket</span><span class="p">(</span>9091<span class="p">,</span> 0<span class="p">,</span> <span class="n">null</span><span class="p">,</span> <span class="n">params</span><span class="p">);</span>
- <span class="n">TServer</span> <span class="n">server</span> <span class="p">=</span> <span class="n">new</span> <span class="n">TSimpleServer</span><span class="p">(</span><span class="n">new</span> <span class="n">Args</span><span class="p">(</span><span class="n">serverTransport</span><span class="p">).</span><span class="n">processor</span><span class="p">(</span><span class="n">processor</span><span class="p">));</span>
-
- <span class="o">//</span> <span class="n">Use</span> <span class="n">this</span> <span class="k">for</span> <span class="n">a</span> <span class="n">multi</span> <span class="n">threaded</span> <span class="n">server</span>
- <span class="o">//</span> <span class="n">TServer</span> <span class="n">server</span> <span class="p">=</span> <span class="n">new</span> <span class="n">TThreadPoolServer</span><span class="p">(</span><span class="n">new</span> <span class="n">TThreadPoolServer</span><span class="p">.</span><span class="n">Args</span><span class="p">(</span><span class="n">serverTransport</span><span class="p">).</span><span class="n">processor</span><span class="p">(</span><span class="n">processor</span><span class="p">));</span>
-
- <span class="n">System</span><span class="p">.</span><span class="n">out</span><span class="p">.</span><span class="n">println</span><span class="p">(</span><span class="o">&</span><span class="n">quot</span><span class="p">;</span><span class="n">Starting</span> <span class="n">the</span> <span class="n">secure</span> <span class="n">server</span><span class="p">...</span><span class="o">&</span><span class="n">quot</span><span class="p">;);</span>
- <span class="n">server</span><span class="p">.</span><span class="n">serve</span><span class="p">();</span>
- <span class="p">}</span> <span class="k">catch</span> <span class="p">(</span><span class="n">Exception</span> <span class="n">e</span><span class="p">)</span> <span class="p">{</span>
- <span class="n">e</span><span class="p">.</span><span class="n">printStackTrace</span><span class="p">();</span>
- <span class="p">}</span>
- <span class="p">}</span>
-<span class="p">}</span>
+<p><div class="codehilite"><pre><span class="kn">import</span> <span class="nn">org.apache.thrift.server.TServer</span><span class="o">;</span>
+<span class="kn">import</span> <span class="nn">org.apache.thrift.server.TServer.Args</span><span class="o">;</span>
+<span class="kn">import</span> <span class="nn">org.apache.thrift.server.TSimpleServer</span><span class="o">;</span>
+<span class="kn">import</span> <span class="nn">org.apache.thrift.server.TThreadPoolServer</span><span class="o">;</span>
+<span class="kn">import</span> <span class="nn">org.apache.thrift.transport.TSSLTransportFactory</span><span class="o">;</span>
+<span class="kn">import</span> <span class="nn">org.apache.thrift.transport.TServerSocket</span><span class="o">;</span>
+<span class="kn">import</span> <span class="nn">org.apache.thrift.transport.TServerTransport</span><span class="o">;</span>
+<span class="kn">import</span> <span class="nn">org.apache.thrift.transport.TSSLTransportFactory.TSSLTransportParameters</span><span class="o">;</span></p>
+<p><span class="c1">// Generated code</span>
+<span class="kn">import</span> <span class="nn">tutorial.<em></span><span class="o">;</span>
+<span class="kn">import</span> <span class="nn">shared.</em></span><span class="o">;</span></p>
+<p><span class="kn">import</span> <span class="nn">java.util.HashMap</span><span class="o">;</span></p>
+<p><span class="kd">public</span> <span class="kd">class</span> <span class="nc">JavaServer</span> <span class="o">{</span></p>
+<p><span class="kd">public</span> <span class="kd">static</span> <span class="n">CalculatorHandler</span> <span class="n">handler</span><span class="o">;</span></p>
+<p><span class="kd">public</span> <span class="kd">static</span> <span class="n">Calculator</span><span class="o">.</span><span class="na">Processor</span> <span class="n">processor</span><span class="o">;</span></p>
+<p><span class="kd">public</span> <span class="kd">static</span> <span class="kt">void</span> <span class="nf">main</span><span class="o">(</span><span class="n">String</span> <span class="o">[]</span> <span class="n">args</span><span class="o">)</span> <span class="o">{</span>
+ <span class="k">try</span> <span class="o">{</span>
+ <span class="n">handler</span> <span class="o">=</span> <span class="k">new</span> <span class="n">CalculatorHandler</span><span class="o">();</span>
+ <span class="n">processor</span> <span class="o">=</span> <span class="k">new</span> <span class="n">Calculator</span><span class="o">.</span><span class="na">Processor</span><span class="o">(</span><span class="n">handler</span><span class="o">);</span></p>
+<div class="codehilite"><pre> <span class="nt"><span</span> <span class="na">class=</span><span class="s">"n"</span><span class="nt">></span>Runnable<span class="nt"></span></span> <span class="nt"><span</span> <span class="na">class=</span><span class="s">"n"</span><span class="nt">></span>simple<span class="nt"></span></span> <span class="nt"><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>=<span class="nt"></span></span> <span class="nt"><span</span> <span class="na">class=</span><span class="s">"k"</span><span class="nt">></span>new<span class="nt"></span></span> <span class="nt"><span</span> <span class="na">class=</span><span class="s">"n"</span><span class="nt">></span>Runnable<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>()<span class
="nt"></span></span> <span class="nt"><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>{<span class="nt"></span></span>
+ <span class="nt"><span</span> <span class="na">class=</span><span class="s">"kd"</span><span class="nt">></span>public<span class="nt"></span></span> <span class="nt"><span</span> <span class="na">class=</span><span class="s">"kt"</span><span class="nt">></span>void<span class="nt"></span></span> <span class="nt"><span</span> <span class="na">class=</span><span class="s">"nf"</span><span class="nt">></span>run<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>()<span class="nt"></span></span> <span class="nt"><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>{<span class="nt"></span></span>
+ <span class="nt"><span</span> <span class="na">class=</span><span class="s">"n"</span><span class="nt">></span>simple<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>(<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"n"</span><span class="nt">></span>processor<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>);<span class="nt"></span></span>
+ <span class="nt"><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>}<span class="nt"></span></span>
+ <span class="nt"><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>};<span class="nt"></span></span>
+ <span class="nt"><span</span> <span class="na">class=</span><span class="s">"n"</span><span class="nt">></span>Runnable<span class="nt"></span></span> <span class="nt"><span</span> <span class="na">class=</span><span class="s">"n"</span><span class="nt">></span>secure<span class="nt"></span></span> <span class="nt"><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>=<span class="nt"></span></span> <span class="nt"><span</span> <span class="na">class=</span><span class="s">"k"</span><span class="nt">></span>new<span class="nt"></span></span> <span class="nt"><span</span> <span class="na">class=</span><span class="s">"n"</span><span class="nt">></span>Runnable<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>()<span class="nt"></span></span> <s
pan class="nt"><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>{<span class="nt"></span></span>
+ <span class="nt"><span</span> <span class="na">class=</span><span class="s">"kd"</span><span class="nt">></span>public<span class="nt"></span></span> <span class="nt"><span</span> <span class="na">class=</span><span class="s">"kt"</span><span class="nt">></span>void<span class="nt"></span></span> <span class="nt"><span</span> <span class="na">class=</span><span class="s">"nf"</span><span class="nt">></span>run<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>()<span class="nt"></span></span> <span class="nt"><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>{<span class="nt"></span></span>
+ <span class="nt"><span</span> <span class="na">class=</span><span class="s">"n"</span><span class="nt">></span>secure<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>(<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"n"</span><span class="nt">></span>processor<span class="nt"></span><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>);<span class="nt"></span></span>
+ <span class="nt"><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>}<span class="nt"></span></span>
+ <span class="nt"><span</span> <span class="na">class=</span><span class="s">"o"</span><span class="nt">></span>};<span class="nt"></span></span>
+
[... 66 lines stripped ...]