Details
-
Bug
-
Status: Open
-
Major
-
Resolution: Unresolved
-
Adobe Flex SDK 4.0 (Release)
-
None
-
None
-
Affected OS(s): All OS Platforms
Affected OS(s): All OS Platforms
Language Found: English
Description
Steps to reproduce:
1. Create any scenario that results in webService.ready = false while calls are made to Operation.send( ) method that will result in the call being queued for execution later via the AbstractWebService.unEnqueueCalls( ) method. An easy scenario is to use dynamic WSDL retrieval of a large WSDL over a slower connection (e.g. one restricted using Fiddler or other tools)
2. Make multiple calls to the same Web Service method with differing arguments.
3. Observe that only the final call is executed when unEnqueueCalls( ) is run.
Actual Results:
Only final Operation executes and the others are lost.
Expected Results:
All Operations should be executed.
Workaround (if any):
Only workaround is to monkey-patch or to block the usage of any WebService object prior to it entering a ready state. Alternatively the same method name cannot be used ever without first ensuring the previous call has finished executing.
----------------------------------------------------------------------------------
Monkey-patch details:
Problem is in this function:
override public function getOperation(name:String):mx.rpc.AbstractOperation
{
var op:mx.rpc.AbstractOperation = super.getOperation(name);
if (op == null)
return op;
}
Use of a Hash table to store the operations causes this problem when multiple calls are using the same method name. The Hash-Key should be a unique identifier for each Operation stored in the Operation class because each call to this method is meant to create a distinct Operation in the hash table.
Please feel free to contact me if I can provide any further assistance in getting this fixed in a timely manner.