- java.lang.Object
-
- org.apache.camel.support.service.BaseService
-
- org.apache.camel.support.service.ServiceSupport
-
- org.apache.camel.support.DefaultProducer
-
- org.apache.camel.support.DefaultAsyncProducer
-
- org.apache.camel.support.component.AbstractApiProducer<E,T>
-
- All Implemented Interfaces:
AutoCloseable
,org.apache.camel.AsyncProcessor
,org.apache.camel.AsyncProducer
,org.apache.camel.EndpointAware
,org.apache.camel.IsSingleton
,org.apache.camel.Processor
,org.apache.camel.Producer
,org.apache.camel.Service
,org.apache.camel.ShutdownableService
,org.apache.camel.StatefulService
,PropertiesInterceptor
,ResultInterceptor
,org.apache.camel.SuspendableService
public abstract class AbstractApiProducer<E extends Enum<E> & ApiName,T> extends DefaultAsyncProducer implements PropertiesInterceptor, ResultInterceptor
Base class for API based Producers
-
-
Field Summary
Fields Modifier and Type Field Description protected AbstractApiEndpoint<E,T>
endpoint
protected ApiMethodHelper<?>
methodHelper
protected ApiMethodPropertiesHelper<T>
propertiesHelper
-
Constructor Summary
Constructors Constructor Description AbstractApiProducer(AbstractApiEndpoint<E,T> endpoint, ApiMethodPropertiesHelper<T> propertiesHelper)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected Object
doInvokeMethod(ApiMethod method, Map<String,Object> properties)
Invoke the API method.protected ApiMethod
findMethod(org.apache.camel.Exchange exchange, Map<String,Object> properties)
void
interceptProperties(Map<String,Object> properties)
Intercept method invocation arguments used to find and invoke API method.void
interceptResult(Object methodResult, org.apache.camel.Exchange resultExchange)
Do additional result exchange processing, for example, adding custom headers.boolean
process(org.apache.camel.Exchange exchange, org.apache.camel.AsyncCallback callback)
Object
splitResult(Object result)
Split a complex result into result elements.-
Methods inherited from class org.apache.camel.support.DefaultAsyncProducer
process, processAsync
-
Methods inherited from class org.apache.camel.support.DefaultProducer
createExchange, doStart, doStop, getEndpoint, isSingleton, toString
-
Methods inherited from class org.apache.camel.support.service.BaseService
build, doBuild, doFail, doInit, doLifecycleChange, doResume, doShutdown, doSuspend, fail, getStatus, init, isBuild, isInit, isNew, isRunAllowed, isShutdown, isStarted, isStarting, isStartingOrStarted, isStopped, isStopping, isStoppingOrStopped, isSuspended, isSuspending, isSuspendingOrSuspended, resume, shutdown, start, stop, suspend
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
-
-
-
Field Detail
-
propertiesHelper
protected final ApiMethodPropertiesHelper<T> propertiesHelper
-
methodHelper
protected final ApiMethodHelper<?> methodHelper
-
-
Constructor Detail
-
AbstractApiProducer
public AbstractApiProducer(AbstractApiEndpoint<E,T> endpoint, ApiMethodPropertiesHelper<T> propertiesHelper)
-
-
Method Detail
-
process
public boolean process(org.apache.camel.Exchange exchange, org.apache.camel.AsyncCallback callback)
- Specified by:
process
in interfaceorg.apache.camel.AsyncProcessor
-
interceptProperties
public void interceptProperties(Map<String,Object> properties)
Description copied from interface:PropertiesInterceptor
Intercept method invocation arguments used to find and invoke API method. Can be overridden to add custom/hidden method arguments.- Specified by:
interceptProperties
in interfacePropertiesInterceptor
- Parameters:
properties
- method invocation arguments.
-
doInvokeMethod
protected Object doInvokeMethod(ApiMethod method, Map<String,Object> properties) throws org.apache.camel.RuntimeCamelException
Invoke the API method. Derived classes can override, but MUST call super.doInvokeMethod().- Parameters:
method
- API method to invoke.properties
- method arguments from endpoint properties and exchange In headers.- Returns:
- API method invocation result.
- Throws:
org.apache.camel.RuntimeCamelException
- on error. Exceptions thrown by API method are wrapped.
-
splitResult
public final Object splitResult(Object result)
Description copied from interface:ResultInterceptor
Split a complex result into result elements.- Specified by:
splitResult
in interfaceResultInterceptor
- Parameters:
result
- API method invocation result- Returns:
- either the same result if it cannot be split, an array or collection object with split results
-
interceptResult
public void interceptResult(Object methodResult, org.apache.camel.Exchange resultExchange)
Description copied from interface:ResultInterceptor
Do additional result exchange processing, for example, adding custom headers.- Specified by:
interceptResult
in interfaceResultInterceptor
- Parameters:
methodResult
- result of API method invocation.resultExchange
- result as a Camel exchange, may be a split result from Arrays or Collections.
-
-