public class RequestExecutorImpl implements RequestExecutor
{
public String executeSynchronousRequest(String url, Map<String, String> parameters)
{
final ExecutionHandler executionHandler= ServiceLocator.getInstance().getConfigurator().getExecutionHandler();
if (executionHandler.canSuspend())
{
final String[] resultArray= new String[] { "" };
AsyncCallback<String> asyncCallbackToContinue= new AsyncCallback<String>()
{
public void onSuccess(String result)
{
resultArray[0]= result;
executionHandler.continueExecution();
}
public void onError()
{
throw new RuntimeException("Error in async call");
}
};
AsyncCallback<String> wrappedCallback= wrapCallback(Serializable.class, asyncCallbackToContinue);
executeHttpRequest(true, url, parameters, wrappedCallback, false);
executionHandler.suspendExecution();
return resultArray[0];
}
else
return executeHttpRequest(false, url, parameters, null, false);