@Override
	protected HttpRequestBase process(InvocationContext context, HttpRequestBase request) {

		try {
			
			List<Class<? extends Interceptor>> interceptors = new ArrayList<Class<? extends Interceptor>>();
			
			Intercept endpointMetadata = context.getEndpoint().getAnnotation(Intercept.class);
			Intercept requestMetadata = context.getRequest().getAnnotation(Intercept.class);
			
			if(isDetached(context, Intercept.class)) {
			
				return request;
			}
			
			if(endpointMetadata != null) {
				
				interceptors.addAll(filterSkipped(context, Arrays.asList(endpointMetadata.value())));
			}
				
			if(requestMetadata != null) {
				
				interceptors.addAll(Arrays.asList(requestMetadata.value()));
			}
			
			for (Class<? extends Interceptor> interceptorType : interceptors) {
				
				String key = interceptorType.getName();
				Interceptor interceptor = INTERCEPTORS.get(key);
				
				if(interceptor == null) {
					
					interceptor = interceptorType.newInstance();
					INTERCEPTORS.put(key, interceptor);
				}
				
				interceptor.intercept(context, request);
			}
			
			List<Object> requestArgs = context.getArguments();
			
			if(requestArgs != null) {
			
				for (Object arg : requestArgs) {
					
					if(arg instanceof Interceptor && arg != null) {
						
						((Interceptor)arg).intercept(context, request);
					}
				}
			}
			
			return request;
		}
		catch(Exception e) {
			
			throw new RequestProcessorException(context, getClass(), e);
		}
	}
@ Override protected HttpRequestBase process ( InvocationContext context , HttpRequestBase request ) { try { List < Class < ? extends Interceptor > > interceptors = new ArrayList < Class < ? extends Interceptor > > ( ) ; Intercept endpointMetadata = context . getEndpoint ( ) . getAnnotation ( Intercept . class ) ; Intercept requestMetadata = context . getRequest ( ) . getAnnotation ( Intercept . class ) ; if ( isDetached ( context , Intercept . class ) ) { return request ; } if ( endpointMetadata != null ) { interceptors . addAll ( filterSkipped ( context , Arrays . asList ( endpointMetadata . value ( ) ) ) ) ; } if ( requestMetadata != null ) { interceptors . addAll ( Arrays . asList ( requestMetadata . value ( ) ) ) ; } for ( Class < ? extends Interceptor > interceptorType : interceptors ) { String key = interceptorType . getName ( ) ; Interceptor interceptor = INTERCEPTORS . get ( key ) ; if ( interceptor == null ) { interceptor = interceptorType . newInstance ( ) ; INTERCEPTORS . put ( key , interceptor ) ; } interceptor . intercept ( context , request ) ; } List < Object > requestArgs = context . getArguments ( ) ; if ( requestArgs != null ) { for ( Object arg : requestArgs ) { if ( arg instanceof Interceptor && arg != null ) { ( ( Interceptor ) arg ) . intercept ( context , request ) ; } } } return request ; } catch ( Exception e ) { throw new RequestProcessorException ( context , getClass ( ) , e ) ; } }
<p>Accepts the {@link InvocationContext} and executes any {@link Interceptor}s which fall within
the scope of the current proxy invocation by passing in the provided {@link HttpRequestBase}.</p>

<p>See {@link AbstractRequestProcessor#process(InvocationContext, HttpRequestBase)}.</p>

@param context
the {@link InvocationContext} which will be used to discover all {@link Interceptor}s
which are within the scope of the current request invocation
<br><br>
@param request
the {@link HttpRequestBase} which will be processed by all discovered {@link Interceptor}s
<br><br>
@return the same instance of {@link HttpRequestBase} which was processed by the {@link Interceptor}s
<br><br>
@throws RequestProcessorException
if any of the {@link Interceptor}s failed to process the {@link HttpRequestBase}
<br><br>
@since 1.3.0