Package org.talend.esb.mep.requestcallback.sample.internal

Source Code of org.talend.esb.mep.requestcallback.sample.internal.ServiceProviderHandler

package org.talend.esb.mep.requestcallback.sample.internal;

import java.util.concurrent.BlockingQueue;

import javax.annotation.Resource;
import javax.xml.transform.stream.StreamSource;
import javax.xml.ws.Provider;
import javax.xml.ws.Service;
import javax.xml.ws.ServiceMode;
import javax.xml.ws.WebServiceContext;
import javax.xml.ws.WebServiceProvider;

import org.talend.esb.mep.requestcallback.feature.CallContext;

import static org.junit.Assert.*;

@WebServiceProvider
@ServiceMode(value = Service.Mode.PAYLOAD)
public class ServiceProviderHandler implements Provider<StreamSource> {

  public interface IncomingMessageHandler {
      void handleMessage(StreamSource request, CallContext callContext) throws Exception;
  }

  @Resource
    private WebServiceContext wsContext;

  private final BlockingQueue<Throwable> errorTransfer;
  private final BlockingQueue<String> messageTransfer;
  private final IncomingMessageHandler businessHandler;
  private final String expectedOperation;

    public ServiceProviderHandler(BlockingQueue<Throwable> errorTransfer,
        BlockingQueue<String> messageTransfer,
        IncomingMessageHandler businessHandler,
        String expectedOperation) {
      this.errorTransfer = errorTransfer;
      this.messageTransfer = messageTransfer;
      this.businessHandler = businessHandler;
      this.expectedOperation = expectedOperation;
    }
   
    @Override
    public StreamSource invoke(StreamSource request) {
      try {
          System.out.println("Service is invoked!!!");
          CallContext callContext = CallContext.getCallContext(wsContext);
          assertEquals(callContext.getOperationName().getLocalPart(), expectedOperation);
          businessHandler.handleMessage(request, callContext);
      } catch (Exception e) {
        addError(e);
      } catch (AssertionError e) {
        addError(e);
      }
        return null;
    }

    public void addError(Throwable error) {
      errorTransfer.offer(error);
      messageTransfer.offer("ERROR");
    }
}
TOP

Related Classes of org.talend.esb.mep.requestcallback.sample.internal.ServiceProviderHandler

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.