public abstract class ProxiedResource extends RestResource
| Modifier and Type | Class and Description |
|---|---|
static class |
ProxiedResource.CallResult<ResponseType>
This wrapper is intended to provide additional server error information
if something went wrong beyond the actual API HTTP call.
|
static class |
ProxiedResource.MasterResponse<ResponseType>
Deprecated.
Use
ProxiedResource.NodeResponse instead. |
static class |
ProxiedResource.NodeResponse<ResponseType> |
| Modifier and Type | Field and Description |
|---|---|
protected NodeService |
nodeService |
protected RemoteInterfaceProvider |
remoteInterfaceProvider |
configuration, userService| Modifier | Constructor and Description |
|---|---|
protected |
ProxiedResource(javax.ws.rs.core.HttpHeaders httpHeaders,
NodeService nodeService,
RemoteInterfaceProvider remoteInterfaceProvider,
ExecutorService executorService) |
| Modifier and Type | Method and Description |
|---|---|
static String |
authenticationToken(javax.ws.rs.core.HttpHeaders httpHeaders) |
protected <RemoteInterfaceType> |
createRemoteInterfaceProvider(Class<RemoteInterfaceType> interfaceClass) |
protected String |
getAuthenticationToken()
Gets an authentication token to be used in an Authorization header of forwarded requests by extracting
authentication information from the original request.
|
protected <RemoteInterfaceType,RemoteCallResponseType> |
getForAllNodes(Function<RemoteInterfaceType,retrofit2.Call<RemoteCallResponseType>> fn,
Function<String,Optional<RemoteInterfaceType>> interfaceProvider)
Deprecated.
|
protected <RemoteInterfaceType,FinalResponseType,RemoteCallResponseType> |
getForAllNodes(Function<RemoteInterfaceType,retrofit2.Call<RemoteCallResponseType>> fn,
Function<String,Optional<RemoteInterfaceType>> interfaceProvider,
Function<RemoteCallResponseType,FinalResponseType> transformer)
Deprecated.
|
protected <RemoteInterfaceType,RemoteCallResponseType> |
requestOnAllNodes(Function<String,Optional<RemoteInterfaceType>> interfaceProvider,
Function<RemoteInterfaceType,retrofit2.Call<RemoteCallResponseType>> fn) |
protected <RemoteInterfaceType,RemoteCallResponseType,FinalResponseType> |
requestOnAllNodes(Function<String,Optional<RemoteInterfaceType>> remoteInterfaceProvider,
Function<RemoteInterfaceType,retrofit2.Call<RemoteCallResponseType>> remoteInterfaceCallProvider,
Function<RemoteCallResponseType,FinalResponseType> responseTransformer)
This method concurrently performs an API call on all active nodes.
|
protected <RemoteInterfaceType,RemoteCallResponseType> |
requestOnLeader(Function<RemoteInterfaceType,retrofit2.Call<RemoteCallResponseType>> remoteInterfaceFunction,
Function<String,Optional<RemoteInterfaceType>> remoteInterfaceProvider)
Execute the given remote interface function on the leader node.
|
protected <RemoteInterfaceType,RemoteCallResponseType> |
requestOnMaster(Function<RemoteInterfaceType,retrofit2.Call<RemoteCallResponseType>> remoteInterfaceFunction,
Function<String,Optional<RemoteInterfaceType>> remoteInterfaceProvider)
Deprecated.
Use
requestOnLeader(Function, Function) instead. |
checkAnyPermission, checkPermission, checkPermission, getCurrentUser, getIndexSet, getSubject, getUriBuilderToSelf, isAnyPermitted, isAnyPermitted, isPermitted, isPermitted, setPrettyPrintprotected final NodeService nodeService
protected final RemoteInterfaceProvider remoteInterfaceProvider
protected ProxiedResource(@Context
javax.ws.rs.core.HttpHeaders httpHeaders,
NodeService nodeService,
RemoteInterfaceProvider remoteInterfaceProvider,
ExecutorService executorService)
public static String authenticationToken(javax.ws.rs.core.HttpHeaders httpHeaders)
@Nullable protected String getAuthenticationToken()
javax.ws.rs.NotAuthorizedException - if the original request was authenticated, but no authentication token could
be created from the request headers.@Deprecated protected <RemoteInterfaceType,RemoteCallResponseType> Map<String,Optional<RemoteCallResponseType>> getForAllNodes(Function<RemoteInterfaceType,retrofit2.Call<RemoteCallResponseType>> fn, Function<String,Optional<RemoteInterfaceType>> interfaceProvider)
requestOnAllNodes(Function, Function) instead.
The new method properly handles the case of `No-Content` response and provides
detailed report per each node API call.@Deprecated protected <RemoteInterfaceType,FinalResponseType,RemoteCallResponseType> Map<String,Optional<FinalResponseType>> getForAllNodes(Function<RemoteInterfaceType,retrofit2.Call<RemoteCallResponseType>> fn, Function<String,Optional<RemoteInterfaceType>> interfaceProvider, Function<RemoteCallResponseType,FinalResponseType> transformer)
requestOnAllNodes(Function, Function, Function) instead.
The new method properly handles the case of `No-Content` response and provides
detailed report per each node API call.protected <RemoteInterfaceType> Function<String,Optional<RemoteInterfaceType>> createRemoteInterfaceProvider(Class<RemoteInterfaceType> interfaceClass)
protected <RemoteInterfaceType,RemoteCallResponseType> Map<String,ProxiedResource.CallResult<RemoteCallResponseType>> requestOnAllNodes(Function<String,Optional<RemoteInterfaceType>> interfaceProvider, Function<RemoteInterfaceType,retrofit2.Call<RemoteCallResponseType>> fn)
protected <RemoteInterfaceType,RemoteCallResponseType,FinalResponseType> Map<String,ProxiedResource.CallResult<FinalResponseType>> requestOnAllNodes(Function<String,Optional<RemoteInterfaceType>> remoteInterfaceProvider, Function<RemoteInterfaceType,retrofit2.Call<RemoteCallResponseType>> remoteInterfaceCallProvider, Function<RemoteCallResponseType,FinalResponseType> responseTransformer)
RemoteInterfaceType - Type of the Retrofit HTTP clientRemoteCallResponseType - Type of the API call response bodyFinalResponseType - Type after applying the transformationsremoteInterfaceProvider - provides an instance of Retrofit HTTP client for the target APIremoteInterfaceCallProvider - provides an invocation of a Retrofit method for the intended API call.responseTransformer - applies transformations to HTTP response bodyprotected <RemoteInterfaceType,RemoteCallResponseType> ProxiedResource.MasterResponse<RemoteCallResponseType> requestOnMaster(Function<RemoteInterfaceType,retrofit2.Call<RemoteCallResponseType>> remoteInterfaceFunction, Function<String,Optional<RemoteInterfaceType>> remoteInterfaceProvider) throws IOException
requestOnLeader(Function, Function) instead.IOExceptionprotected <RemoteInterfaceType,RemoteCallResponseType> ProxiedResource.NodeResponse<RemoteCallResponseType> requestOnLeader(Function<RemoteInterfaceType,retrofit2.Call<RemoteCallResponseType>> remoteInterfaceFunction, Function<String,Optional<RemoteInterfaceType>> remoteInterfaceProvider) throws IOException
This is used to forward an API request to the leader node. It is useful in situations where an API call can only be executed on the leader node.
The returned ProxiedResource.NodeResponse object is constructed from the remote response's status code and body.
IOExceptionCopyright © 2012–2022 Graylog, Inc.. All rights reserved.