Package org.glassfish.jersey.client
Class ClientRuntime
- java.lang.Object
-
- org.glassfish.jersey.client.ClientRuntime
-
- All Implemented Interfaces:
ClientExecutor,JerseyClient.ShutdownHook
class ClientRuntime extends java.lang.Object implements JerseyClient.ShutdownHook, ClientExecutor
Client-side request processing runtime.
-
-
Field Summary
Fields Modifier and Type Field Description private LazyValue<java.util.concurrent.ExecutorService>asyncRequestExecutorprivate LazyValue<java.util.concurrent.ScheduledExecutorService>backgroundSchedulerprivate java.util.concurrent.atomic.AtomicBooleanclosedprivate ClientConfigconfigprivate Connectorconnectorprivate InjectionManagerinjectionManagerprivate java.lang.Iterable<ClientLifecycleListener>lifecycleListenersprivate static java.util.logging.LoggerLOGprivate ManagedObjectsFinalizermanagedObjectsFinalizerprivate Stage<ClientRequest>requestProcessingRootprivate RequestScoperequestScopeprivate Stage<ClientResponse>responseProcessingRoot
-
Constructor Summary
Constructors Constructor Description ClientRuntime(ClientConfig config, Connector connector, InjectionManager injectionManager, BootstrapBag bootstrapBag)Create new client request processing runtime.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description private ClientRequestaddUserAgent(ClientRequest clientRequest, java.lang.String connectorName)private voidclose()(package private) java.lang.RunnablecreateRunnableForAsyncProcessing(ClientRequest request, ResponseCallback callback)Prepare aRunnableto be used to submit aclient requestfor asynchronous processing.protected voidfinalize()This will be used as the last resort to clean things up in the case that this instance gets garbage collected before the client itself gets released.ClientConfiggetConfig()Get runtime configuration.ConnectorgetConnector()Runtime connector.(package private) InjectionManagergetInjectionManager()Get injection manager.RequestScopegetRequestScope()Get the request scope instance configured for the runtime.ClientResponseinvoke(ClientRequest request)Invoke a request processing synchronously in the context of the caller's thread.voidonShutdown()Invoked when the client instance is closed.voidpreInitialize()Pre-initialize the client runtime.private voidprocessFailure(java.lang.Throwable failure, ResponseCallback callback)private voidprocessResponse(ClientResponse response, ResponseCallback callback)java.util.concurrent.ScheduledFuture<?>schedule(java.lang.Runnable command, long delay, java.util.concurrent.TimeUnit unit)Creates and executes a one-shot action that becomes enabled after the given delay.<T> java.util.concurrent.ScheduledFuture<T>schedule(java.util.concurrent.Callable<T> callable, long delay, java.util.concurrent.TimeUnit unit)Creates and executes aScheduledFuturethat becomes enabled after the given delay.java.util.concurrent.Future<?>submit(java.lang.Runnable task)Submits aRunnabletask for execution and returns aFuturerepresenting that task.<T> java.util.concurrent.Future<T>submit(java.lang.Runnable task, T result)Submits aRunnabletask for execution and returns aFuturerepresenting that task.<T> java.util.concurrent.Future<T>submit(java.util.concurrent.Callable<T> task)Submits a value-returning task for execution and returns aFuturerepresenting the pending results of the task.private java.util.concurrent.Future<?>submit(java.util.concurrent.ExecutorService executor, java.lang.Runnable task)
-
-
-
Field Detail
-
LOG
private static final java.util.logging.Logger LOG
-
requestProcessingRoot
private final Stage<ClientRequest> requestProcessingRoot
-
responseProcessingRoot
private final Stage<ClientResponse> responseProcessingRoot
-
connector
private final Connector connector
-
config
private final ClientConfig config
-
requestScope
private final RequestScope requestScope
-
asyncRequestExecutor
private final LazyValue<java.util.concurrent.ExecutorService> asyncRequestExecutor
-
backgroundScheduler
private final LazyValue<java.util.concurrent.ScheduledExecutorService> backgroundScheduler
-
lifecycleListeners
private final java.lang.Iterable<ClientLifecycleListener> lifecycleListeners
-
closed
private final java.util.concurrent.atomic.AtomicBoolean closed
-
managedObjectsFinalizer
private final ManagedObjectsFinalizer managedObjectsFinalizer
-
injectionManager
private final InjectionManager injectionManager
-
-
Constructor Detail
-
ClientRuntime
public ClientRuntime(ClientConfig config, Connector connector, InjectionManager injectionManager, BootstrapBag bootstrapBag)
Create new client request processing runtime.- Parameters:
config- client runtime configuration.connector- client transport connector.injectionManager- injection manager.
-
-
Method Detail
-
createRunnableForAsyncProcessing
java.lang.Runnable createRunnableForAsyncProcessing(ClientRequest request, ResponseCallback callback)
Prepare aRunnableto be used to submit aclient requestfor asynchronous processing.- Parameters:
request- client request to be sent.callback- asynchronous response callback.- Returns:
Runnableto be submitted for async processing usingsubmit(Runnable).
-
submit
public <T> java.util.concurrent.Future<T> submit(java.util.concurrent.Callable<T> task)
Description copied from interface:ClientExecutorSubmits a value-returning task for execution and returns aFuturerepresenting the pending results of the task. The Future'sget()method will return the task's result upon successful completion.- Specified by:
submitin interfaceClientExecutor- Type Parameters:
T- task's return type- Parameters:
task- task to submit- Returns:
- a
Futurerepresenting pending completion of the task
-
submit
public java.util.concurrent.Future<?> submit(java.lang.Runnable task)
Description copied from interface:ClientExecutorSubmits aRunnabletask for execution and returns aFuturerepresenting that task. The Future'sget()method will return the given result upon successful completion.- Specified by:
submitin interfaceClientExecutor- Parameters:
task- the task to submit- Returns:
- a
Futurerepresenting pending completion of the task
-
submit
public <T> java.util.concurrent.Future<T> submit(java.lang.Runnable task, T result)Description copied from interface:ClientExecutorSubmits aRunnabletask for execution and returns aFuturerepresenting that task. The Future'sget()method will return the given result upon successful completion.- Specified by:
submitin interfaceClientExecutor- Type Parameters:
T- result type- Parameters:
task- the task to submitresult- the result to return- Returns:
- a
Futurerepresenting pending completion of the task
-
schedule
public <T> java.util.concurrent.ScheduledFuture<T> schedule(java.util.concurrent.Callable<T> callable, long delay, java.util.concurrent.TimeUnit unit)Description copied from interface:ClientExecutorCreates and executes aScheduledFuturethat becomes enabled after the given delay.- Specified by:
schedulein interfaceClientExecutor- Type Parameters:
T- return type of the function- Parameters:
callable- the function to executedelay- the time from now to delay executionunit- the time unit of the delay parameter- Returns:
- a
ScheduledFuturethat can be used to extract result or cancel
-
schedule
public java.util.concurrent.ScheduledFuture<?> schedule(java.lang.Runnable command, long delay, java.util.concurrent.TimeUnit unit)Description copied from interface:ClientExecutorCreates and executes a one-shot action that becomes enabled after the given delay.- Specified by:
schedulein interfaceClientExecutor- Parameters:
command- the task to executedelay- the time from now to delay executionunit- the time unit of the daly parameter- Returns:
- a scheduledFuture representing pending completion of the task and whose
get()method will returnnullupon completion
-
processResponse
private void processResponse(ClientResponse response, ResponseCallback callback)
-
processFailure
private void processFailure(java.lang.Throwable failure, ResponseCallback callback)
-
submit
private java.util.concurrent.Future<?> submit(java.util.concurrent.ExecutorService executor, java.lang.Runnable task)
-
addUserAgent
private ClientRequest addUserAgent(ClientRequest clientRequest, java.lang.String connectorName)
-
invoke
public ClientResponse invoke(ClientRequest request)
Invoke a request processing synchronously in the context of the caller's thread.NOTE: the method does not explicitly start a new request scope context. Instead it is assumed that the method is invoked from within a context of a proper, running
request context. A caller may use thegetRequestScope()method to retrieve the request scope instance and use it to initialize the proper request scope context prior the method invocation.- Parameters:
request- client request to be invoked.- Returns:
- client response.
- Throws:
javax.ws.rs.ProcessingException- in case of an invocation failure.
-
getRequestScope
public RequestScope getRequestScope()
Get the request scope instance configured for the runtime.- Returns:
- request scope instance.
-
getConfig
public ClientConfig getConfig()
Get runtime configuration.- Returns:
- runtime configuration.
-
finalize
protected void finalize() throws java.lang.ThrowableThis will be used as the last resort to clean things up in the case that this instance gets garbage collected before the client itself gets released.Close will be invoked either via finalizer or via JerseyClient onShutdown hook, whatever comes first.
- Overrides:
finalizein classjava.lang.Object- Throws:
java.lang.Throwable
-
onShutdown
public void onShutdown()
Description copied from interface:JerseyClient.ShutdownHookInvoked when the client instance is closed.- Specified by:
onShutdownin interfaceJerseyClient.ShutdownHook
-
close
private void close()
-
preInitialize
public void preInitialize()
Pre-initialize the client runtime.
-
getConnector
public Connector getConnector()
Runtime connector.- Returns:
- runtime connector.
-
getInjectionManager
InjectionManager getInjectionManager()
Get injection manager.- Returns:
- injection manager.
-
-