use of org.talend.esb.mep.requestcallback.feature.CallContext in project tesb-rt-se by Talend.
the class RequestCallbackOutInterceptor method doHandleSoapMessage.
private void doHandleSoapMessage(SoapMessage message) throws Fault {
final Object callbackEndpoint = message.getContextualProperty(RequestCallbackFeature.CALLBACK_ENDPOINT_PROPERTY_NAME);
if (callbackEndpoint != null) {
final String callbackEndpointAddress;
if (callbackEndpoint instanceof String) {
callbackEndpointAddress = (String) callbackEndpoint;
} else if (callbackEndpoint instanceof EndpointImpl) {
callbackEndpointAddress = ((EndpointImpl) callbackEndpoint).getAddress();
} else {
throw new IllegalArgumentException("Unsupported type of endpoint. ");
}
doHandleRequestSoapMessage(message, callbackEndpointAddress);
return;
}
final CallContext ctx = (CallContext) message.getContextualProperty(RequestCallbackFeature.CALLCONTEXT_PROPERTY_NAME);
if (ctx != null) {
doHandleCallbackSoapMessage(message, ctx);
return;
}
}
use of org.talend.esb.mep.requestcallback.feature.CallContext in project tesb-rt-se by Talend.
the class LibraryServerImpl method seekBookInBasement.
@Override
public void seekBookInBasement(SearchFor body) {
System.out.println("****************************************************************************");
System.out.println("*** seekBookInBasement request (Request-Callback operation) was received ***");
System.out.println("****************************************************************************");
showSeekBookInBasementRequest(body);
CallContext ctx = CallContext.getCallContext(wsContext.getMessageContext());
System.out.println("Info from CallContext:");
System.out.println("- Call ID is " + ctx.getCallId());
/**
** Storing Call Context ***
*/
System.out.println("Storing CallContext:");
CallContextStore<CallContext> ccs = new CallContextStore<CallContext>();
String callContextKey;
try {
callContextKey = ccs.saveObject(ctx);
System.out.println("- callContext saved with key: " + callContextKey);
} catch (Exception e) {
callContextKey = null;
System.out.println("Auxiliary Storage Service seems to be unavailable.");
System.out.println("Proceeding without storing the CallContext.");
}
if (callContextKey != null) {
/**
** Restoring Call Context ***
*/
System.out.println("Restoring CallContext:");
ctx = ccs.getStoredObject(callContextKey);
System.out.println("- callContext restored");
System.out.println("Info from restored CallContext:");
System.out.println("- Call ID is " + ctx.getCallId());
/**
** Remove Call context **
*/
ccs.removeStoredObject(callContextKey);
}
List<String> authorsLastNames = body.getAuthorLastName();
if (authorsLastNames != null && authorsLastNames.size() > 0) {
String authorsLastName = authorsLastNames.get(0);
if (authorsLastName != null && authorsLastName.length() > 0 && !("Stripycat".equalsIgnoreCase(authorsLastName) || "Morillo".equalsIgnoreCase(authorsLastName))) {
SeekBookError e = prepareException("No book available from author " + authorsLastName);
System.out.println("No book available from author " + authorsLastName);
System.out.println("\nSending business fault (SeekBook error) with parameters:");
Utils.showSeekBookError(e);
LibraryConsumer libraryConsumer = ctx.createCallbackProxy(LibraryConsumer.class);
libraryConsumer.seekBookInBasementFault(e.getFaultInfo());
if (callContextKey != null) {
/**
** Removing Call Context ***
*/
System.out.println("Removing CallContext:");
ccs.removeStoredObject(callContextKey);
System.out.println("- callContext removed");
}
return;
}
}
ListOfBooks result = new ListOfBooks();
BookType book1 = new BookType();
if (authorsLastNames.contains("Stripycat")) {
book1 = new BookType();
result.getBook().add(book1);
PersonType author = new PersonType();
book1.getAuthor().add(author);
author.setFirstName("John");
author.setLastName("Stripycat");
Calendar dateOfBirth = new GregorianCalendar(202, Calendar.MAY, 17);
author.setDateOfBirth(dateOfBirth.getTime());
book1.getTitle().add("Hunting basement inhabitants");
book1.getPublisher().add("Dusty Edition");
book1.setYearPublished("2013");
}
if (authorsLastNames.contains("Morillo")) {
BookType book = new BookType();
result.getBook().add(book);
PersonType author = new PersonType();
book.getAuthor().add(author);
author.setFirstName("David A.");
author.setLastName("Morillo");
Calendar dateOfBirth = new GregorianCalendar(1970, Calendar.JANUARY, 1);
author.setDateOfBirth(dateOfBirth.getTime());
book.getTitle().add("The book about software");
book.getPublisher().add("Frosty Edition");
book.setYearPublished("2006");
}
System.out.println("Book(s) is found:");
showSeekBookResponse(result);
ctx.setupCallbackProxy(callbackResponseClient);
callbackResponseClient.seekBookInBasementResponse(result);
if (authorsLastNames.contains("Stripycat")) {
book1.getTitle().set(0, "Hunting more basement inhabitants");
book1.setYearPublished("2014");
result.getBook().clear();
result.getBook().add(book1);
}
showSeekBookResponse(result);
ctx.setupCallbackProxy(callbackResponseClient);
callbackResponseClient.seekBookInBasementResponse(result);
if (callContextKey != null) {
/**
** Removing Call Context ***
*/
System.out.println("Removing CallContext:");
ccs.removeStoredObject(callContextKey);
System.out.println("- callContext removed");
}
try {
Thread.sleep(1000);
libraryPublisher.publishNewBooksNotifications();
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
}
use of org.talend.esb.mep.requestcallback.feature.CallContext in project tesb-rt-se by Talend.
the class LibraryConsumerImpl method seekBookInBasementResponse.
public void seekBookInBasementResponse(ListOfBooks body) {
System.out.println("*************************************************************************************");
System.out.println("*** seekBookInBasementResponse response (Request-Callback operation) was received ***");
System.out.println("*************************************************************************************\n");
Utils.showBooks(body);
CallContext ctx = CallContext.getCallContext(wsContext.getMessageContext());
System.out.println("Info from CallContext:");
if (ctx == null) {
System.out.println("- no CallContext");
} else {
System.out.println("- Call ID is " + ctx.getCallId());
System.out.println("- Callback ID is " + ctx.getCallbackId());
}
responses.offer(body);
}
use of org.talend.esb.mep.requestcallback.feature.CallContext in project tesb-rt-se by Talend.
the class LibraryConsumerImpl method seekBookInBasementFault.
public void seekBookInBasementFault(ExceptionFrame exception) {
System.out.println("*************************************************************************************");
System.out.println("*** seekBookInBasementFault response (Request-Callback operation) was received ******");
System.out.println("*************************************************************************************\n");
Utils.showExceptionFrame(exception);
CallContext ctx = CallContext.getCallContext(wsContext.getMessageContext());
System.out.println("Info from CallContext:");
if (ctx == null) {
System.out.println("- no CallContext");
} else {
System.out.println("- Call ID is " + ctx.getCallId());
System.out.println("- Callback ID is " + ctx.getCallbackId());
}
responses.offer(exception);
}
Aggregations