Class AbstractJavaResourceMethodDispatcher
- java.lang.Object
-
- org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher
-
- All Implemented Interfaces:
ResourceMethodDispatcher
- Direct Known Subclasses:
JavaResourceMethodDispatcherProvider.AbstractMethodParamInvoker,VoidVoidDispatcherProvider.VoidToVoidDispatcher
abstract class AbstractJavaResourceMethodDispatcher extends java.lang.Object implements ResourceMethodDispatcher
Abstract resource method dispatcher that provides skeleton implementation of dispatching requests to a particularJava methodusing suppliedJava method invocation handler.
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface org.glassfish.jersey.server.spi.internal.ResourceMethodDispatcher
ResourceMethodDispatcher.Provider
-
-
Field Summary
Fields Modifier and Type Field Description private java.lang.reflect.Methodmethodprivate java.lang.reflect.InvocationHandlermethodHandlerprivate InvocableresourceMethodprivate ConfiguredValidatorvalidator
-
Constructor Summary
Constructors Constructor Description AbstractJavaResourceMethodDispatcher(Invocable resourceMethod, java.lang.reflect.InvocationHandler methodHandler, ConfiguredValidator validator)Initialize common java resource method dispatcher structures.
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description javax.ws.rs.core.Responsedispatch(java.lang.Object resource, ContainerRequest request)Reflectively dispatch a request to the underlyinginvocable resource methodvia the configuredinvocation handlerusing the provided resource class instance.protected abstract javax.ws.rs.core.ResponsedoDispatch(java.lang.Object resource, ContainerRequest request)Dispatching functionality to be implemented by a concrete dispatcher implementation sub-class.(package private) java.lang.Objectinvoke(ContainerRequest containerRequest, java.lang.Object resource, java.lang.Object... args)Use the underlying invocation handler to invoke the underlying Java method with the supplied input method argument values on a given resource instance.private static java.lang.RuntimeExceptionmapTargetToRuntimeEx(java.lang.Throwable throwable)java.lang.StringtoString()
-
-
-
Field Detail
-
method
private final java.lang.reflect.Method method
-
methodHandler
private final java.lang.reflect.InvocationHandler methodHandler
-
resourceMethod
private final Invocable resourceMethod
-
validator
private final ConfiguredValidator validator
-
-
Constructor Detail
-
AbstractJavaResourceMethodDispatcher
AbstractJavaResourceMethodDispatcher(Invocable resourceMethod, java.lang.reflect.InvocationHandler methodHandler, ConfiguredValidator validator)
Initialize common java resource method dispatcher structures.- Parameters:
resourceMethod- invocable resource class Java method.methodHandler- method invocation handler.validator- input/output parameter validator.
-
-
Method Detail
-
dispatch
public final javax.ws.rs.core.Response dispatch(java.lang.Object resource, ContainerRequest request) throws javax.ws.rs.ProcessingExceptionDescription copied from interface:ResourceMethodDispatcherReflectively dispatch a request to the underlyinginvocable resource methodvia the configuredinvocation handlerusing the provided resource class instance. In summary, the main job of the dispatcher is to convert a request into an array of the Java method input parameters and subsequently convert the returned response of an arbitrary Java type to a JAX-RSresponseinstance. When the method is invoked, the dispatcher will extract theJava methodinformation from the invocable resource method and use the information to retrieve the required input parameters from either the request instance or any other available run-time information. Once the set of input parameter values is computed, the underlying invocation handler instance is invoked to process (invoke) the Java resource method with the computed input parameter values. The returned response is subsequently converted into a JAX-RSResponsetype and returned from the dispatcher. It is assumed that the supplied resource implements the invocable method. Dispatcher implementation should not need to do any additional checks in that respect.- Specified by:
dispatchin interfaceResourceMethodDispatcher- Parameters:
resource- the resource class instance.request- request to be dispatched.- Returns:
responsefor the dispatched request.- Throws:
javax.ws.rs.ProcessingException- (possiblymappable) container exception that will be handled by the Jersey server container.
-
doDispatch
protected abstract javax.ws.rs.core.Response doDispatch(java.lang.Object resource, ContainerRequest request) throws javax.ws.rs.ProcessingExceptionDispatching functionality to be implemented by a concrete dispatcher implementation sub-class.- Parameters:
resource- resource class instance.request- request to be dispatched.- Returns:
- response for the dispatched request.
- Throws:
javax.ws.rs.ProcessingException- in case of a processing error.- See Also:
ResourceMethodDispatcher.dispatch(Object, org.glassfish.jersey.server.ContainerRequest)
-
invoke
final java.lang.Object invoke(ContainerRequest containerRequest, java.lang.Object resource, java.lang.Object... args) throws javax.ws.rs.ProcessingException
Use the underlying invocation handler to invoke the underlying Java method with the supplied input method argument values on a given resource instance.- Parameters:
containerRequest- container request.resource- resource class instance.args- input argument values for the invoked Java method.- Returns:
- invocation result.
- Throws:
javax.ws.rs.ProcessingException- (possiblymappable) container exception in case the invocation failed.
-
mapTargetToRuntimeEx
private static java.lang.RuntimeException mapTargetToRuntimeEx(java.lang.Throwable throwable)
-
toString
public java.lang.String toString()
- Overrides:
toStringin classjava.lang.Object
-
-