package org.ourgrid.broker.business.requester; import java.util.ArrayList; import java.util.List; import org.ourgrid.broker.business.dao.BrokerDAOFactory; import org.ourgrid.broker.business.requester.util.UtilProcessor; import org.ourgrid.broker.business.scheduler.SchedulerIF; import org.ourgrid.broker.request.WCRSendMessageRequestTO; import org.ourgrid.broker.response.BrokerMessageProcessorResponseTO; import org.ourgrid.common.interfaces.MessageProcessor; import org.ourgrid.common.interfaces.to.MessageHandle; import org.ourgrid.common.internal.IResponseTO; import org.ourgrid.common.internal.RequesterIF; import org.ourgrid.common.internal.response.LoggerResponseTO; import org.ourgrid.common.util.StringUtil; public class WCRSendMessageRequester implements RequesterIF<WCRSendMessageRequestTO> { public List<IResponseTO> execute(WCRSendMessageRequestTO request) { List<IResponseTO> responses = new ArrayList<IResponseTO>(); SchedulerIF scheduler = UtilProcessor.getScheduler( StringUtil.addressToContainerID(request.getSenderAddress())); if (scheduler != null) { MessageHandle handle = request.getHandle(); MessageProcessor<MessageHandle> processor = BrokerDAOFactory.getInstance().getBrokerMessageProcessorDAO().getMessageProcessor( handle.getActionName()); if (processor != null) { BrokerMessageProcessorResponseTO to = new BrokerMessageProcessorResponseTO(); to.setHandle(handle); to.setProcessor(processor); responses.add(to); } else { scheduler.sendMessage(handle); } } else { LoggerResponseTO loggerResponse = new LoggerResponseTO( "No scheduler is set for worker [" + request.getSenderAddress()+"]", LoggerResponseTO.WARN); responses.add(loggerResponse); } return responses; } }