I wanted to check the asyncRequestBody method in more complicated scenarios from the last post.
I Created the following route
public void configure() {
from("direct:cafeEnterence").to("bean:hostess?method=getTable").to("seda:nextStage");
from("seda:nextStage").to("bean:hostess?method=getVipTable");
and I changed the hostess class to
public class hostess {
public CafeTable getTable (Guest pGuest)
{
System.out.println ("No of people :" + Integer.toString(pGuest.getmNoOfP()));
return new CafeTable ("Not in the smoking Zone");
}
public CafeTable getVipTable (CafeTable pCafeTable)
{
return new CafeTable (pCafeTable.getmLocation() + " and in vip area." );
}
}
Executing the code:
No of people :4
The table :CafeTable{mLocation=Not in the smoking Zone and in vip area.}
The future waits for the route to end until it executes its code.
Now lets split the route
Add the guestspliter
public class GuestSplitter {
public List<Guest> split(Guest pGuest) {
List<Guest> RetValue = new ArrayList<Guest>();
for ( int i = 0 ; i < pGuest.getmNoOfP() ; i ++)
{
RetValue.add(new Guest ( i) );
}
return RetValue;
}
}
Change the route
from("direct:cafeEnterence").split().method("GuestSplitter").to("bean:hostess?method=getTable");
Now the response of
CafeTable response = future.get(1, TimeUnit.MINUTES);
is null