Class ERequestFeed.Builder
- java.lang.Object
-
- net.sf.eBus.client.EFeed.Builder<F,T,B>
-
- net.sf.eBus.client.ERequestFeed.Builder
-
- Enclosing class:
- ERequestFeed
public static final class ERequestFeed.Builder extends EFeed.Builder<F,T,B>
EREquestFeed.Builderis now the preferred mechanism for creating aERequestFeedinstance. ABuilderinstance is acquired fromERequestFeed.builder(). The following example shows how to create anERequestFeedinstance using aBuilder. The code assumes that the class implementsERequestorinterfacefeedStatusmethod but uses other methods for reply messages. The exampleCatalogOrderrequest message supports two replies besides the genericEReplyMessage:OrderRejectReplyandOrderUpdateReply.@Override public void startup() { final EMessageKey key = new EMessageKey(com.acme.CatalogOrder.class, subject); final ERequestFeed feed = (ERequestFeed.builder()).target(this) .messageKey(key) Message key must be set prior to setting reply callbacks. .scope(EFeed.FeedScope.REMOTE_ONLY) // Call .statusCallback(lambda expression) to replace feedStatus method // Set different callback for each reply message class. .replyCallback(EReplyMessage.class, this::genericReply) .replyCallback(OrderRejectReply.class, this::orderReject) .replyCallback(OrderUpdateReply.class, this::orderUpdate) .build(); ... }- See Also:
ERequestFeed.builder()
-
-
Field Summary
-
Fields inherited from class net.sf.eBus.client.EFeed.Builder
mEClient, mLocation, mScope, mTarget, mTargetClass
-
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected ERequestFeedbuildImpl()Returns a newERequrestFeedinstance based onthis Builder's configuration.protected net.sf.eBus.client.ESubjectgetSubject()Returns eBus subject for the configured message key.ERequestFeed.BuildermayClose(boolean flag)Sets "may close" flag to given value.ERequestFeed.BuildermessageKey(EMessageKey key)Sets eBus message key defining this feed.ERequestFeed.BuilderreplyCallback(java.lang.Class<? extends EReplyMessage> mc, ReplyCallback cb)Sets the callback for a specific reply message class.ERequestFeed.BuilderreplyCallback(ReplyCallback cb)Sets reply callback for all message classes.protected ERequestFeed.Builderself()Returnsthisreference.ERequestFeed.BuilderstatusCallback(FeedStatusCallback<IERequestFeed> cb)Puts the feed status callback in place.protected Validatorvalidate(Validator problems)Checks if message key is set.-
Methods inherited from class net.sf.eBus.client.EFeed.Builder
build, isOverridden, scope, target
-
-
-
-
Method Detail
-
getSubject
protected net.sf.eBus.client.ESubject getSubject()
Returns eBus subject for the configured message key.- Returns:
- eBus feed subject.
-
validate
protected Validator validate(Validator problems)
Checks if message key is set.- Parameters:
problems- place invalid configuration settings in this problems list.- Returns:
problemsto allow for method chaining.
-
buildImpl
protected ERequestFeed buildImpl()
Returns a newERequrestFeedinstance based onthis Builder's configuration.- Specified by:
buildImplin classEFeed.Builder<ERequestFeed,ERequestor,ERequestFeed.Builder>- Returns:
- new request feed.
-
self
protected ERequestFeed.Builder self()
Returnsthisreference.- Specified by:
selfin classEFeed.Builder<ERequestFeed,ERequestor,ERequestFeed.Builder>- Returns:
thisreference.
-
messageKey
public ERequestFeed.Builder messageKey(EMessageKey key)
Sets eBus message key defining this feed. Returnsthis Builderinstance so that configuration methods may be chained.- Parameters:
key- eBus message key.- Returns:
this Builderinstance.- Throws:
java.lang.NullPointerException- iftargetisnull.
-
mayClose
public ERequestFeed.Builder mayClose(boolean flag)
Sets "may close" flag to given value. Atruemeans requester has ability to close an active request;falsemeans requester may not cancel an active request and must wait for the request to complete.Defaults to
true.- Parameters:
flag-truemeans request may be closed.- Returns:
this Builderinstance.
-
statusCallback
public ERequestFeed.Builder statusCallback(FeedStatusCallback<IERequestFeed> cb)
Puts the feed status callback in place. Ifcbis notnull, feed status updates will be passed tocbrather thanERequestor.feedStatus(EFeedState, IERequestFeed). Anull cbresults in feed status updates posted to theERequestor.feedStatus(EFeedState, IERequestFeed)override.The following example shows how to use this method:
statusCallback( (fs, f) → { if (fs == EFeedState.DOWN) { // Clean up in-progress work. } }- Parameters:
cb- feed status update callback. May benull.- Returns:
this Builderinstance.
-
replyCallback
public ERequestFeed.Builder replyCallback(java.lang.Class<? extends EReplyMessage> mc, ReplyCallback cb)
Sets the callback for a specific reply message class. Ifcbis notnull, replies will be passed tocbrather thanERequestor.reply(int, EReplyMessage, ERequestFeed.ERequest). Acbresults in replies posted to theERequestor.reply(int, EReplyMessage, ERequestFeed.ERequest)override.If the goal is to set a single callback method for all reply message types, then use
replyCallback(ReplyCallback). Note that method overrides all previous set reply callbacks.The following example shows how to use this method to set a reply callback lambda expression:
OrderRejectReply.class, this::orderReject- Parameters:
mc- the reply message class.cb- callback for the reply message.- Returns:
this Builderinstance.- Throws:
java.lang.NullPointerException- ifmcisnull.java.lang.IllegalArgumentException- ifmcis not a reply for this request.java.lang.IllegalStateException- ifmessageKey(EMessageKey)was not successfully called prior to setting the reply callback.- See Also:
messageKey(EMessageKey),replyCallback(ReplyCallback)
-
replyCallback
public ERequestFeed.Builder replyCallback(ReplyCallback cb)
Sets reply callback for all message classes. This will override any previous calls toreplyCallback(Class, ReplyCallback)will be overwritten by this method. Therefore this method should be called prior to setting specific reply message class callbacks.If
cbis notnull, replies will be passed tocbrather thanERequestor.reply(int, EReplyMessage, ERequestFeed.ERequest). Acbresults in replies posted to theERequestor.reply(int, EReplyMessage, ERequestFeed).If the goal is to set a callback for a specific reply message class, then use
replyCallback(Class, ReplyCallback).The following example shows how to set a generic reply callback lambda expression:
replyCallback(this::orderReply)- Parameters:
cb- callback for the reply message.- Returns:
this Builderinstance.- Throws:
java.lang.IllegalStateException- ifmessageKey(EMessageKey)was not successfully called prior to setting the reply callback.- See Also:
replyCallback(Class, ReplyCallback)
-
-