package com.tandbergtv.ruleengine;

import org.apache.log4j.Logger;

import com.tandbergtv.workflow.adaptor.AdaptorException;
import com.tandbergtv.workflow.adaptor.AdaptorResponseImpl;
import com.tandbergtv.workflow.adaptor.IAdaptorResponse;
import com.tandbergtv.workflow.comm.routing.RoutingServiceFactory;
import com.tandbergtv.workflow.message.IMessage;
import com.tandbergtv.workflow.message.WorkflowMessage;
import com.tandbergtv.workflow.message.util.WPCLConverter;

/**
 * responsible for creating work order by calling routing service to send message to workflow.
 * 
 * @author Kinjal Mehta
 * 
 */
public class CreateProcessHandler {

	private Logger logger = Logger.getLogger(CreateProcessHandler.class);

	public CreateProcessHandler() {
	}

	public IAdaptorResponse handleMessage(WorkflowMessage wfsMessage) throws AdaptorException {
		IMessage response = null;
		try {
			logger.debug("Handling message:[" + wfsMessage.getMessageUID().getUID() + "]"
					+ wfsMessage.getMessageUID().getName());
			IMessage request = new WPCLConverter().convert(wfsMessage);
			response = RoutingServiceFactory.newInstance().createRoutingService().send(request);
			logger.debug("Received response : " + response.getPayload().getContent());
			return new AdaptorResponseImpl(response);
		} catch (Exception e) {
			logger.error("Cannot deliver message : " + e.getMessage(), e);
			throw new AdaptorException(e);
		}
	}
}
