class MessageProcessor implements ITask, IMessageProcessor, IManagedTask, IShutdownAwareTask {

    @Override
    public void signal(final String signalName) throws InvalidArgumentException {
        if (null == signalName) {
            throw new InvalidArgumentException("Signal name should not be null.");
        }

        try {
            Object signal = IOC.resolve(Keys.getOrAdd(signalName));

            if (!(signal instanceof Signal)) {
                throw new InvalidArgumentException("Resolved signal is not a signal.");
            }

            this.signalException = (Signal) signal;
        } catch (ResolutionException e) {
            throw new InvalidArgumentException("Could not resolve a signal throwable.", e);
        }
    }

    public  MessageProcessor(final IQueue<ITask> taskQueue, final IMessageProcessingSequence messageProcessingSequence, final IObject config);

}