/* license-start
*
* Copyright (C) 2008 - 2013 Crispico, <http://www.crispico.com/>.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation version 3.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details, at <http://www.gnu.org/licenses/>.
*
* Contributors:
* Crispico - Initial API and implementation
*
* license-end
*/
package org.flowerplatform.communication.sequential_execution;
import org.flowerplatform.communication.callback.InvokeCallbackClientCommand;
import org.flowerplatform.communication.command.AbstractServerCommand;
import org.flowerplatform.communication.command.IServerCommand;
/**
* After executing the wrapped command, sends a signal to the client side.
* When the client side receives the signal, it should have already processed the commands
* that were sent by the wrapped command.
*
* @see SequentialExecutionQueue.as
*
* @author Sorin
*/
public class SequentialExecutionServerCommand extends AbstractServerCommand {
public long callbackId;
public IServerCommand command;
public void executeCommand() {
try {
command.setCommunicationChannel(getCommunicationChannel());
command.executeCommand();
} finally {
// At this moment all results from processing the wrapped command should be deposited into the communication channel.
communicationChannel.appendCommandToCurrentHttpResponse(new InvokeCallbackClientCommand(callbackId, null));
}
}
@Override
public String toString() {
return getClass().getSimpleName() + " with command = " + command;
}
}