Search in sources :

Example 6 with CallContext

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;
    }
}
Also used : EndpointImpl(org.apache.cxf.jaxws.EndpointImpl) CallContext(org.talend.esb.mep.requestcallback.feature.CallContext)

Example 7 with CallContext

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();
    }
}
Also used : LibraryConsumer(org.talend.services.demos.library._1_0.LibraryConsumer) GregorianCalendar(java.util.GregorianCalendar) Calendar(java.util.Calendar) GregorianCalendar(java.util.GregorianCalendar) PersonType(org.talend.types.demos.library.common._1.PersonType) CallContext(org.talend.esb.mep.requestcallback.feature.CallContext) CallContextStore(org.talend.esb.mep.requestcallback.impl.callcontext.CallContextStore) ListOfBooks(org.talend.types.demos.library.common._1.ListOfBooks) BookType(org.talend.types.demos.library.common._1.BookType) SeekBookError(org.talend.services.demos.library._1_0.SeekBookError)

Example 8 with CallContext

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);
}
Also used : CallContext(org.talend.esb.mep.requestcallback.feature.CallContext)

Example 9 with CallContext

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);
}
Also used : CallContext(org.talend.esb.mep.requestcallback.feature.CallContext)

Aggregations

CallContext (org.talend.esb.mep.requestcallback.feature.CallContext)9 QName (javax.xml.namespace.QName)2 Calendar (java.util.Calendar)1 GregorianCalendar (java.util.GregorianCalendar)1 EndpointImpl (org.apache.cxf.jaxws.EndpointImpl)1 AddressingProperties (org.apache.cxf.ws.addressing.AddressingProperties)1 CallContextStore (org.talend.esb.mep.requestcallback.impl.callcontext.CallContextStore)1 LibraryConsumer (org.talend.services.demos.library._1_0.LibraryConsumer)1 SeekBookError (org.talend.services.demos.library._1_0.SeekBookError)1 BookType (org.talend.types.demos.library.common._1.BookType)1 ListOfBooks (org.talend.types.demos.library.common._1.ListOfBooks)1 PersonType (org.talend.types.demos.library.common._1.PersonType)1