1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 2<!--NewPage--> 3<HTML> 4<HEAD> 5<!-- Generated by javadoc (build 1.6.0-google-internal) on Mon Jan 04 20:47:57 PST 2010 --> 6<TITLE> 7Service (Guava Libraries 2010.01.04) 8</TITLE> 9 10<META NAME="date" CONTENT="2010-01-04"> 11 12<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style"> 13 14<SCRIPT type="text/javascript"> 15function windowTitle() 16{ 17 if (location.href.indexOf('is-external=true') == -1) { 18 parent.document.title="Service (Guava Libraries 2010.01.04)"; 19 } 20} 21</SCRIPT> 22<NOSCRIPT> 23</NOSCRIPT> 24 25</HEAD> 26 27<BODY BGCOLOR="white" onload="windowTitle();"> 28<HR> 29 30 31<!-- ========= START OF TOP NAVBAR ======= --> 32<A NAME="navbar_top"><!-- --></A> 33<A HREF="#skip-navbar_top" title="Skip navigation links"></A> 34<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY=""> 35<TR> 36<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> 37<A NAME="navbar_top_firstrow"><!-- --></A> 38<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY=""> 39 <TR ALIGN="center" VALIGN="top"> 40 <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A> </TD> 41 <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A> </TD> 42 <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> <FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT> </TD> 43 <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="class-use/Service.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A> </TD> 44 <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A> </TD> 45 <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A> </TD> 46 <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A> </TD> 47 <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A> </TD> 48 </TR> 49</TABLE> 50</TD> 51<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM> 52</EM> 53</TD> 54</TR> 55 56<TR> 57<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2"> 58 <A HREF="../../../../com/google/common/base/Predicates.html" title="class in com.google.common.base"><B>PREV CLASS</B></A> 59 <A HREF="../../../../com/google/common/base/Service.State.html" title="enum in com.google.common.base"><B>NEXT CLASS</B></A></FONT></TD> 60<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2"> 61 <A HREF="../../../../index.html?com/google/common/base/Service.html" target="_top"><B>FRAMES</B></A> 62 <A HREF="Service.html" target="_top"><B>NO FRAMES</B></A> 63 <SCRIPT type="text/javascript"> 64 <!-- 65 if(window==top) { 66 document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>'); 67 } 68 //--> 69</SCRIPT> 70<NOSCRIPT> 71 <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A> 72</NOSCRIPT> 73 74 75</FONT></TD> 76</TR> 77<TR> 78<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2"> 79 SUMMARY: <A HREF="#nested_class_summary">NESTED</A> | FIELD | CONSTR | <A HREF="#method_summary">METHOD</A></FONT></TD> 80<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2"> 81DETAIL: FIELD | CONSTR | <A HREF="#method_detail">METHOD</A></FONT></TD> 82</TR> 83</TABLE> 84<A NAME="skip-navbar_top"></A> 85<!-- ========= END OF TOP NAVBAR ========= --> 86 87<HR> 88<!-- ======== START OF CLASS DATA ======== --> 89<H2> 90<FONT SIZE="-1"> 91com.google.common.base</FONT> 92<BR> 93Interface Service</H2> 94<DL> 95<DT><B>All Known Implementing Classes:</B> <DD><A HREF="../../../../com/google/common/util/concurrent/AbstractExecutionThreadService.html" title="class in com.google.common.util.concurrent">AbstractExecutionThreadService</A>, <A HREF="../../../../com/google/common/util/concurrent/AbstractIdleService.html" title="class in com.google.common.util.concurrent">AbstractIdleService</A>, <A HREF="../../../../com/google/common/util/concurrent/AbstractService.html" title="class in com.google.common.util.concurrent">AbstractService</A>, <A HREF="../../../../com/google/common/util/concurrent/ForwardingService.html" title="class in com.google.common.util.concurrent">ForwardingService</A></DD> 96</DL> 97<HR> 98<DL> 99<DT><PRE>public interface <B>Service</B></DL> 100</PRE> 101 102<P> 103An object with an operational state, plus asynchronous <A HREF="../../../../com/google/common/base/Service.html#start()"><CODE>start()</CODE></A> and 104 <A HREF="../../../../com/google/common/base/Service.html#stop()"><CODE>stop()</CODE></A> lifecycle methods to transfer into and out of this state. 105 Example services include webservers, RPC servers and timers. The normal 106 lifecycle of a service is: 107 <ul> 108 <li><A HREF="../../../../com/google/common/base/Service.State.html#NEW"><CODE>Service.State.NEW</CODE></A> -></li> 109 <li><A HREF="../../../../com/google/common/base/Service.State.html#STARTING"><CODE>Service.State.STARTING</CODE></A> -></li> 110 <li><A HREF="../../../../com/google/common/base/Service.State.html#RUNNING"><CODE>Service.State.RUNNING</CODE></A> -></li> 111 <li><A HREF="../../../../com/google/common/base/Service.State.html#STOPPING"><CODE>Service.State.STOPPING</CODE></A> -></li> 112 <li><A HREF="../../../../com/google/common/base/Service.State.html#TERMINATED"><CODE>Service.State.TERMINATED</CODE></A></li> 113 </ul> 114 115 If the service fails while starting, running or stopping, its state will be 116 <A HREF="../../../../com/google/common/base/Service.State.html#FAILED"><CODE>Service.State.FAILED</CODE></A>, and its behavior is undefined. Such a service cannot be 117 started nor stopped. 118 119 <p>Implementors of this interface are strongly encouraged to extend <A HREF="../../../../com/google/common/util/concurrent/AbstractService.html" title="class in com.google.common.util.concurrent"><CODE>AbstractService</CODE></A> or <A HREF="../../../../com/google/common/util/concurrent/AbstractExecutionThreadService.html" title="class in com.google.common.util.concurrent"><CODE>AbstractExecutionThreadService</CODE></A>, which make 120 the threading and state management easier. 121<P> 122 123<P> 124<DL> 125<DT><B>Since:</B></DT> 126 <DD>2009.09.15 <b>tentative</b></DD> 127<DT><B>Author:</B></DT> 128 <DD>Jesse Wilson</DD> 129</DL> 130<HR> 131 132<P> 133<!-- ======== NESTED CLASS SUMMARY ======== --> 134 135<A NAME="nested_class_summary"><!-- --></A> 136<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY=""> 137<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor"> 138<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2"> 139<B>Nested Class Summary</B></FONT></TH> 140</TR> 141<TR BGCOLOR="white" CLASS="TableRowColor"> 142<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1"> 143<CODE>static class</CODE></FONT></TD> 144<TD><CODE><B><A HREF="../../../../com/google/common/base/Service.State.html" title="enum in com.google.common.base">Service.State</A></B></CODE> 145 146<BR> 147 The lifecycle states of a service.</TD> 148</TR> 149</TABLE> 150 151<!-- ========== METHOD SUMMARY =========== --> 152 153<A NAME="method_summary"><!-- --></A> 154<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY=""> 155<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor"> 156<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2"> 157<B>Method Summary</B></FONT></TH> 158</TR> 159<TR BGCOLOR="white" CLASS="TableRowColor"> 160<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1"> 161<CODE> boolean</CODE></FONT></TD> 162<TD><CODE><B><A HREF="../../../../com/google/common/base/Service.html#isRunning()">isRunning</A></B>()</CODE> 163 164<BR> 165 Returns <code>true</code> if this service is <A HREF="../../../../com/google/common/base/Service.State.html#RUNNING"><CODE>running</CODE></A>.</TD> 166</TR> 167<TR BGCOLOR="white" CLASS="TableRowColor"> 168<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1"> 169<CODE> <A HREF="http://java.sun.com/javase/6/docs/api/java/util/concurrent/Future.html?is-external=true" title="class or interface in java.util.concurrent">Future</A><<A HREF="../../../../com/google/common/base/Service.State.html" title="enum in com.google.common.base">Service.State</A>></CODE></FONT></TD> 170<TD><CODE><B><A HREF="../../../../com/google/common/base/Service.html#start()">start</A></B>()</CODE> 171 172<BR> 173 If the service state is <A HREF="../../../../com/google/common/base/Service.State.html#NEW"><CODE>Service.State.NEW</CODE></A>, this initiates service startup 174 and returns immediately.</TD> 175</TR> 176<TR BGCOLOR="white" CLASS="TableRowColor"> 177<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1"> 178<CODE> <A HREF="../../../../com/google/common/base/Service.State.html" title="enum in com.google.common.base">Service.State</A></CODE></FONT></TD> 179<TD><CODE><B><A HREF="../../../../com/google/common/base/Service.html#startAndWait()">startAndWait</A></B>()</CODE> 180 181<BR> 182 Initiates service startup (if necessary), returning once the service has 183 finished starting.</TD> 184</TR> 185<TR BGCOLOR="white" CLASS="TableRowColor"> 186<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1"> 187<CODE> <A HREF="../../../../com/google/common/base/Service.State.html" title="enum in com.google.common.base">Service.State</A></CODE></FONT></TD> 188<TD><CODE><B><A HREF="../../../../com/google/common/base/Service.html#state()">state</A></B>()</CODE> 189 190<BR> 191 Returns the lifecycle state of the service.</TD> 192</TR> 193<TR BGCOLOR="white" CLASS="TableRowColor"> 194<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1"> 195<CODE> <A HREF="http://java.sun.com/javase/6/docs/api/java/util/concurrent/Future.html?is-external=true" title="class or interface in java.util.concurrent">Future</A><<A HREF="../../../../com/google/common/base/Service.State.html" title="enum in com.google.common.base">Service.State</A>></CODE></FONT></TD> 196<TD><CODE><B><A HREF="../../../../com/google/common/base/Service.html#stop()">stop</A></B>()</CODE> 197 198<BR> 199 If the service is <A HREF="../../../../com/google/common/base/Service.State.html#STARTING"><CODE>Service.State.STARTING</CODE></A> or <A HREF="../../../../com/google/common/base/Service.State.html#RUNNING"><CODE>Service.State.RUNNING</CODE></A>, this 200 initiates service shutdown and returns immediately.</TD> 201</TR> 202<TR BGCOLOR="white" CLASS="TableRowColor"> 203<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1"> 204<CODE> <A HREF="../../../../com/google/common/base/Service.State.html" title="enum in com.google.common.base">Service.State</A></CODE></FONT></TD> 205<TD><CODE><B><A HREF="../../../../com/google/common/base/Service.html#stopAndWait()">stopAndWait</A></B>()</CODE> 206 207<BR> 208 Initiates service shutdown (if necessary), returning once the service has 209 finished stopping.</TD> 210</TR> 211</TABLE> 212 213<P> 214 215<!-- ============ METHOD DETAIL ========== --> 216 217<A NAME="method_detail"><!-- --></A> 218<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY=""> 219<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor"> 220<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2"> 221<B>Method Detail</B></FONT></TH> 222</TR> 223</TABLE> 224 225<A NAME="start()"><!-- --></A><H3> 226start</H3> 227<PRE> 228<A HREF="http://java.sun.com/javase/6/docs/api/java/util/concurrent/Future.html?is-external=true" title="class or interface in java.util.concurrent">Future</A><<A HREF="../../../../com/google/common/base/Service.State.html" title="enum in com.google.common.base">Service.State</A>> <B>start</B>()</PRE> 229<DL> 230<DD>If the service state is <A HREF="../../../../com/google/common/base/Service.State.html#NEW"><CODE>Service.State.NEW</CODE></A>, this initiates service startup 231 and returns immediately. If the service has already been started, this 232 method returns immediately without taking action. A stopped service may not 233 be restarted. 234<P> 235<DD><DL> 236 237<DT><B>Returns:</B><DD>a future for the startup result, regardless of whether this call 238 initiated startup. Calling <A HREF="http://java.sun.com/javase/6/docs/api/java/util/concurrent/Future.html?is-external=true#get()" title="class or interface in java.util.concurrent"><CODE>Future.get()</CODE></A> will block until the 239 service has finished starting, and returns one of <A HREF="../../../../com/google/common/base/Service.State.html#RUNNING"><CODE>Service.State.RUNNING</CODE></A>, <A HREF="../../../../com/google/common/base/Service.State.html#STOPPING"><CODE>Service.State.STOPPING</CODE></A> or <A HREF="../../../../com/google/common/base/Service.State.html#TERMINATED"><CODE>Service.State.TERMINATED</CODE></A>. If 240 the service fails to start, <A HREF="http://java.sun.com/javase/6/docs/api/java/util/concurrent/Future.html?is-external=true#get()" title="class or interface in java.util.concurrent"><CODE>Future.get()</CODE></A> will throw an <A HREF="http://java.sun.com/javase/6/docs/api/java/util/concurrent/ExecutionException.html?is-external=true" title="class or interface in java.util.concurrent"><CODE>ExecutionException</CODE></A>, and the service's state will be <A HREF="../../../../com/google/common/base/Service.State.html#FAILED"><CODE>Service.State.FAILED</CODE></A>. If it has already finished starting, <A HREF="http://java.sun.com/javase/6/docs/api/java/util/concurrent/Future.html?is-external=true#get()" title="class or interface in java.util.concurrent"><CODE>Future.get()</CODE></A> 241 returns immediately. Cancelling the returned future is unsupported and 242 always returns <code>false</code>.</DL> 243</DD> 244</DL> 245<HR> 246 247<A NAME="startAndWait()"><!-- --></A><H3> 248startAndWait</H3> 249<PRE> 250<A HREF="../../../../com/google/common/base/Service.State.html" title="enum in com.google.common.base">Service.State</A> <B>startAndWait</B>()</PRE> 251<DL> 252<DD>Initiates service startup (if necessary), returning once the service has 253 finished starting. Unlike calling <code>start().get()</code>, this method throws 254 no checked exceptions. 255<P> 256<DD><DL> 257 258<DT><B>Returns:</B><DD>the state of the service when startup finished. 259<DT><B>Throws:</B> 260<DD><CODE>InterruptedRuntimeException</CODE> - if the thread was interrupted while 261 waiting for the service to finish starting up. 262<DD><CODE><A HREF="http://java.sun.com/javase/6/docs/api/java/lang/RuntimeException.html?is-external=true" title="class or interface in java.lang">RuntimeException</A></CODE> - if startup failed</DL> 263</DD> 264</DL> 265<HR> 266 267<A NAME="isRunning()"><!-- --></A><H3> 268isRunning</H3> 269<PRE> 270boolean <B>isRunning</B>()</PRE> 271<DL> 272<DD>Returns <code>true</code> if this service is <A HREF="../../../../com/google/common/base/Service.State.html#RUNNING"><CODE>running</CODE></A>. 273<P> 274<DD><DL> 275</DL> 276</DD> 277</DL> 278<HR> 279 280<A NAME="state()"><!-- --></A><H3> 281state</H3> 282<PRE> 283<A HREF="../../../../com/google/common/base/Service.State.html" title="enum in com.google.common.base">Service.State</A> <B>state</B>()</PRE> 284<DL> 285<DD>Returns the lifecycle state of the service. 286<P> 287<DD><DL> 288</DL> 289</DD> 290</DL> 291<HR> 292 293<A NAME="stop()"><!-- --></A><H3> 294stop</H3> 295<PRE> 296<A HREF="http://java.sun.com/javase/6/docs/api/java/util/concurrent/Future.html?is-external=true" title="class or interface in java.util.concurrent">Future</A><<A HREF="../../../../com/google/common/base/Service.State.html" title="enum in com.google.common.base">Service.State</A>> <B>stop</B>()</PRE> 297<DL> 298<DD>If the service is <A HREF="../../../../com/google/common/base/Service.State.html#STARTING"><CODE>Service.State.STARTING</CODE></A> or <A HREF="../../../../com/google/common/base/Service.State.html#RUNNING"><CODE>Service.State.RUNNING</CODE></A>, this 299 initiates service shutdown and returns immediately. If this is <A HREF="../../../../com/google/common/base/Service.State.html#NEW"><CODE>Service.State.NEW</CODE></A>, it is <A HREF="../../../../com/google/common/base/Service.State.html#TERMINATED"><CODE>terminated</CODE></A> without having been 300 started nor stopped. If the service has already been stopped, this 301 method returns immediately without taking action. 302<P> 303<DD><DL> 304 305<DT><B>Returns:</B><DD>a future for the shutdown result, regardless of whether this call 306 initiated shutdown. Calling <A HREF="http://java.sun.com/javase/6/docs/api/java/util/concurrent/Future.html?is-external=true#get()" title="class or interface in java.util.concurrent"><CODE>Future.get()</CODE></A> will block until the 307 service has finished shutting down, and either returns <A HREF="../../../../com/google/common/base/Service.State.html#TERMINATED"><CODE>Service.State.TERMINATED</CODE></A> or throws an <A HREF="http://java.sun.com/javase/6/docs/api/java/util/concurrent/ExecutionException.html?is-external=true" title="class or interface in java.util.concurrent"><CODE>ExecutionException</CODE></A>. If it has 308 already finished stopping, <A HREF="http://java.sun.com/javase/6/docs/api/java/util/concurrent/Future.html?is-external=true#get()" title="class or interface in java.util.concurrent"><CODE>Future.get()</CODE></A> returns immediately. 309 Cancelling this future is unsupported and always returns <code>false</code>.</DL> 310</DD> 311</DL> 312<HR> 313 314<A NAME="stopAndWait()"><!-- --></A><H3> 315stopAndWait</H3> 316<PRE> 317<A HREF="../../../../com/google/common/base/Service.State.html" title="enum in com.google.common.base">Service.State</A> <B>stopAndWait</B>()</PRE> 318<DL> 319<DD>Initiates service shutdown (if necessary), returning once the service has 320 finished stopping. If this is <A HREF="../../../../com/google/common/base/Service.State.html#STARTING"><CODE>Service.State.STARTING</CODE></A>, startup will be 321 cancelled. If this is <A HREF="../../../../com/google/common/base/Service.State.html#NEW"><CODE>Service.State.NEW</CODE></A>, it is <A HREF="../../../../com/google/common/base/Service.State.html#TERMINATED"><CODE>terminated</CODE></A> without having been started nor stopped. Unlike calling <code>stop().get()</code>, this method throws no checked exceptions. 322<P> 323<DD><DL> 324 325<DT><B>Returns:</B><DD>the state of the service when shutdown finished. 326<DT><B>Throws:</B> 327<DD><CODE>InterruptedRuntimeException</CODE> - if the thread was interrupted while 328 waiting for the service to finish shutting down. 329<DD><CODE><A HREF="http://java.sun.com/javase/6/docs/api/java/lang/RuntimeException.html?is-external=true" title="class or interface in java.lang">RuntimeException</A></CODE> - if shutdown failed</DL> 330</DD> 331</DL> 332<!-- ========= END OF CLASS DATA ========= --> 333<HR> 334 335 336<!-- ======= START OF BOTTOM NAVBAR ====== --> 337<A NAME="navbar_bottom"><!-- --></A> 338<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A> 339<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY=""> 340<TR> 341<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> 342<A NAME="navbar_bottom_firstrow"><!-- --></A> 343<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY=""> 344 <TR ALIGN="center" VALIGN="top"> 345 <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A> </TD> 346 <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A> </TD> 347 <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> <FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT> </TD> 348 <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="class-use/Service.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A> </TD> 349 <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A> </TD> 350 <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A> </TD> 351 <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A> </TD> 352 <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A> </TD> 353 </TR> 354</TABLE> 355</TD> 356<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM> 357</EM> 358</TD> 359</TR> 360 361<TR> 362<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2"> 363 <A HREF="../../../../com/google/common/base/Predicates.html" title="class in com.google.common.base"><B>PREV CLASS</B></A> 364 <A HREF="../../../../com/google/common/base/Service.State.html" title="enum in com.google.common.base"><B>NEXT CLASS</B></A></FONT></TD> 365<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2"> 366 <A HREF="../../../../index.html?com/google/common/base/Service.html" target="_top"><B>FRAMES</B></A> 367 <A HREF="Service.html" target="_top"><B>NO FRAMES</B></A> 368 <SCRIPT type="text/javascript"> 369 <!-- 370 if(window==top) { 371 document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>'); 372 } 373 //--> 374</SCRIPT> 375<NOSCRIPT> 376 <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A> 377</NOSCRIPT> 378 379 380</FONT></TD> 381</TR> 382<TR> 383<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2"> 384 SUMMARY: <A HREF="#nested_class_summary">NESTED</A> | FIELD | CONSTR | <A HREF="#method_summary">METHOD</A></FONT></TD> 385<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2"> 386DETAIL: FIELD | CONSTR | <A HREF="#method_detail">METHOD</A></FONT></TD> 387</TR> 388</TABLE> 389<A NAME="skip-navbar_bottom"></A> 390<!-- ======== END OF BOTTOM NAVBAR ======= --> 391 392<HR> 393 394</BODY> 395</HTML> 396